Microservis Mimarisi, farklı taskları yerine getiren çok sayıda küçük uygulamadan oluşan bir sisteme sahip olmaktır. Bu farklı uygulamalar bir biriyle nasıl iletişime geçecekler ?
Message Queue
Queue, FIFO yapısıyla çalışan bir yapıdır.
Elimizde bir pipe(boru) olduğunu düşünelim. İki kişi karşılıklı olarak bu boruyu tutuyor olsun. Bu borunun bir ucundan message gönderiyoruz ve bu mesaj borunun diğer ucundan çıkıyor. Queue bu şekilde First In First Out olarak çalışır.
Messageler iletmek istediğimiz bilgi parçalarıdır. Queuedaki bilgiler doğru servis tarafından consume edilene kadar saklanırlar. Message Queue farklı servisler arasında asenkron iletişim yapabilmeyi sağlarlar. Bilgi gönderilirken producer kesintisiz olarak çalışmaya devam edebilir ve consumer kendi istediği hızda bu queudaki bilgeleri tüketebilir.
Message Broker
Farklı uygulamalar arasında kararlı(stable) ve güvenilir(reliable) iletişim kurmasını sağlayan bir yazılım aracıdır. İletişim kurmak isteyen uygulamalar farklı dillerde ve farklı teknolojileri kullanıyor olabilirler. Bunlar arasındaki mesaj protokolunu ve iletişimi sağlamak message brokerın işidir.
Bunlara ek olarak Mesage Brokerlar Bilgileri depolar(store), yönlendirir(route) ve istenen hedefe iletirler(delivery). Publisher, bu mesajların consumerlarının kim olduğunu, kaç tane olduğunu ve bu consumerların o anda aktif olup olmadığını bilmeden mesaj gönderebilirler.
Point-to-point messaging, message queueları consumer ve publisher arasında one - to - one olacak şekilde kullanılır. Mesajın bir kez gönderileceğini ve bir kez gönderilip tüketileceğini garanti etmek istediğimizde kullanırız. Finansal işlemlerle çalışırken tercih edilebilir. Order,Payment vs.
The publish-subscribe messaging, producer mesajı bir topice gönderir ve bu topice abone olan tüm consumerlar bu mesajı alabilir. one to many.
Message queue vs message broker
Bir message queue, kuyruk veri yapısını kullanarak mesajlar göndererek, alarak ve depolayarak uygulamalar arasındaki iletişimi kolaylaştırır. Data transfer için message queueları kullansak da onlar taşıdıkları bilgileri okuyamazlar.
Bir messge broker, basitçe message queueların kullanımını genişleten bir mekanizmadır. Mesaj kuyruklarından farklı olarak, mesaj brokerlar bunlar aracılığıyla taşınan bilgilerin içeriğini okuyabilir. Ayrıca, mesaj brokerlar her türlü kaynaktan gelen bilgileri işleyebilir. Örneğin, File veya HTTP requestten okunan bilgiler.
Basitçe söylemek gerekirse, message queue, üretilen veriyi tüketilinceye kadar saklayan bir yapıdır ve mesaj broker, mesaj kuyruklarını yöneten bir yazılım bileşenidir.
Bir mikro hizmet mimarisinde, her bir mikro servis diğerlerinden farklı işlevler sunar. Ancak, diğer servislerle iletişim halinde olmadan bu işlevleri gerçekleştiremezler. Message Queuelar, uygulamaların kuyruğa bilgi göndermesi için bir yol sağlar. Message Brokerlar, bilgiyi göndericiden alır, gerekirse farklı mesajlaşma protokolleri arasında çevirir ve mesajı doğru alıcıya iletir.
Exchangeler brokerların giriş noktaları, message queularda brokerların çıkış noktası olarak düşünebiliriz. Publisher mesajı excahngelere gönderir, exchange de mesajları belirlenen kurallara göre gerekli kuyruklara iletir. Consumerlarda mesaja kuyrukları ile iletişim halindedir.
RabbitMQ bu topolojiye çok benzer bir yapı ile çalışmaktadır. Herbir tüketicinin kendine ait kuyruğu vardır. Exchange üzerine gönderilen mesajların birer örnekleri bu kuyruklarda saklanmaktadır. Bir başka tüketici başkasına ait olan kuyruk üzerinden mesaj okumaz. Tüketici mesajı işledikten sonra bu mesajın bir işlevi kalmaz. Bu sebeple tüketicinin işlemi bittikten sonra kuyruktaki mesaj yok edilir.
Kafka ise yukarıdaki topolojiyi biraz daha farklı bir yapı ile sunmaktadır. Mesajlar ayrı kuyruklarda değildir. Buna karşın tüketiciler mesaj kuyrukları üzerinde kaldıkları yerleri kendi işaretleyicileriyle belirlerler. Tüketici bir mesajı işledikten sonra işaretçisini ilerletir. Başka bir tüketici de bu mesajı işleyebileceği için mesajlar kuyruklardan silinmez. İşaretçiler aracılığı ile birden fazla kuyruk varmış gibi bir davranış sergilenir.
Hiç yorum yok:
Yorum Gönder