新しいプロジェクトでは、RabbitMQまたはKafkaと一緒にMicroservicesを使用しています。私は両方の技術について同じ質問がありますが、答えは異なるかもしれません。 マイクロサービスで並列コンシューマをスケールアップする方法
は、3つのイベントを検討し
:- を製品1
- を作成して1
私たちは、サービス間のデータを "複製" するために、これらのイベントを使用するプロファイル1
ただし、この1人の消費者がメッセージの処理を遅くすると、別の消費者を並行して追加することができます。この時点では、イベント1がイベント3より前に実行されていて、不整合なデータベース(最初に削除する、後に作成する)が発生する可能性があることは不確実です。
被験者についていくつかの情報hereが見つかりましたが、どちらの解決策も実装が難しいようです。これらの消費者をどのように拡大することが可能でしょうか? RabbitMQまたはKafkaを使用してこれを処理する方法に違いはありますか?
これを拡張するには、独自のpartionerクラス(https://kafka.apache.org/0110/javadoc/org/apache/kafka/clients/producer/Partitioner.html)を実装する必要があります。 Kafkaで独自のパーティションキーを処理することで、問題が発生しました。どのような "論理グループ"が他のパーティションよりもはるかにボリュームが大きい場合、そのパーティションは他のパーティションよりもスケーラビリティが高くなり、同じトピックの一部を維持するために特別な保守が必要になる可能性があります。 –
RabbitMQでは、並行して処理できるメッセージ用のキューを作成するだけです – JDel