[Hafifçe okuyun] RabbitMQ'yu yeniden tanıyın

Kaynak: Performans ve Mimari

Önsöz

Dağıtılmış bir sistemde, çeşitli uygulamalar arasında verimli bir şekilde nasıl iletişim kurulacağı, sistem tasarımının anahtarıdır.

Kullanım Mesaj komisyoncusu Zarif bir çözümdür.

RabbitMQ Yaygın olarak kullanılan bir mesaj komisyoncusu, aşağıdaki AMQP protokolü .

Sonra anlayacağız:

  • Message Broker kavramı
  • AMQP protokolünün temel bileşimi
  • 4 mesaj yönlendirme modu

1. Mesaj Aracısı

komisyoncu Bir emlak komisyoncusu gibi, satıcı ile alıcı arasındaki işlemi kolaylaştıran bir komisyoncunun anlamıdır.

Mesaj modelinde, mesajların üreticileri ve tüketicileri, satıcılar ve alıcılar ile eşdeğerdir.

Bu nedenle, bir mesaj simsarına da ihtiyaç vardır, bu da mesaj komisyoncusu kavramı.

Mesaj simsarı üreticilerden gelen mesajları alıp tüketicilere iletir, böylelikle üreticiler ve tüketiciler tamamen izole edilebilir.

RabbitMQ Sadece bir mesaj komisyoncusu .

2. AMQP

Mesaj nasıl iletilir? Kullanılan mesaj protokolüne bağlıdır.

RabbitMQ, en önemlileri olan çoklu protokolleri destekler. AMQP (Gelişmiş Message Queuing Protokolü).

AMQP'nin kavramsal modeli çok basittir ve 3 bölümden oluşur:

  • Kuyruk
  • Bağlayıcı
  • Değiş tokuş

Bir mesaj RabbitMQ'ya yayınlandığında, önce Exchange'e ulaşır, ardından Exchange mesajı Queue'ye dağıtır ve tüketiciler mesajı Queue'dan alır.

AMQP programlanabilir bir protokoldür; değişimi, bağlanmayı ve kuyruğu serbestçe yapılandırabiliriz.

2.1 Sıra

Sıra, ilk giren ilk çıkar veri yapısıdır.

Sıra, RabbitMQ'nun mesajları sakladığı yerdir.

Sıra esnek bir şekilde yapılandırılabilir, örneğin:

  • Adı ayarla
  • Aracı çalışmadığında bile veri güvenliğini sağlamak için güvenilir modu yapılandırın
  • Mesaj otomatik olarak silinir
  • Özel mod
  • ...

2.3 Tüketici

Bir kuyruk, aynı anda birden fazla tüketiciye bağlanabilir.

Tüketici, mesajı kuyruğun kendisinden çekebilir veya kuyruk, mesajı aktif olarak tüketiciye itebilir.

2.4 Bağlama

Bağlama, Kuyruk ve Değişim arasındaki bağlantıdır kural .

Her Sıra varsayılan bir Exchange'e bağlıdır ve bu Sıraya daha fazla Borsayı bağlayabiliriz.

Exchange, iletileri Bağlama kuralları aracılığıyla karşılık gelen Sıraya yönlendirir.

2.5 Değişim

Exchange, RabbitMQ'nun mesajlaşma ağ geçididir.

Değişim, mesajı aldıktan sonra nasıl ileteceğine karar veren bir operatör gibidir.

Esas olarak 4 tür yönlendirme vardır:

  • Doğrudan
  • Fanout
  • Konu
  • Üstbilgi

Hadi daha yakından bakalım.

3. Mesaj yönlendirme modu

3.1 Doğrudan

Yönlendirme anahtarı == Bağlama anahtarı
  • Yönlendirme anahtarı, mesajın bir özelliğidir.
  • Bağlama anahtarı, bağlama kuyruğu ve değişimi sırasında belirtilir.

Üretici (yeşil top) ile bir mesaj gönderdi yönlendirme anahtarı - img.resize.

Mesaj değiş tokuşa ulaştığında (turuncu top), değişim tüm resim boyutlarını arayacaktır. Bağlama anahtarı Kuyruk.

Eşleşen kuyruğu bulduktan sonra mesaj bu kuyruklara gönderilecektir.

Bulunmazsa, mesaj yapımcıya iade edilecek veya atılacaktır.

Mesaj belirtilen kuyruğa geldikten sonra, yoklama Yük dengesini sağlamak için tüketicilere (resizer.1 / resizer.2) dağıtılır.

