Pub/Sub Sistemlerde Mesaj Teslim Garantileri: At-Most-Once, Exactly-Once ve At-Least-Once Karşılaştırması ve ACK Doğrulama Yöntemleri



At-Most-Once Message Delivery 


"At-most-once message delivery" terimi, bir Pub/Sub (Yayıncı/Abone) sistemlerinde mesaj teslimat modelini tanımlar ve bu modelde her mesajın en fazla bir kez teslim edilmesini garanti eder. Bu modelin temel özelliği, mesajların tekrar teslim edilme riskinin olmamasıdır, ancak bu, bazı mesajların kaybolabileceği anlamına gelir. Bu nedenle, "at-most-once" modeli, tutarlılık ve doğruluk açısından en düşük garantiyi sunar ama en düşük gecikme süresi ve en yüksek performansı vaat eder.


"At-most-once delivery" modelinin kullanımı genellikle aşağıdaki durumlarda tercih edilir:


Mesaj kaybının sistem üzerinde kritik bir etkisi olmadığı durumlar.

Yüksek performans ve düşük gecikme sürelerinin önemli olduğu, ancak her bir mesajın mutlak önemi olmayan uygulamalar.

Ağ kaynaklarının sınırlı olduğu veya maliyetlerin düşük tutulması gereken durumlar.

Nasıl Çalışır?

"At-most-once delivery" modeli, basitçe ifade etmek gerekirse, bir yayıncının bir mesajı aboneye gönderdiği ve ardından bu mesajın üzerinde daha fazla kontrol veya yeniden teslim mekanizması olmadan ilerlediği bir süreci takip eder. İşlem adımları genellikle şöyledir:


Mesaj Teslimi: Yayıncı, mesajı aboneye gönderir.

İşleme veya Kayıp: Abone, mesajı alır ve işler. Eğer mesaj ağ problemleri, sistem hataları veya diğer nedenlerle kaybolursa, bu mesaj tekrar gönderilmez.

Hiçbir Yeniden Teslim Yok: Mesaj başarılı bir şekilde teslim edilmezse, sistem bu mesajı tekrar göndermeye çalışmaz. Bu, teslimatın "en fazla bir kez" gerçekleştiğini garanti eder.

Bu modelin avantajı, sistemin basitliği ve yüksek performansıdır. Ancak, mesaj kaybı riski göz önünde bulundurulmalıdır. Bu nedenle, "at-most-once delivery" modeli, mesaj kaybının kabul edilebilir olduğu senaryolar için en uygun olanıdır.

Pub/Sub (Yayıncı/Abone) sistemlerinde, mesajların doğru bir şekilde iletilmesi ve işlenmesi çok önemlidir. Bu bağlamda, "exactly-once delivery" ve "at-least-once delivery" gibi terimler, mesajların nasıl teslim edildiğini tanımlar.


At-Least-Once Message Delivery

"At-least-once delivery" terimi, her bir mesajın en az bir kez teslim edilmesini garanti eder. Bu, mesajların kaybolmayacağı anlamına gelir, ancak aynı mesajın birden fazla kez teslim edilme olasılığı vardır. Bu yöntem, mesaj kaybını önlemek için kullanılır, ancak mesajların tekrar işlenmesi gerekebilir. Bu, sistemlerde idempotent işlemler (aynı işlemin birden fazla kez uygulanmasının sonucunun değişmemesi) veya deduplication mekanizmaları gerektirebilir.


Exactly-Once Delivery

"Exactly-once delivery" terimi, her bir mesajın tam olarak bir kez teslim edilmesini garanti eder. Bu, ne kayıp ne de yinelenen mesajların olmadığı anlamına gelir ve ideal olarak en güvenilir teslimat şeklidir. Ancak, bu garantiyi sağlamak teknik olarak zor ve kaynak yoğun olabilir çünkü ağ gecikmeleri, sistem hataları ve diğer faktörlerle başa çıkmak için ek kontrol mekanizmaları gerektirir. Exactly-once delivery, mesaj sıralamasını, transactional işlemleri ve genellikle daha karmaşık ve pahalı altyapı gerektirir.


