Microservice Architektur, was ist in diesem Fall ein Service

8

Ich lese einige Dokumentationen über die Micro-Services-Architektur (durch diesen Link zum Beispiel ) und ich habe mich gefragt was genau in diesem Fall ein Service ist.

In der IT könnte alles als Service bezeichnet werden: - Eine SPRING REST-Anwendung, die über den Java-Befehl wie folgt gestartet wird:

  

java -jar build / libs / gs-rest-service-0.1.0.jar

  • Es könnte auch eine Klasse sein, die der Business-Schicht in einer DDD entspricht
  • Es könnte einfach etwas mit der untersuchten Domäne zu tun haben, wie jemandem etwas zu geben
  • und viele andere ... (Android Hintergrund läuft Dienste etc ...)

Aber was bedeutet es in Microservices? Und welche Art von Technologien / Tools werden verwendet, um beispielsweise einen "Service, der selbst läuft" im Java EE Stack zu erstellen? Es bezieht sich nur auf Webservices?

    
mfrachet 12.04.2015, 16:52
quelle

5 Antworten

0

Genau, das ist die Schönheit des Microservices-Modells! Sie können über Microservices denken, wenn Sie beispielsweise Ihr maven-Multi-Modul-Projekt entwerfen. Geringe Kopplung, klare Trennung von Anliegen, kann sogar asynchrone Kommunikation sein. Wenn Sie sich sicherer fühlen, extrahieren Sie sie in Apps und führen Sie sie in einem Host aus, den nächsten Schritt - führen Sie sie auf verschiedenen Hosts aus. Es liegt an Ihnen, zu entscheiden, wie genau sie eingesetzt werden sollen. Sie hängt mit Zielen zusammen, die Sie erreichen möchten (Fehlertoleranz gegenüber niedriger Latenz usw.) und DevOps-Ressourcen (weil mehr Trennung Sie mehr Wartung benötigen) / p>

In Bezug auf den Java EE-Stack - nichts Spezifisches, nur gewöhnliche jar- oder WAR-Dateien, die mit java -jar oder Anwendungsservern wie Tomcat ausgeführt werden.

Eine andere Richtung ist, Werkzeuge wie Docker + CoreOs / kubernetes / ..., Mesos + Marathon usw. zu verwenden, aber sie sind für alle Sprachen / Frameworks in Microservices geeignet.

Bearbeiten:

Microservices können eine Kombination aus synchronen (REST, SOAP) und asynchronen Protokollen (Nachrichtenwarteschlangen wie ActiveMQ, RabbitMQ usw.) verwenden. Es liegt an Ihnen zu entscheiden, wie Sie sie kombinieren. Mein Beispiel: labs.bench.co/2014/12/10/microservices-at-bench -intro

    
sap1ens 12.04.2015, 17:16
quelle
1

Vorherige Antworten sind großartig. Microservices-Architektur ist nur ein funktionales Dekompositionsdesign.

Ich schlage vor, Sie dieses Blog-Post zu lesen: Micro Design Patterns

Aus technischer Sicht ist es sehr viel von Tools wie Docker (jedes Micro als laufen linux-Container) und Kubernetes sie als Dienst orchestrieren (hier ist ein Kubernetes Probe ).

    
François SAMIN 12.04.2015 19:08
quelle
1

Meine eigene Definition:

Ein Microservice ist eine eigenständige, entkoppelte Komponente, die ein einzelnes Geschäftsinteresse behandelt und von anderen Services konsumiert werden kann.

Andere stimmen vielleicht zu oder nicht, und es gibt viele interessante Diskussionen zu diesem Thema, die es zu einem großartigen Studienpunkt für Softwareentwickler machen.