3.2 Fan Çıkışı

Bu yöntem, yönlendirme anahtarını yok sayar ve mesajı tüm bağlı kuyruklara gönderir.

En yaygın senaryo Haber yayını .

Bu yöntemin, borcun tüketiciye yayın yapması değil, borsanın kuyruğa yayın yapmasıdır. Tüketiciye kuyruk, hala bir sorgulama yöntemidir.

3.3 Konu

Yönlendirme anahtarı, ciltleme anahtarı ile model uyumludur.

Yönlendirme anahtarı == Bağlama anahtarındaki desen

RabbitMQ, * ve # olmak üzere iki joker karakter kullanır.

* -Bir kelime eşleştirin.

#-0 veya daha fazla kelimeyi eşleştirin.

yönlendirme anahtarı Logs.error mesajıdır, eşleşme bağlayıcı anahtar - logs.error ve logs. *, bu nedenle mesaj "yalnızca hata" ve "tüm günlükler" e gider.

yönlendirme anahtarı Logs.success mesajı, eşleşiyor mu bağlayıcı anahtar - # başarı ve günlükler. *, böylece mesaj "yalnızca başarı" ve "tüm günlükler" olarak girecektir.

Bu form için yayınlama-abone olma modunda kullanılabilen, ilgili verileri istenen çalışanlara dağıtabilen ve benzeri birçok uygulama senaryosu vardır.

3.4 Başlık

İleti başlığındaki anahtara dayalı yönlendirme, özel bir değişim türü.

Bu yöntemi kullandıktan sonra mesaj göz ardı edilecektir. yönlendirme anahtarı Öznitellikler.

Bir başlık değişimi için bir bağlama oluştururken, birden fazla başlığı bir kuyruğa bağlayabilirsiniz. Bu durumda, mesaj üreticisinin RabbitMQ'ya hangi anahtarların eşleşeceğini söylemesi gerekir. Üretici bir x-match tanımlayıcı belirleyebilir ve değer şu şekilde olabilir:

  • hiç -Sadece bir değer eşleşmelidir.
  • herşey -Tüm değerler eşleşmelidir.

4. Mesaj onayı

İleti hedefe ulaştıktan sonra, aracı onu kuyruktan silmelidir Bu, çok fazla iletinin taşmaya neden olmasını önlemek içindir.

Mesajı silmeden önce, komisyoncu teyit konusunda bilgilendirilmelidir.

2 bildirim yöntemi vardır:

  • Otomatik bildirim : İşlemin tamamlanıp tamamlanmadığına bakılmaksızın tüketici mesajı aldığı sürece.
  • Bildirimi açıkça göster : Yalnızca tüketici bir onay mesajı gönderdikten sonra, bu tüketicinin işlemden sonra silinmesini sağlar.

"SQL İpuçları" MyBatis milyon limit sayfalama optimizasyonu, performans minimum 6 kat artırıldı
önceki
[Açık Kaynak Bilgileri] Visual Studio 201916.5 yayınlandı
Sonraki
[Açık kaynak önerisi] Yeni nesil hafif ekip işbirliği sistemi olan Kooteam 0.9.2 yayınlandı
Temel bilgisayar ağı bilgisi, sadece bu yeterli
Suikast nedir? İngiliz ev sahibi bir soruyla karşı karşıya kalan ABD sözcüsü yalan söylemeye başladı
Film Rehberi Zenginlik ve itibar kazanmak istemiyor, gemiyle birlikte ölmeyi seçiyor
Çin'in Üçüncü Nesil Tarım Makinelerinin İnovasyon Sistemini Kurmak
Turistler, Jingshan Dağı'ndaki Wanchun Pavilion'da fotoğraf çekmek için bir araya geliyor
Giriş nasıl izole edilir ve masrafları kim bırakacak? Daha açık
Çin Yeni Yılı'ndan İran "Bahar Şenliği" ne kadar bu Çinli uzmanlar zamana karşı yarışıyor
Anne ve kızı zehirlendi ve vücutlarını attı Hengyang polisi "3.14" kasıtlı cinayet davasını çözdü.
Trump virüsleri en iyi bilir! Ne de olsa büyükbabası gripten kaynaklanan zatürreden öldü ...
11 yaşında bir kızı kurtaran Hubei, salgından bu yana ilk kalp naklini başarıyla gerçekleştirdi
Esnek ofis modunu açın, Haidian 768 Park'taki işletmelerin% 70'i çalışmaya devam etti
To Top