2

Wir betreiben eine Spring Boot-basierte Umgebung mit etwa 15 Microservices und einem Zuul Edge Gateway, das bei Eureka registriert ist. Derzeit habe ich alle Microservices so eingerichtet, dass sie andere Microservices über das Zuul-Gateway aufrufen (zB wenn serviceA ServiceB aufrufen muss, wäre die URL-Konfigurationseigenschaft serviceB.baseUrl=http://zuul.mydomain.com:7001, wobei zuul.mydomain.com unser Entwicklungsserver auf AWS ist und alle anderen Microservices dahinter laufen es). Zuul wiederum vermittelt über die Eureka Registry Lookups an die Microservices.Ich suche Ratschläge für den richtigen Entwicklungsansatz bei Netflix Eureka entdeckbaren Spring Boot Services mit minimalen Gemeinkosten

Ein Vorteil davon ist, dass ein Entwickler, der lokal auf seiner Maschine arbeitet, nur seinen Dienst ausführen muss und alle anderen Abhängigkeiten von anderen Diensten über das Zuul-Gateway auf AWS (und in unserem Ökosystem) erreichbar sind gibt es viele solcher dienstübergreifender Abhängigkeiten).

Jetzt würde ich wirklich gerne auf das volle Potenzial von Eureka/Ribbon nutzen und Anrufe direkt zu einem Peer-Microservice über seine Service-Name und eine @LoadBalanced RestTemplate machen, aber ich finde, dass dies würde eine Menge auf den Entwickler auferlegen müssen Erstelle ein komplettes Ökosystem auf seiner Maschine. Zumindest musste er Eureka, seinen eigenen Dienst und andere Dienste, von denen sein Dienst abhängig ist, führen. Dies macht die Eintrittsbarrieren für die Entwicklung unnötig hoch.

Ich habe erwogen, das lokale Instanzregister des Entwicklers für unseren Eureka-Service auf AWS zu setzen, aber das Problem ist, dass alle Dienste auf AWS mit der privaten IP-Adresse der EC2-Instanz registriert werden, die vom Entwicklercomputer im Grunde nicht erreichbar ist. Wenn ich den Dienst zwinge, sich unter Verwendung seiner öffentlichen IP zu registrieren, würde dies bedeuten, dass ich mehr von unserer ElasticIP-Zuweisung für jeden Dienst verbrauchen oder die IP jedes Mal ändern muss, wenn die EC2-Instanz neu gestartet wird.

Ich könnte eine lokale Eureka + Microservices-Umgebung im lokalen Netzwerk ausführen, aber das bedeutet, dass ich eine solche Umgebung für jedes Büro, aus dem wir arbeiten, erstellen muss, und das bedeutet nur mehr Overhead. Zusätzlich zu diesem Problem würde es wahrscheinlich bedeuten, dass Entwickler A die halb-fertig-noch-nicht-schon-Version eines Abhängigkeitsdienstes von Entwickler B anruft, die bei einem Problem nur die Hölle von allen durcheinander bringt (die Dienste, die in unserer AWS-Umgebung bereitgestellt werden, durchläuft mindestens eine Codeüberprüfung, bevor sie bereitgestellt wird.

Wenn es jemanden gibt, der einen Weg gefunden hat, die Einrichtung eines Entwicklers zu vereinfachen und gleichzeitig die Peer-to-Peer-Serviceaufrufmöglichkeiten der Feign/@LoadBalanced RestTemplate Clients zu nutzen, würde ich gerne einige Hinweise in die richtige Richtung bekommen.

Antwort

1

hat bestätigt, dass ich erreichen kann, was ich will (die lokale Entwicklung auf Band ermöglicht RestTemplate Kunden in der Lage sein zu tun, ohne Eureka laufen zu) von:

  1. Force-Band nicht Eureka mit verwenden, die folgende Eigenschaft: ribbon.eureka.enabled=false
  2. manuell bereitstellen Band mit den Servern mit dem folgenden Beispiel Eigenschaft Punkt: servicename.ribbon.listOfServers=test.service.com:8080
Verwandte Themen