Dayanıklı iletişimler

Tavsiye

Bu içerik, .NET Docs veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan Azure için Bulut Yerel .NET Uygulamaları Tasarlama adlı e-Kitap'tan bir alıntıdır.

Azure eKitap kapak küçük resmi için Buluta Özel .NET uygulamaları.

Bu kitap boyunca mikro hizmet tabanlı mimari yaklaşımı benimsedik. Böyle bir mimari önemli avantajlar sağlasa da birçok zorluk sunar:

  • İşlem dışı ağ iletişimi. Her mikro hizmet, ağ tıkanıklığı, gecikme süresi ve geçici hatalar getiren bir ağ protokolü üzerinden iletişim kurar.

  • Hizmet bulma. Mikro hizmetler, kendi IP adresleri ve bağlantı noktalarıyla bir makine kümesinde çalışırken birbirlerini nasıl bulur ve birbirleriyle iletişim kurar?

  • Dayanıklılık. Kısa süreli hataları nasıl yönetebilir ve sistemin kararlı kalmasını nasıl sağlarsınız?

  • Yük dengeleme. Gelen trafik bir mikro hizmetin birden çok örneğine nasıl dağıtılır?

  • Güvenlik. Aktarım düzeyi şifreleme ve sertifika yönetimi gibi güvenlik endişeleri nasıl uygulanır?

  • Dağıtılmış İzleme. - Birden çok tüketen mikro hizmette tek bir istek için izlenebilirliği ve izlemeyi nasıl ilişkilendirip yakalarsınız?

Bu sorunları farklı kitaplıklar ve çerçevelerle ele alabilirsiniz, ancak uygulama pahalı, karmaşık ve zaman alıcı olabilir. Ayrıca iş mantığına bağlı olarak altyapı endişeleriyle de karşınıza çıkar.

Hizmet ağı

Daha iyi bir yaklaşım , Service Mesh adlı gelişen bir teknolojidir. Hizmet ağı, hizmet iletişimini ve yukarıda bahsedilen diğer zorlukları işlemek için yerleşik özelliklere sahip yapılandırılabilir bir altyapı katmanıdır. Bu endişeleri bir hizmet ara sunucusuna taşıyarak ayırır. Ara sunucu, iş kodundan yalıtım sağlamak için ayrı bir işleme ( sepet olarak adlandırılır) dağıtılır. Ancak sepet, hizmetle bağlantılıdır; onunla birlikte oluşturulur ve yaşam döngüsünü paylaşır. Şekil 6-7'de bu senaryo gösterilmektedir.

Yan araba ile servis ağı

Şekil 6-7. Yan araba ile servis ağı

Önceki şekilde, proxy'nin mikro hizmetler ve küme arasındaki iletişimi nasıl kestiğine ve yönettiğine dikkat edin.

Hizmet ağı mantıksal olarak iki farklı bileşene ayrılır: Veri düzlemi ve kontrol düzlemi. Şekil 6-8'de bu bileşenler ve bunların sorumlulukları gösterilmektedir.

Hizmet ağı denetimi ve veri düzlemi

Şekil 6-8. Hizmet ağı denetimi ve veri düzlemi

Bir hizmet ağı yapılandırıldıktan sonra yüksek oranda işlevseldir. Hizmet bulma uç noktasından ilgili örnek havuzunu alabilir. Ağ daha sonra belirli bir örneğe istek göndererek sonucun gecikme süresini ve yanıt türünü kaydedebilir. Mesh, son istekler için gözlemlenen gecikme süresi de dahil olmak üzere birçok faktöre göre hızlı yanıt döndürme olasılığı en yüksek örneği seçebilir.

Bir örnek yanıt vermiyorsa veya başarısız olursa, ağ isteği başka bir örnekte yeniden dener. Hata döndürürse, bir ağ örneği yük dengeleme havuzundan çıkartır ve iyileştikten sonra yeniden bildirir. İstek zaman aşımına uğradıysa mesh başarısız olabilir ve isteği yeniden deneyebilir. Ağ, ölçümleri yakalar ve yayar ve merkezi bir ölçüm sistemine dağıtılmış izleme sağlar.

Istio ve Elçi

Şu anda birkaç hizmet ağı seçeneği mevcut olsa da, istio bu yazı sırasında en popüler olandır. Istio, IBM, Google ve Lyft'in ortak girişimidir. Yeni veya mevcut bir dağıtılmış uygulamayla tümleştirilebilen açık kaynak bir tekliftir. Teknoloji, mikro hizmetleri güvenli hale getirmek, bağlamak ve izlemek için tutarlı ve eksiksiz bir çözüm sağlar. Özellikleri şunlardır:

  • Güçlü kimlik tabanlı kimlik doğrulaması ve yetkilendirme ile bir kümede hizmet-hizmet iletişimin güvenliğini sağlama.
  • HTTP, gRPC, WebSocket ve TCP trafiği için otomatik yük dengeleme.
  • Zengin yönlendirme kuralları, yeniden denemeler, yük devretmeler ve hata enjeksiyonu ile trafik davranışını ayrıntılı bir şekilde kontrol etme.
  • Erişim denetimlerini, hız sınırlarını ve kotaları destekleyen eklenebilir bir ilke katmanı ve yapılandırma API'si.
  • Küme girişi ve çıkış dahil olmak üzere bir küme içindeki tüm trafik için otomatik ölçümler, günlükler ve izlemeler.

Istio uygulaması için önemli bir bileşen, Envoy ara sunucusuna sahip bir ara sunucu hizmetidir. Her hizmetle birlikte çalışır ve aşağıdaki özellikler için platformdan bağımsız bir temel sağlar:

  • Dinamik hizmet bulma.
  • Yük dengeleme.
  • TLS sonlandırma.
  • HTTP ve gRPC proxy'leri.
  • Devre kesici dayanıklılığı.
  • Sistem durumu denetimleri.
  • Kanarya dağıtımları ile güncelleştirmeler sıralı.

Daha önce açıklandığı gibi, Envoy kümedeki her mikro hizmete sepet olarak dağıtılır.

Azure Kubernetes Services ile tümleştirme

Azure bulutu, Istio'yu benimser ve Azure Kubernetes Services içinde bu bulut için doğrudan destek sağlar. Aşağıdaki bağlantılar kullanmaya başlamanıza yardımcı olabilir:

Kaynaklar