Zaman uyumsuz mesajlaşma modelleri ve yüksek kullanılabilirlik

Zaman uyumsuz mesajlaşma çeşitli yollarla uygulanabilir. Kuyruklar, konular ve aboneliklerle Azure Service Bus, bir mağaza ve iletme mekanizması aracılığıyla zaman uyumsuzluk desteği sağlar. Normal (zaman uyumlu) işlemde, kuyruklara ve konulara ileti gönderir, kuyruklardan ve aboneliklerden ileti alırsınız. Yazdığınız uygulamalar, bu varlıkların her zaman kullanılabilir olmasına bağlıdır. Varlık durumu değiştiğinde, çeşitli durumlardan dolayı, çoğu gereksinimi karşılayabilecek azaltılmış bir yetenek varlığı sağlamanın bir yoluna ihtiyacınız vardır.

Uygulamalar genellikle bir dizi iletişim senaryolarını etkinleştirmek için zaman uyumsuz mesajlaşma desenleri kullanır. Hizmet çalışmadığında bile istemcilerin hizmetlere ileti gönderebileceği uygulamalar oluşturabilirsiniz. Bir kuyruk, ani iletişimlerle karşılaşan uygulamalar için, iletişimleri arabelleğe almak için bir yer sağlayarak yükü dengelemeye yardımcı olabilir. Son olarak, iletileri birden çok makineye dağıtmak için basit ama etkili bir yük dengeleyici alabilirsiniz.

Bu varlıklardan herhangi birinin kullanılabilirliğini korumak için, bu varlıkların dayanıklı bir mesajlaşma sistemi için kullanılamadığı çeşitli yolları göz önünde bulundurun. Genel olarak bakıldığında, varlığın aşağıdaki farklı yollarla yazdığımız uygulamalar için kullanılamaz hale geldiğini görürüz:

  • İletiler gönderilemiyor.
  • İletiler alınamıyor.
  • Varlıklar yönetilemiyor (varlıkları oluşturma, alma, güncelleştirme veya silme).
  • Hizmetle bağlantı kurulamıyor.

Bu hataların her biri için, bir uygulamanın azaltılmış bir özellik düzeyinde iş yapmaya devam edebilmesini sağlayan farklı hata modları vardır. Örneğin, ileti gönderebilen ancak alamayan bir sistem yine de müşterilerden sipariş alabilir ancak bu siparişleri işleyemez. Bu konu, oluşabilecek olası sorunları ve bu sorunların nasıl giderildiğini açıklar. Service Bus, kabul etmeniz gereken bir dizi risk azaltması getirmiştir ve bu konu başlığında bu kabul azaltmalarının kullanımını yöneten kurallar da ele alınmaktadır.

Service Bus'ta Güvenilirlik

İleti ve varlık sorunlarını işlemenin çeşitli yolları vardır ve bu azaltmaların uygun kullanımını yöneten yönergeler vardır. Yönergeleri anlamak için öncelikle Service Bus'ta neyin başarısız olabileceğini anlamanız gerekir. Azure sistemlerinin tasarımı nedeniyle bu sorunların tümü kısa ömürlü olma eğilimindedir. Yüksek düzeyde, kullanılamama nedenlerinin farklı nedenleri aşağıdaki gibi görünür:

  • Service Bus'ın bağımlı olduğu bir dış sistemden azaltma. Azaltma, depolama ve işlem kaynaklarıyla etkileşimlerden oluşur.
  • Service Bus'ın bağımlı olduğu bir sistemle ilgili sorun. Örneğin, depolamanın belirli bir bölümü sorunlarla karşılaşabilir.
  • Tek bir alt sistemde Service Bus hatası. Bu durumda, işlem düğümü tutarsız bir duruma geçebilir ve kendisini yeniden başlatması gerekir ve bu da hizmet açtığı tüm varlıkların diğer düğümlere yük dengelemesine neden olur. Bu da kısa bir süre yavaş ileti işlemeye neden olabilir.
  • Azure veri merkezinde Service Bus hatası. Bu, sisteme birkaç dakika veya birkaç saat boyunca ulaşılamayan "yıkıcı bir hatadır".

