Architektur Fortgeschritten
Service Discovery – wie sich Dienste finden¶
Service DiscoveryMicroservicesConsul 3 min Lesezeit
Mechanismen der Service Discovery in Microservice-Architekturen. Client-side vs. Server-side Discovery, Consul und Kubernetes DNS.
Warum Service Discovery?¶
In Microservices werden Dienste dynamisch gestartet und gestoppt. IP-Adressen aendern sich. Service Discovery loest das Problem: Wie findet Dienst A die aktuelle Adresse von Dienst B?
Client-Side Discovery¶
Der Client fragt die Registry ab und entscheidet selbst, an welche Instanz er die Anfrage sendet.
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 verwendet Server-side Discovery nativ:
apiVersion: v1
kind: Service
metadata:
name: order-service
spec:
selector:
app: order-service
ports:
- port: 80
targetPort: 8080
# Aufruf: http://order-service.default.svc.cluster.local
Werkzeuge¶
- Consul – Health Checking, KV Store, Multi-Datacenter
- etcd – Grundlage von Kubernetes
- Eureka – Netflix OSS, Java/Spring
Zusammenfassung¶
In Kubernetes ist Service Discovery out-of-the-box geloest. Ausserhalb von K8s sollten Sie Consul oder Eureka in Betracht ziehen.
Brauchen Sie Hilfe bei der Implementierung?¶
Unser Team hat Erfahrung mit dem Entwurf und der Implementierung moderner Architekturen. Wir helfen Ihnen gerne.