Service Discovery (Diensterkennung)
Service Discovery (Diensterkennung, Aufspüren von Diensten) ist eine Technologie, die verfügbare Geräte und Dienste in einem Netzwerk findet und identifiziert. Sie minimiert den Konfigurationsaufwand für Administratoren und ist häufig in Microservice-Architekturen und Containerisierungsplattformen zu finden.
Microservices, insbesondere solche, die Cloud-basiert sind, verwenden Service Discovery, da es schwierig sein kann, Standorte in komplexen Netzwerken zu finden und erkennen. Beispielsweise werden Dienstinstanzen dynamisch Netzwerkstandorte zugewiesen. Zu den Tools, die Service -Discovery-Funktionen enthalten, gehören Bereitstellungs- und Konfigurationstool Consul von HashiCorp, die Überwachungssoftware Zabbix und die Kubernetes-Containerisierungsplattform.
Service Discovery funktioniert auf Basis eines gemeinsamen Netzwerkprotokolls, mit dem Agenten die Dienste des jeweils anderen nutzen können. Zu den verwendeten Protokollen gehören DHCP (Dynamic Host Configuration Protocol), DNS-SD (DNS Service Discovery) und SLP (Service Location Protocol).
Eine Datenbank, die Dienstinstanzen und Netzwerkspeicherorte enthält, wird als Dienst-Registry bezeichnet. Sie besteht aus Serverclustern mit Datenbanken verfügbarer Dienstinstanzen, die ständig auf dem neuesten Stand gehalten werden sollten. Bei der Diensterkennung gibt es zwei verschiedene Strategien, eine ausgehend vom Rechenzentrum, das die Erkennung initiiert und die andere ausgehend vom Dienst, der sich aktiv gegenüber dem Rechenzentrum identifiziert. Diese Optionen werden als clientseitig oder serverseitig bezeichnet.
Bei der clientseitigen Erkennung ist der Clientdienst für die Ermittlung der Netzwerkstandorte von Dienstinstanzen verantwortlich. Der Client erreicht dies, indem er eine Dienstregistrierung abfragt. Der Vorteil dieser Strategie ist, dass sie unkompliziert ist. Mit der serverseitigen Erkennung kann jeder Client einen Dienst über einen Load Balancers finden. Der Load Balancer fragt Informationen aus der Service-Registry ab und leitet Anforderungen an eine Dienstinstanz weiter. Kubernetes nutzt diesen Prozess. Bei dieser Variante ist der Vorteil, dass sie die Abfrage für die Clients vereinfacht.
Für das Registrieren von Geräten und Diensten gibt es wiederum zwei Muster: entweder, sie registrieren sich selbst, oder über einen Dienstanbieter. Mit diesen Mustern können andere Geräte den Dienst finden.
Bei einem Selbstregistrierungsmuster schreibt ein Dienst seine Informationen selbstständig in die Service-Registry. Beim Drittanbietermuster kommt ein Service-Registrar zum Einsatz; ein separates Tool, das den Dienst identifizieren und registrieren kann. Der Registrar zeichnet Änderungen in der Instanzumgebung auf. Wenn also ein neues Gerät oder ein neuer Dienst erkannt wird, kann der Registrar den Dienst oder das Gerät zur Dienstregistrierung hinzufügen.