Proxy Tabanlı Mikro Hizmetlerin Yükselişi: Mimarinin Ortaya Çıkarılması
Proxy Tabanlı Mikro Hizmetlerin Özü
Proxy tabanlı mikro hizmet mimarileri, hizmet örnekleri ile dış dünya (diğer hizmetler veya istemciler) arasına hafif bir ağ proxy'si yerleştirir. Genellikle "sidecar" olarak adlandırılan bu proxy, sıradan bir trafik polisinden çok daha fazlasıdır: mikro hizmetlerin geçici ağında süzülürken istekleri yakalayan, inceleyen ve dönüştüren sessiz bir bekçidir.
Bu Yaklaşımı Neden Benimsemeliyiz?
- Endişelerin Ayrılması: İş mantığından kesişen endişeleri (güvenlik, gözlemlenebilirlik, güvenilirlik) devre dışı bırakın
- Tekdüzen Politika Uygulaması: Erişim kontrolünü, hız sınırlamasını ve devre kesmeyi merkezileştirin
- Dayanıklılık Modelleri: Yeniden denemeleri, geri dönüşleri ve zaman aşımlarını şeffaf bir şekilde enjekte edin
- Gözlemlenebilirlik: Kod değişikliği olmadan izleri ve ölçümleri yakalayın
- Sıfır Güven Güvenliği: Tüm trafiği şifreleyin ve kimlikleri otomatik olarak doğrulayın
Mimari Anatomi: Proxy'ler Mikro Hizmet Etik İlkelerini Nasıl Somutlaştırıyor?
Sidecar Deseni
Her servis kapsülüne bir proxy süreci eşlik eder; Envoy, Linkerd veya HAProxy yaygın seçeneklerdir. Servise yönelik trafik, ağ politikalarını uygulayan, telemetri toplayan ve mTLS şifrelemesini yöneten sidecar üzerinden yönlendirilir.
Örnek Manifest (Kubernetes + Istio):
apiVersion: v1 tür: Pod meta veri: ad: poets-service spec: kapsayıcılar: - ad: poets-app görüntü: registry.example.com/poets:latest - ad: istio-proxy görüntü: docker.io/istio/proxyv2:1.18.0 argümanlar: ["proxy", "sidecar"]
Istio otomatik olarak enjekte eder istio-proxy
sidecar, hizmetinizin etrafında görünmez bir kontrol dokusu örüyor.
Hizmet Ağı: Yaşayan Bir Organizma Olarak Ağ
Bir hizmet ağı, şöyle: Istio, Linkerd, veya Konsolos Bağlantısı, bu proxy'lerin yapılandırmasını ve yaşam döngüsünü düzenleyerek, hizmet-hizmet ağını programlanabilir ve gözlemlenebilir hale getirir.
Kaynak:
– Elçi Vekili Resmi Belgeleri
– Linkerd Mimarisi
Pratik Avantajlar: Bir Karşılıklı Ödünler Tablosu
Özellik | Proxy Tabanlı Mikro Hizmetler | Geleneksel Mikro Hizmetler |
---|---|---|
Dağıtılmış İzleme | Yerli, şeffaf | Manuel enstrümantasyon |
mTLS Her Yerde | Otomatik | Uygulama sorumluluğu |
Devre Kesme | Beyanlı, politikaya dayalı | Kodda açıkça belirtilmiş |
Oran Sınırlaması | Merkezi, dinamik | Merkezi olmayan, statik |
Kanarya Sürümleri | Proxy'de trafik bölünmesi | Yük dengeleyici tarafından işlenir |
Hizmet Keşfi | Dahili, dinamik | Harici kayıt defteri gerekli |
Arıza İzolasyonu | İstek başına, proxy düzeyinde | Kod veya altyapı düzeyi |
Bu tablo, ağın artık bir yük değil, inovasyon için bir tuval olduğu bir dünyanın fısıldıyor.
Eyleme Dönüştürülebilir Modeller: Proxy Tabanlı Mikro Hizmetlerin Uygulanması
1. Sidecar Proxy'sini Dağıtma
Kubernetes'te sidecar enjeksiyonu Istio veya Linkerd gibi araçlarla otomatikleştirilebilir.
Adım Adım: Istio Örneği
- Istio'yu yükleyin:
vuruş
curl -L https://istio.io/downloadIstio | sh -
cd istio-*
dışa aktarma PATH=$PWD/bin:$PATH
istioctl kurulum --set profil=demo -y
kubectl etiket ad alanı varsayılan istio-injection=enabled - Hizmetinizi Dağıtın:
“`yaml
apiSürümü: v1
tür: Hizmet
meta veri:
isim: poets-app
özellikler:
limanlar:- liman: 80
isim: http
seçici:
uygulama: şairler
- liman: 80
apiVersion: apps/v1
tür: Dağıtım
meta veri:
isim: şairler-konuşlandırma
özellikler:
kopyalar: 1
seçici:
eşleşmeEtiketler:
uygulama: şairler
şablon:
meta veri:
etiketler:
uygulama: şairler
özellikler:
konteynerler:
– isim: poets-app
resim: registry.example.com/poets:latest
“`
Sidecar enjeksiyonu otomatik olarak Envoy proxy'sini ekleyecektir; artık zahmetli kalıplara gerek yok.
- Trafik Politikasını Uygulayın:
yaml
apiVersion: networking.istio.io/v1alpha3
tür: DestinationRule
meta veri:
isim: şairlerin varış noktası
özellikler:
sunucu: poets-app
trafikPolitikası:
bağlantıHavuzu:
tcp:
maxConnections: 1
2. Sıfır Kod Değişikliğiyle Gözlemlenebilirlik
Proxy'ler kurulduktan sonra, telemetri Fransız bir partideki şarap gibi akar. Istio ve Linkerd, Prometheus uç noktaları aracılığıyla metrikleri kullanıma hazır hale getirir. Grafana gösterge panelleri.
Metrikleri Getir:
kubectl -n istio-system port-forward svc/prometheus 9090 # Metrikleri sorgulamak için http://localhost:9090 adresini açın
3. Geliştirici Müdahalesi Olmadan mTLS'yi Uygulama
Eş kimlik doğrulamasını ve hedef kurallarını yapılandırın ve ağ, tüm hizmet-hizmet iletişimini şifreler.
Istio PeerAuthentication Örneği:
apiVersion: security.istio.io/v1beta1 tür: PeerAuthentication meta veri: ad: varsayılan ad alanı: varsayılan özellik: mtls: mod: STRICT
Artık her serviste TLS tünellerini elle oluşturmaya gerek yok.
Kod Düzeyinde Örnek: Kodsuz Devre Kesme
Devre Kesme için Hedef Kuralı (Istio):
apiVersion: networking.istio.io/v1alpha3 tür: DestinationRule meta veri: ad: devre kesici özellikleri: ana bilgisayar: poets-app trafikPolitikası: aykırı değerAlgılama: consecutive5xxHataları: 1 aralık: 1s tabanÇıkartmaSüresi: 30s maksÇıkartmaYüzdesi: 100
Bu YML büyüsü hizmetinize dayanıklılık kazandırır, kod değişikliği gerektirmez.
Proxy Tabanlı Mikro Hizmetler Ne Zaman Kullanılmamalıdır?
Senaryo | Proxy Tabanlı Ağ | Daha Basit Alternatif |
---|---|---|
< 5 hizmet, düşük karmaşıklık | Üstten | Doğrudan iletişim |
Edge hizmetleri, yalnızca halka açık | Gereksiz | API ağ geçidi |
Yüksek kaynak kısıtlamalı ortamlar | Ağır olabilir | Hafif proxy'ler |
Daha Fazla Okuma ve Kaynaklar
- Istio Güvenlik Kavramları
- Envoy Proxy Filtre Zinciri
- Linkerd ve Istio Karşılaştırması
- Consul Connect Hizmet Ağı
Modern Bulutun Nabzı
Proxy tabanlı mikro hizmet mimarileri, proxy ve politikaların karmaşık koreografisiyle, dijital çağın hem düzen hem de yaratıcılık arayışını örnekliyor. Bir zamanlar karanlık bir yeraltı dünyası olan ağ, artık bir sahneye dönüşüyor: her proxy, bir aktör, her istek, dağıtılmış sistemlerin şiirinde geçici bir mısra.
Yorumlar (0)
Burada henüz yorum yok, ilk siz olabilirsiniz!