私は議論https://disqus.comのような Spring Boot アプリケーションから始めています。
- ユーザーはサークルを作成できます (コミュニティ/グループ)
- ユーザーは、サークルへの参加/退会を行うことができます。
- ユーザーはドキュメント/画像/ビデオをサークルまたは個々のユーザーに投稿できます
- 各ユーザーには受信トレイ フィードがあります
高度なスケーラビリティ要件を伴うユーザー アクティビティの増加に対応するように設計されており、Kafka をバックボーンとするアクティビティ ストリーム (W3C アクティビティ ストリーム 2.0) に絞り込みます。
Angular 2.0 フロントエンドを使用して、分散クラウド ネイティブ マイクロサービス アーキテクチャ (Spring 構成サーバー、API ゲートウェイ、Eureka Discovery) を既にセットアップしています。
私は Kafka について調査していて、要件を満たすためにアーキテクチャと設計をどのように進めるべきかについて意見を求めています。
具体的には:
Kafka プロデューサーは、HTTP 経由で送信されたアクティビティを Activity 2.0 仕様に基づいて POJO に変換し、それを Kafka に公開する責任があります。1 秒あたり 100 万件のメッセージを処理できるように、パブリッシャーをどのように設計すればよいでしょうか。
コンシューマーは、サークル サービス、レコメンデーション サービス、ユーザー サービスなどのさまざまなサービスです。私の素朴な考えは、これらのサービスにトピックをサブスクライブさせ、興味のあるメッセージだけを引き出すことです。たとえば、ユーザーがサークルに投稿すると、サークル サービスはそれを使用してコピーを作成し、そのすべてのユーザーに配布します。サークル。ここでもう一つの懸念事項。サークルにたとえば 1000 人のユーザーが含まれている場合、コピーを作成する最善の方法は何ですか?
前もって感謝します。