ホームページ  >  記事  >  バックエンド開発  >  (Kafka からの) メッセージ ストリームを使用し、REST API リクエストを読み取るサービスを Go で作成することは可能ですか?

(Kafka からの) メッセージ ストリームを使用し、REST API リクエストを読み取るサービスを Go で作成することは可能ですか?

王林
王林転載
2024-02-12 18:06:05841ブラウズ

是否可以在 Go 中创建一个既使用消息流(来自 Kafka)又读取 REST API 请求的服务?

質問内容

最近「大規模マイクロサービス間でのデータ共有」という記事を読みました

この図は非同期接続に関するものです。

私の記憶が正しければ、この図の 注文ページ このサービスは、Kafka からメッセージ ストリームを読み取ることができ、また、フロントエンド アプリケーションから REST API リクエストを読み取ることができるようです。

そこで、両方のタスクを同時に実行できるサービスを作成できないか考えています:

  • Kafka からのメッセージ ストリームを読む
  • REST API リクエストの読み取り

Go など、1 つのサービス内のみ。

これは良いアイデアですか?

回避策

はい、Kafka から消費して REST エンドポイントを公開する Go サービスを作成することは間違いなく可能です。ただし、これは理想的な設計上の決定ではありません。

Kafka ベースのストリーミング システムにより、プロデューサーとコンシューマー間の非同期通信が可能になります。ただし、REST API ベースのシステムは、呼び出し元と呼び出し先の間で同期的に通信します。

可用性の保証は、同期通信と同期モード通信で異なります。 Kafka Streams に基づくシステムには、REST API とは異なる可用性保証があります。ストリーミング システムでは、メッセージ処理のスループットに重点を置きますが、エンドツーエンドの同期通信では、遅延が主な懸念事項になります (呼び出し元が結果を取得するまで長時間待たされることは望ましくありません)。

この 2 種類のシステムを 1 つのサービスにまとめてしまうと、サービスの可用性がわかりにくくなります。さらに、サービスの非同期部分または同期部分が、反対側のノイズの多い隣人に影響を及ぼし、サービスが使用できなくなる可能性があります。

したがって、一般に、REST ベースの API と Kafka ストリームを 2 つの独立したサービスとして扱うことをお勧めします。

以上が(Kafka からの) メッセージ ストリームを使用し、REST API リクエストを読み取るサービスを Go で作成することは可能ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。