Als ich auf dieser Site über Microservices las , stieß ich auf die folgende Aussage. Was ist mit einem kanonischen Schema gemeint? Ist es nicht dasselbe wie das Domain-Modell?
Das Muster der Microservices-Architektur lehnt auch andere Teile der SOA ab, z. B. das Konzept eines kanonischen Schemas.
web-services
soa
microservices
nginx
Punter Vicky
quelle
quelle
Antworten:
Ich entschuldige mich im Voraus dafür, dass ich mich auf den Kommentar von @ArseniMourzenko verlassen habe, aber als ich anfing, die Wikipedia zu lesen, verstand ich sofort, was Canonical Schema bedeutet.
Hier der Kommentar von OP, der sich auf den wirklichen Zweifel konzentriert
Einige Datenmodelle ja, aber es scheint, dass sich der Artikel auf ein "gemeinsames" oder "gemeinsames" Datenmodell zwischen zwei oder mehr Diensten bezieht.
Das kanonische Schema ist ein Muster, mit dem Dienste bei Laufzeitdatenumwandlungen gespeichert werden sollen. Es erspart Ihnen auch das Duplizieren von Code. Sie koppeln Ihren Service dann aber auch an ein externes Datenmodell. (Siehe Diagramme auf der oben verlinkten Wikipedia-Seite)
Es ist eine Art gemeinsame "Sprache" zwischen Diensten.
Es sieht also so aus, als würde der Artikel die völlige Unabhängigkeit der MS von dem "Ökosystem" betonen, in dem sie lebt.
Nehmen wir zum Beispiel die Erwähnung gegenüber ESB.
ESB verlangt normalerweise ein Unternehmensdatenmodell (Nachrichten), das für alle an den Bus angeschlossenen Personen gleich ist.
Zurück zum Artikel, so scheint es, dass der Autor auf die Tatsache hinweist, dass MS es ablehnt, an ein externes System (und dessen Einschränkungen) gebunden zu sein .
quelle
Bei Microservices dreht sich alles um engen Zusammenhalt und lose Kopplung. Innerhalb eines Microservices besteht eine enge Kohäsion, zwischen den Microservices besteht jedoch eine lose Kopplung, und Sie möchten daher gemeinsame Schemata oder Datenverträge vermeiden. Wenn Sie feststellen, dass Microservices synchrone Aufrufe auf eine Weise ausführen, die erfordert, dass sie ein gemeinsames Schema verwenden, kann dies ein Hinweis darauf sein, dass Sie Ihre Dienstgrenzen falsch definiert haben.
Microservices sollten im Domain-Driven-Design-Sprachgebrauch eng an Bounded Contexts ausgerichtet sein.
quelle
If you find that you have microservices making synchronous calls
. Nicht unbedingt asynchrone Aufrufe. Dies kann auch bei asynchronen ESB-Nachrichten der Fall sein. Ich denke, es konzentriert sich auf die Tatsache, an gemeinsame Schemata oder Datenverträge gekoppelt zu sein. Ich gehe davon aus, dass in der MS-Architektur jegliche Kommunikation zwischen Diensten vermieden werden sollte. Die Kommunikation sollte über Anwendungen statt über interne (innere Service-Schicht) oder externe (ESB, Warteschlange usw.) Schicht erfolgen