組件分享之后端組件——基于Golang實現(xiàn)的高性能和彈性的流處理器benthos
背景
近期正在探索前端、后端、系統(tǒng)端各類常用組件與工具,對其一些常見的組件進行再次整理一下,形成標(biāo)準(zhǔn)化組件專題,后續(xù)該專題將包含各類語言中的一些常用組件。歡迎大家進行持續(xù)關(guān)注。
組件基本信息
- 組件:benthos
- 開源協(xié)議:MIT license
- 官網(wǎng):www.benthos.dev
內(nèi)容
本節(jié)我們分享的是基于Golang實現(xiàn)的高性能和彈性的流處理器benthos,它能夠以各種代理模式連接各種源和接收器,并對有效負載執(zhí)行水合、濃縮、轉(zhuǎn)換和過濾。
它帶有強大的映射語言,易于部署和監(jiān)控,并且可以作為靜態(tài)二進制文件、docker 映像或無服務(wù)器函數(shù)放入您的管道,使其成為云原生。

Benthos 是完全聲明性的,流管道在單個配置文件中定義,允許您指定連接器和處理階段列表:
input:
gcp_pubsub:
project: foo
subscription: bar
pipeline:
processors:
- bloblang: |
root.message = this
root.meta.link_count = this.links.length()
root.user.age = this.user.age.number()
output:
redis_streams:
url: tcp://TODO:6379
stream: baz
max_in_flight: 20
支持的源和接收器
Apache Pulsar, AWS (DynamoDB, Kinesis, S3, SQS, SNS), Azure (Blob storage, Queue storage, Table storage), Cassandra, Elasticsearch, File, GCP (Pub/Sub, Cloud storage), HDFS, HTTP (server and client, including websockets), Kafka, Memcached, MQTT, Nanomsg, NATS, NATS JetStream, NATS Streaming, NSQ, AMQP 0.91 (RabbitMQ), AMQP 1, Redis (streams, list, pubsub, hashes), MongoDB, SQL (MySQL, PostgreSQL, Clickhouse, MSSQL), Stdin/Stdout, TCP & UDP, sockets and ZMQ4.
具體使用方式如下:
1、docker安裝
# Using a config file
docker run --rm -v /path/to/your/config.yaml:/benthos.yaml jeffail/benthos
# Using a series of -s flags
docker run --rm -p 4195:4195 jeffail/benthos \
-s "input.type=http_server" \
-s "output.type=kafka" \
-s "output.kafka.addresses=kafka-server:9092" \
-s "output.kafka.topic=benthos_topic"
具體使用方式可以參見該文檔
有關(guān)如何配置更高級的流處理概念(例如流連接、擴充工作流等)的指導(dǎo),請查看說明書部分。
有關(guān)在 Go 中構(gòu)建您自己的自定義插件的指導(dǎo),請查看公共 API。
本文聲明:

知識共享許可協(xié)議
本作品由 cn華少 采用 知識共享署名-非商業(yè)性使用 4.0 國際許可協(xié)議 進行許可。