Mikroservis Mimarisi 3: Eş Zamansız İletişim Detaylı İnceleme

Mikroservis Mimarisinde Eş Zamansız İletişim: Derinlemesine İnceleme
Bu serinin başlangıcında mikroservis mimarisinde iletişim tarafında temel kavramlarına genel bir bakış atmış ve ardından eş zamanlı iletişimi ayrıntılı bir şekilde incelemiştik. Şimdi sıra eş zamansız iletişimde.
Eş Zamansız İletişim
Eş zamansız iletişim, iletişimdeki gönderici ve alıcı arasındaki zaman bağımsızlığını vurgular. Bu tür iletişimde, gönderilen mesaj veya işlem hemen yanıt beklemeksizin iletilir ve alıcı tarafından daha sonradan işlenir. Eş zamansız iletişim, özellikle iki veya daha fazla bileşen veya servis arasında veri paylaşımını ve iş birliğini kolaylaştırır. Bu, servislerin birbirleriyle bağımsız olarak çalışabilmesini ve veri alışverişini uygun bir şekilde gerçekleştirebilmesini sağlar. Bu esnek iletişim türü, mikroservis mimarileri ve dağıtık sistemler için kritik bir öneme sahiptir.
Mikroservis Mimarisinde Eş Zamansız İletişimin Önemi
Peki, eş zamansız iletişimin mikroservis mimarisinde önemini daha iyi anlamak için, mikroservis mimarisinde eş zamansız iletişim nedir sorusuna odaklanalım:
Birden çok servisin birbirleriyle bağımsız olarak ve zamandan bağımsız bir şekilde iletişim kurabilmesidir. Bu, her bir servisin kendi işlemlerini gerçekleştirirken diğer servislerle beklemeksizin veri paylaşabilmesine ve iş birliği yapabilmesine olanak tanır. Bu bağımsız iletişim, servislerin daha hızlı geliştirilmesini, dağıtılmasını ve ölçeklendirilmesini sağlar. Ayrıca, servisler arasında veri paylaşımı, olayların etkili bir şekilde iletilmesi ve servislerin hata durumlarının daha iyi yönetmesine olanak tanır. Bu da mikroservis mimarisinin esneklik, hata toleransı ve ölçeklenebilirlik gibi avantajlarını destekler.
- Esneklik(Flexibility)
- Servislerin bağımsız geliştirilmesi ve dağıtılmasını, dinamik ölçeklenebilirliği, hızlı yanıt vermeyi, gelişmiş hata yönetimini ve farklı teknoloji entegrasyonlarını destekler. Bu yaklaşım, servislerin birbirlerine sıkı sıkıya bağlı olmadan çalışmalarını sağlayarak, sistem genelinde performans optimizasyonu ve dayanıklılığı artırır. Eş zamansız iletişim, yoğun trafik durumlarında veya hata durumlarında bile servislerin etkili bir şekilde çalışmasını sağlayarak, teknolojik çeşitlilik ve iş ihtiyaçlarına hızlı adaptasyon imkanı sunar.
- Bir müzik festivali organizasyonu düşünün. Festival sırasında, katılımcılara anlık performans güncellemeleri, sahne değişiklikleri ve hava durumu bilgileri sağlanıyor. Bu bilgiler, bir mobil uygulama üzerinden eş zamansız olarak gönderiliyor. Festival alanında birden fazla etkinlik eş zamanlı olarak gerçekleşirken, her katılımcıya ilgilendiği etkinlikle ilgili bilgiler, diğer etkinliklerden bağımsız olarak ulaştırılıyor. Bu durumda, eş zamansız iletişim, herhangi bir performansın veya anlık değişikliğin tüm katılımcılar üzerindeki etkisini izole eder ve her bir katılımcıya kişiselleştirilmiş, kesintisiz bir deneyim sunar. Böylece, organizasyon, herhangi bir sahne veya etkinlikte meydana gelebilecek ani değişikliklere hızlı ve esnek bir şekilde yanıt verebilir, katılımcılar da kendi ilgi alanlarına göre bilgilendirilirler. Bu, eş zamansız iletişimin esnekliğini ve bir olayın farklı bölümlerini nasıl etkili bir şekilde yönetebildiğini gösterir.
- Hata Toleransı(Fault Tolerance)
- Hataların izole edilmesi, esnek hata yönetimi, yeniden deneme mekanizmaları ve zaman bağımsız işleme prensiplerine dayanır. Bu yaklaşım, bir servisteki hata durumunun diğer servisleri etkilememesini sağlar, geçici sorunlarda mesajların kuyrukta tutulmasına ve daha sonra işlenmesine olanak tanır. Ayrıca, servislerin yavaşlama veya kesintilere rağmen bağımsız olarak çalışmaya devam etmelerini sağlayarak, sistemin genel dayanıklılığını ve sürekliliğini artırır. Bu özellikler, mikroservis mimarisindeki eş zamansız iletişimin, sistemlerin daha dayanıklı ve güvenilir olmasını nasıl sağladığını gösterir.
- Bir finans şirketi, dünya çapında dağıtılmış bir veritabanı sistemi kullanıyor. Bu sistemde, bir bölgedeki veritabanı sunucusu arızalandığında, işlemler otomatik olarak başka bir bölgedeki sağlam sunucuya yönlendiriliyor. Bu yönlendirme, kullanıcıların işlemlerini kesintisiz sürdürmelerini sağlıyor ve bölgesel arızalara karşı yüksek hata toleransı sunuyor. Eş zamanlı olmayan replikasyon mekanizması sayesinde, arızalı sunucu tekrar çevrimiçi olduğunda, tüm veriler senkronize ediliyor, böylece veri tutarlılığı ve sistemin sürekli çalışır durumda olması garanti altına alınıyor. Bu yaklaşım, hata durumlarında bile iş sürekliliğini ve veri bütünlüğünü koruyarak, finansal işlemlerin güvenilirliğini ve erişilebilirliğini artırıyor.
- Ölçeklenebilirlik(Scalability)
- Sistemin trafik artışlarına ve değişen kullanıcı taleplerine esnek bir şekilde uyum sağlamasını sağlar. İletişim, mesaj kuyrukları veya olay(event) tabanlı yapılar kullanılarak gerçekleştirilir, bu da her mikroservisin bağımsız olarak ve kendi hızında çalışmasına olanak tanır. Bu yapı, aniden artan yük altında bile sistemin kararlılığını korur. Mesajların kuyruklanması, trafik yükünü dengeler ve her servisin işlem kapasitesini aşmamasını sağlar, böylece sistemin bütünü daha efektif çalışır. Bu dağıtık ve esnek yapı, servislerin ihtiyaç duyuldukça kolayca ölçeklendirilmesine veya küçültülmesine imkan verir, böylece kaynak kullanımı optimize edilir ve genel sistem performansı artar. Bu özellikler, mikroservis tabanlı sistemlerin, değişken yük koşullarına karşı yüksek ölçeklenebilirlik ve esneklik sunmasını sağlar.
- Bir canlı yayın platformu, dünya çapında milyonlarca kullanıcıya hizmet veriyor. Bu platform, kullanıcıların yüklediği videoları gerçek zamanlı olarak işlemek için mikroservis tabanlı bir mimari kullanıyor. Özellikle büyük etkinlikler sırasında, platforma yüklenen video sayısı dramatik bir şekilde artıyor. Bu durumda, platform, video işleme mikroservislerini dinamik olarak ölçeklendiriyor. Her video, bir mesaj kuyruğuna yerleştiriliyor ve müsait olan bir işlem servisi tarafından sırayla işleniyor. Bu yaklaşım, yüksek talep anlarında bile video işleme süreçlerinin hızlı ve verimli olmasını sağlıyor. Ayrıca, her mikroservis bağımsız çalıştığı için, bir serviste meydana gelebilecek arızalar diğerlerini etkilemiyor ve böylece platform, sürekli olarak yüksek kalitede hizmet sunmaya devam edebiliyor. Bu örnekte, eş zamanlı olmayan iletişim ve dinamik ölçeklendirme, platformun büyük kullanıcı yüklerine hızlı ve etkin bir şekilde yanıt vermesini sağlıyor, bu da kullanıcı deneyimini önemli ölçüde iyileştiriyor.
- Verimlilik(Efficiency)
- Eş zamanlı olmayan iletişim, mikroservis mimarisinde verimliliği artıran bir yöntemdir. Bu yaklaşımda, servisler arası iletişim, mesaj kuyrukları veya benzeri araçlar aracılığıyla gerçekleşir, bu da her bir servisin diğerlerinden bağımsız olarak ve kendi hızında çalışmasını sağlar. Böylece, bir servisin ağır iş yükü veya arızası, diğer servislerin performansını doğrudan etkilemez. Mesajların kuyruklanması, iş yükünün dengelenmesine ve sistemin daha verimli kullanılmasına olanak tanır. Örneğin, bir servis yoğun olduğunda, gelen istekler kuyrukta bekletilir ve kapasite arttığında işlenir. Bu, kaynak kullanımını optimize eder ve sistemin pik yük zamanlarında bile kararlı kalmasını sağlar. Eş zamanlı olmayan iletişim, böylece, mikroservislerin daha verimli çalışmasını, kaynakların etkili kullanımını ve genel sistem performansının artırılmasını sağlar. Bu özellikler, özellikle yüksek trafikli ve dinamik uygulamalar için önemlidir, çünkü sistem kaynaklarını en etkili şekilde kullanarak, artan kullanıcı taleplerine hızlı ve etkin bir şekilde yanıt verilmesine imkan tanır.
- Düşünün ki, bir şirket, binlerce IoT (Nesnelerin İnterneti) cihazından veri topluyor. Bu cihazlar, çeşitli sensörlerden sürekli veri gönderiyor. Eş zamanlı olmayan iletişim kullanarak, bu veriler bir mesaj kuyruğuna aktarılır ve ardından farklı mikroservisler tarafından işlenir. Örneğin, bir servis sıcaklık verilerini, bir diğeri hareket verilerini analiz eder. Her servis, kendi veri setini bağımsız olarak işleyerek, sistem genelinde verimliliği artırır. Bu yaklaşım, her bir sensör türünün verilerinin ayrı ayrı ve en uygun zamanda işlenmesini sağlar, böylece hiçbir veri kaynağı diğerini yavaşlatmaz veya tıkar. Eş zamanlı olmayan iletişimin bu kullanımı, veri işleme süreçlerinin optimize edilmesini, kaynakların etkili kullanımını ve genel olarak sistemin daha hızlı ve verimli çalışmasını sağlar, özellikle de büyük veri akışlarının olduğu durumlarda bu yaklaşımın faydası büyüktür.
Bu açıklamalar ışığında, eş zamansız iletişimin mikroservis mimarisinde nasıl esneklik, hata toleransı, ölçeklenebilirlik ve verimlilik avantajları sunduğunu gördük. Bu avantajlar, her servisin bağımsız olarak çalışmasını ve sistemin genelinde optimizasyon sağlamasını mümkün kılıyor. Ancak, bu yaklaşımın faydalarını en üst düzeye çıkarmak için, eş zamansız iletişimin ne zaman ve hangi durumlarda kullanılması gerektiğini anlamak önemlidir. Şimdi, mikroservis mimarisinde eş zamansız iletişimin ideal olarak ne zaman tercih edilmesi gerektiğini ele alalım, bu sayede bu yaklaşımın uygulama senaryolarını daha net bir şekilde belirleyebiliriz.
Ne Zaman Eş Zamansız İletişimi Tercih Ederiz?
Eş zamansız iletişimin mikroservis mimarisindeki rolünün önemini ve sağladığı avantajları göz önünde bulundurarak, artık neden kullanmamız gerektiği konusunda sağlam bir fikir birliğine vardığımızı söyleyebiliriz. Eş zamansız iletişimin tercih edilmesi, uygulamanın ihtiyaçlarına daha uygun ve etkin bir şekilde yanıt vermek, aynı zamanda sistemin genel performansını ve verimliliğini optimize etmek için hayati önem taşır. Bu bağlamda, eş zamansız iletişimin ideal olarak ne zaman kullanılması gerektiğini belirleyen temel durumları incelemek, bu yaklaşımın uygulama senaryolarına ve mevcut zorluklara ne şekilde cevap verebileceğini daha iyi anlamamıza yardımcı olacaktır. İşte, bu durumların bazıları şunlardır:
- Ölçeklenebilirlik
- Sistemdeki kullanıcı sayısı veya işlem hacmi arttığında, ölçeklenebilirliği sağlamak için eş zamansız iletişim kullanılır. Bu, yüksek talep durumlarında sistem kaynaklarının etkin kullanımını sağlar.
- Online alışveriş platformları, özellikle tatil sezonlarında veya özel indirim günlerinde, aniden artan kullanıcı trafiğini yönetmek için eş zamansız iletişim kullanır. Bu durumda, sistemi aşırı yüklenmeden korumak ve tüm kullanıcı isteklerini etkili bir şekilde işlemek için mesaj kuyrukları kullanılır.
- Hata İzolasyonu
- Bir bileşenin başarısız olması durumunda, bu hatanın diğer bileşenlere sıçramaması için eş zamansız iletişim önemlidir. Bu, sistemdeki hata etkilerinin izole edilmesini ve minimize edilmesini sağlar.
- Bulut tabanlı hizmetler, bir sunucunun arızalanması durumunda bile servislerin çalışmaya devam etmesini sağlamak için eş zamansız iletişimi kullanır. Bu, hatalı bileşenin etkisinin diğer servisler üzerinde izole edilmesini ve minimize edilmesini sağlar.
- Bağımsız Geliştirme
- Eş zamansız iletişim, farklı ekiplerin veya bileşenlerin birbirlerine bağımlı olmadan geliştirilmesini ve güncellenmesini sağlar, böylece hızlı yenilik ve adaptasyon mümkün olur.
- Çoklu takımların üzerinde çalıştığı büyük yazılım projelerinde, her ekip kendi mikroservisini bağımsız olarak geliştirir ve günceller. Eş zamansız iletişim, bu mikroservislerin birbirinden bağımsız olarak çalışmasını ve güncellenmesini kolaylaştırır.
- Kaynak Optimizasyonu
- Eş zamansız iletişim, sistem kaynaklarının daha verimli kullanılmasını sağlar. İş yükü dengelenir ve her servis kendi kapasitesine göre çalışır.
- Video akış hizmetleri, kullanıcıların farklı zamanlarda farklı içeriklere erişimini yönetmek için eş zamansız iletişim kullanarak kaynakları optimize eder. Bu, her bir video isteğinin verimli bir şekilde işlenmesini sağlar.
- Esnek Trafik Yönetimi
- Trafik dalgalanmalarını ve anlık yük artışlarını yönetmek için eş zamansız iletişim idealdir. Bu, sistem performansının ve kullanılabilirliğinin korunmasına yardımcı olur.
- Sosyal medya platformları, kullanıcıların paylaşımlarını ve etkileşimlerini yönetmek için eş zamansız iletişimi kullanır, özellikle büyük olaylar sırasında trafikteki ani artışları yönetmek için bu yaklaşım hayati öneme sahiptir.
- Dayanıklılık ve Süreklilik
- Sistemdeki servisler arasında bağımsızlık sağlayarak, bir servisin arızalanması durumunda bile sistemin çalışmaya devam etmesini sağlar.
- Finansal işlemleri gerçekleştiren sistemler, işlem sürekliliğini sağlamak ve hata durumlarında bile işlemlerin kesintisiz devam etmesini sağlamak için eş zamansız iletişimi kullanır.
- Veri Entegrasyonu ve İşleme
- Büyük veri setlerinin veya farklı veri kaynaklarının entegrasyonu ve işlenmesi için eş zamansız iletişim kullanılır. Bu, veri işleme süreçlerinin etkinliğini artırır.
- Sağlık sektöründe, hastaların çeşitli medikal cihazlardan gelen verilerinin toplanması ve analiz edilmesi için eş zamansız iletişim kullanılır. Bu, büyük veri setlerinin etkili bir şekilde işlenmesini sağlar.
Eş zamansız iletişimin mikroservis mimarisinde ne zaman kullanılması gerektiği üzerine yaptığımız örneklerle incelemenin ardından, şimdi bu yaklaşımın çeşitli uygulama yöntemlerine ve tekniklerine odaklanma zamanı geldi. Mesaj kuyrukları, event-driven mimari, web socket ve uzun süreli bağlantılar gibi eş zamansız iletişim yaklaşımlarını ele alacağız, her birinin kullanım senaryolarını ve avantajlarını derinlemesine tartışarak, bu metodolojilerin mikroservis mimarisinde nasıl etkili bir şekilde kullanılabileceğini keşfedeceğiz.
Eş Zamansız İletişim İçin Mikroservis Mimarisinde Kullanılan Yaklaşımlar
Mikroservis mimarisi, bağımsız servislerin etkili bir şekilde iş birliği yapmasını gerektirir ve bu iş birliği çoğunlukla eş zamansız iletişim yoluyla sağlanır. Eş zamansız iletişim, servislerin birbirleriyle zaman uyumsuz olarak haberleşmesini ifade eder; bu, bir servisin diğer bir servisten yanıt beklemeden işlemine devam edebileceği anlamına gelir. Bu yaklaşım, sistem kaynaklarının daha verimli kullanılmasına ve servisler arası bağımlılıkların azaltılmasına olanak tanır. Eş zamansız iletişim, özellikle yüksek trafikli veya yoğun işlem gerektiren sistemlerde, gecikmeleri ve sistem tıkanıklıklarını önlemek için kritik öneme sahiptir.
Bu iletişimi gerçekleştirmek için çeşitli yaklaşımlar bulunur. İlk olarak, mesaj aracıları, servisler arasında eş zamansız iletişim sağlayarak, yüksek trafikli durumlarda bile verimli bir iletişim akışı sunar. WebSocket ise, gerçek zamanlı veri akışı gerektiren durumlar için idealdir; özellikle kullanıcı arayüzü ile mikroservisler arasındaki etkileşimde tercih edilir. Son olarak, olay tabanlı mimari, olay tabanlı bir yaklaşımla, servislerin bir olaya tepki vermesini ve bu olayları diğer servislerle paylaşmasını sağlar. Bu kısımda her birini ayrıntılı bir şekilde inceleyeceğiz.
- Mesaj Aracıları(Message Broker)
- Dağıtılmış sistemlerde servisler veya hizmetler arasında bilgi transferi sağlayan bir aracıdır. Bu araç, sistem bileşenlerinin birbirlerinden bağımsız ve hatta farklı dillerde veya platformlarda olmasına rağmen etkili bir şekilde iletişim kurmalarını mümkün kılar. Mesaj güvenliğini ve güvenilir ulaşımını sağlayarak, mesajların kaybolmasını veya bozulmasını önler. Bunun yanı sıra, mesaj kuyruğu veri yapısını kullanarak mesajları sıralı ve düzenli bir şekilde işler. Bu özellikleriyle mesaj aracısı, sistemlerin esnekliğini, ölçeklenebilirliğini ve genel performansını artıran kritik bir bileşendir.
- Avantajları
- Eş Zamanlı Olmayan İşlemler
- Mesaj arıcıları, servislerin aynı anda çalışmasını gerektirmez, böylece işlemler esnek bir şekilde yürütülebilir.
- E-ticaret platformlarında, sipariş işleme ve envanter yönetimi sistemleri ayrı mikroservislerle yürütülür. Bir sipariş verildiğinde, sipariş işleme servisi siparişi kabul eder ve envanter güncellemesi için asenkron bir mesaj gönderir. Bu, sipariş sürecinin envanter güncellemesini beklememesini sağlar.
- Bağımsız Çalışabilme
- Servisler bağımsız olarak çalışabilir, bu da kaynak kullanımını optimize eder ve darboğaz oluşumunu önler.
- Finansal işlemleri yürüten bir bankada, işlem onayları ve hesap güncellemeleri farklı mikroservisler tarafından gerçekleştirilir. Mesaj aracısı, bir servisin diğerinin tamamlanmasını beklemeden çalışmasını sağlar, böylece işlem süreçleri daha verimli hale gelir.
- Mesaj Teslim Garantisi
- Çoğu mesaj aracısı, mesajların güvenilir bir şekilde teslim edilmesini garanti eder, bu da sistem güvenliğini artırır.
- Sağlık sektöründe, hasta kayıtlarının güncellenmesi kritik öneme sahiptir. Mesaj aracıları, bu bilgilerin güvenilir bir şekilde ve kayıp olmadan ilgili sağlık hizmetleri arasında iletilmesini sağlar.
- Eş Zamanlı Olmayan İşlemler
- Dezavantajları
- Sistem Karmaşıklığı
- Mesaj aracılarının kullanımı, sistem mimarisini daha karmaşık hale getirebilir.
- Bir startup, basit bir monolitik yapıdan mikroservislere geçiş yaptığında, birden fazla mesaj aracısını yönetmek ve entegre etmek sistem karmaşıklığını artırır.
- Debugging Zorlukları
- Eş zamansız işlemler nedeniyle, hata ayıklama süreçleri zorlaşabilir.
- Bir online oyun platformunda, oyuncuların puanlarını güncelleyen mikroservisler arasındaki eş zamansız iletişimde hata meydana geldiğinde, hangi servisin sorunlu olduğunu belirlemek zor olabilir.
- Maliyet
- Yüksek performans gereksinimleri ve ek kaynak kullanımı maliyetleri artırabilir.
- Küçük bir işletme, yüksek veri hacimlerini işleyen bir mesaj aracısı kullanmak istediğinde, bu, ek sunucu kapasitesi ve bakım maliyetleri anlamına gelebilir.
- Güvenlik Zorlukları
- Mesaj aracıları, özellikle açık ağlarda, güvenlik açısından zorluklar oluşturabilir.
- Bir finans kurumu, mesaj aracıları kullanarak müşteri verilerini transfer ederken, veri sızıntısı riskini yönetmek için ek güvenlik önlemleri almak zorunda kalabilir.
- Yanlış Konfigürasyon Riskleri
- Eğer doğru şekilde yapılandırılmazsa, mesaj aracıları beklenen performansı sağlayamayabilir.
- Bir perakende şirketi, Black Friday gibi yoğun dönemlerde yanlış yapılandırılmış bir mesaj aracısı nedeniyle yavaşlamalar ve sistem çökmeleri yaşayabilir.
- Sistem Karmaşıklığı
Mesaj aracılarının genel tanımını, işlevlerini, avantajlarını ve dezavantajlarını ele aldıktan sonra, şimdi daha detaylı bir incelemeye geçelim. Bu bölümde, Kafka, RabbitMQ ve ActiveMQ gibi yaygın mesaj aracılarını ayrı ayrı inceleyeceğiz ve en sonunda bunları karşılaştıracağız.
- Kafka
- Apache Kafka, veri akışlarını gerçek zamanlı olarak işlemek ve yönetmek için kullanılan bir yayın-abone sistemi sunan, dağıtılmış bir akış platformudur. Yüksek veri hacimlerini etkin bir şekilde işleyebilen bu sistem, veri kaynaklarından gelen verileri toplayıp bunları abonelere ileterek, büyük ve sürekli veri akışlarının analiz edilmesinde değerlidir. Kafka’nın bu özellikleri, çeşitli alanlarda ve senaryolarda kullanımını popüler kılar. Detaylı bilgi için, Spiceworks’teki orijinal makaleyi buradan inceleyebilirsiniz. İşte Kafka’nın tercih edilme nedenlerinin maddeler halinde ayrıntılı açıklaması:
- Yüksek Performans ve Ölçeklenebilirlik
- Kafka, yüksek hızda veri yazma ve okuma işlemleri sunar, bu da büyük ölçekli veri işleme ihtiyaçları için idealdir. Yatay ölçeklenebilir mimarisi sayesinde, iş yükü arttıkça daha fazla broker ekleyerek sistem genişletilebilir. Bu, Kafka’nın büyük veri setlerini ve yüksek trafikli uygulamaları desteklemesini sağlar.
- Güvenilirlik ve Dayanıklılık
- Kafka, verileri disk üzerinde saklar ve birden çok kopyasını tutarak veri kaybını önler. Bu replikasyon özelliği, herhangi bir sunucu arızasında bile veri bütünlüğünün korunmasını sağlar. Ayrıca, sistem arızalarına karşı kendi kendini iyileştirme yeteneği vardır.
- Hata Toleransı
- Kafka’nın çoklu broker yapısı ve replikasyon mekanizması, tek bir noktadan hata riskini azaltır. Bir broker çöktüğünde, diğer brokerlar devreye girerek veri erişimini ve işlemleri sürdürür.
- Düşük Gecikme Süresi
- Kafka, mesajları milisaniye düzeyinde gecikmelerle işleyebilir, bu da gerçek zamanlı veri işleme ve analiz gereksinimleri için idealdir. Özellikle finans, perakende ve internet hizmetleri gibi hız kritik sektörler için bu özellik çok önemlidir.
- Esnek Veri Yapıları
- Kafka, JSON, Avro, String gibi çeşitli veri formatlarını destekler ve bu formatlar arasında dönüşüm yapılmasına olanak tanır. Bu, farklı veri kaynakları ve tüketici uygulamalar arasında esnek entegrasyon sağlar.
- Yüksek Uyumluluk
- Kafka’nın yaygın programlama dilleri (Java, Python, .NET vb.) ile uyumluluğu ve REST API, Kafka Connect gibi araçları, çeşitli sistem ve uygulamalarla kolay entegrasyonu mümkün kılar.
- Geniş Ekosistem
- Kafka, Kafka Streams, Kafka Connect gibi ek bileşenler ve yönetim, izleme araçları ile zengin bir ekosistem sunar. Bu ekosistem, kullanıcıların karmaşık veri işleme ve akış ihtiyaçlarını kolayca yönetmelerine olanak tanır.
- Dayanıklı Depolama ve Geri Alma
- Kafka’da veriler, konfigüre edilen bir süre boyunca veya disk boyutu sınırlarına ulaşana kadar saklanır. Bu, eski verilere ihtiyaç duyulduğunda kolayca erişim sağlar ve veri analizi, raporlama gibi işlemleri destekler.
- Esnek Yayın-Abone Modeli
- Kafka, hem yayıncı-hem de abone-tabanlı (pub-sub) modelleri destekler ve ayrıca, bir mesajın birden fazla abone tarafından farklı zamanlarda okunmasına olanak tanır. Bu, farklı uygulamalar ve hizmetler arasında esnek veri paylaşımını mümkün kılar.
- Çoklu Tüketici Desteği
- Kafka, aynı veri akışını birden fazla tüketici grubunun okumasına olanak tanır. Bu, aynı verilerin farklı uygulamalar veya hizmetler tarafından farklı amaçlar için kullanılmasını sağlar, bu da veri analizi ve işlem süreçlerini zenginleştirir ve çeşitlendirir.
- Yüksek Performans ve Ölçeklenebilirlik
- Kafka’nın avantajlarını detaylandırdıktan sonra, bu avantajların hangi özel durumlar ve senaryolarda öne çıktığını daha ayrıntılı bir şekilde inceleyebiliriz. Kafka, veri akışı ve işleme ihtiyaçlarına yönelik çeşitli senaryolarda tercih edilen bir platformdur. İşte bu senaryolar ve Kafka’nın neden tercih edildiği:
- Büyük Ölçekli Veri İşleme
- Kafka, büyük veri hacimlerini hızlı ve etkili bir şekilde işleyebilir. Büyük e-ticaret siteleri, sosyal medya platformları ve analitik firmaları gibi veri yoğun ortamlarda, Kafka’nın bu özelliği kritik önem taşır.
- Gerçek Zamanlı Veri İşleme
- Finansal piyasalardan perakende sektörüne kadar geniş bir yelpazede, gerçek zamanlı veri işleme gereksinimleri Kafka’nın düşük gecikme süresi ve yüksek işlem hızı özellikleriyle karşılanır.
- Olay Tabanlı Mimari ve Mikro Hizmetler
- Mikro hizmetlerin ve olay tabanlı mimarilerin popülerleşmesiyle, Kafka, bu hizmetler arasında etkin, güvenilir ve ölçeklenebilir bir veri iletişimi sağlar.
- Loglama ve Monitöring
- Sistem loglarının ve kullanıcı etkinliklerinin kaydedilmesi, analiz edilmesi ve izlenmesi için Kafka sıklıkla kullanılır. Bu, operasyonel zeka ve proaktif sorun çözümü için önemlidir.
- Veri Entegrasyonu ve ETL İşlemleri
- Çeşitli veri kaynaklarından verilerin toplanması, dönüştürülmesi ve yüklenmesi işlemlerinde Kafka, esnek ve güçlü bir araç olarak öne çıkar.
- Yüksek Kullanılabilirlik ve Felaket Kurtarma
- Kafka’nın yüksek kullanılabilirlik ve hata toleransı özellikleri, kritik iş süreçlerinin kesintiye uğramadan devam etmesini sağlar, özellikle felaket kurtarma senaryolarında önemlidir.
- Cihaz ve IoT Veri Yönetimi
- IoT cihazlarından gelen büyük veri akışlarını yönetmek ve işlemek için Kafka, esneklik ve ölçeklenebilirlik sunar.
- Kişiselleştirilmiş Kullanıcı Deneyimleri
- E-ticaret ve dijital medya platformları, kullanıcı etkileşimlerini izlemek ve kişiselleştirilmiş deneyimler sunmak için Kafka’yı kullanır.
- Kurumsal Etkinlik Kayıtları
- Kurumlar, iş süreçleri, müşteri etkileşimleri ve operasyonel veriler gibi önemli etkinlikleri kaydetmek ve analiz etmek için Kafka’ya başvurur.
- Stream Processing ve Analitik
- Kafka, veri akışları üzerinde gerçek zamanlı analizler yapmak ve anlamlı bilgiler çıkarmak için kullanılır, bu da iş zekası ve veri analitiği için değerlidir.
Kafka’nın bu kullanım alanları, onun esnekliğini, ölçeklenebilirliğini ve güvenilirliğini yansıtır ve bu özellikler, çeşitli endüstrilerde ve iş süreçlerinde onu vazgeçilmez bir araç haline getirir. Her bir kullanım senaryosu, Kafka’nın belirli avantajlarını işler ve geniş bir yelpazede iş ihtiyaçlarını karşılar.
Şimdi, Kafka’nın sunduğu avantajları ve tercih edilen alanları detaylıca ele aldığımıza göre, bu teknolojinin uygun olmadığı veya daha az etkili olduğu durumları da incelemek faydalı olacaktır.
- Düşük Veri Hacmi
- Eğer sisteminiz düşük veri hacmine sahipse ve basit mesajlaşma ihtiyaçları varsa, Kafka’nın karmaşıklığı ve kaynak gereksinimleri gereksiz olabilir.
- Küçük Ölçekli Projeler
- Küçük ölçekli veya kısa süreli projeler için Kafka’nın kurulum ve yönetimi fazla zaman ve kaynak tüketebilir.
- Basit Kuyruk Mekanizmaları İhtiyacı
- Basit kuyruk mekanizmaları veya tipik pub-sub gereksinimleri için Kafka, aşırı karmaşık ve ağır bir çözüm olabilir. Daha hafif alternatifler yeterli olacaktır.
- Sıkı Veri Tutarsızlığı Gereksinimleri
- Kafka, eventual consistency modelini benimser. Eğer sisteminiz sıkı tutarlılık gerektiriyorsa, Kafka uygun olmayabilir.
- Sınırlı Kaynak ve Bütçe
- Kafka, etkili bir şekilde çalışması için uygun donanım ve kaynak gerektirir. Sınırlı kaynak ve bütçeye sahip projelerde, daha az kaynak gerektiren alternatifler tercih edilebilir.
- Zaman Hassasiyeti Yüksek İşlemler
- Eğer uygulamanız milisaniyenin altındaki gecikmelere tolerans göstermiyorsa, Kafka’nın gecikme süresi bu gereksinimi karşılamayabilir.
- Karmaşık Sorgu İhtiyaçları
- Kafka, veri depolama ve sorgulama konusunda sınırlıdır. Karmaşık sorgular veya hızlı veri alımı gerekiyorsa, özelleşmiş veritabanları daha uygun olabilir.
- Eş Zamanlı Yazma ve Okuma Gereksinimleri
- Kafka, eş zamansız bir mesajlaşma sistemi olduğundan, eş zamanlı yazma ve okuma işlemleri için ideal değildir.
- Detaylı Veri Yönetimi ve Düzenleme
- Kafka, veri yönetimi ve düzenleme konusunda basit bir yapı sunar. Eğer uygulamanız detaylı veri yönetimi veya düzenlemesi gerektiriyorsa, Kafka bu ihtiyaçları karşılamayabilir.
- Yüksek Bakım Gereksinimi
- Kafka’nın yönetimi ve bakımı, özellikle büyük ölçekli dağıtımlarda zaman alıcı ve karmaşık olabilir. Daha basit ve az bakım gerektiren sistemler, bazı durumlarda daha uygun olabilir.
- Büyük Ölçekli Veri İşleme
- Apache Kafka, veri akışlarını gerçek zamanlı olarak işlemek ve yönetmek için kullanılan bir yayın-abone sistemi sunan, dağıtılmış bir akış platformudur. Yüksek veri hacimlerini etkin bir şekilde işleyebilen bu sistem, veri kaynaklarından gelen verileri toplayıp bunları abonelere ileterek, büyük ve sürekli veri akışlarının analiz edilmesinde değerlidir. Kafka’nın bu özellikleri, çeşitli alanlarda ve senaryolarda kullanımını popüler kılar. Detaylı bilgi için, Spiceworks’teki orijinal makaleyi buradan inceleyebilirsiniz. İşte Kafka’nın tercih edilme nedenlerinin maddeler halinde ayrıntılı açıklaması:
- RabbitMQ
- RabbitMQ, bir mesaj kuyruğu yazılımı olarak da bilinir ve bir mesaj aracısı veya kuyruk yöneticisi görevi görür. Temelde, uygulamaların bağlandığı ve mesajları aktardığı kuyrukların tanımlandığı bir yazılımdır. Mesajlar, bir alıcı uygulama bağlanıp kuyruktan bir mesaj aldığında kadar kuyruk yöneticisi yazılımında saklanır. Alıcı uygulama daha sonra bu mesajı işler. RabbitMQ, mesaj kuyruğu oluşturmanın temel yapısını sunar; üreticiler mesajları oluşturup aracıya (mesaj kuyruğuna) ileterek, tüketiciler kuyruğa bağlanıp mesajları işlemek üzere abone olurlar. Daha fazla bilgi için, CloudAMQP’nin blog yazısını inceleyebilirsiniz. RabbitMQ kullanmanın avantajları ise:
- Yüksek Performans ve Verimlilik
- RabbitMQ, mesajları hızlı bir şekilde işleyebilir ve yönlendirebilir. Bu yüksek performans, özellikle yoğun trafikli sistemlerde ve zaman kritik uygulamalarda önemlidir.
- Esneklik ve Ölçeklenebilirlik
- RabbitMQ, farklı senaryolara kolayca uyum sağlar ve ihtiyaç duyulan ölçekte genişleyebilir. Bu, hem küçük hem de büyük ölçekli projeler için uygundur.
- Güvenilir Mesaj Teslimi
- RabbitMQ, mesajların kaybolmamasını ve doğru sırayla teslim edilmesini sağlar. Bu, veri bütünlüğü için kritik olan uygulamalarda önemli bir avantajdır.
- Çoklu Protokol Desteği
- RabbitMQ, AMQP, MQTT gibi çeşitli mesajlaşma protokollerini destekler. Bu, farklı uygulama ve sistemlerle entegrasyonu kolaylaştırır.
- Yüksek Kullanılabilirlik ve Hata Toleransı
- RabbitMQ, çökme veya hata durumlarında bile yüksek kullanılabilirlik sunar. Replikasyon ve kümelenme özellikleri, sistem hatalarına karşı dayanıklılığı artırır.
- Yüksek Performans ve Verimlilik
- RabbitMQ’nun özelliklerini ve avantajlarını detaylı bir şekilde ele aldıktan sonra, bu avantajların öne çıktığı özel durumlar ve senaryoları daha yakından inceleyebiliriz. RabbitMQ, mesajlaşma ve veri akışı ihtiyaçlarına yönelik bir dizi senaryoda tercih edilen bir platformdur. İşte bu senaryolar ve RabbitMQ’nun neden tercih edildiği konusuna bir göz atalım.
- Mesaj Tabanlı Entegrasyon Gerektiren Durumlar
- Sistemler arası veri senkronizasyonu ve entegrasyonu gerektiren durumlarda, RabbitMQ’nun mesajlaşma yetenekleri, farklı uygulama ve hizmetlerin etkili bir şekilde haberleşmesini sağlar.
- Yüksek Kullanılabilirlik ve Güvenilirlik İstendiğinde
- Kritik iş süreçleri için kesintisiz hizmet ve veri bütünlüğü sağlama ihtiyacı olduğunda, RabbitMQ’nun güvenilir teslimat mekanizmaları ve kümelenme özellikleri bu ihtiyacı karşılar.
- Yüksek Trafikli Uygulamalar
- Yoğun veri trafiğini etkili bir şekilde yönetebilen RabbitMQ, özellikle yüksek hacimli mesajlaşma gerektiren e-ticaret siteleri ve sosyal medya platformları gibi uygulamalarda tercih edilir.
- Gerçek Zamanlı İşleme İhtiyaçları
- Anlık veri işleme ve bildirimlerin hızlı bir şekilde iletilmesi gereken durumlarda, RabbitMQ’nun düşük gecikme süreleri idealdir.
- Esnek ve Ölçeklenebilir Çözümler Arandığında
- İş yükünün değişken olduğu ve dinamik ölçeklendirme gerektiren senaryolarda, RabbitMQ’nun ölçeklenebilir yapısı kullanıcıların ihtiyaçlarına göre uyum sağlayabilir.
- Çeşitli Protokollerle Çalışılması Gereken Durumlar
- Farklı protokolleri ve veri formatlarını destekleyen RabbitMQ, çeşitli uygulamalar ve hizmetlerle entegrasyonu kolaylaştırır.
- Mesaj Tabanlı Entegrasyon Gerektiren Durumlar
RabbitMQ’nun esneklik, güvenilirlik ve performans gibi özellikleri, çeşitli kullanım senaryolarında değerini kanıtlar. Bu özellikler, onu bir dizi farklı ihtiyaca uygun bir çözüm haline getirir, geniş bir kullanım yelpazesi sunar. Ancak, her teknoloji gibi RabbitMQ da her durum için ideal olmayabilir. Bunun farkındalığıyla, RabbitMQ’nun kullanılmaması gereken özel durumları ve senaryoları daha detaylı bir şekilde inceleyelim.
- Düşük Veri Hacmi ve Basit İhtiyaçlar: Eğer projenizde düşük veri hacmi varsa ve basit kuyruk mekanizmaları yeterliyse, RabbitMQ’nun sağladığı özellikler ve karmaşıklığı gereksiz olabilir.
- Sınırlı Kaynaklar ve Bütçe: Küçük çaplı projeler veya sınırlı bütçe ve kaynaklarla çalışıyorsanız, RabbitMQ’nun gerektirdiği kaynaklar ve yönetim zorlukları aşırı gelebilir.
- Karmaşık Sorgu ve Veritabanı İşlemleri: Eğer uygulamanız karmaşık sorgulama ve veritabanı işlemleri gerektiriyorsa, RabbitMQ bu tür ihtiyaçları doğrudan karşılamaz.
- RabbitMQ, bir mesaj kuyruğu yazılımı olarak da bilinir ve bir mesaj aracısı veya kuyruk yöneticisi görevi görür. Temelde, uygulamaların bağlandığı ve mesajları aktardığı kuyrukların tanımlandığı bir yazılımdır. Mesajlar, bir alıcı uygulama bağlanıp kuyruktan bir mesaj aldığında kadar kuyruk yöneticisi yazılımında saklanır. Alıcı uygulama daha sonra bu mesajı işler. RabbitMQ, mesaj kuyruğu oluşturmanın temel yapısını sunar; üreticiler mesajları oluşturup aracıya (mesaj kuyruğuna) ileterek, tüketiciler kuyruğa bağlanıp mesajları işlemek üzere abone olurlar. Daha fazla bilgi için, CloudAMQP’nin blog yazısını inceleyebilirsiniz. RabbitMQ kullanmanın avantajları ise:
- ActiveMQ
- ActiveMQ, Apache Software Foundation tarafından geliştirilen ve sürdürülen açık kaynaklı bir mesaj aracısıdır. Java Mesaj Servisi (JMS) API’sini destekleyen bu güçlü ve esnek mesajlaşma sunucusu, entegrasyon desenleri ile uygulamalar arası iletişimi kolaylaştırır. ActiveMQ, yüksek kullanılabilirlik, performans, ölçeklenebilirlik, konfigürasyon esnekliği ve birçok gelişmiş özelliği ile popülerdir.
- Avantajları:
- Çok Yönlü Mesajlaşma:
- ActiveMQ, queue, topic ve pub-sub gibi birçok mesajlaşma desenini destekler. Bu, çok çeşitli kullanım senaryolarını destekleyebilmesini sağlar.
- Yüksek Uyumluluk:
- Java tabanlı olması ve JMS API’sini desteklemesi nedeniyle, ActiveMQ geniş bir dizi uygulama ve sistemle entegre edilebilir.
- Esnek ve Genişletilebilir:
- ActiveMQ, yüksek ölçeklenebilirlik ve konfigürasyon esnekliği sunar, böylece büyüyen uygulama gereksinimlerine uyum sağlayabilir.
- Yüksek Kullanılabilirlik ve Dayanıklılık:
- Master-slave yapılandırması, veri replikasyonu ve failover mekanizmaları gibi özelliklerle, ActiveMQ yüksek kullanılabilirlik ve dayanıklılık sağlar.
- Çok Yönlü Mesajlaşma:
- Dezavantajları:
- Yönetim Karmaşıklığı:
- ActiveMQ’nun geniş özellik yelpazesi ve esnek yapılandırma seçenekleri, yönetimini karmaşıklaştırabilir.
- Kaynak Kullanımı:
- Özellikle büyük ölçekli dağıtımlarda, ActiveMQ’nun kaynak kullanımı göz önünde bulundurulmalıdır.
- Performans ve Ölçeklenebilirlik Sınırları:
- Bazı çok yüksek veri hacmi ve mesaj oranı senaryolarında, ActiveMQ’nun performans sınırlamaları ortaya çıkabilir.
- Yönetim Karmaşıklığı:
- Websocket
- Websocket, web tarayıcıları ile sunucular arasında çift yönlü iletişimi destekleyen bir protokoldür. Geleneksel HTTP’ye kıyasla düşük gecikme sağlar, veri transferini verimli hale getirir ve sunucu tarafından başlatılan iletişimi destekler. Gerçek zamanlı uygulamalar için idealdir, özellikle canlı sohbet, anlık güncellemeler ve online oyunlar gibi etkileşimli uygulamalarda kullanılır. Websocket’in el sıkışma süreci bağlantıyı kurarak veri iletimini sağlar. Bu protokol, anlık bildirimler ve hızlı güncellemeler gerektiren uygulamalarda tercih edilir.
Avantajları:
- Düşük Gecikme (Low Latency):
- Websocket, sürekli açık bir bağlantı üzerinden iletişim kurarak düşük gecikme sağlar. Bu özellik, gerçek zamanlı uygulamalarda, canlı sohbet, oyunlar ve finansal uygulamalarda önemlidir.
- Websocket, finansal piyasalarda düşük gecikme ile ticaret yapmak gibi gerçek zamanlı uygulamalarda etkili bir şekilde kullanılır. Sürekli açık bağlantı sayesinde, yatırımcılar anlık piyasa verilerine hızlı erişim sağlayarak daha hızlı ve doğru ticaret kararları alabilirler.
- Çift Yönlü İletişim:
- Websocket, hem istemciye hem de sunucuya çift yönlü iletişim imkanı tanır. Bu, hem istemcinin hem de sunucunun birbirine bağımsız olarak veri gönderebilmesi anlamına gelir.
- Canlı oyunlar, Websocket’in çift yönlü iletişim avantajını kullanarak anlık oyun durumu güncellemelerini oyunculara hızlı ve etkileşimli bir şekilde ileterek daha akıcı ve gerçek zamanlı bir oyun deneyimi sunabilir.
- Veri Transferi Verimliliği:
- Websocket, HTTP’ye kıyasla daha az başlık bilgisi içerir ve bu nedenle daha verimli bir veri iletimi sağlar. Bu, veri transferinde daha düşük miktarda overhead anlamına gelir.
- Websocket, veri transferi verimliliği ile birlikte, canlı sohbet uygulamalarında daha az veri kullanarak anlık mesajları hızlı ve ekonomik bir şekilde iletebilir. Bu özellik, kullanıcı deneyimini iyileştirir ve bant genişliği tasarrufu sağlar.
Dezavantajları:
- Firewall Sorunları:
- Bazı ağlarda, güvenlik duvarları (firewall) Websocket trafiğini engelleyebilir. Bu durum, Websocket kullanımını zorlaştırabilir ve alternatif çözümler gerektirebilir.
- Websocket kullanırken firewall sorunları, kurumsal ağlarda sıkça karşılaşılan bir zorluktur. Örneğin, bir şirketin güvenlik duvarı, Websocket trafiğini engellediğinde, çalışanların canlı webinarlara erişimi kısıtlanabilir ve bu da eğitim veya toplantıları etkileyebilir.
- Bant Genişliği Tüketimi:
- Sürekli açık kalan Websocket bağlantıları, belirli durumlarda bant genişliği tüketimini artırabilir. Bu durum, kullanıcıların mobil cihazlarda veya sınırlı bant genişliği olan ortamlarda ek bir dezavantaj oluşturabilir.
- Websocket’in bant genişliği tüketimi dezavantajı, bir haber sitesindeki canlı haber akışlarında ortaya çıkabilir. Sürekli açık bağlantılar, kullanıcıların bant genişliğini daha fazla tüketebilir, özellikle mobil cihazlarda, ve bu da kullanıcıların veri planlarını hızla tüketebilir.
- Bağlantı Kurma Maliyeti:
- Websocket bağlantıları, HTTP’ye kıyasla bir miktar daha fazla başlatma maliyetine sahiptir. Bu, çok sayıda kısa ömürlü bağlantı gerektiren durumlarda ek bir düşünülmesi gereken faktördür.
- Bağlantı kurma maliyeti dezavantajı, bir çevrimiçi oyun platformunda önemli olabilir. Oyuncuların sık sık oyunlara katılıp ayrıldığı durumlarda, her bağlantı kurma işlemi ek bir maliyet ve gecikme getirebilir, bu da oyun deneyimini olumsuz etkileyebilir.
Eş Zamanlı ve Eş Zamansız İletişim Modellerinin Yanlış Seçilmesi Durumunda Karşılaşılacak Sorunlar:
- Ölçeklenebilirlik ve Performans Sorunları:
- Yanlış iletişim modeli, sistemin ölçeklenebilirliğini ve performansını ciddi şekilde etkileyebilir. Senkron iletişim, gereksiz gecikmelere ve bottlenecks’a neden olabilir, özellikle yüksek trafik durumlarında. Diğer yandan, asenkron model, gereksiz karmaşıklık ve mesaj yönetimi sorunları yaratabilir.
- Sistem Kararsızlığı:
- İletişim modeli doğru seçilmezse, sistem kararsız hale gelebilir. Örneğin, senkron çağrılarda bir hizmetin çökmesi, tüm işlem zincirinin çökmesine yol açabilir. Asenkron modelde ise, mesaj sıralaması ve teslimat garantisi konularında hatalar sistem kararsızlığına neden olabilir.
- Hata Yönetimi Zorlukları:
- Senkron iletişimde, hata yönetimi genellikle daha doğrudandır, çünkü istek ve yanıt modeli takip edilir. Ancak, asenkron iletişimde hata yönetimi daha karmaşık hale gelebilir. Mesajlar kaybolabilir veya sırasıyla işlenmeyebilir, bu da sistemin beklenmeyen şekillerde davranmasına neden olabilir.
- Kaynak Kullanımı ve Maliyet:
- Yanlış iletişim modeli seçimi, kaynak kullanımını ve dolayısıyla maliyeti artırabilir. Senkron iletişimde, gereksiz bekleme süreleri ve ağ trafiği, kaynak israfına yol açabilir. Asenkron iletişimde ise, mesaj kuyruklarının ve aracıların yönetimi ek kaynak ve maliyet gerektirebilir.
- Geliştirme ve Bakım Zorlukları:
- İletişim modeli, sistem mimarisi ve kodun karmaşıklığını doğrudan etkiler. Yanlış seçim, geliştirme sürecini yavaşlatabilir ve bakımı zorlaştırabilir. Özellikle asenkron iletişim, izlenebilirlik ve hata ayıklama konularında ek zorluklar getirebilir.
Sonuç
Mikroservis mimarisinde iletişim modelinin seçimi, projenin ihtiyaçlarına, trafik hacmine, geliştirme ve işletme maliyetlerine, takımın yeteneklerine ve diğer faktörlere göre dikkatlice değerlendirilmelidir. Doğru iletişim modeli, sistemin performansını, ölçeklenebilirliğini, güvenilirliğini ve sürdürülebilirliğini doğrudan etkiler. Bu nedenle, her iki modelin avantajlarını, dezavantajlarını ve uygulanacak senaryoya uygunluğunu dikkatlice tartmak, projenin başarısı için hayati öneme sahiptir.
Kaynakça
- https://openai.com/
- https://microservices.io/index.html
- https://www.vmware.com/topics/glossary/content/message-brokers.html#:~:text=to-point messaging%3F-,A point-to-point messaging model is used when a,the recipient of the message.
- https://www.ibm.com/topics/message-brokers#:~:text=the next step-,What is a message broker%3F,messages between formal messaging protocols.
- https://www.spiceworks.com/tech/data-management/articles/what-is-kafka/#:~:text=Apache Kafka is a distributed,provide records of data concurrently.
- https://www.cloudamqp.com/blog/part1-rabbitmq-for-beginners-what-is-rabbitmq.html