Menyu

RabbitMQ yoxsa Apache Kafka?

Mürəkkəb bir məntiqi sistemdə, həcmli hesablama tapşırıqları və hadisələr axını olan bir sistemdə paylanmış bir arxitektura təşkil etmək və onun komponentləri arasında əlaqə yaratmaq lazımdır.

Belə bir arxitektura üçün ən çox iki həllərdən biri istifadə olunur: RabbitMQ və ya Apache Kafka. Bu yazıda bu mesaj brokerlərinin necə fərqləndiyini və hansı hallarda hansı hallarda istifadə olunacağını anlayacağıq.

 

RabbitMQ nədir?

RabbitMQ ‒ mesaj brokeridir. Onun əsas məqsədi mesajları qəbul etmək və göndərməkdir. Bunu poçt şöbəsi kimi düşünün: məktubu poçt qutusuna atdığınız zaman əmin ola bilərsiniz ki, gec-tez poçtalyon onu ünvana çatdıracaq. Bu bənzətmədə RabbitMQ həm poçt qutusu, həm poçt şöbəsi, həm də poçtalyondur.

Broker-in arxitekturası aşağıdakı kimi sadələşdirilə bilər:

• Hadisələr göndərən prodüser və ya mesaj provayderi var.

• Mesaj növbəsi - mesajların saxlandığı bir növ "poçt qutusu".

• Abunəçilər, yəni proqramlar - mesajları qəbul edənlər.

 

Növbə qeyri-məhdud sayda təchizatçıdan istənilən sayda mesajı saxlaya bilər və qeyri-məhdud sayda abunəçi onları qəbul edə bilər.

RabbitMQ-un əsas xüsusiyyəti müxtəlif hadisə təminatçıları və istehlakçılar arasında çevik mesaj yönləndirməsidir. Həll iki tərəf arasında sadə məlumat növbəsi yaratmaqla məhdudlaşmır. Server hadisələri (mübadilə) qəbul edən qovşaqlar konsepsiyasını həyata keçirir - onlar məlumatları müxtəlif RabbitMQ mesaj növbələrinə yönləndirirlər.

Məsələn, üç abunəçi eyni mesajı almalıdır. O, çatdırılmalı olduğu bütün abunəçilər üçün üç növbəyə üç eyni mesaj göndərəcək, bir qovşağa gedəcək.

RabbitMQ

 

RabbitMQ xüsusiyyətləri

• Marşrutlaşdırma mexanizmi Marşrutlaşdırma düymələri ilə tamamlanır. Onlar sizə mənbələr və istehlakçılar arasında mesajların yönləndirilməsi üçün çevik qaydalar yaratmağa imkan verir.

• Geniş marşrutlaşdırma alətləri tərtibatçılara və idarəçilərə minlərlə mesaj mənbəyi və yuvası olan mürəkkəb sistemləri konfiqurasiya etməyə imkan verir.

• RabbitMQ təkan çatdırılması konsepsiyasını həyata keçirir: provayder şəbəkəyə yeni hadisələr göndərə bilər, lakin qəbuledici onları provayderdən tələb edə bilməz. Eyni zamanda, sistem mesajların çatdırılma qaydasına zəmanət vermir.

 

Apache Kafka nədir?

Apache Kafka-da mesaj brokeridir, lakin fərqli şəkildə işləyir. O, müxtəlif məlumat təminatçıları tərəfindən məlumatların daxil edildiyi paylanmış jurnalın memarlıq konsepsiyasını həyata keçirir. Sonra bu jurnaldan məlumat digər proqramlar və mikroservislər tərəfindən oxunur.

Mesajlar brokerdə saxlanılır, abunəçilər onlara abunə olur və mesajların gəldiyi ardıcıllıqla eyni olduğuna zəmanət verilir. Kafka, RabbitMQ-dan fərqli olaraq, abunəçinin mesaj alıb-almadığını izləmir, sadəcə olaraq onu müəyyən edilmiş müddət ərzində saxlayır.

Apache Kafkanın xüsusiyyətləri

 

Apache Kafkanın xüsusiyyətləri

• Apache Kafka böyük həcmdə verilənləri istehlak etmək və ötürmək qabiliyyəti ilə məşhurdur. O, yüksək yüklərlə işləmək üçün lazım olan hər şeyə malikdir: təkrarlama, üfüqi miqyaslama, eyni anda bir neçə serverdə mesaj axınının paralel işlənməsi.

• Paralellik və paylanmış arxitektura etibarlılığa yaxşı təsir göstərir: hətta klasterin bir hissəsinin sıradan çıxması belə mesajları pozmayacaq.

• Məlumatların ötürülməsində provayderlər və məlumat istehlakçıları iştirak edirlər. Təchizatçılar Apache Kafkaya mesajlar yazır, istehlakçılar onları oxuyur.

• Apache Kafka, RabbitMQ-dan fərqli olaraq, mesajların çatdırılma qaydasına zəmanət verir.

 

RabbitMQ yoxsa Apache Kafka. Hansını seçmək lazımdır?

RabbitMQ

• Sistem daxilində mesajların yönləndirilməsində çeviklik sizin üçün vacibdir. RabbitMQ-nun məlumatların çatdırılması yollarının qurulması üçün alətlər dəsti hadisə axınındakı ən çətin ssenariləri belə həll etməyə qadirdir.

• Mesajın çatdırılması faktı sizin üçün vacibdir, lakin çatdırılma sırası vacib deyil. RabbitMQ parametrləri buna zəmanət vermir: əgər siz əvvəlcə №1 mesajı, sonra isə 2-ci mesajı göndərmisinizsə, onlar abunəçiyə əks ardıcıllıqla gələ bilər.

 

Apache Kafka

• Əgər böyük verilənlərlə işləyirsinizsə, Apache Kafka mütləq uyğun gəlir. Kafkanın performans üstünlüyü var: o, məhdud resurslarla belə saniyədə milyonlarla mesaj ötürmə qabiliyyətinə nail ola bilir.

• Həll proqramçılara istənilən vaxt növbədən mesajları götürməyə imkan verir.

• Bəzi sistemlərdə hadisələrin ardıcıllığı vacibdir - məsələn, göndərilmə göndərilməmişdən əvvəl çatdırıla bilməz.

 

Marşrutlaşdırma etibarlılığına və çevikliyə ehtiyacınız olduqda və mesajların çatdırılma sırasına əhəmiyyət vermədiyiniz zaman RabbitMQ seçin. Apache Kafka, əgər siz ağır iş yükləri ilə işləyirsinizsə, genişlənmə qabiliyyətinə, mesajın düzgün qaydada çatdırılmasına və mesaj tarixçəsinə baxmaq qabiliyyətinə ehtiyacınız varsa uyğundur.