Spring Cloud Hizmeti Kaydı Keşfi Geliştirilmiş Ara Yazılım Nepxion Keşfi

Nepxion Discovery, Spring Cloud Discovery hizmet kaydı keşfi, Şerit yük dengeleme, Feign ve RestTemplate çağrıları, Hystrix veya Alibaba Sentinel sigorta yalıtımı, mevcut sınırlama ve düşürme için geliştirilmiş bir ara yazılımdır. İşlevleri arasında gri tonlamalı yayın (anahtar serbest bırakma ve sorunsuz sürüm dahil) ), hizmet izolasyonu, hizmet yönlendirme (çoklu makine odası alanı yönlendirme, çok sürümlü yönlendirme ve çoklu IP ve bağlantı noktası yönlendirme dahil), hizmet ağırlığı, kara / beyaz liste IP adresi filtreleme, kısıtlı kayıt, kısıtlı keşif vb., Eureka, Konsolos, Zookeeper desteği Alibaba'nın Nacos'u hizmet kaydı ve keşif ara yazılımıdır, Alibaba'nın Nacos'u, Ctrip'in Apollo ve Redis'i, uzaktan yapılandırma merkezleri, Spring Cloud Gateway, Zuul ağ geçidi ve mikro hizmet gri ölçekli sürüm ve çoklu veri kaynağı veritabanı gri olarak desteklenir Kullanıcı tanımlı ve programlanmış gri seviye yönlendirme stratejilerini (RPC ve REST çağrı yöntemleri dahil) destekler, işletim ve bakım planlamasını, gri seviye yayınlamayı ve yönlendirme meta verilerini destekler ve Spring Cloud Edgware sürümüyle uyumludur, Finchley versiyonu ve Greenwich versiyonu. Mevcut Spring Cloud mikro hizmetleri, sıfır kod müdahalesi ile ara yazılımı tanıtmak kolaydır

Teşekkürler

  • Alibaba ara katman yazılımı Nacos ve Sentinel ekiplerine, özellikle Nacos @ başkanı, Sentinel @ başkanı ve teknik destekleri için Spring Cloud Alibaba @ başkanı teşekkür ederiz.
  • OpenApi paketini geliştirmek ve teknik destek için Ctrip Apollo ekibine, özellikle @ sayesinde
  • Kod katkıda bulunanlar @esun, @JikaiSun, @HaoHuang, @Fan Yang ve diğer öğrencilere ve bu çerçeve için değerli yorum ve öneriler sağlayan öğrencilere teşekkür ederiz.
  • Bu çerçeveyi kullanan şirketlere ve şirketlere teşekkürler

Kullanımı kolay. Yalnızca aşağıdaki adımlar gereklidir:

  • Pom.xml ile ilgili bağımlılıkları tanıtın, Bağımlılık uyumluluğuna bakın
  • İşlem yapılandırma dosyası, yapılandırma dosyasına bakın
  • MetaData'da mikro hizmet için bir sürüm numarası (sürüm) tanımlayın, bir grup adı (grup) veya uygulama adı (uygulama) tanımlayın ve bir bölge adı (bölge) tanımlayın
  • Projenin gerçek durumuna göre, en iyi yapılandırmayı elde etmek için ilgili işlev öğelerini veya öznitelik değerlerini açıp kapatın.
  • Kural zorlama, kural tanımına bakın
  • Uzak yapılandırma merkezi aracılığıyla kuralları aktarın
  • Kontrol platformu arayüzü aracılığıyla kuralları itin
  • Müşteri araçlarını (Postacı gibi) itin
  • Başlangıç
  • Örnek demo

Güçlü uyumluluk. Aşağıdaki sürümler desteklenmektedir:

Spring Cloud sürümü Nepxion Discovery sürümü Greenwich5.0.0 (yayınlanmamış) Finchley4.8.5.2Edgware3.8.5.2Dalston2.0.11 (sürdürülmedi, mevcut değil) Camden1.0.1 (korunmadı, mevcut değil)

Arayüz ekranı

Grafik Gri Tonlamalı Yayıncılık Web Platformu

Entegre kural yapılandırmalı Apollo Yapılandırma Merkezi

Nacos Servis Kaydı Keşif Merkezi

Kuralları ve sürümleri JMX aracılığıyla Uç Noktaya göndermek için Spring Boot Admin (sürüm F veya üzeri) izleme platformunu entegre edin ve gri sürüm elde edin

Kuralları ve sürümleri JMX aracılığıyla Uç Noktaya göndermek için Spring Boot Admin (E sürümü) izleme platformunu entegre edin ve gri sürüm elde edin

Entegre Sentinel sigorta izolasyonu akımı sınırlayan düşürme platformu

Entegre sağlık kontrolüne sahip konsolos arayüzü

Mevcut sorun noktaları

Mevcut Spring Cloud mikro hizmetlerinin sorunlu noktaları

  • Operasyon ve bakımdan sorumlu kişi sizseniz, sorumlu olduğunuz test ortamındaki servis kayıt merkezinin bazı sorumsuz geliştiriciler tarafından yerel geliştirme ortamına kaydedildiğini ve testçilerin testi geçememesine neden olduğunu sık sık görüyor musunuz? Kayda izin vermemek için yerel geliştirme ortamını engelleyebilmek istiyorsunuz
  • Operasyon ve bakımdan sorumlu kişi sizseniz, üretim ortamındaki belirli bir mikro hizmet kümesi örneğinde geçici olarak bir sorun vardır, ancak çevrimdışı olmasını istemezsiniz. Örneği engellemeyi ve geçici olarak çağrılmasını önlemeyi umuyorsunuz
  • İşletmeden sorumlu kişi sizseniz, iş hizmetlerinin hızlı yinelemeli doğası göz önüne alındığında, mikro hizmet kümesi altındaki örnekler farklı sürümler yayınlar. Sürüm yönetimi stratejisine göre yönlendirmek ve aşağı akış mikro hizmetlerine farklılaştırılmış çağrılar sağlamak istiyorsunuz.Örneğin, erişim kontrolü, farklı sürümler arasında trafik tahsisi gibi farklı sürümlere göre hızlı bir şekilde geçiş yapar.
  • İşletmeden sorumlu kişi sizseniz, gri yayın işlevinin, kullanıcının cep telefonu numarasına göre farklı sunuculara yönlendirme gibi iş senaryosunun özelliklerine göre özelleştirilebileceğini umuyoruz.
  • DBA'dan sorumlu kişi sizseniz, gri sürüm işlevinin veritabanına göre değiştirilebileceğini umuyoruz.
  • Testten sorumlu kişi sizseniz ve mikro hizmetlerde A / B testi yapmak istiyorsanız, sürümü dinamik olarak değiştirerek bu hedefe ulaşabilirsiniz.

