Apache Pulsarについて理解したいので解像度を上げるための記事をここに
Apache Pulsarとは?
Apache Pulsar は、パブリッシャ サブスクライブ (pub-sub) パターンに基づいて構築された、サーバー間のメッセージングおよびキューイング用のクラウド ネイティブなマルチテナントの高性能ソリューションです。Pulsar は、RabbitMQ のような従来のメッセージング システムの優れた機能と Apache Kafka のような pub-sub システムの機能を組み合わせて、ダウンタイムなしで動的にスケールアップまたはスケールダウンします
https://pulsar.apache.org/
MessageQueuesとpubsubの違い
メッセージ キュー
メッセージ キューは、発行サービスと、キューを介して通信する複数のコンシューマー サービスで構成されます。この通信は通常、パブリッシャーがコンシューマーにコマンドを発行する 1 つの方法です。
pubsub
メッセージ キューに対しては、pub-sub アーキテクチャでは、すべての消費 (サブスクライブ) アプリケーションが、パブリッシャーが交換に投稿するメッセージの少なくとも 1 つのコピーを取得する必要があります。
https://www.baeldung.com/pub-sub-vs-message-queues
ヤフーの「メッセージングPF「Apache Pulsar」の使い方(入門編)」が分かりやすかった
まずトピックとは、メッセージをProduce/Consumeするときのエンドポイントと考えてください。次にネームスペースとは、トピックを束ねる空間のことです。このネームスペース単位でトピックに対する権限や制限などの設定を与えることでトピックを容易に管理できます。次にテナントとは、ネームスペースを束ねる空間のことです。
Pulsarではメッセージ送受信のエンドポイントであるトピックを次のような形式で指定する事ができます。
persistent://${テナント}/${ネームスペース}/${トピック}
最後にサブスクリプションとは、ConsumerがトピックをConsumeするときに使用する識別子です。図2はメッセージとサブスクリプションの関係を示すイメージです。このように、あるサブスクリプションを指定したConsumerがどこまでメッセージをConsumeしたかを管理しています。
pulsarの基本機能
- 水平スケール可能
- なぜ?
- 低レイテンシ
- なぜ?
- マルチテナンシー
- システムやソフトウェアなどを複数の利用者で共有して利用できるような設計・構造であること
- 永続メッセージ
- なぜ?
- 配信保証
- なぜ
発展的機能
サブスクリプションタイプ
- Exclusive:1つのサブスクリプションを1つのConsumerだけがConsumeできる
- Failover:1つのサブスクリプションに複数のConsumerが接続できる
最も優先度の高いConsumerだけがConsumeできるが、このConsumerがダウンしたとき次の優先度のConsumerがConsumeできるようになる
- Shared:1つのサブスクリプションを複数のConsumerがConsumeできる
メッセージがラウンドロビンに近い形でConsumerに配信される
- Key_Shared:1つのサブスクリプションを複数のConsumerがConsumeできる
ProducerはメッセージにKeyと呼ばれる識別子を付与して、同じKeyを持つメッセージは同じConsumerに配信される
同じKeyを持つメッセージの順序保証ができる
partitioned topic
Pulsarでは通常トピックは1つのBrokerサーバー(ProducerとConsumerのメッセージ送受信を中継するPulsarのコンポーネント。詳しくは後述)によって処理されます。これはつまり、トピックに対するProduce/Consumeの処理能力は1つのBrokerサーバーの性能を超えないことを意味します。Partitioned Topicsではトピックを複数の内部トピックと呼ばれる通常トピックの集まりとして取り扱うことができるようになります。