Not

Depolama terimi hem Azure Depolama hem de SQL Azure anlamına gelebilir.

Service Bus, bu sorunlar için bir dizi azaltma içerir. Aşağıdaki bölümlerde her sorun ve bunların ilgili risk azaltmaları açıklanmıştır.

Azaltma

Service Bus ile azaltma, işbirliğine dayalı ileti hızı yönetimi sağlar. Her bir Service Bus düğümü birçok varlığı barındırıyor. Bu varlıkların her biri CPU, bellek, depolama ve diğer modeller açısından sistem üzerinde talepte bulunur. Bu modellerden herhangi biri tanımlı eşikleri aşan kullanımı algıladığında, Service Bus belirli bir isteği reddedebilir. Çağıran bir sunucu meşgul özel durumu alır ve 10 saniye sonra yeniden denenir.

Bir azaltma olarak, kodun hatayı okuması ve iletinin yeniden denemelerini en az 10 saniye durdurması gerekir. Hata müşteri uygulamasının parçaları arasında gerçekleşebileceğinden, her parçanın yeniden deneme mantığını bağımsız olarak yürütmesi beklenir. Kod, bir ad alanı, kuyruk veya konu üzerinde bölümlemesini etkinleştirerek azaltma olasılığını azaltabilir.

Uygulama kodunun azaltma sorunlarını nasıl ele alması gerektiği hakkında daha fazla bilgi için Azaltma Düzeni belgelerine bakın.

Azure bağımlılığı sorunu

Azure'ın içindeki diğer bileşenlerde bazen hizmet sorunları olabilir. Örneğin, Service Bus'ın kullandığı bir sistem yükseltilirken, bu sistem geçici olarak azaltılmış özelliklerle karşılaşabilir. Bu tür sorunları geçici olarak çözmek için Service Bus düzenli aralıklarla risk azaltmaları araştırır ve uygular. Bu risk azaltmaların yan etkileri görünür. Örneğin, depolamayla ilgili geçici sorunları işlemek için Service Bus, ileti gönderme işlemlerinin tutarlı bir şekilde çalışmasına izin veren bir sistem uygular. Genel olarak konuşursak, çoğu varlık bu sorunla karşılaşmaz. Ancak, Azure içindeki Service Bus'taki varlıkların sayısı göz önüne alındığında, bu azaltma işlemi bazen Service Bus müşterilerinin küçük bir alt kümesi için gereklidir.

Tek bir alt sistemde Service Bus hatası

Herhangi bir uygulamayla, koşullar Service Bus'ın iç bileşeninin tutarsız olmasına neden olabilir. Service Bus bunu algıladığında, ne olduğunu tanılamaya yardımcı olmak için uygulamadan veri toplar. Veriler toplandıktan sonra, uygulama tutarlı bir duruma döndürmek amacıyla yeniden başlatılır. Bu işlem oldukça hızlı gerçekleşir ve bir varlığın birkaç dakikaya kadar kullanılamamasına neden olur, ancak tipik çalışma süreleri çok daha kısadır.

Bu durumlarda, istemci uygulaması bir zaman aşımı özel durumu veya mesajlaşma özel durumu oluşturur. Service Bus, bu sorun için otomatik istemci yeniden deneme mantığı biçiminde bir azaltma içerir. Yeniden deneme süresi tükendikten ve ileti teslim edilmedikten sonra, kesintileri ve olağanüstü durumları işleme makalesinde bahsedilen diğer adımları kullanarak keşfedebilirsiniz.

Sonraki adımlar

Service Bus'ta zaman uyumsuz mesajlaşmanın temellerini öğrendiğinize göre, kesintileri ve olağanüstü durumları işleme hakkındaki diğer ayrıntıları okuyun.