Architektura Pokročilý
Service Discovery — jak se služby najdou¶
Service DiscoveryMicroservicesConsul 3 min čtení
Mechanismy service discovery v mikroservisní architektuře. Client-side vs server-side discovery, Consul a Kubernetes DNS.
Proč Service Discovery?¶
V mikroservisách se služby dynamicky spouštějí a zastavují. IP adresy se mění. Service Discovery řeší: jak služba A najde aktuální adresu služby B?
Client-Side Discovery¶
Klient se dotáže registru a sám rozhodne, na kterou instanci pošle požadavek.
const consul = require('consul')();
async function getServiceUrl(serviceName) {
const services = await consul.health.service({
service: serviceName, passing: true
});
const idx = Math.floor(Math.random() * services.length);
const svc = services[idx].Service;
return \`http://\${svc.Address}:\${svc.Port}\`;
}
Server-Side Discovery¶
Kubernetes používá server-side discovery nativně:
apiVersion: v1
kind: Service
metadata:
name: order-service
spec:
selector:
app: order-service
ports:
- port: 80
targetPort: 8080
# Volání: http://order-service.default.svc.cluster.local
Nástroje¶
- Consul — health checking, KV store, multi-datacenter
- etcd — základ Kubernetes
- Eureka — Netflix OSS, Java/Spring
Shrnutí¶
V Kubernetes je service discovery vyřešená out-of-the-box. Mimo K8s zvažte Consul nebo Eureka.
Potřebujete pomoct s implementací?¶
Náš tým má zkušenosti s návrhem a implementací moderních architektur. Rádi vám pomůžeme.