Ich habe an einem Nebenprojekt gearbeitet und ich habe mein Skelton-Projekt als Microservices neu gestaltet, bis jetzt habe ich kein Open Source-Projekt gefunden, das diesem Muster folgt. Nach viel lesen und suchen schließe ich zu diesem Design, aber ich habe noch einige Fragen und Gedanken.
Hier sind meine Fragen und Gedanken:
Ihr Design scheint in Ordnung zu sein. Wir bauen auch unser Microservice-Projekt mit API-Gateway-Ansatz. Alle Dienste einschließlich des Gateway-Dienstes (GW) sind containerisiert (wir verwenden docker) Java-Anwendungen ( Spring-Boot oder Dropwizard ). Eine ähnliche Architektur könnte auch mit nodejs erstellt werden. Einige Themen zu Ihrer Frage:
Ihr Design ist in Ordnung.
Wenn Ihr API-Gateway CAS (eine Art von Auth) implementieren muss (und das ist wahrscheinlich der Fall), sollte es auch alle Anfragen verfolgen und die Header ändern die Requester-Metadaten zu tragen (für die interne ACL / Scoping-Nutzung) - Ihr API Gateway sollte in Node ausgeführt werden, sollte aber unter Haproxy sein, das sich um Load-Balancing / HTTPS kümmert
Discovery ist in der richtigen Position - wenn Sie einen suchen, der zu Ihrem Design passt, schauen Sie nirgendwo hin, außer in Konsul .
Sie können consul-template verwenden oder ein eigenes micro-discovery-framework für die Dienste und das API-Gateway verwenden, damit sie beim Booten die Endpunktdaten teilen.
Die ACL / Autorisierung sollte pro Service implementiert werden, und die erste Anfrage von API Gateway sollte von allen Autorisierungen der Middleware abhängig sein.
Es ist schlau, die Anfragen zu verfolgen, wenn das API-Gateway eine Anforderungs-ID für jede Anfrage bereitstellt, damit der Lebenszyklus innerhalb des "inneren" Systems verfolgt werden kann.
Ich würde Redis für Messaging / Worker / Queues / schnelle In-Memory-Sachen wie Cache / Cache Invalidation hinzufügen (Sie können nicht alle MS-Architektur ohne eine behandeln) - oder nehmen RabbitMQ, wenn Sie viel mehr verteilte Transaktion haben und viele Nachrichten
Schleudern Sie alles auf Containern (Docker), so dass es einfacher zu warten und zu montieren ist.
Was BI betrifft, warum brauchen Sie dafür einen Service? Sie könnten externe ELK Elastisearch, Logstash, Kibana) und Dashboards, Log Aggregation und riesige Big Data Warehouse auf einmal haben.
Tags und Links node.js microservices