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

Zaman uyumsuz mesajlaşma çeşitli yollarla uygulanabilir. Kuyruklar, konular ve aboneliklerle Azure Service Bus, bir depolama 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 senaryosuna olanak tanımak 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 elde edebilirsiniz.

Bu varlıklardan herhangi birinin kullanılabilirliğini korumak için, bu varlıkların dayanıklı bir mesajlaşma sisteminde kullanılamadığı bir dizi farklı yolu göz önünde bulundurun. Genel olarak, varlığın aşağıdaki farklı yollarla yazdığımız uygulamalar tarafından 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 etmesini 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 konuda oluşabilecek olası sorunlar ve bu sorunların nasıl azaltıldığı açıklanmaktadır. Service Bus, kabul etmeniz gereken bir dizi azaltmayı kullanıma almıştır ve bu konu başlığı altında, bu kabul etme 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 sistemin sorunu. Ö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 kendini yeniden başlatması gerekir ve bu da hizmet vermesi gereken 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 bir "yıkıcı hatadır".

Not

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

Service Bus, bu sorunlar için bir dizi risk 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ır. Bu varlıkların her biri CPU, bellek, depolama ve diğer modeller açısından sisteme 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 işlemesi gerektiği hakkında daha fazla bilgi için Azaltma Düzeni belgelerine bakın.

Azure bağımlılığı sorunu

Azure 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 olarak risk azaltmaları araştırır ve uygular. Bu risk azaltmaların yan etkileri ortaya çıkar. Örneğin, depolama ile 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. Risk azaltmanın doğası gereği, gönderilen bir iletinin etkilenen kuyrukta veya abonelikte görünmesi ve alma işlemine hazır olması 15 dakika kadar sürebilir. Genel olarak bakıldığında, ç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, service bus müşterilerinin küçük bir alt kümesi için bazen bu risk azaltmaya ihtiyaç duyulmaktadır.

Tek bir alt sistemde Service Bus hatası

Herhangi bir uygulamayla, koşullar Service Bus'ın iç bileşeninin tutarsız hale gelmesine 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 tipik çalışma süreleri çok daha kısa olsa da bir varlığın birkaç dakika boyunca kullanılamaz gibi görünmesine neden olur.

Bu gibi 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 yöntemleri kullanmayı 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.