Java >> Java Tutorial >  >> Java

Microservices – Eine Einführung

In diesem Beitrag behandle ich eine Einführung in Microservices.

Was sind Microservices? Eine Einführung in Microservices

Wikipedia-Definition sagt

Microservices ist eine Variante des Architekturstils der serviceorientierten Architektur (SOA), die eine Anwendung als eine Sammlung von lose gekoppelten Diensten strukturiert.

Erstens gibt es keine offizielle Definition von Microservices nach Industriestandards. Es ist ein neues Phänomen in der Softwarebranche, neue Software zu entwerfen, die leichtgewichtig, einfacher bereitzustellen und zu skalieren, einfacher individuell umzugestalten und unabhängig zu arbeiten ist.

Um jedoch im Detail zu verstehen, können Sie auf jeden Fall Martin Fowlers Microservices oder Chris Richardsons Microservices lesen.

Zweitens sind Microservices kleine Dienste, die unabhängig laufen können, aber auch leicht mit anderen Diensten kommunizieren können.

Microservice-Architektur vs. monolithische Architektur

In einem traditionellen monolithischen Architekturstil gibt es eine einzige Anwendung mit einer einzigen Codebasis. Eine Anwendung enthält eine Reihe von Modulen, die miteinander verknüpft sind und externe Abhängigkeiten haben können. Es ist eine Multi-Tier-Unternehmensanwendung und wird seit langem zum Erstellen von Software verwendet.

Der Microservice-Architekturstil entstand vor allem aus der Notwendigkeit heraus, eine Anwendung zu entwickeln, die leicht für mobile Anwendungen unterstützt werden kann. Der ältere Stil war nicht einfach für mobile und neue Generationen im Umgang mit Daten zu unterstützen. Jede große Unternehmensanwendung kann einfach mit dem Microservices-Architekturstil erstellt werden. Ein berühmtes Beispiel ist NETFLIX.

Wie kann man das Microservice-Architekturmuster identifizieren?

Eine einfache Grundregel des Microservice-Architekturmusters besteht darin, einen eigenständigen Dienst zu erstellen, der ohne Abhängigkeit von einem anderen Dienst ausgeführt werden kann. Mit anderen Worten, eine große Anwendung kann mehrere Dienste haben, die miteinander kommunizieren, mit ihren eigenen Datenbanken kommunizieren, aber dennoch die Geschäftslogik ausführen. Datenbanken werden verwendet, um eine lose Kopplung von Diensten zu gewährleisten.

Beispielsweise kann eine E-Commerce-Anwendung eines großen Unternehmens aus den folgenden Diensten bestehen

  1. Backend-Service-REST-API zum Verwalten von Daten
    1. Kontodienst
    2. Versandservice
    3. Inventarservice
  2. Laufzeitdienst zur Verarbeitung von Laufzeit- und Backend-Daten zur Verarbeitung der Geschäftslogik
  3. Protokollierungsdienst
  4. Fehlerbehandlungsdienst
  5. Sitzungsdienst

Darüber hinaus kann die Benutzeroberfläche für die E-Commerce-Anwendung unabhängig erstellt werden, um Backend-Dienste zum Anzeigen/Bearbeiten von Daten zu verwenden.

Standardmäßig gibt es nur wenige Regeln zum Identifizieren von Microservices-Mustern

  1. Aufschlüsselung nach Geschäftsfähigkeit
  2. Datenbank pro Dienstmuster
  3. API-Gateway-Muster
  4. Clientseitige Erkennung und serverseitige Erkennung

Vor- und Nachteile von Microservices

Vorteile

  1. Bereitstellungsfähigkeit – Einfachere Bereitstellung, und man kann sie unabhängig bereitstellen, ohne andere Dienste zu beeinträchtigen.
  2. Zuverlässigkeit – Ein Fehler im Dienst kann diesen Dienst nur zum Absturz bringen. Abhängig von der Behandlung des Fehlers in der Anwendung kann der Rest der Anwendung weiterhin funktionieren.
  3. Skalierbarkeit – In ähnlicher Weise hängt die Skalierung jedes Microservices von den Anforderungen ab, die Cluster und Grids verwenden.
  4. Verfügbarkeit – Das Bereitstellen des Patches oder der neueren Version des Dienstes erfordert weniger Ausfallzeit im Vergleich zu regulären monolithischen Anwendungen.
  5. Verwaltung – Einfacher zu verwalten
  6. Design und Entwicklung – Jeder Dienst hilft dem Entwickler, den Dienst einfach zu verwalten, ohne sich um andere Dienste kümmern zu müssen.

Nachteile

  1. Leistung – Alle an der Anwendung beteiligten Dienste müssen über das Netzwerk miteinander kommunizieren, was die Leistung beeinträchtigen kann.
  2. Testbarkeit – Automatisierte Tests sind schwieriger zu verwalten und auszuführen.
  3. Speichernutzung – Mögliche doppelte Daten über Dienste hinweg und viele Duplikate im Cache.

Referenzen

Abschließend habe ich eine Einführung in Microservices gegeben. Weitere Informationen zu Microservices finden Sie unter den folgenden Links:

  1. Microservices von Chris Richardson
  2. Microservices von Martin Fowler
  3. Stackoverflow-Post über Microservices

Abschließend, wenn Ihnen dieser Beitrag gefallen hat, abonnieren Sie meinen Blog.


Java-Tag