Aus technischer Sicht: Sie können Microservices in fast jeder Technologie erstellen: Java EE, Java + Spring, Python, Rails, Grails, Node.js und so weiter. Von dem, was ich gesehen habe, scheint es am häufigsten in der Domäne von Web-Apps und Back-End-Service-orientierten Ökosystemen angewendet zu werden. In dem Artikel, auf den Sie sich beziehen, ist das NetFlix-Modell eine sehr interessante Sache, die Sie studieren können, da Sie alle Elemente einer Microservice-Architektur eingehend betrachten können: Service-Erkennung, Stromkreisunterbrechung, Überwachung, dynamische Konfiguration und so weiter.

>

Einige Dinge, die Sie überprüfen sollten, wenn Sie Java-orientiert sind:

Mit Spring Cloud können Sie einige dieser NetFlix-Komponenten mit einem Minimum an Handcodierung verwenden: Ссылка

Ein tatsächliches operatives Beispiel auf GitHub (nicht meins, aber ich habe es in meinem eigenen Lernen zu dem Thema verwendet): Ссылка

Aus konzeptioneller Sicht weist Ihre Frage auf ein berüchtigtes Dilemma im Bereich Microservice-Design hin. Es gibt nicht notwendigerweise eine "korrekte" Granularität für einen Microservice. Die Idee besteht darin, eine Granularitätsebene zu wählen, die in Ihrer Geschäftsdomäne Bedeutung hat. Wenn Sie Microservices auf einer sehr niedrigen Granularitätsebene (z. B. CRUD-Ebene) implementieren, werden Sie höchstwahrscheinlich mit sehr gesprächigen Diensten enden, und Sie müssen wahrscheinlich sinnvollere zusammengesetzte Dienste erstellen. Wenn Sie ein zu hohes Maß an Granularität wählen, können Sie eine monolithischere Anwendung erhalten, die später in Microservice-große Stücke umgeformt werden muss.

    
icey502 12.04.2015 17:23
quelle
0

Service zu Microservice ist Java zu JavaScript. Denk nicht so darüber nach. Stattdessen kann Microservice wie folgt gedacht werden:

  1. Eine kleine Problemdomäne.
  2. Eigenentwicklung und Bereitstellung.
  3. Läuft in einem eigenen Prozess.
  4. Integriert über bekannte Schnittstellen.
  5. Besitzt seinen eigenen Datenspeicher.
Pritam Banerjee 14.06.2016 17:48
quelle
0

Ich würde mit Ihrer letzten Frage beginnen - Sie bezieht sich nur auf Webservices? Das ist umstritten. Ich würde sagen, NEIN. Es bezieht sich auf Webservice (aber nicht nur darauf).

Martin fowler beschreibt Microservices als eine kleine SOA-Untergruppe , nachdem alle Microservices Services sind und SOA ein sehr generischer und weiter Begriff ist.

Nachfolgend finden Sie einige der wichtigen Aspekte von Microservices:

  1. Jeder Dienst (oder ein Satz von wenigen) sollte seinen eigenen Datenspeicher haben.
  2. Die Services sind nach den Geschäftsanforderungen oder -funktionen organisiert.
  3. Jeder Dienst ist unabhängig und kann daher in jeder Sprache implementiert werden. Führt zu einer mehrsprachigen Programmierkultur im Team.
  4. Der Dienst kann Anfragen vom Kunden oder von anderen Diensten annehmen.
  5. Sie sind normalerweise ereignisgesteuert und asynchron, so dass die Skalierung einfacher wird.
  6. Dienstleistungen sind dumm, da sie nur eine Sache tun (aber sie sollten selbst ausreichend sein, um sich selbst zu überwachen)
  7. Sie können bei der kontinuierlichen Bereitstellung oder Bereitstellung hilfreich sein, da der Implementierungszyklus sehr kurz ist.
  8. Sie sind sehr klein, so dass der Netzwerkaufwand bei der Bereitstellung nicht groß ist. Sie können daher in wenigen Minuten über einen Cluster von Knoten verteilt werden.

    Auch möchte ich betonen, dass oben nicht nur Microservices wahr sind. Unternehmen wie Google, Netflix und Amazon haben ähnliche Dinge schon vor dem Begriff gemacht.

rai.skumar 07.07.2016 06:58
quelle