Pub/sub mesajlaşma nedir?
Yayınlama-abonelik mesajlaşma veya pub/sub mesajlaşma, geliştiricilerin bulutta son derece işlevsel ve mimari açıdan karmaşık uygulamalar oluşturmasını kolaylaştıran zaman uyumsuz bir iletişim modelidir. Modern bulut mimarisinde uygulamalar, hizmetler adı verilen daha küçük ve bağımsız yapı taşlarına ayrılır. Pub/sub mesajlaşma, bu dağıtılan sistemler için anlık olay bildirimleri sağlar. Bağımsız yazılım modülleri arasında ölçeklenebilir ve güvenilir iletişimi destekler.
Pub/sub mesajlaşma nasıl çalışır?
Yayınlama-abonelik (pub/sub) sistemi dört temel bileşenden oluşur.
Mesajlar
Mesaj, göndericiden alıcıya gönderilen bir iletişim verisidir. Mesaj veri türleri basit dizelerden metinleri, videoları, sensör verilerini, sesleri veya diğer dijital içerikleri temsil eden karmaşık nesnelere kadar her şeyi kapsayabilir.
Konu Başlıkları
Her mesajın kendisiyle ilişkili bir konu başlığı vardır. Konu başlığı, göndericilerle alıcılar arasında aracı kanal vazifesi görür. İlgili konu başlığı hakkındaki mesajlarla ilgilenen alıcıların güncel bir listesini tutar.
Aboneler
Abone, mesajın alıcısıdır. Abone, ilgilendiği konu başlıklarına kaydolmak (yani abone olmak) zorundadır. Farklı işlevleri yerine getirebilirler veya paralel olarak mesaja farklı bir şey yapabilirler.
Yayıncılar
Yayıncı, mesajları gönderen bileşendir. Bir konu başlığı hakkında mesajlar oluşturur ve sadece ilgili konu başlığının abonelerine gönderir. Yayıncı ile aboneler arasındaki bu etkileşim, bire çok ilişki olarak adlandırılır. Yayıncı yayınladığı bilgileri kimlerin kullandığını, aboneler de mesajın nereden geldiğini bilmek zorunda değildir.
Pub/sub mesajlaşma sisteminin özellikleri nelerdir?
Yayınlama-abonelik (pub/sub) örüntüsüyle geliştirilen uygulamalar, ayrı uygulama ve iletişim mantığına sahiptir. Mesajlaşma altyapısı, mesaj teslimatını yayıncılarla aboneler arasında ayrıştırır ve farklı abonelere zaman uyumsuz bir şekilde yayınlar.
Pub/sub iletişim sistemi aşağıdaki temel özelliklere sahiptir.
Gönderim tabanlı teslimat
Pub/sub mesajlaşma, mesaj konu başlığında mesajlar yayınlandığı anda zaman uyumsuz olay bildirimleri gönderir. Bir mesaj mevcut olduğunda abonelere bildirim gönderilir.
Birden çok teslimat protokolü
Konu başlıkları birden çok türde uç noktasına bağlanır. Mesaj kuyrukları, sunucusuz işlevler, HTTP sunucuları ve e-posta adresleri bunlardan bazılarıdır.
AWS ile mesaj kuyrukları hakkında bilgi edinin »
Yayılma
Bu senaryo, bir mesaj bir konu başlığına gönderildikten sonra çoğaltılıp birden fazla uç noktasına gönderilince gerçekleşir. Yayılma zaman uyumsuz olay bildirimlerine, bu da paralel işlemeye imkan tanır.
Filtreleme
Filtreleme özelliği, aboneye bir mesaj filtreleme politikası oluşturma gücü verir. Bu sayede, konu başlığına gönderilen her bir mesajı almak yerine sadece ilgilendiği bildirimleri alabilir.
Çoklama
Bazen yayıncılar aynı zamanda abone de olabilir. Mesaj akışlarını çoklayabilir ve iç tutarlılığa sahip bir şekilde birbirine bağlanan sistemler oluşturabilirsiniz.
Pub/sub mesajlaşmanın avantajları nelerdir?
Yayınlama-Abonelik (pub/sub) modeli, çeşitli modern uygulamalarda zorunlu olan olay odaklı mimariyi mümkün kılar. Ayrılmış hizmetleri tetiklemek ve bunlar arasında iletişimi sağlamak için olayları kullanabilirsiniz. Olay, bir durumun değişmesi veya güncellenmesidir. Bir ürünün alışveriş sepetine eklenmesi buna örnek verilebilir.
Pub/sub mesajlaşma, gerçek zamanlı olaylardan beslenen uygulamalar oluşturan geliştiricilere ciddi avantajlar sağlar. Bazı avantajları aşağıda ana hatlarıyla bulabilirsiniz.
Yoklamayı ortadan kaldırma
Gönderme tabanlı, anında teslimata olanak tanıyan mesaj konu başlıkları, mesaj tüketicilerinin yeni bilgi ve güncellemeler için periyodik olarak kontrol, yani yoklama yapma ihtiyacını ortadan kaldırır. Daha düşük yanıt sürelerini teşvik eden bu yaklaşım, gecikmelere müsamaha edilemeyen sistemlerde büyük sorunlar yaratabilen teslimat gecikmesini azaltır.
Dinamik hedefleme
Pub/sub örüntüsü, hizmetlerin keşfini daha kolay, daha doğal ve daha az hataya açık hale getirir. Yayıncı, bir uygulamanın mesaj gönderebilmesi için eşlerin güncel kadrosunu bulundurmak yerine, bir konu başlığına mesaj gönderir. Ardından, ilgilenen taraflar kendi uç noktalarını konu başlığına abone yaparak bu mesajları almaya başlayabilir. Birden fazla abone değişebilir, yükseltilebilir veya kaybolabilir. Sistem tüm bunlara dinamik bir şekilde adapte olur.
Bağımsız olarak ayrıştırma ve ölçeklendirme
Pub/sub, yazılımları daha esnek hale getirir. Yayıncıların ve abonelerin ayrıştırılmış olması ve birbirinden bağımsız çalışması, bunları bağımsız olarak geliştirmenize ve ölçeklendirmenize olanak tanır. Siparişleri bu ay bir şekilde, ertesi ay başka bir şekilde ele almaya karar verebilirsiniz. Pub/sub yaklaşımı bileşenlerin birlikte çalışma biçiminde esneklik sağladığından, işlevler eklediğinizde veya değiştirdiğinizde sistem genelinde dalga etkileri yaşamazsınız.
İletişimi basitleştirme
İletişim ve entegrasyon kodları, yazması en zor kodlar arasındadır. Yayınlama-abonelik modeli, tüm noktadan noktaya bağlantıları kaldırıp yerine bir mesaj konu başlığıyla tek bir bağlantı tesis ederek karmaşıklığı azaltır. Konu başlığı, abonelikleri yöneterek hangi mesajların hangi uç noktalara teslim edileceğine karar verir. Daha az geri arama sayesinde hem daha gevşek ilişkilendirme hem de bakım yapması ve genişletmesi daha kolay kodlar elde edersiniz.
Dayanıklılık
Aynı mesajın kopyalarını birden fazla sunucuda depolayan pub/sub mesajlaşma hizmetleri, bu sayede genellikle çok yüksek dayanıklılık ve en az bir kez teslim sağlar.
Güvenlik
Mesaj konu başlıkları, içerik yayınlamaya çalışan uygulamaların kimliklerini doğrular ve mesajları ağ üzerinde iletilirken güvenceye almak için şifrelenmiş uç noktaları kullanmanıza olanak tanır.
Pub/sub mesajlaşmanın kullanım örnekleri nelerdir?
Yayınlama-abonelik (pub/sub) mesajlaşma sisteminin popüler kullanım örneklerini aşağıda ana hatlarıyla bulabilirsiniz.
Paralel zaman uyumsuz işlemler gerçekleştirin
Bir mesaj konu başlığında yayınlanan olaylar, gerekli ancak alakasız görevleri eş zamanlı olarak gerçekleştirmeleri için birden fazla işçiyi tetikleyebilir.
Uygulama ve sistem uyarıları teslim edin
Etkilenen uygulama bileşenlerine ve kullanıcılarınıza kritik güncellemeleri ve zaman uyumsuz olay bildirimlerini anında teslim edin.
Zaman uyumsuz iş akışlarını yönetin
Olayları uygulamalar arasında aktarın, verileri veri depoları arasında taşıyın, dağıtılmış önbellekleri yenileyin veya iş sistemlerindeki kayıtları güncelleyin.
İş yüklerini dengeleyin
Toplu işleme için görevleri bir araya getirin ya da büyük bir görevi çok sayıda küçük göreve bölüp mesaj kuyruklarını kullanarak işi birden fazla işçi arasında bölüştürün.
Birden fazla sisteme günlük kaydı yapın
Daha sonra analiz etmek üzere olayları kaydedin, operasyonlar ve güvenlik için günlük dosyalarını yakalayın ve yedekleme veya uygunluk gereksinimleri için arşivleme yapın.
Çoğaltma için yayılma konseptini kullanın
Verileri üretim ve geliştirme ortamları arasında çoğaltın ya da canlı verilerle geliştirme ve test yapın.
Sunucusuz uygulamaları koordine edin
Sunucusuz uygulamanızın bileşenlerini koordine etmek için zaman uyumsuz olay bildirimlerini dağıtılmış işlevlere ve mesaj kuyruklarına yayın.
IoT Verilerinin Akışını Gerçekleştirin
Pub/sub örüntüsü, Nesnelerin İnterneti (IoT) cihazlarının etkileşim kurarken kullanabileceği çok güçlü bir yoldur. Cihazlar arka uç sistemlerine veya birbirine kolayca veri akışı yapabilir.
Mesaj kuyrukları ile pub/sub mesajlaşma arasındaki fark nedir?
Mesaj kuyruğu, sunucusuz ve mikro hizmetlere dayalı mimarilerde zaman uyumsuz iletişimin bir diğer biçimidir. Mesajlar işlenmeden önce kuyrukta depolanır, işlendikten sonra da silinir. Mesaj kuyrukları, göndericinin kiminle mesaj alışverişi yaptığını bilmesini gerektirir. Mesaj sıralama da sistemde darboğazlara yol açabilir.
Yayınlama-abonelik (pub/sub) örüntüsü ise bunun aksine daha fazla esnekliğe olanak tanır. İlgilenen birkaç abone, mesajları eş zamanlı ve zaman uyumsuz olarak alabilir. Yayıncıların abonelerin kim olduğunu bilmesine gerek yoktur. Mesajların ele alınma biçimi hem çok daha ölçeklenebilir ve güvenilirdir hem de daha yüksek performans verir.
AWS, pub/sub mesajlaşma gereksinimlerinizi nasıl destekleyebilir?
Amazon Web Services (AWS) farklı yayınlama-abonelik (pub/sub) uygulamaları için kullanabileceğiniz iki ayrı hizmet sunar.
Pub/sub API'leri
AWS AppSync, uygulama geliştirme sürecini basitleştiren sunucusuz GraphQL ve pub/sub API'leri oluşturmayı mümkün kılan, tam olarak yönetilen bir hizmettir. Verileri güvenli bir şekilde sorgulamak, güncellemek veya yayınlamak için tek bir uç noktası oluşturabilirsiniz.
AWS AppSync ile oluşturulan pub/sub API'leri, size sunucusuz WebSocket bağlantıları aracılığıyla abone olunan API istemcilerine gerçek zamanlı veri güncellemeleri yayınlama olanağı sağlar. Çeşitli kullanım örnekleri için ilgi çekici gerçek zamanlı deneyimler oluşturabilirsiniz. Örneğin güncel maç skorları, finansal veriler, seyirci katılımı, oylama veya konum bilgisi kullanan işlevler (haritalar ve anlık bildirim pazarlama gibi) teslim edebilirsiniz.
AWS AppSync ile gerçekleştirebileceğiniz şeylerden bazıları şunlardır:
- Tek bir ağ isteğiyle bir veya daha fazla kaynakta ya da mikro hizmette yer alan verilere erişin
- Çevrimdışı veri eşitleme, sürüm oluşturma ve çakışma çözümleme sayesinde verilerle çevrimdışıyken bile etkileşime geçin ve onları güncelleyin
- Yalnızca API'nize yapılan istekler ve bağlı istemcilere teslim edilen gerçek zamanlı iletiler için ödeme yapın
Pub/sub mesajlaşma
Amazon Basit Bildirim Hizmeti (SNS), pub/sub mesajlaşma modelini kullanarak bir uygulama oluşturmanızı kolaylaştırır. Uygulamalarınızdan müşterilerinize veya diğer uygulamalara ölçeklenebilir ve uygun maliyetli bir şekilde mesajlar gönderebilirsiniz.
Amazon SNS birkaç farklı özellik sunar:
- Dağıtılmış sistemler, mikro hizmetler ve olay tabanlı sunucusuz uygulamalar arasında yüksek aktarım hızlı, gönderme tabanlı, çoğa çok mesajlaşma
- Mesaj şifreleme ve trafik gizliliği
- Analiz, işlem, container'lar, veritabanları, nesnelerin interneti (IoT), makine öğrenimi (ML), güvenlik ve depolama gibi AWS kategorileri arasında yayma özellikleri
Hemen ücretsiz bir AWS hesabı oluşturarak AWS'de pub/sub kullanmaya başlayın.