Bulut
100%

Google Cloud Pub/Sub ve Olay Güdümlü Mesajlaşma Mimarisi

Mikroservisler arası asenkron iletişimi sağlayan Google Cloud Pub/Sub servisinin çalışma mantığı ve Kafka ile temel farkları.

Genel Bakış

Google Cloud Pub/Sub, uygulamalar ve servisler arasında bağımsız (decoupled) ve asenkron iletişim kurulmasını sağlayan, küresel ölçekte yönetilen bir mesajlaşma hizmetidir. Olay güdümlü (event-driven) mimarilerin bel kemiğini oluşturur.

Sorun

Monolitik veya sıkı sıkıya bağlı (tightly coupled) mikroservis mimarilerinde, A servisi B servisine doğrudan HTTP isteği (REST) attığında, B servisi çökerse veya yavaşlarsa A servisi de kilitlenir. Müşteri sipariş verdiğinde, sipariş servisinin fatura, kargo ve e-posta servislerinin yanıt vermesini senkron olarak beklemesi sistemi inanılmaz derecede hantallaştırır ve hata toleransını sıfıra indirir.

Çözüm: Publish / Subscribe Modeli

Pub/Sub modeli, servisleri birbirinden tamamen habersiz hale getirir. Sipariş servisi sadece bir "Olay" (Event) fırlatır ve işine devam eder.

Temel Akış:

  1. Publisher: Sipariş servisi, "Siparis_Olusturuldu" adlı bir Topic'e (Konu) mesaj gönderir.
  2. Pub/Sub: Mesajı alır ve güvenli bir şekilde saklar.
  3. Subscriber: Kargo ve Fatura servisleri bu Topic'e abone olmuştur. Mesajı kendi hızlarında çeker (veya Google onlara push eder) ve işlerler.

Teknik Detaylar

Pub/Sub, "At-least-once delivery" (en az bir kere teslim) garantisi sunar. Yani bir mesaj aboneye kesinlikle ulaşır, ancak ağ sorunları nedeniyle bazen birden fazla kez ulaşabilir. Bu nedenle abone (Subscriber) servislerinin Idempotent (aynı mesajı iki kez aldığında sistemi bozmayacak şekilde) tasarlanması şarttır. Apache Kafka'dan en büyük farkı; Kafka'da sunucu (Broker) ve partition yönetimini sizin yapmanız gerekirken, GCP Pub/Sub tamamen Serverless'tır, partition veya kapasite düşünmeden saniyede milyonlarca mesajı otomatik ölçeklendirir.

Sonuç

Pub/Sub sistemleri, modern bulut mimarilerinde hata toleransını artırmak ve anlık veri akışlarını (streaming analytics) yönetmek için vazgeçilmezdir. İletişimi asenkron hale getirerek servislerin birbirini darboğaza sokmasını engeller.

İlgili Wiki'ler

Tümünü Gör