Apache Kafkaでのストリーミングの使用

この情報では、Apache Kafkaでのストリーミングの使用について説明します。

Oracle Cloud Infrastructure Streamingにより、Apache Kafkaのユーザーは、独自のZookeeperおよびKafkaクラスタのホスト時に必要な設定、メンテナンスおよびインフラストラクチャ管理の負荷を軽減できます。

ストリーミングは、ほとんどのKafka APIと互換性があり、Kafka用に記述されたアプリケーションを使用して、コードをリライトせずにストリーミング・サービスとの間でメッセージを送信および受信できます。詳細は、Kafka APIの使用を参照してください。

ストリーミングでは、Kafka Connectエコシステムを使用して、データベース、オブジェクト・ストア、Oracle Cloud上のマイクロサービスなどの外部ソースと直接連携することもできます。Kafkaコネクタは、ストリーミング・サービスの高スループットおよび耐久性を利用しながら、簡単かつ自動的にトピックを作成、公開および配信できます。詳細は、Kafka Connectの使用を参照してください。

ストリーミングとKafkaのユース・ケースには次が含まれます:

  • 詳細な分析とビジュアライゼーションを実行するために、JDBCコネクタを介してストリーミングからAutonomous Data Warehouseにデータを移動します。

  • Oracle GoldenGate Connector for Big Dataを使用して、イベント駆動型アプリケーションを構築します。

  • 長期保存またはHadoop/Sparkジョブの実行のために、HDFS/S3コネクタを介してストリーミングからOracle Object Storageにデータを移動します。

Kafka APIサポート

ストリーミングは、Kafka APIの最新バージョンと完全にアップストリーム互換性があります。ストリーミングでは、次のKafka APIがサポートされます:

次のKafka APIおよび機能は、ストリーミング・サービスにまだ実装されていません:

Kafkaクライアント

多くのKafkaクライアントを使用できますが、ストリーミング・サービスと連携するために完全にテストおよび認定されたクライアントをお薦めします。

ストリーミングでは、apache-kafka-javaのすべてのバージョンがサポートされます。

ストリーミングでは、ベストエフォート・ベースで次のKafkaクライアントもサポートされます:

要件および制限事項

ストリーミングのKafka互換性を実装すると、次の構成、制限および動作が適用されます。

無損失構成

ストリーミングでは、無損失のKafka構成のみがサポートされます。データは3つの方法でレプリケートされます。プロデューサからのメッセージは、少なくとも2つのレプリカが同期されるまで、ストリーミングから確認応答(ACK)を開始しません。

一意のストリーム名

コンパートメントに同じ名前のストリームがある場合、そのストリームが異なるストリーム・プールに存在しないかぎり、重複したストリームを削除するまでストリーミングでKafkaを使用することはできません。ストリームが異なるストリーム・プール内にある場合のみ、同じ名前の2つのストリームは同じコンパートメントに存在できます。

それ以外の場合、重複するストリーム名は、「認証に失敗しました」というエラーによって示されます。ストリームを削除しない場合は、データ損失なしでストリームの名前を変更できるように、ストリーミング・チームに連絡してください。

ロード・バランシング接続のリサイクル

Kafkaプロトコルは存続期間が長いTCP接続を使用するため、ストリーミングKafka互換性レイヤーには、フロントエンド・ノード間で定期的に接続を調整するためのロード・バランシング・メカニズムが実装されています。このメカニズムは、接続を定期的にクローズして新しい接続を強制します。ほとんどのKafka SDKは、消費時にこれらの切断を自動的に処理しますが、Kafka APIを使用してストリーミングに生成すると切断エラーが発生することがあります。リクエストに再試行を追加して、切断を緩和できます。再試行はKafka SDKの一部であり、自動的に有効になり、その動作を明示的に構成できます。