Karşılaştırma ve Uygulama

At-least-once delivery, güvenilirliği artırır ancak mesaj tekrarı riski taşır. Bu yüzden, uygulamanın idempotent olması veya yinelenen mesajları ele alacak şekilde tasarlanması önemlidir.

Exactly-once delivery, en yüksek düzeyde doğruluk ve güvenilirlik sağlar ancak maliyetli ve karmaşık olabilir. Finansal işlemler gibi kesin doğruluk gerektiren durumlar için uygundur.

Hangi yöntemin kullanılacağı, uygulamanın gereksinimlerine, kaynakların kullanılabilirliğine ve tolerans seviyesine bağlı olarak değişir.


ACK doğrulama bu iki yöntem için nasıl yapılır?


ACK (Acknowledgement) doğrulama mekanizması, Pub/Sub sistemlerinde mesajların doğru şekilde teslim edildiğinin ve işlendiğinin doğrulanmasında önemli bir rol oynar. "At-least-once delivery" ve "exactly-once delivery" yöntemlerinde ACK doğrulamanın nasıl yapıldığını inceleyelim:


At-Least-Once Delivery için ACK Doğrulama

At-least-once delivery modelinde, abonenin bir mesajı başarıyla aldığını ve işlediğini yayıncıya bildirmek için ACK mesajları kullanılır. İşlem adımları genellikle şu şekilde gerçekleşir:


Mesaj Teslimi: Yayıncı, mesajı aboneye teslim eder.

İşleme: Abone, mesajı alır ve işler.

ACK Gönderimi: Abone, mesajın başarıyla işlendiğini belirten bir ACK mesajı gönderir.

Yeniden Teslim Denemeleri: Eğer yayıncı, belirli bir süre içinde ACK alamazsa, mesajı yeniden gönderir. Bu, ağ hataları veya diğer sorunlar nedeniyle ACK'ın kaybolması durumunda mesajın kaybolmasını önler.

Bu modelde, idempotent işlemlerin veya deduplication mekanizmalarının kullanılması, aynı mesajın birden fazla işlenmesi durumunda oluşabilecek sorunları önlemeye yardımcı olur.


Exactly-Once Delivery için ACK Doğrulama

Exactly-once delivery modelinde, hem mesajın kaybolmamasını hem de birden fazla kez işlenmemesini garanti etmek için daha karmaşık bir ACK mekanizması gereklidir. Bu süreç genellikle şunları içerir:


Mesaj Teslimi ve İşaretleme: Yayıncı, mesajı bir işlem kimliği veya benzersiz tanımlayıcı ile birlikte aboneye teslim eder. Bu, daha sonra mesajın tekrar teslim edilip edilmediğini kontrol etmek için kullanılır.

İşleme ve Kontrol: Abone, mesajı alır ve işlerken, bu mesajın daha önce işlenip işlenmediğini kontrol eder (genellikle bir veritabanında tutulan bir kayıtla).

Durum Güncellemesi ve ACK: Mesaj başarıyla işlendikten sonra, abone durumu günceller (mesajın işlendiğini gösterir) ve başarıyla işlendiğine dair bir ACK mesajı gönderir.

Güvenli Yeniden Teslim Kontrolü: Yayıncı, ACK alırsa mesajın başarıyla işlendiğini bilir. Eğer yayıncı aynı mesaj için yeniden teslim talebi alırsa, daha önce ACK alındığını kontrol eder ve gereksiz yere yeniden teslimi önler.

Exactly-once delivery modelinde, her mesajın benzersiz bir şekilde tanımlanması ve işlenmesi, hem kayıp hem de yinelenen işlemlerin önlenmesinde kritik öneme sahiptir. Bu model, işlemlerin durumunu yönetmek ve işleme sırasında oluşabilecek her türlü hata durumunu ele almak için daha fazla kaynak ve karmaşıklık gerektirir.

Please Select Embedded Mode To Show The Comment System.*

Daha yeni Daha eski

نموذج الاتصال