API プロトコル

Zerobus Ingestは、複数のAPIプロトコルを持つ1つのエンドポイントを公開します:gRPC(SDK経由)、REST、OpenTelemetry(OTLP)、Kafka互換APIです。 すべてUnity CatalogのDeltaテーブルに直接書き込みを行うので、各プロデューサーに最適なプロトコルを選べます。

Zerobus Ingest スケーリングアーキテクチャ:ソースはプロトコルバッファ(protobuf)、JSON、ArrowレコードをgRPC、REST、OpenTelemetry、Kafka互換API経由で送信し、これらは自動スケーリングとロードバランシングを経て、水平にスケーラブルな状態のないZerobusノードのプールへと流れます。各ノードは書き込み先行ログとLakehouseライターを持ち、LakehouseライターがUnityカタログ管理のDeltaテーブルに一括コミットします

どのプロトコルを使うべきでしょうか?

プロトコル 最適な用途 なぜでしょうか
gRPC(SDK) 大量ストリーミング制作者: 変更データ キャプチャ、クリックストリーム、ログ フォワーダー、イベント フォワーダー。 永続的な接続は、最も持続的なスループットを提供し、ストリームごとの順序を保持します。 Python、Java、Rust、Go、TypeScript、そして(ベータ版では)C++およびC# / .NETで利用可能です。 クライアントを作成する を参照してください。
REST エッジデバイスや IoT デバイスなど、報告頻度は低いものの軽量または通信頻度の高いクライアントが大規模に存在するケース。 ステートレス:各リクエストは独立して存在するため、クライアントはオープンな接続を保持しません。 データを時折送信するデバイス向けには、より簡単です。 RESTの例を参照してください。
OpenTelemetry(OTLP) すでにトレース、ログ、メトリクスを発信している観測性パイプライン。 既存のOpenTelemetry SDKやコレクタをカスタム統合なしでエンドポイントに向けてください。 Zerobus IngestによるOpenTelemetryデータの取り込みを参照してください。
Kafka互換API (ベータ版) すでに Kafka プロトコルに対応しているプロデューサー、または Kafka に出力するツールで、最小限のコード変更でそのデータを Delta に取り込みたい場合。 既存のKafka producerをAzure Databricks SDKなしで再利用してください。 それをエンドポイントに指定し、ターゲットテーブルにちなんだ名前のトピックに書き込みます。 Zerobus IngestでKafka互換APIを使う方法を参照してください。

SDKを用いたgRPC

Zerobus SDKはストリームと呼ばれる永続的かつ双方向のgRPC接続をラップしています。 接続が開いたままであるため、gRPCは最も持続的なスループットを達成し、連続的かつ大量のインジェストに推奨される経路となります。 各オープンストリームは長寿命接続であるため、クライアントのスループットは開いたストリーム数に応じてスケールします。

SDKは接続管理、オフセットトラッキング、リカバリーを担当し、Python、Java、Rust、Go、TypeScript、そして(ベータ版では)C++やC# / .NETで利用可能です。 言語間で同等の挙動を提供するので、自分の用途に合ったものを選びましょう。 gRPC上で、SDKはJSON、protobuf、Apache Arrowレコード形式をサポートしています。 メッセージ の種類を参照してください。

SDKごとに言語ごとの例を含むクライアントを書くには、「 クライアントを書く」をご覧ください。

REST

RESTインターフェースはステートレスであり、各リクエストはオープン接続を保持せずに自動的に完了します。 これにより、状態報告がまれなエッジやIoTデバイスなど、軽量または断続的な大規模生産者にとって非常に適しており、デバイスごとの持続的な接続を維持するのが非現実的です。

RESTの取り込みはリクエストレートクォータによって制御されます( Zerobus Ingest quotaを参照)。 大量生産者にとっては、gRPC上のSDKは、多数の個別のRESTリクエストを発行するよりも高いスループットを維持できます。 送信頻度が低い、または永続的な接続を維持できないプロデューサーのためにRESTを予約してください。

OpenTelemetry(OTLP)

Zerobus IngestにはネイティブのOpenTelemetry Protocolエンドポイントが含まれています。 もしシステムがすでにOpenTelemetryのトレース、ログ、メトリクスを生成しているなら、既存のOTLPエクスポーターやコレクタをZerobus Ingestに向け、そのテレメトリを所有するDeltaテーブルに直接表示できます。通常は設定変更だけで済みます。 Zerobus IngestによるOpenTelemetryデータの取り込みを参照してください。

Kafka互換API

Important

Kafka互換APIは ベータ版です。

Zerobus IngestはKafka互換のプロデューサーAPIを提供しているため、Azure Databricks SDKなしで任意のApache Kafkaプロデューサークライアントで取り込むことができます。 既存のKafkaプロデューサーをエンドポイントに向け、ターゲットテーブルの名前が付けられたトピックに生成すると、レコードはUnity CatalogのDeltaテーブルに格納されます。 これは、すでにKafkaプロデューサーや、Kafkaに送信するコレクターやエージェントを運用していて、そのデータを最小限のコード変更でDeltaにルーティングしたい場合に最適です。

Kafka互換APIはKafkaプロトコルのプロデューサー側サブセットを実装しており、書き込み専用です。コンシューマー、管理者、トランザクションAPIは利用できません。 彼らはJSONレコードのみを受け付けています。 スループットは個々の接続ではなく、ワークスペースごとのリクエストレート割当によって制御されます。 具体的な割当については、 Zerobus Ingest quotasを参照してください。 最高のスループット、レコードごとの確認応答、自動復旧を得るためには、代わりにZerobus SDKをgRPCで使用してください。

セットアップ、認証、プロデューサーの例については、「 Zerobus IngestでKafka互換APIを使う」を参照してください。