Ich entwerfe eine Anwendung unter Verwendung von Micro-Services und bin mir nicht sicher, welchen Mechanismus ich am besten verwenden kann, um Daten von mehreren Services zu sammeln.
Ich glaube, es gibt zwei Möglichkeiten:
- Integrieren Sie einen Kommunikationsmechanismus zwischen den Diensten, mit dem die Dienste direkt kommunizieren können. Das API-Gateway ruft einen einzelnen Dienst auf, der dann andere Dienste aufruft, um Daten zu erfassen, bevor die konsolidierte Antwort an das API-Gateway zurückgegeben wird. Die API gibt dann die Antwort an den Aufrufer zurück. (Dies müssten synchrone Anrufe sein, wenn der Aufruf von serviceB die Antwort von serviceA erfordert. IE Seperate Person and Address Services.)
- Lassen Sie das API-Gateway jeden Dienst direkt aufrufen und die Daten in der API konsolidieren, bevor Sie die Antwort zurückgeben.
Ich neige zur zweiten Option, da ein Gespräch zwischen den Diensten zu einer Kopplung führen würde. In diesem Fall könnte ich auch nur eine monolithische Anwendung entwerfen. Es gibt jedoch ein paar schwerwiegende Nachteile, die ich mit dieser Option auf den Kopf stellen kann:
Wenn die API mehrere Aufrufe an mehrere Dienste ausführt, erhöht sich die Belastung des API-Servers, insbesondere wenn einige dieser Aufrufe blockiert werden.
Diese Methode bedeutet, dass die API wissen muss, was die Anwendung versucht (IE Logic müsste in die API programmiert werden, um die Dienste der Reihe nach aufzurufen und dann die Daten zu konsolidieren), und nicht nur fungieren als dummer "Endpunkt" für die Mikrodienste.
Ich würde gerne wissen, wie die Standardlösung für dieses Problem aussieht und ob mir noch eine dritte Option fehlt.