benthosdev / benthos

1,212 阅读3分钟

Benthos

godoc for benthosdev/benthosBuild StatusDiscord inviteDocs site

Benthos是一个高性能和有弹性的流处理器,能够以一系列的中介模式连接各种源和汇,并对有效载荷进行水化、丰富、转换和过滤

它配备了强大的映射语言,易于部署和监控,并且可以作为静态二进制文件、Docker镜像或无服务器功能放入你的管道中,使其成为云端原生功能。

Benthos是完全声明式的,在一个配置文件中定义流管道,允许你指定连接器和处理阶段的列表。

input

交付保证

是的,我们有。Benthos实现了基于事务的弹性和背压。当连接到至少一次的源和汇时,它保证至少一次的交付,而不需要在传输过程中保持消息。

支持的源和汇

Apache Pulsar、AWS(DynamoDB、Kinesis、S3、SQS、SNS)、Azure(Blob存储、队列存储、表存储)、Cassandra、Elasticsearch、File、GCP(Pub/Sub、云存储)、HDFS、HTTP(服务器和客户端,包括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.

连接器正在不断地被添加,如果你想要的东西被遗漏了,那么请开一个问题

文档

如果你想完全深入了解Benthos,那么不要在这个垃圾堆里浪费时间,请查看文档网站

对于如何配置更高级的流处理概念的指导,如流连接、丰富的工作流程等,请查看cookbooks部分。

关于在Go中建立你自己的自定义插件的指导,请查看公共API。

安装

这里获取适合你的操作系统的二进制文件或者使用这个脚本。

curl -Lsf https://sh.benthos.dev 

或者拉动docker镜像。

docker pull jeffail/benthos

Benthos也可以通过Homebrew安装。

brew install benthos

欲了解更多信息,请查看入门指南

运行

benthos -c ./config.yaml

或者使用docker。

# Using a config file

监控

健康检查

Benthos为健康检查提供了两个HTTP端点。

  • /ping 可以作为有效性检查使用,因为它总是返回200。
  • /ready 可以用作就绪性检测,因为只有当输入和输出都连接好时,它才会返回200,否则会返回503。

衡量标准

Benthos向Statsd、Prometheus或用于调试目的的HTTP端点提供大量指标,返回JSON格式的对象。

追踪

Benthos还向您选择的追踪器(目前只支持Jaeger发出追踪事件,这可以用来可视化管道中的处理器。

配置

Benthos提供了很多工具,使配置的发现、调试和组织变得容易。你可以在这里阅读这些工具

构建

使用Go(1.16或更高版本)构建。

git clone git@github.com:benthosdev/benthos

提示

Benthos使用golangci-lint来进行linting,你可以用它来安装。

curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh 

然后用make lint 来运行它。

插件

在Go中为Benthos编写自己的自定义插件是非常容易的,有关信息请查阅API文档,为了获得灵感,有一个实例库展示了各种插件的实现。

额外的插件

默认情况下,Benthos在构建时不需要链接到外部库,例如zmq4 输入和输出的组件。如果你希望在本地构建Benthos的这些依赖项,那么请设置构建标签x_benthos_extra

# With go

请注意,这个标签可能会改变,或者在主要版本之外被分解成个别组件的细化标签。如果你尝试构建,而这些依赖项不存在,你会看到错误信息,如ld: library not found for -lzmq

Docker构建

有一个多阶段的Dockerfile ,用于创建Benthos的docker镜像,从而形成一个从头开始的最小镜像。你可以用它来构建。

make docker

然后使用该镜像。

docker run --rm \
	-v /path/to/your/benthos.yaml:/config.yaml \
	-v /tmp/data:/data \
	-p 4195:4195 \
	benthos -c /config.yaml

贡献

我们欢迎你的贡献,请阅读指南,来和我们聊天(链接在社区页面),并注意你的背部。