Uygulama senaryosu

  • IP adresi kayıt filtrelemesinin siyah / beyaz listesi
  • Geliştirme ortamının yerel mikro hizmetleri (örneğin, IP adresi 172.16.0.8'dir) test ortamının hizmet kaydı keşif merkezine kaydolmak istemezse, yapılandırma merkezinde IP adresi filtrelemesinin siyah / beyaz bir listesini tutabilirsiniz (genel ve yerel filtrelemeyi destekleyin) ) kuralı
  • Bu etkiyi kara / beyaz liste sağlayarak elde edebiliriz
  • Maksimum kayıt sayısının filtrelenmesi
  • Mikro hizmet kayıtlarının sayısı üst sınıra (örneğin, 10) ulaştığında, daha sonra gelen mikro hizmetler artık kaydolamayacaktır.
  • IP adresi keşif filtrelemesinin siyah / beyaz listesi
  • Geliştirme ortamının yerel mikro hizmeti (örneğin, IP adresi 172.16.0.8'dir) test ortamının hizmet kayıt keşif merkezine kaydedilmiştir, ardından yapılandırma merkezinde IP adresi filtrelemesinin kara / beyaz listesi (genel ve yerel filtrelemeyi destekleyen) tutulabilir Kural, yerel mikro hizmet, test ortamındaki diğer mikro hizmetler tarafından çağrılmayacak
  • Bu etkiyi kara / beyaz liste iterek elde edebiliriz.
  • Çoklu sürüm erişimi için gri tonlamalı kontrol
  • Hizmet A, hizmet B'yi arar ve hizmet B'nin iki örneği vardır (B1, B2). Üçü aynı hizmet adına sahip olsalar da, farklı işlevlere sahiptirler.Gerek, belirli bir anda, A hizmetinin yalnızca B1'i arayabilmesi ve B2'nin yasak olmasıdır. . Bu senaryoda, application.properties içinde B1 için 1.0 sürümüne ve B2 için 1.1 sürümüne sahibiz.
  • Belirli bir gri kontrol duygusu elde etmek için A servisini iterek B servisinin belirli bir versiyonunun ilgili ilişkisinin konfigürasyonunu çağırabiliriz.Sürüm değiştirildiğinde, sadece tekrar basmamız gerekir.
  • Çoklu versiyon ağırlığının gri kontrolü
  • Yukarıdaki senaryoda, isteğe göre farklı versiyonların ağırlıklarını (trafik oranları) da tahsis edebiliriz, B'ye erişen A'nın trafiği B1 ve B2 arasında tahsis edilir.
  • Çok alanlı ağırlığın gri kontrolü
  • Yukarıdaki senaryoda, ağırlıkları (trafik oranları) farklı alanlara da tahsis edebiliriz.İsteğe göre, A'nın B'ye erişim trafiği B1 ve B2 arasında tahsis edilir (B1 ve B2 farklı alanlara aittir).
  • Birden çok veri kaynağı ile veritabanı gri kontrolü
  • Önceden mikro hizmetler için birden fazla veri kaynağı kümesi yapılandırıyoruz ve gri sürüm aracılığıyla gerçek zamanlı olarak veri kaynaklarını değiştiriyoruz
  • Mikro hizmet sürümünü dinamik olarak değiştirin
  • A / B testinde, mikro hizmeti yeniden başlatmadan sürümü dinamik olarak değiştirerek, sürüme erişim yolu değiştirilir
  • Kullanıcı tanımlı ve programlanmış gri seviye yönlendirme stratejileri, çok basit programlama yoluyla aşağıdaki etkileri elde edebilir
  • İş REST çağrısında, hizmet adına ve sürüme karşılık gelen Json dizesi Üstbilgide geçirilir ve birkaç arka uç hizmeti, isteği belirtilen sürümün sunucusuna yönlendirir
  • İşletme REST çağrısında, bölge (bölge) adı Üstbilgide geçirilir ve birkaç arka uç hizmeti, isteği belirtilen bölge (bölge) adıyla sunucuya yönlendirir.
  • İş DİNLENME çağrısında, Başlığa Jetonu iletin, farklı kullanıcıları farklı Jetonlara göre sorgulayın ve birkaç arka uç hizmeti, isteği belirlenen sunucuya yönlendirecektir.
  • İş RPC aramalarında, cep telefonu numarası veya kimlik numarası gibi farklı iş parametrelerine göre, çeşitli arka uç hizmetleri, isteği belirlenen sunucuya yönlendirecektir.

İşlev tanıtımı

  • Spring Cloud ve Spring Cloud Gateway ve Zuul Gateway tabanlı mikro hizmetler aşağıdaki işlevleri uygular: Çeşitli özelliklere sahiptir
  • Herhangi bir bağlantıda (mikro hizmetler ve iki ağ geçidi) ve birden çok yöntemde (REST ve RPC) mükemmel esneklik desteği filtreleme denetimi ve gri yayın
  • Son derece kısıtlayıcıdır - hizmet kaydı keşfi etkinleştirildiği sürece @EnableDiscoveryClient ek açıklaması program girişine eklenir
  • Güçlü bir sağlamlığa sahiptir - uzak yapılandırma merkezi tamamen kapalıyken, Rest aracılığıyla gri ölçekte serbest bırakılabilir; uzaktan kural yapılandırması standartlaştırılmadığında, bunun yerine hemen yerel kurala geçin
  • Çok basit ve kullanımı kolay - yalnızca ilgili paketi ve ilgili yapılandırmayı kuralda tanıtmanız gerekir, işlev doğal olarak etkinleştirilecektir
  • Hizmet kayıt düzeyi kontrolünü uygulayın
  • Kara / beyaz listeye dayalı IP adresi filtreleme mekanizması, ilgili mikro hizmetlerin kaydını yasaklar
  • Mikro hizmet kaydını maksimum kayıt sayısına göre sınırlayın. Mikro hizmet kümesi altındaki kayıtlı örneklerin sayısı üst sınıra ulaştığında, sonraki mikro hizmetlerin kaydolması yasaklanacak
  • Hizmet keşif düzeyinde denetim uygulayın
  • Kara / beyaz listeye dayalı IP adresi filtreleme mekanizması, ilgili mikro hizmetlerin keşfedilmesini yasaklar
  • Sürüm numarası eşleştirmesine dayalı olarak, tüketici ile sağlayıcının erişilebilir sürümleri arasındaki ilgili ilişkinin yapılandırılması yoluyla, çok sürümlü erişim kontrolü, hizmet keşfi ve yük dengeleme düzeyinde gerçekleştirilir.
  • Sürüm ağırlık eşleştirmesine bağlı olarak, tüketici ile sağlayıcı sürüm ağırlığı (trafik) arasındaki ilgili ilişkinin, hizmet keşfi ve yük dengeleme düzeyinde yapılandırılması yoluyla, çok sürümlü trafik tahsisi erişim kontrolü gerçekleştirilir.
  • Bölgesel ağırlık eşleştirmesine dayalı olarak, tüketicinin bölgesinin ağırlığı (trafik) ile sağlayıcı arasındaki karşılık gelen ilişkinin yapılandırılması yoluyla, çok bölgeli trafik tahsis erişim kontrolü, hizmet keşfi ve yük dengeleme seviyesinde gerçekleştirilir.
  • Kullanıcı iş seviyesi kontrolünü gerçekleştirin
  • Kullanıcılar, karakteristik gri ölçekli yayıncılık elde etmek için iş parametrelerindeki değişikliklere abone olabilir, örneğin, birden çok veri kaynağıyla veritabanı geçişinin gri ölçekli yayınlanması
  • Gri serbest bırakma elde edin
  • Sürümün dinamik değişikliği yoluyla, gri sürüme geçin
  • Sürüm erişim kurallarının değiştirilmesiyle gri sürüme geçin
  • Sürüm ağırlık kurallarının değiştirilmesiyle, düzgün gri tonlamalı yayın gerçekleştirilir
  • Bölgesel ağırlık kurallarının değişmesiyle, sorunsuz gri tonlamalı yayın gerçekleştirilir
  • Yukarıdaki kuralların tanımını XML veya Json aracılığıyla gerçekleştirin
  • Yayınlama / abone olma işlevini gerçekleştirmek için olay veri yolu mekanizması (EventBus) aracılığıyla işlevi gerçekleştirin
  • Uzak konfigürasyon merkeziyle bağlantı kurmak, Nacos ve Redis'i entegre etmek, uzak konfigürasyon merkezini zaman uyumsuz olarak kabul etmek, kural bilgilerini aktif olarak iletmek ve mikro hizmetin kurallarını dinamik olarak değiştirmek
  • Spring Boot Actuator ile birleştirildiğinde, Rest'in aktif itme kuralı bilgilerini eşzamansız olarak kabul eder, mikro hizmetlerin kurallarını dinamik olarak değiştirir ve hem eşzamanlı hem de eşzamansız iletme yöntemlerini destekler
  • Spring Boot Actuator ile birlikte, mikro hizmetlerin sürümünü dinamik olarak değiştirin ve hem eşzamanlı hem de eşzamansız itme yöntemlerini destekleyin
  • Hizmet kayıt seviyesinin kontrolünde, kayıt yasağı koşulu tetiklendiğinde, asenkron olay aktif olarak itilir, böylece kullanıcı abone olabilir
  • Dinleyici mekanizması aracılığıyla uzantı uygulayın
  • Kullanıcılar, hizmet kaydında bulunan temel olayları izleyebilir
  • Strateji genişletme, kullanıcı tanımlı ve programlanmış gri yönlendirme stratejisi aracılığıyla gerçekleştirin
  • Kullanıcılar işle ilgili yönlendirme stratejileri uygulayabilir ve farklı iş parametrelerine göre farklı sunuculara yük dengeleyebilir
  • Kullanıcılar, gerekli yönlendirme işlevini istedikleri gibi gerçekleştirmek için yerleşik sürüm yönlendirme stratejisi + bölgesel yönlendirme stratejisi + IP ve bağlantı noktası yönlendirme stratejisi + özel stratejiyi takip edebilir
  • Uygulama, Spring Boot Actuator ve Swagger entegrasyonunu destekler
  • Spring Boot Admin'i desteklemek için entegrasyon uygulayın
  • Sentinel sigorta izolasyon akım sınırlayıcı bozulmasını destekleyen entegrasyonu gerçekleştirin
  • Daha fazla hizmet kayıt merkezinin gelecekteki genişletilmesi için desteğin farkına varın
  • Denetim platformu mikro hizmetlerini uygulayın, merkezi yönetimi destekleyin, kuralları ve sürümleri itin, değiştirin ve silin
  • Kontrol platformu mikro hizmetlerine dayalı grafik gri serbest bırakma işlevini gerçekleştirin

Sözlük

  • E Versiyonu ve F Versiyonu, Edgware ve Finchley of Spring Cloud'un baş harfleri vb.
  • Gri tonlamalı yayın (aynı zamanda katı gri tonlamalı sürüm olarak da adlandırılır) ve yumuşak gri tonlamalı yayın (esnek gri tonlamalı sürüm olarak da adlandırılır) arasında geçiş yapın. Gri tonlamalı sürümün değiştirilmesi, gri tonlama yayınlandığında geçiş süreci olmadığı ve trafiğin doğrudan eski sürümden yenisine geçtiği anlamına gelir. Versiyon; sorunsuz gri tonlamalı sürüm, gri tonlamalı yayınlandığında bir geçiş süreci olduğu anlamına gelir.Gerçek duruma göre, önce yeni sürüme düşük miktarda trafik tahsis edin, eski sürüme yüksek miktarda trafik tahsis edin, yeni sürümü izleyin.Sorun yoksa Eski sürümün trafiğini yeni sürüme geçirmeye devam edin
  • IP adresi, mikro hizmet tarafından bildirildiği makinenin IP adresidir. Docker veya Kubernetes dağıtırken Spring Cloud uygulamalarının sorun yaşamasını önlemek için sistem IP adresine göre rapor vermeye zorlanır ve HostName'in rapor vermesi yasaktır.
  • Kural tanımı ve politika tanımı Kural tanımı, XML veya Json aracılığıyla mevcut formattaki kuralları tanımlamaktır; politika tanımı, özellikle programlamanın bir uzantısı olan kullanıcı tanımlı ve programlanmış gri düzey yönlendirme stratejilerini ifade eder
  • Yerel sürüm, başlangıçta yerel yapılandırma dosyasını okuyarak elde edilen sürüm veya uzak yapılandırma merkezini ilk kez okuyarak elde edilen sürümdür. Yerel sürüm ve ilk sürüm aynı konsepttir
  • Dinamik versiyon, gri tonlamanın yayınlandığı versiyondur. Dinamik versiyon ve gri versiyon aynı konsepttir
  • Yerel kural, yerel yapılandırma dosyasının ilk okunmasıyla elde edilen kuraldır veya uzak yapılandırma merkezinin ilk kez okunmasıyla elde edilen kuraldır. Yerel kurallar ve başlangıç kuralları aynı kavramdır
  • Dinamik kurallar, yani gri tonlama serbest bırakıldığında kurallar. Dinamik kurallar ve gri tonlamalı kurallar aynı kavramdır
  • Etkinlik veri yolu, Google Guava'nın EventBus'u üzerine inşa edilmiş bir bileşendir. Dinamik sürümün ve dinamik kuralların güncellenmesi ve silinmesi, olay veri yolu aracılığıyla aktarılabilir
  • Uzaktan yapılandırma merkezi, yani Nacos, Redis, Apollo, DisConf, Spring Cloud Config dahil ancak bunlarla sınırlı olmamak üzere kural yapılandırma XML biçimini depolayabilen bir yapılandırma merkezi
  • Konfigürasyon (Konfigürasyon) ve kural (Kural), konfigürasyonu güncelleme, yani güncelleme kuralları gibi bu sistemdeki aynı konsepte aittir; örneğin, uzak konfigürasyon merkezinde depolanan konfigürasyon, yani kural XML
  • Hizmet bağlantı noktası ve yönetim bağlantı noktası, yani hizmet bağlantı noktası, yapılandırma dosyasındaki server.port değerini ve yönetim bağlantı noktası, management.port (sürüm E) değerini veya management.server.port (sürüm F veya üstü) değerini ifade eder.

Mimarlık Mühendisliği

Mimari

Global mimari diyagramı

Yukarıdaki şekilden, iki ağ geçidi tabanlı gri sürüm şeması analiz edilebilir ve daha fazla gri sürüm stratejisi üzerinde çalışabilirsiniz.

Ağ geçidi sürüm ağırlığına göre gri tonlamalı yayın

  • Gri tonlamalı sürümden önce
  • Ağ geçidi, yapılandırma sürümü gerektirmez
  • Ağ geçidi > Hizmet A (V1.0), ağ geçidi tarafından hizmet A'ya (V1.0) tahsis edilen% 100 ağırlık (trafik)
  • Gri tonlamalı yayıncılık
  • Çevrimiçi hizmet A (V1.1)
  • Ağ geçidi katmanında A'ya (V1.1)% 10 ağırlık (trafik) atayın ve ağırlığı (trafik) A'ya (V1.0)% 90'a düşürün
  • Gözlem yoluyla gri seviyenin geçerli olduğunu doğrulayın ve A'nın (V1.0) tüm ağırlıklarını (akış) A (V1.1) olarak değiştirin.
  • Gri tonlama yayınlandıktan sonra
  • Çevrimdışı hizmet A (V1.0), gri tonlama başarılı oldu

Ağ geçidi sürüm değiştirmeye dayalı gri tonlamalı yayın

  • Gri tonlamalı sürümden önce
  • Mevcut üretim ortamı varsayıldığında, çağrı yolu ağ geçididir (V1.0) - > Hizmet A (V1.0)
  • İşletme ve bakım, yeni bir üretim ortamı yayınlayacak, yeni bir hizmet kümesi dağıtacak, hizmet A (V1.1)
  • Ağ geçidi (1.0), hizmet A'yı (V1.1) göstermediğinden, bunlar çağrılamaz
  • Gri tonlamalı yayıncılık
  • Gri tonlamalı yayınlama (V1.1) için hizmet A'ya (V1.1) işaret eden bir ağ geçidi eklendi
  • Gri ağ geçidi (V1.1), hizmet kaydı keşif merkezinde yayınlanır, ancak hizmet tarafından keşfedilmesi yasaktır.Ağ geçidinin dışından gelen aramalar, ağ geçidine yük dengelenemez (V1.1)
  • Gri Tonlamalı Ağ Geçidinde (V1.1) - > Gri tonlama testi için Hizmet A (V1.1) çağrı yolu
  • Gri seviye testi başarılı olduktan sonra, ağ geçidini (V1.0) servis A'ya (V1.1) yönlendirin.
  • Gri tonlama yayınlandıktan sonra
  • Çevrimdışı hizmet A (V1.0), gri tonlama başarılı oldu
  • Gri ağ geçidinin (V1.1) çevrimdışı olması gerekmez ve bir sonraki sürümün gri renkte başlatılması ve yeniden yayınlanması için ayrılmıştır.
  • Yeni hizmetten daha eminseniz, onu basitleştirebilirsiniz. Gri ağ geçidini ve gri testi ortadan kaldırabilirsiniz. Hizmet A (V1.1) çevrimiçi olduğunda, orijinal ağ geçidi doğrudan hizmet A'yı (V1.1) işaret eder ve ardından hizmet çevrimdışı olur A (V1.0)

Bağımlılık uyumluluğu

güvenmek

< bağımlılık > < Grup kimliği > com.nepxion < /Grup kimliği > < artifactId > keşif < / artifactId > < versiyon > $ {discovery.plugin.version} < / version > < tip > pom < / tür > < dürbün > ithalat < /dürbün > < /bağımlılık >

Aşağıdaki etiket, içe aktarılması gereken bir pakettir ve etiket içe aktarmayı veya almamayı seçebilir

Çekirdek eklenti, mikro hizmet ucunu, ağ geçidi Zuul ucunu ve temel gri tonlamalı yayınlama işlevi, yönetim merkezi, yapılandırma merkezi vb. Dahil ağ geçidi Spring Cloud Gateway ucunu desteklemek için tanıtıldı.

Hizmet kaydına göre dört gelişmiş ara yazılım eklentisi bulundu, lütfen içe aktarmak için birini seçin < bağımlılık > < Grup kimliği > com.nepxion < /Grup kimliği > < artifactId > keşif eklentisi başlangıç-eureka < / artifactId > < artifactId > keşif-eklenti-başlangıç-danışman < / artifactId > < artifactId > keşif-eklenti-başlangıç-zookeeper < / artifactId > < artifactId > keşif-eklenti-başlangıç-nacos < / artifactId > < /bağımlılık > Üç uzak yapılandırma merkezinin ara yazılım uzantısı eklentileri, gerekirse, içe aktarmak için lütfen birini seçin veya kendi uzantınızı da içe aktarabilirsiniz. < bağımlılık > < Grup kimliği > com.nepxion < /Grup kimliği > < artifactId > keşif-eklenti-yapılandırma-merkezi-başlangıç-apollo < / artifactId > < artifactId > keşif-eklenti-yapılandırma-merkezi-başlangıç-nacos < / artifactId > < artifactId > discovery-plugin-config-center-starter-redis < / artifactId > < /bağımlılık >

Genişletilmiş işlevlerin tanıtımı, yerleşik sürüm yönlendirme, bölgesel yönlendirme, kullanıcı tanımlı ve programlanmış gri ölçekli yönlendirme dahil olmak üzere mikro sunucu, ağ geçidi Zuul ve ağ geçidi Spring Bulut Ağ Geçidini destekler

Mikro sunucu tanıtımı Kullanıcı tanımlı ve programlanmış gri ölçekli yönlendirme, gerekirse lütfen içe aktarın < bağımlılık > < Grup kimliği > com.nepxion < /Grup kimliği > < artifactId > keşif-eklenti-strateji-başlangıç-hizmeti < / artifactId > < /bağımlılık > Ağ geçidinin Zuul sonunda tanıtıldı Kullanıcı tanımlı ve programlanmış gri ölçekli yönlendirme, gerekirse lütfen içe aktarın < bağımlılık > < Grup kimliği > com.nepxion < /Grup kimliği > < artifactId > keşif-eklenti-strateji-başlangıç-zuul < / artifactId > < /bağımlılık > Gateway Spring Cloud Gateway tanıtıldı Kullanıcı tanımlı ve programlanmış gri ölçekli yönlendirme, gerekirse lütfen içe aktarın < bağımlılık > < Grup kimliği > com.nepxion < /Grup kimliği > < artifactId > keşif-eklenti-strateji-başlangıç-ağ geçidi < / artifactId > < /bağımlılık >

Kullanıcılar gri ölçekli yönlendirmeyi özelleştirip programladığında, Hystrix, iş parçacığı modunda hizmet yalıtımı için tanıtılması gereken bir eklentidir ve semafor modunun tanıtılmasına gerek yoktur. Com.nepxion discovery-plugin-Strategy-starter-hystrix

Kontrol platformu tanıtımı `` `xml Üç uzak yapılandırma merkezinin ara yazılım uzantısı eklentileri, gerekirse, içe aktarmak için lütfen birini seçin veya kendi uzantınızı da içe aktarabilirsiniz. < bağımlılık > < Grup kimliği > com.nepxion < /Grup kimliği > < artifactId > keşif konsolu başlangıç apollo < / artifactId > < artifactId > keşif konsolu başlangıç nacos < / artifactId > < artifactId > discovery-console-starter-redis < / artifactId > < /bağımlılık >

Özel dikkat: Ara yazılımın tanıtımı tüm düzeylerde tutarlı olmalıdır ve aşağıdakilere benzer durumlara asla izin verilmez. Bu da sağduyu

  • Örneğin, ağ geçidi hizmet kaydı keşfi için Eureka'yı kullanır ve mikro hizmetler hizmet kaydı keşfi için Consul'u kullanır
  • Örneğin, kontrol platformu uzak yapılandırma merkezi olarak Nacos'u kullanır ve mikro hizmet, uzak yapılandırma merkezi olarak Redis'i kullanır.

Yalnızca "kullanıcı tanımlı ve programlanmış gri tonlamalı yönlendirme" işlevini istiyorsanız, ancak gri tonlama yayın işlevini istemiyorsanız

  • "Kullanıcı tanımlı ve programlanmış gri ölçekli yönlendirme", uzak yapılandırma merkezine erişim gerektirmez, bu nedenle uzak yapılandırma merkezi paketinin tanıtımını kaldırmanız önerilir
< bağımlılık > < Grup kimliği > com.nepxion < /Grup kimliği > < artifactId > discovery-plugin-config-center-starter-xxx < / artifactId > < /bağımlılık >
  • "Kullanıcı tanımlı ve programlanmış gri ölçekli yönlendirme", hizmet kaydı ve keşfi mantığını etkilemeyeceğinden, aşağıdaki iki yapılandırmanın yanlış olarak değiştirilmesi önerilir
# Servis kayıt seviyesinde kontrolü açın ve kapatın. Kapandıktan sonra, hizmet kaydının kara / beyaz liste filtreleme işlevi geçersiz olacak ve maksimum kayıt sayısını sınırlandırma filtreleme işlevi geçersiz olacaktır. Eksikse varsayılan olarak doğru spring.application.register.control.enabled = false # Servis keşif seviyesinde kontrolü açın ve kapatın. Kapatıldıktan sonra, servis çok versiyonlu çağrının kontrol fonksiyonu geçersiz olacak ve belirtilen IP adresinin servis örneğini keşfedilmeye karşı dinamik olarak koruma fonksiyonu geçersiz olacaktır. Eksikse varsayılan olarak doğru spring.application.discovery.control.enabled = false

uyumlu

Sürüm uyumluluğu

  • Spring Cloud F sürümü veya üstü, lütfen 4.x.x sürümünü kullanın, özel kod ana dala bakın
  • Spring Cloud E sürümü, lütfen 3.x.x sürümünü kullanın, özel kod Edgware şubesine bakın
  • 4.x.x sürümü ve 3.x.x sürümünün işlevleri tamamen aynıdır, ancak Uç Nokta URL kullanımında küçük bir fark vardır. Örneğin
  • 3.x.x'in Uç Nokta URL'si http: // localhost: 5100 / config / view şeklindedir.
  • 4.xx'in Uç Nokta URL'si http: // localhost: 5100 / actuator / config / config / view şeklindedir. Yolda iki yapılandırma olduğunu unutmayın. İlki Uç Nokta Kimliği'dir. Spring Boot 2.xx, Uç Nokta Kimliğinin belirtilmesi gerektiğini şart koşar ve Küresel olarak benzersiz

Ara yazılım uyumluluğu

  • Konsolos
  • Consul sunucu sürümü sınırlı değildir, https://releases.hashicorp.com/consul/ adresinden edinilebilecek en son sürüm önerilir.
  • Hayvan bakıcısı
  • Spring Cloud F sürümü veya üstü, adresinden edinilen Zookeeper server 3.5.x sunucu sürümünü (veya üstü) kullanmalıdır.
  • Spring Cloud E sürümü, Zookeeper sunucu sürümü sınırlı değil
  • Eureka
  • Spring Cloud sürümüyle aynısını koruyun, kendi sunucunuzu oluşturun
  • Apollo
  • Apollo sunucu sürümü, en son sürüm önerilir, https://github.com/ctripcorp/apollo/releases adresinden edinilmiştir.
  • Nacos
  • Nacos sunucu sürümü, en son sürüm önerilir, https://github.com/alibaba/nacos/releases adresinden edinilmiştir.
  • Redis
  • Redis sunucu sürümü, en son sürüm önerilir, https://redis.io/ adresinden edinilmiştir.

Kural tanımı

Kurallar, yapılandırma yöntemi olarak XML veya Json'a dayanır, yerel bir dosyada veya uzak yapılandırma merkezinde saklanır ve dinamik kuralı elde etmek için uzak yapılandırma merkezi tarafından değiştirilebilir. Temel kodu, keşif-eklenti çerçevesi ve uzantıları, keşif-eklenti-yapılandırma-merkezi ve uzantıları ve keşif-eklenti-yönetici-merkezi vb. İle ilgilidir.

Örnek kurallar

XML örneği (Json örneği için, discovery-springcloud-example-service altındaki rule.json'a bakın)

Özel dikkat: hizmet adı büyük harf kullanımı kuralları

  • Yapılandırma dosyasında (application.properties, application.yaml, vb.), Hizmet adının tanımı (spring.application.name) büyük / küçük harfe duyarlı değildir
  • Kural dosyasında (XML, Json), referans verilen hizmet adı küçük harf olmalıdır
  • Nacos, Apollo, Redis vb. Uzaktan yapılandırma merkezinin anahtarında, hizmet adı küçük harf olmalıdır
< ? xml version = "1.0" encoding = "UTF-8"? > < kural > < ! - İlgili işlevleri etkinleştirmek istemiyorsanız, sadece ilgili düğümleri silin. Örneğin, kara liste işlevini istemiyorsanız, kara liste düğümünü silin - > < Kayıt ol > < ! - Hizmet kaydının kara / beyaz liste kayıt filtrelemesi yalnızca hizmet başlatıldığında etkili olur. Beyaz liste, yalnızca belirtilen IP adresi ön ekinin kaydına izin verildiği anlamına gelir ve kara liste, belirtilen IP adresi ön ekinin kaydına izin verilmediği anlamına gelir. Her hizmet, beyaz liste veya kara liste olarak yalnızca aynı anda etkinleştirilebilir - > < ! - filtre türü, isteğe bağlı değer kara liste / beyaz liste, beyaz listeyi veya kara listeyi gösteren - > < ! - hizmet adı, hizmet adı anlamına gelir - > < ! - kara / beyaz listenin IP adresi listesini gösteren filtre değeri. IP adresleri genellikle öneklerle temsil edilir. Birden çok adres ";" ile ayrılırsa boşluklara izin verilmez - > < ! - Aşağıdaki tüm hizmetleri belirtir ve 10.10 ve 11.11 ön ekli IP adreslerinin kaydına izin verilmez (genel filtreleme) - > < kara liste filtre-değeri = "10.10; 11.11" > < ! - Aşağıdaki hizmeti belirtir ve 172.16 ve 10.10 ve 11.11 ön ekli IP adreslerinin kaydına izin verilmez - > < service service-name = "discovery-springcloud-example-a" filtre-değeri = "172.16" / > < / kara liste > < ! - < beyaz liste filtre-değeri = "" > < hizmet hizmet adı = "" filtre değeri = "" / > < / whitelist > - > < ! - Hizmet kayıtlarının sayısı, yalnızca hizmet başlatıldığında geçerli olan kayıt filtreleme ile sınırlıdır. Belirli bir hizmet örneğinin kaydı belirtilen sayıya ulaştığında, daha fazla örnek kaydedilemez - > < ! - hizmet adı, hizmet adı anlamına gelir - > < ! - maksimum örnek kaydı sayısını gösteren filtre değeri - > < ! - Aşağıdaki tüm hizmetleri belirtir, maksimum kayıtlı örnek sayısı 10.000'dir (genel yapılandırma) - > < filtre-değeri sayma = "10000" > < ! - Aşağıdaki hizmetleri belirtir, maksimum kayıtlı örnek sayısı 5000'dir, 10000 genel konfigürasyon değeri çalışmayacaktır, yerel konfigürasyon değeri geçerli olacaktır - > < service service-name = "discovery-springcloud-example-a" filtre-değeri = "5000" / > < /Miktar > < /Kayıt ol > < keşif > < ! - Hizmet keşfinin kara / beyaz liste filtresi, "hizmet kaydının kara / beyaz liste filtresi" ile aynı şekilde kullanılır - > < ! - Aşağıdaki tüm hizmetleri belirtir ve 10.10 ve 11.11 ile başlayan IP adreslerinin keşfedilmesine izin verilmediğini gösterir (genel filtreleme) - > < kara liste filtre-değeri = "10.10; 11.11" > < ! - Aşağıdaki hizmetleri belirtir ve 172.16 ve 10.10 ile 11.11 ön ekine sahip IP adreslerinin bulunmasına izin verilmez - > < service service-name = "discovery-springcloud-example-b" filtre-değeri = "172.16" / > < / kara liste > < ! - Hizmet keşfi için çok sürümlü gri erişim kontrolü - > < ! - hizmet adı, hizmet adı anlamına gelir - > < ! - erişim için mevcut sürümü gösteren sürüm değeri, birden çok sürüm ";" ile ayrılmışsa boşluklara izin verilmez - > < versiyon > < ! - sağlayıcı hizmetinin 1.0 sürümüne erişime izin veren gateway g'nin 1.0'ı anlamına gelir a - > < hizmet tüketici-hizmet-adı = "keşif-springcloud-örnek-ağ geçidi" sağlayıcı-hizmet-adı = "keşif-springcloud-örnek-a" tüketici-sürüm-değeri = "1.0" sağlayıcı-sürüm-değeri = "1.0" / > < ! - gateway g'nin 1.1 sürümünü temsil eder ve sağlayıcı hizmetinin 1.1 sürümüne erişime izin verir a - > < hizmet tüketici-hizmet-adı = "keşif-springcloud-örnek-ağ geçidi" sağlayıcı-hizmet-adı = "keşif-springcloud-örnek-a" tüketici-sürüm-değeri = "1.1" sağlayıcı-sürüm-değeri = "1.1" / > < ! - z ağ geçidinin 1.0'ı anlamına gelir ve sağlayıcı hizmetinin 1.0 sürümüne erişime izin verir > < hizmet tüketici-hizmet-adı = "keşif-springcloud-örnek-zuul" sağlayıcı-hizmet-adı = "keşif-springcloud-örnek-a" tüketici-sürüm-değeri = "1.0" sağlayıcı-sürüm-değeri = "1.0" / > < ! - Sağlayıcı hizmetinin 1.1 sürümüne erişim sağlayan z ağ geçidinin 1.1'ini temsil eder a - > < hizmet tüketici-hizmet-adı = "keşif-springcloud-örnek-zuul" sağlayıcı-hizmet-adı = "keşif-springcloud-örnek-a" tüketici-sürüm-değeri = "1.1" sağlayıcı-sürüm-değeri = "1.1" / > < ! - Tüketici hizmetinin 1.0'ını temsil eder a ve sağlayıcı hizmetinin 1.0 sürümüne erişim sağlar b - > < hizmet tüketici-hizmet-adı = "keşif-springcloud-örnek-a" sağlayıcı-hizmet-adı = "keşif-springcloud-örnek-b" tüketici-sürüm-değeri = "1.0" sağlayıcı-sürüm-değeri = "1.0" / > < ! - Sağlayıcı hizmetinin 1.1 sürümüne erişime izin veren tüketici hizmeti a'nın 1.1'ini temsil eder b - > < hizmet tüketici-hizmet-adı = "keşif-springcloud-örnek-a" sağlayıcı-hizmet-adı = "keşif-springcloud-örnek-b" tüketici-sürüm-değeri = "1.1" sağlayıcı-sürüm-değeri = "1.1" / > < ! - Sağlayıcı hizmetinin 1.0 ve 1.1 sürümlerine erişime izin veren tüketici hizmetinin 1.0'ını temsil eder c - > < hizmet tüketici-hizmet-adı = "keşif-springcloud-örnek-b" sağlayıcı-hizmet-adı = "keşif-springcloud-örnek-c" tüketici-sürüm-değeri = "1.0" sağlayıcı-sürüm-değeri = "1.0; 1.1 "/ > < ! - Sağlayıcı hizmetinin 1.2 sürümüne erişime izin veren tüketici hizmeti b'nin 1.1'ini temsil eder c - > < hizmet tüketici-hizmet-adı = "keşif-springcloud-örnek-b" sağlayıcı-hizmet-adı = "keşif-springcloud-örnek-c" tüketici-sürüm-değeri = "1.1" sağlayıcı-sürüm-değeri = "1.2" / > < / version > < ! - Hizmet keşfi için çok sürümlü ağırlıklı gri erişim kontrolü - > < ! - hizmet adı, hizmet adı anlamına gelir - > < ! - sürüm değeri, sürüme karşılık gelen ağırlık değerini "sürüm değeri = ağırlık değeri" biçiminde belirtir, birden çok sürüm ";" ile ayrılmışsa boşluklara izin verilmez - > < ağırlık > < ! - Ağırlıklı akışı yapılandırmanın üç yolu vardır, taneciklik ince ile kabadır ve öncelik sırasıyla yüksekten alta doğrudur, yani ağırlıklı akış değeri birinci yöntemden alınır ve mevcut değilse ikinci yöntem kullanılır. Değeri alamıyorsanız, değeri almak için ikinci yola gidin ve alamazsanız, görmezden gelin. Kullanıcı gerçek duruma göre birini seçebilir - > < ! - Tüketici hizmeti b, sağlayıcı hizmetine c eriştiğinde, c sağlayıcı hizmetinin 1.0 sürümünün ağırlıklı trafiğin% 90'ını ve 1.1 sürümünün ağırlıklı trafiğin% 10'unu sağladığını belirtir - > < hizmet tüketici-hizmet-adı = "keşif-springcloud-örnek-b" sağlayıcı-hizmet-adı = "keşif-springcloud-örnek-c" sağlayıcı-ağırlık-değeri = "1.0 = 90; 1.1 = 10" / > < ! - Tüm tüketici hizmetleri sağlayıcı hizmetine c eriştiğinde, c sağlayıcı hizmetinin 1.0 sürümünün ağırlıklı trafiğin% 80'ini ve 1.1 sürümünün ağırlıklı trafiğin% 20'sini sağladığını belirtir - > < service provider-service-name = "discovery-springcloud-example-c" provider-weight-value = "1.0 = 80; 1.1 = 20" / > < ! - Harici arama geldikten sonra, alanın dev hizmeti için ağırlıklı trafiğin% 85'ini sağladığını ve alanın qa hizmeti için ağırlıklı trafiğin% 15'ini sağladığını belirtir - > < ! - < bölge sağlayıcı-ağırlık-değeri = "dev = 85; qa = 15" / > - > < /ağırlık > < / keşif > < ! - Müşteri tarafından özelleştirilmiş kontrol, bazı karakteristik gri sürümleri elde etmek için özelleştirilmiş parametrelerin değişikliklerini uzaktan itin, örneğin, veritabanı tabanlı gri sürümler - > < özelleştirme > < ! - Servisler a ve c sırasıyla iki kütüphane konfigürasyonuna sahiptir, yani test veritabanı (veritabanı değeri qa'dır) ve üretim veritabanı (veritabanı değeri prod'dur) - > < ! - Çevrimiçi olduktan sonra, başlangıçta veritabanı test veritabanına işaret eder ve karşılık gelen değer qa'dır ve ardından karşılık gelen değer gri tonlamalı olarak yayınlandığında, karşılık gelen değer prod olarak değiştirilir, yani veritabanının gri tonlamalı yayınlanması gerçekleştirilir - > < service service-name = "discovery-springcloud-example-a" key = "veritabanı" value = "qa" / > < service service-name = "discovery-springcloud-example-c" key = "veritabanı" value = "prod" / > < / özelleştirme > < /kural >

Kara / beyaz listede IP adresi kaydı için filtreleme kuralları

Mikro hizmet başlatıldığında, belirtilen IP adresinin hizmet kaydı keşif merkezine kaydedilmesi yasaktır. Destek kara / beyaz liste, beyaz liste yalnızca belirtilen IP adresi ön ek kaydına izin verildiği anlamına gelir ve kara liste, belirtilen hiçbir IP adresi önek kaydına izin verilmediği anlamına gelir. Kurallar nasıl kullanılır, örneklere bakın

  • Genel filtreleme, hizmet kaydı keşif merkezine kayıtlı tüm mikro hizmetleri ifade eder. Yalnızca IP adresi, genel filtreleme alanının önekine dahil edilir. Kayda izin verilir (beyaz liste için) veya kayıt için izin verilmez (kara liste için)
  • Yerel filtreleme, belirli bir mikro hizmeti ifade eder, ardından gerçek filtreleme koşulu, genel filtreleme + yerel filtrelemenin bir kombinasyonudur

Maksimum kayıt sayısı için filtreleme kuralları

Mikro hizmet başlatıldığında, mikro hizmet kümesi altında kayıtlı örnek sayısı üst sınıra (yapılandırılabilir) ulaştığında, sonraki mikro hizmetlerin kaydettirilmesi yasaklanacaktır. Kurallar nasıl kullanılır, örneklere bakın

  • Global yapılandırma değeri, yalnızca aşağıdaki tüm mikro hizmet kümelerini yapılandırın, en fazla kaç tane kaydedilebilir
  • Yerel yapılandırma değeri, belirli bir mikro hizmeti ifade eder. Değer mevcutsa, genel yapılandırma değeri geçersiz olacaktır

Kara / beyaz liste IP adresi keşfi için filtreleme kuralları

Mikro hizmet başlatıldığında, belirtilen IP adresinin hizmet tarafından keşfedilmesi engellenir. "Kara / beyaz liste IP adresi kaydı için filtreleme kuralları" ile aynı yöntemi kullanır

Sürüm erişimi için gri tonlamalı yayın kuralları

1. Standart konfigürasyon, örnekler aşağıdaki gibidir < hizmet tüketici-hizmet-adı = "a" sağlayıcı-hizmet-adı = "b" tüketici sürümü-değeri = "1.0" sağlayıcı-sürüm-değeri = "1.0,1.1" / > Tüketici tarafında sürüm 1.0'ı belirtir ve sağlayıcı tarafında 1.0 ve 1.1 sürümlerine erişime izin verir 2. Sürüm değeri yapılandırılmamış, örneğin aşağıdaki gibi < hizmet tüketici-hizmet-adı = "a" sağlayıcı-hizmet-adı = "b" sağlayıcı-sürüm-değeri = "1.0,1.1" / > Sağlayıcının 1.0 ve 1.1 sürümlerine erişime izin veren tüketicinin herhangi bir sürümünü belirtir < hizmet tüketici-hizmet-adı = "a" sağlayıcı-hizmet-adı = "b" tüketici sürümü-değeri = "1.0" / > Sağlayıcının herhangi bir sürümüne erişime izin veren tüketicinin 1.0 sürümünü belirtir < hizmet tüketici-hizmet-adı = "a" sağlayıcı-hizmet-adı = "b" / > Tüketici tarafındaki herhangi bir sürümü belirtir ve sağlayıcı tarafındaki herhangi bir sürüme erişime izin verir 3. Sürüm değeri için boş bir dize, örneğin aşağıdaki gibi < hizmet tüketici-hizmet-adı = "a" sağlayıcı-hizmet-adı = "b" tüketici sürümü-değeri = "" sağlayıcı-sürüm-değeri = "1.0,1.1" / > Sağlayıcının 1.0 ve 1.1 sürümlerine erişime izin veren tüketicinin herhangi bir sürümünü belirtir < hizmet tüketici-hizmet-adı = "a" sağlayıcı-hizmet-adı = "b" tüketici sürümü-değeri = "1.0" sağlayıcı-sürüm-değeri = "" / > Sağlayıcının herhangi bir sürümüne erişime izin veren tüketicinin 1.0 sürümünü belirtir < hizmet tüketici-hizmet-adı = "a" sağlayıcı-hizmet-adı = "b" tüketici sürümü-değeri = "" sağlayıcı-sürüm-değeri = "" / > Tüketici tarafındaki herhangi bir sürümü belirtir ve sağlayıcı tarafındaki herhangi bir sürüme erişime izin verir 4. Sürüm yazışması tanımlanmamıştır, tüketicinin herhangi bir sürümü varsayılan olarak tutulmuştur ve sağlayıcının herhangi bir sürümüne erişilmesine izin verilir Özel durumlarla başa çıkın, kullanımda bu durumdan kaçınmaya çalışmalısınız. 1. Tüketicinin application.properties dosyası bir sürüm numarası tanımlamıyorsa, tüketici sağlayıcının herhangi bir sürümüne erişebilir 2. Sağlayıcının application.properties dosyası bir sürüm numarası tanımlamaz.Tüketici xml'de herhangi bir sürümü yapılandırmazsa, sağlayıcıya erişilebilir

Gri sürüm ağırlığının serbest bırakma kuralı

1. Standart konfigürasyon, örnekler aşağıdaki gibidir < hizmet tüketici-hizmet-adı = "a" sağlayıcı-hizmet-adı = "b" sağlayıcı-ağırlık-değeri = "1.0 = 90; 1.1 = 10" / > Tüketici sağlayıcıya eriştiğinde, sağlayıcının 1.0 sürümünün ağırlıklı trafiğin% 90'ını ve 1.1 sürümünün ağırlıklı trafiğin% 10'unu sağladığını belirtir < service provider-service-name = "b" provider-weight-value = "1.0 = 90; 1.1 = 10" / > Tüm tüketiciler sağlayıcıya eriştiğinde, sağlayıcının 1.0 sürümünün ağırlıklı trafiğin% 90'ını ve 1.1 sürümünün ağırlıklı trafiğin% 10'unu sağladığını belirtir 2. Kısmi yapılandırma, yani tüketici hizmet adını belirtin ve ağırlığı tüketici için özel olarak yapılandırın. Global yapılandırma, yani tüketici hizmet adını belirtmeden tüm tüketiciler için aynı ağırlıkları yapılandırır. Yerel konfigürasyon ve global konfigürasyon aynı anda mevcut olduğunda, yerel konfigürasyon önceliklidir 3. Tüm çevrimiçi sürümlere ağırlık değerleri atamayı deneyin

Bölgesel ağırlıklar için gri tonlamalı yayınlama kuralları

1. Standart konfigürasyon, örnekler aşağıdaki gibidir < bölge sağlayıcı-ağırlık-değeri = "dev = 85; qa = 15" / > Bölgenin geliştirici hizmetleri için% 85 ağırlıklı trafik sağladığını ve bölgenin qa hizmetleri için% 15 ağırlıklı trafik sağladığını belirtir 2. Bölgesel ağırlık, tüm çağrı zincirinin ağırlık oranını değiştirebilir 3. Hat üzerindeki tüm alanlara ağırlık vermeye çalışın

Kullanıcı tanımlı gri yayın kuralları

İş parametrelerindeki değişikliklere abone olarak, birden çok veri kaynağıyla veritabanı geçişinin gri ölçekli yayınlanması gibi karakteristik gri ölçekli yayınlamayı başarır.

1. Standart konfigürasyon, örnekler aşağıdaki gibidir < service service-name = "discovery-springcloud-example-a" key = "veritabanı" value = "prod" / > 2. Yukarıdaki örnek, birden çok veri kaynağının veritabanı anahtarlamasına dayalı gri bir sürümdür Service a, test veritabanı (veritabanı değeri qa) ve üretim veritabanı (veritabanı değeri prod) olmak üzere iki kitaplık konfigürasyonuna sahiptir. Çevrimiçi olduktan sonra, başlangıçta veritabanı test veritabanına işaret eder ve karşılık gelen değer qa'dır ve ardından gri tonlama serbest bırakıldığında, karşılık gelen değer prod olarak değiştirilir, bu da veritabanının gri tonlamalı sürümü anlamına gelir.

Kuralları dinamik olarak değiştirin

Mikro hizmet başlatıldığında, kurallar (örneğin: kural.xml) yerel olarak yapılandırıldığından, kullanıcı kural değişikliğini elde etmek için mikro hizmeti yeniden başlatmadan kuralları değiştirmek ister

  • Kurallar yerel kurallara ve dinamik kurallara ayrılmıştır
  • Yerel kurallar yerel kurallar (örneğin: rule.xml) dosyasında tanımlanır veya uzak yapılandırma merkezinden alınabilir ve mikro hizmet başlatıldığında okunabilir
  • Dinamik kurallar, POST aracılığıyla dinamik olarak belirlenir veya uzak yapılandırma merkezi tarafından gönderilir
  • Kurallar başlatıldığında, uzak yapılandırma merkezine erişilirse, önce uzak kurallar okunur, yoksa yerel kurallar dosyası okunur.
  • Çok kurallı gri tonlama elde etme kuralları olduğunda, önce mevcut değilse dinamik kuralları alın, sonra yerel kuralları alın
  • Kurallar, uzak yapılandırma merkezine kalıcı olabilir.Microservice öldüğünde ve yeniden başlatıldığında, yine de gri tonlamalı kuralları alabilirsiniz, bu nedenle kural stratejisini dinamik olarak değiştirmek kalıcı bir gri tonlamalı yayın yöntemidir
  • Uzak yapılandırma merkezine itilen kurallar, yerel itme ve küresel itme olarak bölünebilir
  • Group+ServiceIdGroupServiceId
  • GroupServiceIdGroupGroup

application.properties

  • application.properties
  • POST

RESTRPCHeaderdiscovery-plugin-strategy

DiscoveryEnabledStrategyRequestContextHolderHeaderServiceStrategyContextRPC

Zuul

ZuulDiscoveryEnabledStrategyZuulRequestContextHeader

Gateway

Spring Cloud GatewayDiscoveryEnabledStrategyGatewayStrategyContextHeader

REST

Feign/RestTemplateRESTHeaderJsonRESTabca1.0b1.1c1.11.2 HeaderKey"version"value

{"discovery-springcloud-example-a":"1.0", "discovery-springcloud-example-b":"1.1", "discovery-springcloud-example-c":"1.1;1.2"}

1.1valueJson

1.1

REST

Feign/RestTemplateRESTHeaderJsonRESTabcdevaqabdevqac HeaderKey"region"value

{"discovery-springcloud-example-a":"dev", "discovery-springcloud-example-b":"qa", "discovery-springcloud-example-c":"dev;qa"}

devvalueJson

dev

Spring Cloudzoneregionzoneregion

RESTIP

Feign/RestTemplateRESTHeaderJsonRESTabcIPIP

{"discovery-springcloud-example-a":"192.168.43.101:1101", "discovery-springcloud-example-b":"192.168.43.101:1201", "discovery-springcloud-example-c":"192.168.43.101:1302"}

IP

REST

Feign/RestTemplateREST

RPC

Feign/RestTemplateRPC

XMLJsonRESTRPCHeaderAbstractXXXListenerDiscoveryEnabledStrategy

  • spring.application.register.control.enabled=falsespring.application.discovery.control.enabled=false
  • spring.application.strategy.control.enabled=false

  • Program arguments--EurekaZookeeperNacosConsul
  • VM arguments-Dext.

Yapılandırma dosyası

  • region
# Eureka config for discovery eureka.instance.metadataMap.group=xxx-service-group eureka.instance.metadataMap.version=1.0 eureka.instance.metadataMap.region=dev # Consulhttps://springcloud.cc/spring-cloud-consul.html - Consul # Consul config for discovery spring.cloud.consul.discovery.tags=group=xxx-service-group,version=1.0,region=dev # Zookeeper config for discovery spring.cloud.zookeeper.discovery.metadata.group=xxx-service-group spring.cloud.zookeeper.discovery.metadata.version=1.0 spring.cloud.zookeeper.discovery.metadata.region=dev # Nacos config for discovery spring.cloud.nacos.discovery.metadata.group=example-service-group spring.cloud.nacos.discovery.metadata.version=1.0 spring.cloud.nacos.discovery.metadata.region=dev # Admin config # E # Rest management.security.enabled=false management.port=5100 # F management.server.port=5100
# Plugin core config # /true # spring.application.register.control.enabled=true # IPtrue # spring.application.discovery.control.enabled=true # Resttrue # spring.application.config.rest.control.enabled=true # xmljsonxml # spring.application.config.format=xml # spring.application.config.format=json # classpath:rule.xmlrule.json - resourcesjarfile:rule.xmlrule.json - # spring.application.config.path=classpath:rule.xml # spring.application.config.path=classpath:rule.json # Keygroupeureka.instance.metadataMap.group=xxx-groupeureka.instance.metadataMap.application=xxx-applicationgroup # spring.application.group.key=group # spring.application.group.key=application # Restserver.context-pathserver.servlet.context-path # spring.application.context-path=${server.servlet.context-path} # Plugin strategy config # true # spring.application.strategy.control.enabled=true # RibbonZoneAvoidanceRuleRoundRobintrue # spring.application.strategy.zone.avoidance.rule.enabled=true # RPCfalse spring.application.strategy.rpc.intercept.enabled=true # RPCController spring.application.strategy.scan.packages=com.nepxion.discovery.plugin.example.service.feign # RESTfalse spring.application.strategy.rest.intercept.enabled=true # RESTFeignRestTemplateHeader; spring.application.strategy.request.headers=token # false spring.application.strategy.intercept.log.print=true # Hystrixspring.application.strategy.hystrix.threadlocal.supportedtruediscovery-plugin-strategy-starter-hystrixThreadLocal # spring.application.strategy.hystrix.threadlocal.supported=true

  • AbstractRegisterListenerdiscovery-springcloud-example-serviceMyRegisterListener
  • AbstractDiscoveryListenerdiscovery-springcloud-example-serviceMyDiscoveryListenerConsulservicemanagementConsul
  • AbstractLoadBalanceListenerdiscovery-springcloud-example-serviceMyLoadBalanceListener

  • Apollohttps://github.com/ctripcorp/apollo
  • Nacoshttps://github.com/alibaba/nacos
  • Redis
  • NacosRedis

PORT

  • Swagger

SwaggerSwaggerSwaggerswagger.service.base.package={1},{2},{3}

UI

  • NacosApolloRedis

PORT

  • Swagger

Spring Boot ActuatorSpring Boot Admin

https://github.com/codecentric/spring-boot-admin

Alibaba Sentinel

https://github.com/alibaba/Sentinel

37 yaşındaki Di Lieba klasik siyah oynuyor, 7280 set, 40.000 set, oranlar harika
önceki
Java yöntemi performans izleme ve istatistiksel araç MyPerf4J
Sonraki
Xu Xian tek başına uçtuktan sonra daha güzelleşti.Kırmızı elbisesi ve uzun saçları onun mizacını zorlukla gizleyebiliyor. Bu durum 90'ların sonundaki gibi değil
WeChat Pay SDK'sı wePay-felord
33 yaşındaki Yang Mi'nin yeni havaalanı tarzı yenilendi, cüppesi ve spor ayakkabıları şık ve güzel
Guge, bin yıllık sırrı olan bir şehir
Regan API SpringBoot ek açıklamalarına göre otomatik olarak API belgeleri oluşturun
Önerilen seyahat güzergahı: 2017 Damei Sichuan-Tibet yıllık güzergahı
Zhang Ziyi'nin ilk reality show stili derlemesi, güzel ve gelişmiş, 40 yaşında, zengin ve değerli!
Siçuan-Tibet hattı seyahati Mayıs ve Haziran aylarında önerilir mi?
Ni Ni o kadar iradelidir ki, doğal iyi mizacını göstermek için New York'tan döndükten hemen sonra hafif olgun giysiler giyer, hatta kas göstermeyi bile öğrendi.
Hayatın güzelliği ulaşılabilir
Yang Mi'nin yeni kız gibi kıyafeti, gösteriyi 269 çorapla 20.000 ceket ve 18 yaşına kadar güzel bir at kuyruğu ile kaydetti.
Kendi kendine giden Jimny'nin Tibet'e girmesinin avantaj ve dezavantajlarının analizi
To Top