2016-04-26 5 views
1

Gibt es Best Practices zur Minimierung der ausgetauschten Daten zwischen (internen) Microservices beim Aufruf der API eines Dienstes (auch bekannt als Need-to-Know)?Microservices Service-to-Service-Kommunikation Need-to-Know-Prinzip

Wie so etwas achive:

Es gibt drei Kategorien von Dienstleistungen:

  • Benutzer
  • -Mitteilung (nehmen wir an, nur E-Mail)
  • Versand

Wenn Der Benachrichtigungsdienst benötigt die E-Mail-Adresse von einem Benutzer fragt es die API des Benutzerdienstes ab und sollte die E-Mail (und NICHT den vollständigen Datensatz) erhalten.

Wenn der Versanddienst die Lieferadresse eines Benutzers benötigt, fragt er die API des Benutzerdienstes ab und sollte die Lieferadresse (und NICHT den vollständigen Datensatz) erhalten.

Frage:

Sollte dies innerhalb des Benutzerservice mit Art einer ACL (was für Service "XYZ" zu sehen ist erlaubt) umgegangen werden?

Bei der Verwendung von JWT für die Authentifizierung müssen die Schlüssel überhaupt ausgetauscht werden, so dass diese ACLs während der Einrichtungsphase zwischen den Teams besprochen werden können.

Antwort

1

Sollte dies innerhalb des Benutzerservice mit Art eines ACL

Ich denke, dies ist die beste Option behandelt werden. Sie können die eigentliche Autorisierung an einen separaten Dienst delegieren, den der Benutzerdienst mit der Identität des Anrufers und dem "Anspruch", den der Anrufer tätigt (z. B. "Ich darf die E-Mail-Adresse für den Benutzer sehen"), anrufen kann. Die Ansprüche können pro Anruf bewertet werden.

Es ist jedoch strittig, ob Sie tatsächlich den Benutzerdienst überhaupt abfragen müssen. Dies würde eine Änderung Ihres Designs bedeuten, aber stellen Sie sich einmal vor, dass der Benachrichtigungsdienst bereits über den Benutzer Bescheid wusste, z. B. die Benutzer-ID und die E-Mail-Adresse. Dann müsste der Benachrichtigungsdienst nichts abfragen, um seine Aufgabe erfüllen zu können.

Damit der Benachrichtigungsdienst bereits über die Benutzerdaten verfügt, müssen diese Daten zu einem bestimmten Zeitpunkt in der Vergangenheit an den Benachrichtigungsdienst gesendet worden sein. Ein guter Zeitpunkt dafür wäre, wenn der Benutzer zum ersten Mal erstellt wird oder wenn Benutzerdetails geändert werden. Der beste Weg, diese Art von Informationen zu verteilen, ist die Form einer Ereignisnachricht, obwohl Sie die Verteilung basierend auf einem HTTP-POST an den Benachrichtigungsdienst haben könnten.

+0

Ich werde über das Redesign nachdenken. – Markus

Verwandte Themen