Hei!
Saya sudah sering melihat header seperti "Apache Kafka vs RabbitMQ vs NATS", tetapi bagaimana jika ada sesuatu yang tidak sesuai dengan solusi yang sudah jadi? Anda bisa menyesuaikan diri, atau Anda bisa menciptakan sesuatu sendiri. Saya pergi ke arah kedua. Pada artikel ini, saya ingin berbicara tentang penerapan broker pesan saya. Jika Anda tertarik, selamat datang di cat.
1.1 Menyimpan pesanan
Beberapa waktu lalu saya bekerja di toko online yang sangat besar. Ada tugas umum: tidak "melewatkan" pesanan apa pun. Artinya, untuk membuatnya memungkinkan untuk menyimpan pesanan ke beberapa tempat, dan jika setidaknya satu dari mereka tersedia, simpan pesanan.
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
- , .
, . .
( )
:
,
,
( )
:
Acara disimpan dalam antrian di cluster lokal. Anda perlu menentukan sumber tautan unik global + ID eksternal untuk pesan tersebut. Berkat penangan salinan, pesan akan tersedia di perangkat dan di DC
4. Rencana segera
Buat tutorial yang menjelaskan kasus utama.
Sekrup keamanan.
Kencangkan penggunaan sertifikat SSL oleh layanan.
Tambahkan segmentasi - kemampuan untuk membaca dan mentransfer data berdasarkan segmen.
Memperbarui parameter untuk antrian, cluster, dan penangan.
Fungsi untuk mengontrol bahwa pesan direplikasi ke cluster lain.
Metrik.
Kode
Di github