MSE Microservices Registry'nin yüksek kullanılabilirlik özellikleri, daha dayanıklı uygulamalar oluşturmanıza yardımcı olur. Bu en iyi uygulamalar kapsamına göre kategorize edilir: örnek yüksek kullanılabilirliği, hizmet keşfi yüksek kullanılabilirliği ve yapılandırma yönetimi yüksek kullanılabilirliği. Bu konuda MSE Microservices Registry'nin Professional Edition'ı örnek olarak kullanılmıştır.
Önerilen sürümler
spring-cloud-alibaba: 2.2.6.RELEASE veya sonraki sürümler.Dubbo: 2.7.12 veya sonraki sürümler.spring-boot: 2.3.x veya önceki sürümler. Uyumluluk sorunları nedeniyle 2.4.x sürümlerinin kullanılması önerilmez.
Microservices Registry örnekleri için yüksek kullanılabilirlik
-
High-availability architecture
Hiçbir hizmet %100 kullanılabilir değildir. Yüksek güvenilirlik ve veri güvenliği sağlamak için örneğinizi en az üç düğümle dağıtın. Bir düğüm arızalanırsa trafik saniyeler içinde başka bir düğüme yönlendirilir ve hatalı düğüm kümeden otomatik olarak kaldırılır.
Microservices Registry'nin Professional Edition'ı Nacos 2.0 mimarisi üzerine kuruludur. Bu tasarım, olağanüstü durum kurtarma yeteneklerini geliştirir ve yüksek kullanılabilirlik için altta yatan altyapıya olan bağımlılığı azaltır. Daha fazla bilgi için bkz. Örnek sürümü seçimi.
-
Multi-zone deployment
Her MSE bölgesi birden fazla alan içerir. Aynı bölgedeki farklı alanlarda çalışan uygulamalar, hata yalıtımından yararlanırken düşük ağ gecikme süresine (3 ms'den az) sahip olur. Çok alanlı bir örnek, fiziksel sunucuları farklı alanlara dağıtır. A Alanında bir arıza meydana gelirse trafik hızla B Alanına yönlendirilir. Bu işlem kesintisizdir ve uygulama kodunuzda herhangi bir değişiklik gerektirmez. Düğüm sayısını yapılandırmanız yeterlidir; MSE, çoklu alanlar arasındaki dağıtımı otomatik olarak yönetir.
Şekil 1. MSE üç düğümlü aktif-aktif mimari

Şekil 2. Çok katmanlı olağanüstü durum kurtarma mimarisi

Hizmet keşfi yüksek kullanılabilirliği
Hizmet keşfinde, consumers ve providers farklı yüksek kullanılabilirlik özelliklerine sahiptir: consumers Push-through protection sunar, providers ise disaster recovery destekler.
Tüketiciler
Bir tüketici, kayıt defterinden sağlayıcı örneklerinin listesine abone olur. Kayıt defteri ölçeklendirme veya yükseltme gibi değişikliklere uğradığında veya alan çapında ağ kesintisi ya da güç kaybı gibi beklenmedik olaylarla karşılaştığında abonelikler başarısız olabilir ve bu durum tüketicilerin kullanılabilirliğini etkiler.
Tüketici tarafında boş liste korumasını yapılandırarak, bir kesinti sırasında tüketicinin boş bir örnek listesi almasını önleyin.
Boş liste koruması olmadan: Bir tüketici boş bir liste alırsa hizmetiniz kesintiye uğrar ve hata bildirir.
Boş liste korumasıyla: Bir tüketici boş bir liste alırsa koruma mekanizması devreye girer, güncellemeyi reddeder ve hizmet kullanılabilirliğinin korunmasına yardımcı olur.
Configuration
Bu özellik yalnızca nacos-java-client 1.4.1 ve sonraki sürümlerde desteklenir. Uyumlu Spring Cloud ve Dubbo sürümleri için bkz. Önerilen sürümler.
-
Spring Cloud uygulamaları
Yapılandırmanıza aşağıdaki özelliği ekleyin:
spring.cloud.nacos.discovery.namingPushEmptyProtection=true -
Dubbo uygulamaları
registry.url parametresine aşağıdaki değeri ekleyin:
namingPushEmptyProtection=true
Persistent caching
Boş liste koruması etkinleştirildiğinde, uygulamanın konteyneri yeniden başlatılırsa önbellek dizini kaybolabilir. Bunu önlemek için önbellek dizinini kalıcı hale getirin; örneğin, bir birim bağlayarak.
Önbellek dizini şu konumdadır: ${user.home}/nacos/naming/${namespaceId}.
Sağlayıcılar
Sağlayıcılar için olağanüstü durum kurtarma özelliği, trafik artışları sırasında kümenizde zincirleme arızaların oluşmasını önlemeye yardımcı olur.
nacos-java-client 2.x sürümleri kullanılarak kaydedilen sağlayıcılar, sağlayıcı tarafındaki olağanüstü durum kurtarma özelliğini desteklemez.
-
Without disaster recovery
Tüketici isteklerindeki ani artış sağlayıcıları yüksek kullanım düzeyine ittiğinde bazıları başarısız olabilir:

Kayıt defteri başarısız olan düğümü kaldırır ve tüm trafiğini kalan düğümlere yönlendirir.
Kalan sağlayıcı düğümlerindeki yük artar ve bu düğümlerin de başarısız olma olasılığı yükselir.
Sonuç olarak, tüm sağlayıcı düğümleri başarısız olabilir ve bu durum tamamen hizmet kesintisine neden olur.
-
With disaster recovery
Tüketici isteklerindeki ani artış sağlayıcıları yüksek kullanım düzeyine ittiğinde bazıları başarısız olabilir:

Kayıt defteri başarısız olan düğümü sağlıksız olarak işaretler.
Sağlıksız düğüm yüzdesi koruma eşiğini aşarsa olağanüstü durum kurtarma devreye girer. Kayıt defteri daha sonra tüketicilere kayıtlı tüm düğümleri (hem sağlıklı hem de sağlıksız) döndürür.
Bu strateji, bazı düğümler sağlıksız olsa bile trafiği kayıtlı tüm düğümler arasında dağıtarak tamamen hizmet kesintisini önler.
Enable disaster recovery
-
Supported instance types
Kalıcı örnekler: Tamamen desteklenir.
-
Kalıcı olmayan örnekler:
nacos-java-client1.x: Varsayılan olarak, sağlıksız örnekler 30 saniye sonra kaldırılır. Kaldırılan bir örnek koruma eşiğine dahil edilmez ve bu durum olağanüstü durum kurtarma ilkesinin devreye girmesini engeller.nacos-java-client2.x: Desteklenmez. Örnekler, kalıcı bağlantı kesildikten hemen sonra çevrim dışı bırakılır; bu nedenle olağanüstü durum kurtarma ilkesi tetiklenemez.
-
Configure by using the command line
-
Belirli bir hizmet için eşiği güncelleyin
curl -X PUT "${nacos.address}/nacos/v1/ns/service?namespaceId=public&serviceName=my-provider&protectThreshold=0.6"${nacos.address}: Microservices Registry adresi.namespaceId: Ad alanı kimliği. Varsayılan değer: public.serviceName: Spring Cloud uygulaması için hizmet adı veya Dubbo uygulaması için arayüz adı.
-
Eşik yapılandırmasını sorgulayın
curl -X GET "${nacos.address}/nacos/v1/ns/service?namespaceId=public&serviceName=my-provider" -
Yanıt
{"namespaceId":"public","groupName":"DEFAULT_GROUP","name":"my-provider","protectThreshold":0.7,"metadata":{},"selector":{"type":"none"},"clusters":[]}
-
Microservices Governance high availability configuration
Sorunsuz başlatma ve durdurma, aykırı örnek kaldırma ve hizmet düşürme gibi Microservices Governance özelliklerini kullanarak uygulama kullanılabilirliğini daha da artırın.
Yapılandırma yönetimi yüksek kullanılabilirliği
Yapılandırma yönetiminin yüksek kullanılabilirliği iki temel unsura dayanır: istemci taraflı önbellek ve yedekleme dizinleri ile yapılandırma merkezinin çok katmanlı kısıtlama yetenekleri.
Microservices Registry'nin Professional Edition'ında yapılandırma yönetimi için aşağıdaki yüksek kullanılabilirlik yetenekleri varsayılan olarak etkindir. Herhangi bir işlem yapmanız gerekmez.

-
Client
Cache directory: İstemci her yapılandırma merkezinden veri aldığında en son yapılandırmayı yerel bir önbellek dizinine kaydeder. Sunucu kullanılamaz duruma gelirse istemci bu yerel önbelleğe geri döner.
Backup directory: Sunucu kullanılamaz durumda olduğunda yerel yedekleme dizinindeki dosyaları manuel olarak güncelleyebilirsiniz. İstemci, sunucudan gönderilen bir yapılandırma güncellemesini simüle ederek öncelikli olarak bu dizinden yükleme yapar.
-
Configuration Center
Altyapı düzeyinde yüksek kullanılabilirliğin yanı sıra, yapılandırma merkezi hizmeti kararlılığı artırmak için çok boyutlu hız sınırlama uygular. Buna düğüm başına maksimum bağlantı ve istemci IP'si başına bağlantı sınırları dahildir. Ayrıca saniye ve dakika başına yapılandırma yayınlamaları için hız sınırlama ve tek tek yapılandırmalar için ayrıntılı kısıtlama sağlar. Bu önlemler, anormal trafik nedeniyle sunucu kesintisi riskini azaltmaya yardımcı olur.