Kommunikation zwischen Java und Container Orchestrator (Microservices)

von Spotz

Aktives Mitglied
Hallo,
kann ich nicht über Java neue Cluster und nodes von einem Service erstellen? Erfordert das dann nicht eine Kommunikation zwischen Java und Container Orchestrator? Zwischen dem containerisierten Java Paket und dem Container, welches dieses Paket enthält? Ist für Container wie Docker etwa ein Orchestrator verfügbar, der durch ein .jar gesteuert wird und nicht (nur) durch so etwas wie ein Dockerfile?

Bzw. was ist a) mit Zookeeper? Dieses kann doch mehrere Kafka-Nodes erstellen? (Ich weiß trotz Suche nicht genau, was Zookeeper ist. Die Beschreibung auf der Projektseite ist sehr schwammig. Hauptsache viel "distributed" ... Irgendwie scheint es "alles und nichts" zu können. Die Rolle nicht klar definierbar. Mir kommt es in bezug auf Kafka vor wie eine Art Container Manager / Container Orchestrator.

Und was ist b) mit Service Discovery Tools wie Netflix-Eureka ? Muss das nicht auch mit Containern arbeiten, obwohl es selbst containerisiert ist?

Tut mir Leid, daß meine Fragen so schwammig formuliert sind. Mir fehlt es etwas an Überblick. Mein Buch enthält wenige Beispiele aus der real world bzw. ist erst recht kein Kochbuch sondern vermittelt relativ abstrakt die Grundpattern von microservices. Kennt ihr vielleicht auch noch gute Bücher, welche eine Mischung aus soetwas und einem Kochbuch sind, oder welche nur Kochbuch sind, aber ohne sich zu sehr auf ein Framework festzunageln, etwa docker vs. kubernetes ? Für Bücherempfehlungen wäre ich dankbar.

Mit besten Grüßen
Maximilian

PS: Da domain services über Netzwerk kommunizieren und es ja kein eigenes Microservice Unterforum gibt, dachte ich mir, daß Microservice-Fragen hier evtl. aufgehoben sind?
 

Oneixee5

Top Contributor
zu b) Die Service Discovery ermöglicht es den Diensten, sich gegenseitig zu finden und miteinander zu kommunizieren, ohne Hostname und Port fest zu kodieren. Der einzige "Fixpunkt" in einer solchen Architektur besteht aus einer Service-Registry, bei der sich jeder Dienst registrieren muss. Hier spielt es also im Prinzip keine Rolle ob Container verwendet werden - es geht um Kommunikation. Die Anwendung muss über Containergrenzen hinaus im Netzwerk kommunizieren können.
 

von Spotz

Aktives Mitglied
Hallo Oneixee5,

danke für Deine Antwort.

und wie kommuniziere ich in meinem Java Projekt mit dem Container, in welchen mein Java-Projekt als domain-service containerisiert ist ?

Kannst Du vielleicht freundlicherweise ein Beispiel nennen?

Viele Grüße
 

mrBrown

Super-Moderator
Mitarbeiter
Üblicherweise kann das im Container laufende Programm nicht direkt mit dem Container kommunizieren, abseits von der normalen Interaktion, die der Kernel so bietet.
Das geht nur, wenn man das selbst explizit bereitstellt, zB indem man den Docker-Socket in den Container mounted, und dann über diesen mit Docker kommuniziert.
 

von Spotz

Aktives Mitglied
Hallo mrBrown,

wie kann ich denn dann z.B. Cluster erstellen bzw. wie funktioniert Cluster Orchestration? Ist das etwas, auf das ich in Java keinen Einfluss habe? Wie kann ich mir das Wissen als Anfänger aneignen?

Mit besten Grüßen
 

Oneixee5

Top Contributor
Hallo Oneixee5,

danke für Deine Antwort.

und wie kommuniziere ich in meinem Java Projekt mit dem Container, in welchen mein Java-Projekt als domain-service containerisiert ist ?

Kannst Du vielleicht freundlicherweise ein Beispiel nennen?

Viele Grüße
Service Discovery wird einfach nur konfiguriert (z.B.: properties, yml), die Kommunikation selbst übernimmt das jeweilige Framework, z.B.: Netflix-Eureka. Ein Service ist ja kein Container. In einem Container könnten theoretisch 5 Services laufen, welche sich unabhängig voneinander bei der Service-Registry anmelden könnten. Ein Service benötigt auch nicht unbedingt einen Container, z.B.: könnte ein Service auf irgend einer VM im Netz laufen.

