Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Dayanıklı ve başarılı istemci uygulamaları oluşturmak için, Azure Yönetimli Redis hizmetinde yük devretmeyi anlamak kritik önem taşır. Yük devretme, planlı yönetim işlemlerinin bir parçası olabilir veya plansız donanım ya da ağ hatalarından kaynaklanabilir. Yönetim hizmeti Azure Yönetilen Redis ikili dosyalarına düzeltme eki uygulandığında önbellek yük devretmesinin yaygın bir kullanımı gelir.
Bu makalede şu bilgileri bulabilirsiniz:
- Yük devretme nedir?
- Yama uygulama sırasında yük devretme işlemi nasıl gerçekleşir.
- Dayanıklı bir istemci uygulaması oluşturma.
Yük devretme nedir?
Azure Managed Redis için yük devretme hakkında bir genel bakışla başlayalım.
Önbellek mimarisinin hızlı bir özeti
Önbellek, ayrı ve özel IP adreslerine sahip birden çok sanal makineden oluşturulur. Her bir sanal makine (veya "düğüm"), paralel olarak birden fazla Redis sunucu işlemi (bunlar "parçalar" olarak adlandırılır) çalıştırır. Birden çok parça, her sanal makinede vCPU'ların daha verimli bir şekilde kullanılmasına ve daha yüksek performansa olanak sağlar. Birincil Redis parçalarının tümü aynı VM/düğümde değildir. Bunun yerine, birincil ve yedek parçalar her iki düğümde de dağıtılır. Birincil parçalar çoğaltma parçalarından daha fazla CPU kaynağı kullandığından, bu yaklaşım daha fazla birincil parçanın paralel olarak çalıştırılmasını sağlar. Her düğümde, parçaları yönetmek, bağlantıları yönetmek ve kendi kendini düzeltmeyi tetiklemek için yüksek performanslı bir ara sunucu işlemi vardır. Bir parça, diğerleri kullanılabilir durumdayken çalışmıyor olabilir.
Azure Yönetilen Redis Mimarisinin ayrıntılı ayrıntıları here bulunabilir.
Yük devretme açıklaması
Bir veya daha fazla çoğaltma parçaları kendilerini ana parça olarak tanıtır ve eski ana parçalar mevcut bağlantıları kapattığında hataya geçiş gerçekleşir. Hata durumunda devretme planlı veya plansız olabilir.
Planlı yük devretme iki farklı zaman içinde gerçekleşir:
- Redis yamalama veya işletim sistemi yükseltmeleri gibi sistem güncellemeleri.
- Ölçeklendirme ve yeniden başlatma gibi yönetim işlemleri.
Düğümler güncelleştirmeyle ilgili önceden bildirim aldığından, rolleri işbirliği içinde değiştirebilir ve değişiklikleri hızla yük dengeleyicisine yansıtabilir. Planlı yük devretme genellikle 1 saniyeden kısa sürede tamamlanır.
Planlanmamış bir yük devretme, kümedeki bir veya daha fazla düğümde donanım hatası, ağ hatası veya diğer beklenmeyen kesintiler nedeniyle oluşabilir. Kalan düğümlerdeki çoğaltılmış parçalar, kullanılabilirliği korumak için kendilerini birincil parçalara dönüştürür, ancak bu süreç daha uzun sürer. Bir kopya shard'ın yük devretme işlemini başlatabilmesi için öncelikle birincil shard'ının kullanılabilir olmadığını algılaması gerekir. Kopya parça, gereksiz bir yük devretmeyi önlemek için bu planlanmamış hatanın geçici veya yerel bir sorun olmadığını da doğrulamalıdır. Algılamadaki bu gecikme, planlanmamış yük devretme işleminin genellikle 10-15 saniye içinde tamamlandığı anlamına gelir.
Yama nasıl uygulanır?
Azure Yönetilen Redis hizmeti, önbelleğinizi en son platform özellikleri ve düzeltmeleriyle düzenli olarak güncelleştirir. Bir önbelleğe düzeltme eki uygulamak için hizmet şu adımları izler:
- Hizmet, düzeltme eki uygulanmakta olan tüm VM'lerin yerini alacak yeni güncel VM'ler oluşturur.
- Ardından yeni VM'lerden birini küme lideri olarak yükselter.
- Tek tek, yama uygulanan tüm düğümler kümeden kaldırılır. Bu VM'lerdeki tüm parçalar indirgenecek ve yeni VM'lerden birine geçirilecektir.
- Son olarak, değiştirilen tüm VM'ler silinir.
Kümelenmiş önbelleğin her kesimi ayrı ayrı düzeltmelere tabi tutulur ve diğer kesimlerin bağlantılarını kapatmaz.
Uyarı
Aynı bölgedeki birden çok önbelleğe aynı anda düzeltme eki uygulanabilir. Bu durum uygulamanızı etkiliyorsa, bakım zamanlamalarını her önbelleğe farklı bir zamanda düzeltme eki uygulanabilecek şekilde yapılandırın.
İşlem tekrarlanmadan önce tam veri eşitlemesi gerçekleştiğinden, önbelleğinizde veri kaybı oluşma olasılığı düşüktür. Verileri dışarı aktararak ve kalıcılığı etkinleştirerek veri kaybına karşı daha fazla koruma sağlayabilirsiniz.
Ek önbellek yükü
Yük devretme gerçekleştiğinde önbelleklerin verileri bir düğümden diğerine çoğaltması gerekir. Bu çoğaltma hem sunucu belleğinde hem de CPU'da biraz yük artışına neden olur. Önbellek örneği zaten yoğun yüke sahipse istemci uygulamaları daha fazla gecikme süresiyle karşılaşabilir. Olağan dışı durumlarda istemci uygulamaları, zaman aşımı istisnaları alabilir.
Yük devretme istemci uygulamamı nasıl etkiler?
İstemci uygulamaları, Azure Yönetilen Redis örneğinden bazı hatalarla karşılaşabilir. İstemci uygulamanın karşılaştığı hata sayısı, yük devretme sırasında söz konusu bağlantıda bekleyen işlemlerin sayısına bağlıdır. Bağlantılarını kapatan düğüm aracılığıyla yönlendirilen tüm bağlantılar hatalarla karşılaşır.
Birçok istemci kitaplığı, bağlantılar kesildiğinde aşağıdakiler dahil olmak üzere farklı türde hatalar oluşturabilir:
- Zaman aşımı istisnaları
- Bağlantı istisnaları
- Socket Özel Durumları
Özel durumların sayısı ve türü, önbellek bağlantılarını kapattığında isteğin kod yolundaki konumuna bağlıdır. Örneğin, bir istek gönderen ancak yük devretme gerçekleştiğinde yanıt almayan bir işlem, bir zaman aşımı özel durumu ile karşılaşabilir. Kapatılan bağlantı nesnesinde yeni istekler, yeniden bağlantı başarıyla gerçekleşene kadar bağlantı özel durumları alır.
Çoğu istemci kitaplığı, bu şekilde yapılandırılmışsa önbelleğe yeniden bağlanmayı dener. Bununla birlikte, öngörülemeyen hatalar bazen kitaplık nesnelerini kurtarılamaz bir duruma sokabilir. Hatalar önceden yapılandırılmış bir süreden daha uzun süre devam ederse bağlantı nesnesi yeniden oluşturulmalıdır. Microsoft.NET ve diğer nesne odaklı dillerde, uygulamayı yeniden başlatmadan bağlantıyı yeniden oluşturmak ForceReconnect deseni kullanılarak gerçekleştirilebilir.
Bakım kapsamındaki güncelleştirmeler nelerdir?
Bakım bu güncellemeleri içerir:
- Redis Server güncelleştirmeleri: Redis sunucusu ikili dosyalarının tüm güncelleştirmeleri veya düzeltme ekleri.
- Sanal makine (VM) güncelleştirmeleri: Redis hizmetini barındıran sanal makinenin tüm güncelleştirmeleri. VM güncellemeleri, barındırma ortamındaki yazılım bileşenlerine düzeltme eki uygulamadan ağ bileşenlerini yükseltmeye veya devreden çıkarmaya kadar çeşitli işlemleri içerir.
Bakım geçmişi Azure portalında görünüyor mu?
Azure portalında bakım geçmişi hakkında bilgi edinmek için önbellek örneğinizin Azure Activity günlüğünü denetleyin. Bakım başladığında "healthevent" olayı tetiklenir.
Bildirimleri otomatik olarak almak için Etkinlik günlüğünde bir uyarı ayarlayın .
İstemci ağ-yapılandırma değişiklikleri
Müşteri tarafı bazı ağ yapılandırma değişiklikleri, Kullanılabilir bağlantı yok hatalarını tetikleyebilir. Bu tür değişiklikler şunları içerebilir:
- Bir istemci uygulamasının sanal IP adresini hazırlama ile üretim yuvaları arasında değiştirme.
- Uygulamanızın örneklerinin boyutunu veya sayısını ölçeklendirme.
Bu tür değişiklikler genellikle bir dakikadan kısa süren bir bağlantı sorununa neden olabilir. İstemci uygulamanız büyük olasılıkla diğer dış ağ kaynaklarıyla ve Azure Yönetilen Redis hizmetine olan bağlantısını kaybeder.
Dayanıklılık odaklı tasarım
Yük devretmelerini tam anlamıyla önleyemezsiniz. Bunun yerine, istemci uygulamalarınızı bağlantı kesintilerine ve başarısız isteklere dayanıklı olacak şekilde yazın. Çoğu istemci kitaplığı önbellek uç noktasına otomatik olarak yeniden bağlanır ama [çok] azı başarısız istekleri yeniden denemeye çalışır. Uygulama senaryosuna bağlı olarak geri alma ile yeniden deneme mantığını kullanmak mantıklı olabilir.
Uygulamamı nasıl dayanıklı hale getirebilirim?
Özellikle devre kesici ve yeniden deneme desenleri oluşturmaya yönelik dayanıklı istemciler oluşturmak için şu tasarım desenlerine bakın:
- Güvenilirlik desenleri - Bulut Tasarım Desenleri
- Azure hizmetleri için Yeniden Deneme Rehberi - Bulut uygulamaları için En İyi Uygulamalar
- Üstel geri çekilme ile yeniden denemeleri uygulayın