より多くのプロセス (マイクロサービス) を起動する必要がありますか?
短い答えはイエスです:
- 回答 1 (容量の追加): スケールアウトするには、別のマシンなどでストリーム処理アプリケーションの別のインスタンスを開始するだけです。アプリケーションのインスタンスはお互いを認識し、自動的に処理作業を共有し始めます。これはライブ運用中に行うことができ、データが失われることはありません!
- 回答 2 (容量の削除): ストリーム処理アプリケーションの 1 つまたは複数の実行中のインスタンスを停止するだけです。たとえば、実行中の 4 つのインスタンスのうち 2 つをシャットダウンします。アプリケーションの残りのインスタンスは、他のインスタンスが停止したことを認識し、停止したインスタンスの処理作業を自動的に引き継ぎます。これはライブ運用中に行うことができ、データが失われることはありません!
詳細については、 http://docs.confluent.io/3.0.0/streams/developer-guide.html#elastic-scaling-of-your-applicationにある Kafka Streams のドキュメントを参照してください (残念ながら、Kafka Streams の Apache Kafka ドキュメントでは、これらの詳細はまだありません)。
それとも、ここで全体像を見逃していますか?
全体像は、写真が実際には素晴らしくて小さいということです。:-)
多くのユーザーが他の関連技術の複雑さに混乱していると感じているので、次のことを追加させてくださいKafka Streams でできること:
Kafka Streams アプリケーションは、たまたま Kafka Streams ライブラリを使用する、通常の単純な古い Java アプリケーションです。既存のストリーム処理技術との重要な差別化要因は、Kafka Streams ライブラリを使用することで、マシンを追加するための特別な「処理クラスター」を必要とせずに、アプリケーションがスケーラブル、弾力性、フォールト トレラントなどになることです。 Flink、Spark、Storm などで行います。Kafka Streams 展開モデルは、はるかにシンプルで簡単です。アプリケーションの追加インスタンスを開始または停止するだけです (つまり、文字通り同じコード)。これは基本的に、Puppet、Ansible、Docker、Mesos、YARN を含むがこれらに限定されないデプロイ関連のツールで機能します。を実行して手動で行うこともできますjava ... YourApp
。