1. ホーム
  2. amazon-web-services

[解決済み] KafkaかSNSか、それとも別の何か?[クローズド]

2023-06-26 11:30:12

質問

初心者の質問でしたら申し訳ありません。しかし、私は何を使用するべきか理解しようとしています。私が理解する限り、Kafkaは:

Apache Kafkaは、分散パブリッシュ・サブスクライブ・メッセージング・システムです。

SNSもPub/Subシステムです。

私の目標は、いくつかのサーバに分散されるアプリケーションでAWS上のいくつかのキューメッセージングシステムを使用することです(ちなみに主な言語はPythonです)。そして、それはamazon上にあるので、私の最初の考えはSNSとSQSを使用することでした。しかし、多くの人がKafka on AWSを使っているのを見かけました。他のものと比較して、1つの利点は何ですか?

どのように解決するのですか?

のユースケースは カフカ Amazon SQS / Amazon SNS は全く異なるものです。

Kafkaは、あなたが書いたように、分散パブリッシュ・サブスクライブ・システムです。非常に高いスループットを実現するために設計されており、1秒間に数千のメッセージを処理します。もちろん、自分でセットアップしてクラスタリングする必要があります。複数のリーダーをサポートしており、どの時点でもメッセージのストリームに追いつくことができます(メッセージがまだディスク上にある限りはですが)。キューとして(コンシューマーグループを使用して)、またトピックとして使用することができます。

重要な特徴は、メッセージを選択的に "processed" として認めることができないことです。唯一の選択肢は、特定のオフセットまでのすべてのメッセージを認めることです。

一方、SQS/SNSは。

  • 設定なし/メンテナンスなし
  • キュー(SQS)またはトピック(SNS)
  • さまざまな制限 (サイズ、メッセージの有効期間など)
  • 限られたスループット:バッチや同時リクエストを行うことができますが、それでも高いスループットを達成するのは高価になります。
  • メッセージが複製されるかどうかは分かりませんが、SQS の最低一回の配信保証はそう示唆するでしょう。
  • SNSには、メール、SMS、SQS、HTTPの通知が組み込まれています。Kafkaでは、おそらく自分でコード化する必要があります。
  • メッセージストリームの概念がない。

したがって、全体として、SQS/SNS は、より単純なタスクや、メッセージ量が少ないワークロードに適していると言えるでしょう。