キューブローカーカペラキュー

ねえ!





「ApacheKafkavs RabbitMQ vs NATS」のようなヘッダーをよく見かけますが、既製のソリューションに適さないものがある場合はどうなりますか?調整することも、独自の何かを発明することもできます。私は2番目の方法で行きました。この記事では、メッセージブローカーの実装について説明します。興味のある方は、猫へようこそ。





1.1注文の保存

少し前、私は非常に大きなオンラインストアで働いていました。共通のタスクがありました:注文を「逃さない」こと。つまり、注文を複数の場所に保存できるようにし、そのうちの少なくとも1つが使用可能な場合は、注文を保存します。





1: .





2: , , .





3: ( ).





:( .





, . , .





.





1.2

, " ". , , , , , . , , , .





, .





2.

, , - .





- .





0: - ().





1: (). " " , .





2: , , ().





3: , ().





4: , , ().





*` ` - . , .





.





Kafka - . Kafka - , - .





RabbitMQ - - , . - .





NATS Streaming - . NATS Streaming . NATS Streaming . , PostgreSQL NATS Streaming . , , , . , , NATS Streaming .





.





, .





3. ( )

3.1

Cluster - , .





Queue - . . , . ID .





Handler - . , , , .





ExternalCluster - . . .





3.2

. . . . , .





4 :













  • ,





  • , ,





. , - .





. , .





3.3

. ( ) (s3) ( ).





. . .





: () , .





. :





















" ". " + ID". . , ID . . ( 1000) .





FIFO

. ( , )





3.4

( )

:





  • N Capella Queue









  • , , ,





  • ( )





:





Capella Queue M (M < K)





:





  • + ID.





  • M





  • - , .





, . .





( )

:









  • ,









  • ,





  • ( )





:





イベントはローカルクラスターのキューに保存されます。メッセージのグローバルに一意のリンクソース+外部IDを定義する必要があります。コピーハンドラーのおかげで、メッセージはデバイスとDCの両方で利用できるようになります





4.当面の計画

  1. 主なケースを説明するチュートリアルを作成します。





  2. セキュリティをねじ込みます。





  3. サービスによるSSL証明書の使用を強化します。





  4. セグメンテーションの追加-セグメントごとにデータを読み取って転送する機能。





  5. キュー、クラスター、およびハンドラーのパラメーターを更新しています。





  6. メッセージが他のクラスターに複製されることを制御する機能。





  7. メトリック。





コード

オンgithubの








All Articles