Service Discovery
Servis Keşfi
- Okunuşu
- sörvis diskavıri
Kısaca
Service discovery (servis keşfi), dağıtık bir sistemde servislerin, örnekler başlayıp durdukça değişen diğer servislerin güncel adreslerini bulma yoludur.
Service discovery nedir?
Container'larda ya da otomatik ölçeklenen gruplarda çalışan bir mikroservis sisteminde örnekler sürekli gelip gider ve yeni IP adresleri alır. 10.0.3.17:8080 gibi bir adresi koda gömmek, o örnek değiştirildiği anda bozulur. Service discovery, payments gibi her servis adı için sağlıklı örneklerin güncel bir listesini tutar ve çağıranların onlara bakmasını sağlar.
Merkezinde Consul, etcd, ZooKeeper ya da Netflix'in Eureka'sı gibi bir servis kayıt defteri (service registry) vardır. Örnekler başladıklarında kendilerini kaydeder ya da bir platform onları kaydeder; sağlık kontrolleri de yanıt vermeyi bırakan örnekleri çıkarır. İstemci tarafı keşifte çağıran kayıt defterine sorar ve örneği kendisi seçer; sunucu tarafı keşifte ise çağıran isteği aramayı yapan bir yük dengeleyiciye ya da yönlendiriciye gönderir.
Kubernetes bunu yerleşik olarak sunar. Bir Service, değişen bir pod kümesine sabit bir ad ve sanal bir IP verir; kümenin DNS'i de payments.default.svc.cluster.local gibi adları çözümler; böylece uygulamalar yalnızca bir adı çağırır. Service mesh'ler daha da ileri gider ve keşfi, yük dengelemeyi, yeniden denemeleri ve şifrelemeyi her servisin yanındaki sidecar proxy'lerde üstlenir.
Sık yapılan bir yanlış, keşfi tek başına DNS'in çözdüğünü düşünmektir. DNS nadiren değişen adlar için işe yarar, ama önbellekleme dakikalarca ölü örnekleri döndürmeye devam edebilir ve sağlık bilgisi taşımaz. Keşif sistemleri saniyeler içinde güncellenir ve yalnızca sağlık kontrollerinden geçen örnekleri döndürür.
Önemli noktalar
- Service discovery, diğer servislerin güncel adreslerini bulur.
- Consul ya da etcd gibi bir kayıt defteri sağlıklı örnekleri adlarına göre izler.
- İstemci tarafı keşif örneği çağıranda seçer; sunucu tarafı keşif bir yönlendirici kullanır.
- Kubernetes Service'leri ve küme DNS'i yerleşik keşif sağlar.
- Hızla değişen sistemler için düz DNS çok yavaştır ve sağlık kontrolü yoktur.
Sık sorulan sorular
Mikroservisler neden service discovery'ye ihtiyaç duyar?
Çünkü örnekler sürekli oluşturulur, yok edilir ve taşınır; bu yüzden adresleri değişir. Keşif, servislerin birbirini adla çağırmasını ve her zaman sağlıklı bir örneğe ulaşmasını sağlar.
İstemci tarafı ile sunucu tarafı keşif arasındaki fark nedir?
İstemci tarafı keşifte çağıran servis kayıt defterini sorgular ve bir örnek seçer. Sunucu tarafı keşifte ise istekleri bir yük dengeleyiciye ya da yönlendiriciye gönderir; o da kayıt defterini sorgulayıp isteği iletir.
Kubernetes service discovery'yi nasıl yapar?
Her Kubernetes Service'i sabit bir DNS adı ve sanal bir IP alır. Küme onu hangi sağlıklı pod'ların desteklediğini izler; ada gönderilen trafik de bunlara dağıtılır.
İlgili sayfalar
- MikroservislerYazılım Mimarisi, s. 24Mikroservisler, bir uygulamanın ağ üzerinden iletişim kuran, küçük ve bağımsız olarak dağıtılabilen servislere bölündüğü bir mimari tarzdır.
- Yük DengeleyiciDevOps ve Bulut, s. 54Yük dengeleyici, gelen trafiği birkaç arka uç sunucuya dağıtan bir sunucu ya da hizmettir; hiçbir sunucu aşırı yüklenmez ve uygulama erişilebilir kalır.
- KubernetesDevOps ve Bulut, s. 30Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
- Service MeshDevOps ve Bulut, s. 47Service mesh, mikroservisler arası trafiği yöneten; kod değiştirmeden şifreleme, yeniden deneme, yönlendirme ve izleme ekleyen bir altyapı katmanıdır.
- Health CheckBackend ve API'ler, s. 20Health check, bir servisin çalışır durumda olup olmadığını ve isteklere yanıt verebildiğini bildiren, genelde bir HTTP endpoint'i olan küçük otomatik testtir.
- DNSDevOps ve Bulut, s. 14DNS, internetin adlandırma sistemidir; example.com gibi insanın okuyabileceği alan adlarını bilgisayarların kullandığı sayısal IP adreslerine çevirir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin