Benthosは高性能で回復力のあるストリームプロセッサであり、さまざまな仲介パターンでさまざまなソースとシンクを接続し、ペイロードに対してハイドレーション、エンリッチメント、変換、フィルターを実行できます。
強力なマッピング言語が付属しており、デプロイと監視が簡単で、静的バイナリ、Dockerイメージ、またはサーバーレス関数としてパイプラインにドロップする準備ができているため、クラウドネイティブになります。
Benthosは宣言型であり、ストリームパイプラインはわずか1つの構成ファイルで定義され、コネクタと処理ステージのリストを指定できます。
input:
gcp_pubsub:
project: foo
subscription: bar
pipeline:
processors:
- mapping: |
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
配達保証は危険な問題になる可能性があります。Benthos は、ディスク永続状態を必要としないインプロセス トランザクション モデルを使用してメッセージを処理および確認するため、少なくとも 1 回はソースとシンクに接続すると、クラッシュ、ディスク破損、またはその他の予期しないサーバー障害が発生した場合でも、少なくとも 1 回の配信を保証できます。
この動作はデフォルトであり、警告がないため、Benthosのデプロイとスケーリングもはるかに簡単になります。
AWS (DynamoDB、Kinesis、S3、SQS、SNS)、Azure (Blob storage、Queue storage、Table storage)、GCP (Pub/Sub、Cloud storage、Big query)、Kafka、NATS (JetStream、Streaming)、NSQ、MQTT、AMQP 0.91 (RabbitMQ)、AMQP 1、Redis (streams、list、pubsub、hashes)、Cassandra、Elasticsearch、HDFS、HTTP (サーバーおよびクライアント、ウェブソケットを含む)、MongoDB、SQL (MySQL、PostgreSQL、Clickhouse、MSSQL)など。
コネクタは絶えず追加されており、必要なものが不足している場合は、問題を開いてください。
Benthosに完全に飛び込みたい場合は、このダンプで時間を無駄にしないでください、ドキュメントサイトをチェックしてください。
ストリーム結合、エンリッチメントワークフローなど、より高度なストリーム処理の概念を設定する方法のガイダンスについては、クックブックのセクションを参照してください。
Go で独自のカスタムプラグインを構築するためのガイダンスについては、パブリック API を確認してください。
ここからOSのバイナリを入手してください。または、次のスクリプトを使用します。
curl -Lsf https://sh.benthos.dev | bash
または、ドッカーイメージをプルします。
docker pull jeffail/benthos
ベントスは自作でインストールすることもできます。
brew install benthos
詳細については、入門ガイドをご覧ください。
benthos -c ./config.yaml
または、ドッカーで:
# 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"
Benthos は、ヘルスチェック用に 2 つの HTTP エンドポイントを提供します。
/ping常に200を返すため、活性プローブとして使用できます。
/ready入力と出力の両方が接続されている場合にのみ200にサービスを提供し、それ以外の場合は503が返されるため、準備プローブとして使用できます。
Benthos は、Statsd、Prometheus、またはデバッグ目的でJSON形式のオブジェクトを返すHTTPエンドポイントのいずれかに多くのメトリックを公開します。
また、Benthosは、パイプライン内のプロセッサを視覚化するために使用できる、選択したトレーサー(現在はJaegerのみがサポートされています)にトレースイベントを発行します。
Benthosは、構成の検出、デバッグ、整理を容易にするための多くのツールを提供します。あなたはそれらについて読むことができます 詳細を見る.
Go でビルドする (現在サポートされているバージョン):
git clone git@github.com:benthosdev/benthos
cd benthos
make
ベントスはリンティングにゴランチリントを使用しています。
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
そして、それを実行します。
make lint
GoでBenthos用の独自のカスタムプラグインを作成するのは非常に簡単です、情報についてはAPIドキュメントをチェックしてください、そしてインスピレーションのためにさまざまなプラグイン実装を示すサンプルリポジトリがあります。
デフォルトでは、Benthos は、入力や出力などの外部ライブラリへのリンクを必要とするコンポーネントを使用してビルドされません。これらの依存関係を使用してBenthosをローカルでビルドする場合は、ビルドタグを設定します。
zmq4
x_benthos_extra
# With go
go install -tags "x_benthos_extra" github.com/benthosdev/benthos/v4/cmd/benthos@latest
# Using make
make TAGS=x_benthos_extra
このタグは、メジャーバージョンリリース以外の個々のコンポーネントの詳細なタグに変更または分割される可能性があることに注意してください。ビルドを試みたときにこれらの依存関係が存在しない場合は、次のようなエラー メッセージが表示されます。
ld: library not found for -lzmq
Benthosドッカーイメージを作成するためのマルチステージがあり、ゼロから最小限のイメージが得られます。あなたはそれを構築することができます:
Dockerfile
make docker
次に、画像を使用します。
docker run --rm \
-v /path/to/your/benthos.yaml:/config.yaml \
-v /tmp/data:/data \
-p 4195:4195 \
benthos -c /config.yaml
貢献は大歓迎です、ガイドラインを読み、来てチャットし(リンクはコミュニティページにあります)、そしてあなたの背中を見てください。