[CODE lang="java" title="application.yml"]eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: ${EUREKA_URI:http://XYZ:8761/eureka}
instance:
appname: ${spring.application.name}:${random.value}
preferIpAddress: false[/CODE]
 
Zuletzt bearbeitet:

von Spotz

Aktives Mitglied
Service Discovery wird einfach nur konfiguriert (z.B.: properties, yml), die Kommunikation selbst übernimmt das jeweilige Framework, z.B.: Netflix-Eureka. Ein Service ist ja kein Container. In einem Container könnten theoretisch 5 Services laufen, welche sich unabhängig voneinander bei der Service-Registry anmelden könnten. Ein Service benötigt auch nicht unbedingt einen Container, z.B.: könnte ein Service auf irgend einer VM im Netz laufen.

[CODE lang="java" title="application.yml"]eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: ${EUREKA_URI:http://XYZ:8761/eureka}
instance:
appname: ${spring.application.name}:${random.value}
preferIpAddress: false[/CODE]
Hallo Oneixee5,
allerdings ist es doch erstens relativ sinnlos, erst extra nach dem Architektur- (Entwurfsmuster?) "Microservice" voneinander unabhängig programmierte Services nicht zu containerisieren und dadurch also nicht die Möglichkeit zu geben, parallelisiert abzulaufen. Zweitens verlangen doch die Anbieter von Cloud Services, daß die Anwendungen die hochgeladen werden (als git repository vorliegen, ggf., und) daß sie containersiert sind. Oder nicht?<

Viele Grüße!
von Spotz (der Sportwagen, der echte Pferde unter der Haube hat)
 
Zuletzt bearbeitet:

von Spotz

Aktives Mitglied
Üblicherweise kann das im Container laufende Programm nicht direkt mit dem Container kommunizieren, abseits von der normalen Interaktion, die der Kernel so bietet.
Das geht nur, wenn man das selbst explizit bereitstellt, zB indem man den Docker-Socket in den Container mounted, und dann über diesen mit Docker kommuniziert.
Hallo BrBrown,
wie würde das gehen?
Oder kann ich stattdessen auch mit dem Service Orchestration Service kommunizieren? Das wäre nicht ganz so "meta", vor allem nicht, wenn es sich dabei tatsächlich um einen Service handelt, der so wie Eureka etwa nicht extern zu dem Microservice, den er containerisiert orchestriert, ist.

Viele Grüße!
von Spotz (das Duschgel, das Sie aus der Werbung kennen, mit den Frauen, die durchdrehen)
 

mrBrown

Super-Moderator
Mitarbeiter
allerdings ist es doch erstens relativ sinnlos, erst extra nach dem Architektur- (Entwurfsmuster?) "Microservice" voneinander unabhängig programmierte Services nicht zu containerisieren und dadurch also nicht die Möglichkeit zu geben, parallelisiert abzulaufen. Zweitens verlangen doch die Anbieter von Cloud Services, daß die Anwendungen die hochgeladen werden (als git repository vorliegen, ggf., und) daß sie containersiert sind. Oder nicht?<
Anwendungen können auch ohne Container parallel laufen und bei den meisten Cloud-Anbietern kann man auch einfache VMs bekommen.
Container machen da nur vieles einfacher.

Oder kann ich stattdessen auch mit dem Service Orchestration Service kommunizieren? Das wäre nicht ganz so "meta", vor allem nicht, wenn es sich dabei tatsächlich um einen Service handelt, der so wie Eureka etwa nicht extern zu dem Microservice, den er containerisiert orchestriert, ist.
Die Anwendungen haben im Normalfall keine Ahnung davon, dass es überhaupt einen Service Orchestrator gibt, die laufen einfach nur in ihrem Container und sind glücklich, solange sie alles bekommen, was sie brauchen.

Deine Anwendung sollte höchstens irgendwie bekannt geben, was sie braucht – aber eben nicht dem konkreten Orchestrator, sondern besser abstrakt und deklarativ, und der Orchestrator, wenn es denn einen gibt, erfüllt das dann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Suche noch eine Loesung fuer Kommunikation zwischen Webserver und ein Programm Softwareentwicklung 0
P Kommunikation zwischen 2 Programmen Softwareentwicklung 2
D Unterschied zwischen Required Interface und Provided Interface Softwareentwicklung 3
F UML - Use Case - include-Beziehung zwischen 2 Anwendungsfällen Softwareentwicklung 3
O Unterschied zwischen Maven und Jenkins Softwareentwicklung 3
F Weg zwischen 2 Knoten (XML/JAXB) Softwareentwicklung 5
H Unterschied zwischen Software Technik und Engineering? Softwareentwicklung 7
P Unterschied zwischen Aggregation und Assoziation Softwareentwicklung 4
L Frage zu Beziehungen zwischen Klassen und UML Softwareentwicklung 10
G Umwandung von Vb auf Java Softwareentwicklung 1
S Microservices in Java Spring: Nebenläufigkeitsprobleme lösen Softwareentwicklung 6
temi Elementfunktionen vs. Nichtelementfunktionen in Java Softwareentwicklung 20
R Umsetzungen in Java vs. Umsetzungen auf Datenbankebene Softwareentwicklung 9
L Module Eclipse Java 9 Softwareentwicklung 12
R Software-Architekt (Schwerpunkt Java) Softwareentwicklung 9
S VB.NET / C# als Java-Entwickler? Softwareentwicklung 2
J Java Kentnisse vertiefen oder andere Programmiersprache probieren? Softwareentwicklung 8
U Java vs. anderen plattformunabhängige Programmiersprachen Softwareentwicklung 8
S JNI Java from C Softwareentwicklung 0
H [Java]Regex Hilfe Softwareentwicklung 3
D Teamspeak Java html app Softwareentwicklung 5
N UML Komponenten als Java-Klassen abbilden Softwareentwicklung 4
S Java Anfänger hat Probleme mit Scanner Softwareentwicklung 6
C Lohnt es sich noch ein neues Projekt in C++ anstatt Java zu realisieren? Softwareentwicklung 4
U Java oder welche Sprache? Softwareentwicklung 98
MrWhite Ist Java gar nicht sooo objektorientiert??! Softwareentwicklung 16
J Java Long-Werte in C++ auslesen Softwareentwicklung 4
K Mit "Java" html-Seite entscripten Softwareentwicklung 6
Airwolf89 Theoretische Frage - In Java Java-Programme schreiben Softwareentwicklung 5
G Mischsprache aus Java & C# Softwareentwicklung 23
H COBOL und Java Softwareentwicklung 17
H Java als Backend, Javascript als View Softwareentwicklung 3
D Sind EJB Komponenten auch mit Java Swing nutzbar? Softwareentwicklung 8
U Decorator Pattern in der Java API Softwareentwicklung 6
J Java Software nach C++ portieren Softwareentwicklung 6
C Unterschiede: C++ vs. C# vs. Java Softwareentwicklung 21
G Umstieg Java/Oracle => C#/MSSQL Softwareentwicklung 13
A Jira durch Java ansprechen Softwareentwicklung 18
M Immutable Objekte und funktionales Programmieren in Java oder Scala Softwareentwicklung 34
B [Web 2.0] Java vs PHP Softwareentwicklung 28
Raidri Flex mit Java Softwareentwicklung 2
L Java + WCF Softwareentwicklung 9
Airwolf89 Java-Programm in C++ portieren Softwareentwicklung 4
T Kapselung nich vollständig umgesetzt in Java? Softwareentwicklung 4
J Korpus mit Python einlesen - weiterbearbeiten mit Java Softwareentwicklung 4
N c# nach java Softwareentwicklung 14
K Suche freies UML Tool um aus .java dateien Diagramme zu. Softwareentwicklung 8
D Java in KLassen, schon vorhanden? Softwareentwicklung 3
B Was ist besser für Grafiken? Java oder C#? Softwareentwicklung 9
R Java Passwort verschlüsseln --> kompliziert! wirklich doo Softwareentwicklung 13
F vorteile php gegenüber java? Softwareentwicklung 46
M Umwandlung von String in java.sql.Date Softwareentwicklung 2
lolkind Iso Datein per Java über Windows XP brennen Softwareentwicklung 13
U [Diskussion] Java vs. C# Softwareentwicklung 208
E Java Programm distributen Softwareentwicklung 35
J Hardware zugriff mit java? Softwareentwicklung 4
N Für und Wieder von Java und .NET (primär C#) | Performance Softwareentwicklung 6
G java.lang.ArrayIndexOutOfBoundsException Softwareentwicklung 5
E Default Java unter Linux aendern? Softwareentwicklung 3
S arabische Buchstaben in java ?:L Softwareentwicklung 3
L Noch 'ne Perl-Frage. Kehre dann auch reumütig zu Java zurück Softwareentwicklung 10
G Serveranbindung mit java Softwareentwicklung 24
P Grafik-Programm mit JAVA? Softwareentwicklung 21
G Umstieg von Delphi zu JAVA (wichtige Fragen!) Softwareentwicklung 41
F Welche Sprache sieht ähnlich aus wie Java? Softwareentwicklung 7
T Suche A Star Java Beispielprogramm Softwareentwicklung 2
D C# zu Java - Übersetzer gesucht. Softwareentwicklung 3
F Windows Media Player in Java? Softwareentwicklung 11
C C code in java umschreiben Softwareentwicklung 9
O java und c# - die zweite. Softwareentwicklung 7
S Problem PJIRC java-applet Softwareentwicklung 4
U Geeignete Plattform für Projekt (JSP, PHP, Java-Anwendung) Softwareentwicklung 7
G C++ in JAVA verpacken Softwareentwicklung 2
D C# vs. java Softwareentwicklung 16
G Darstellung von Java-Projekten mit UML Softwareentwicklung 3
E Java & Performance Softwareentwicklung 9
T Brauche für meinen Java-Code dringend Hilfe Softwareentwicklung 4
B Wo bekommt man fertige Java-Programme (z.B. für Lsg LGS) Softwareentwicklung 3
W Herangehensweise an ein Java Programm Softwareentwicklung 4
B Programmierung eines 8051-Assemblers unter Java Softwareentwicklung 3
M Bidirektionale Assoziazion in Java realisieren? Softwareentwicklung 3
J Java <-> C# Softwareentwicklung 1
S c# schneller java - wieso ? Softwareentwicklung 12
D C++ und Java Softwareentwicklung 61

Ähnliche Java Themen

Neue Themen


Oben