Mikroservices in Java: Architektur und Praxis für Entwickler

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in die Microservice-Architektur mit Java



Die Microservice-Architektur ist ein Ansatz zur Softwareentwicklung, bei dem eine Anwendung als eine Sammlung kleiner, unabhängig bereitstellbarer Dienste aufgebaut wird. Jeder Dienst implementiert eine bestimmte Geschäftsfunktion und kommuniziert mit anderen über leichtgewichtige Protokolle, meistens HTTP/REST oder Message Queues. Java ist dank seines ausgereiften Ökosystems und seiner Frameworks einer der führenden Anbieter in diesem Bereich.



Im Gegensatz zu einer monolithischen Anwendung, bei der der gesamte Code in einem einzigen Prozess läuft, ermöglichen Microservices die Skalierung einzelner Komponenten, den Einsatz verschiedener Technologien für unterschiedliche Aufgaben und vereinfachen die Bereitstellung. In diesem Artikel werden wir die wichtigsten Architekturprinzipien erläutern, ein praktisches Beispiel in Java mit Spring Boot betrachten und auch Fragen der Sicherheit und Überwachung ansprechen.



Grundlegende Prinzipien der Microservice-Architektur



Unabhängigkeit und lose Kopplung

Jeder Microservice sollte seinen eigenen Datenspeicher haben und nicht von der internen Implementierung anderer Dienste abhängig sein. Dies ermöglicht es Teams, ihre Dienste unabhängig zu entwickeln, zu testen und bereitzustellen. Eine lose Kopplung wird durch klar definierte APIs (REST, gRPC) und asynchrone Kommunikation über Queues (RabbitMQ, Kafka) erreicht.



Dezentrale Datenverwaltung

Im Gegensatz zum Monolithen, bei dem eine einzige Datenbank die gesamte Anwendung bedient, verwaltet jeder Microservice seine eigene Datenbank. Dies kann PostgreSQL, MongoDB oder sogar ein In-Memory-Speicher sein. Dieser Ansatz wird als Database per Service bezeichnet und verhindert Konflikte bei Änderungen des Datenschemas.



Stabilität und Ausfallsicherheit

Microservices sollten so ausgelegt sein, dass der Ausfall eines Dienstes nicht die gesamte Systemfunktionalität beeinträchtigt. Es werden Muster wie Circuit Breaker (Hystrix oder Resilience4j), Retry, Timeout und Bulkhead verwendet. Wichtig ist auch die Implementierung von Graceful Degradation – einer teilweisen Funktionalität, wenn einige Dienste nicht verfügbar sind.



Praktische Implementierung von Microservices in Java mit Spring Boot



Spring Boot ist das beliebteste Framework für die Erstellung von Microservices in Java. Es bietet einen eingebetteten Server (Tomcat, Jetty), automatische Konfiguration und eine breite Palette von Startern. Betrachten wir die Erstellung eines einfachen Microservices zur Benutzerverwaltung.



Basis-REST-Dienst

Wir erstellen einen Microservice user-service, der CRUD-Operationen für die Entität User bereitstellt.



@RestController@RequestMapping("/api/users")public class UserController {

@Autowired private UserService userService;

@GetMapping("/{id}") public ResponseEntity<User> getUser(@PathVariable Long id) { User user = userService.findById(id); return ResponseEntity.ok(user); }

@PostMapping public ResponseEntity<User> createUser(@RequestBody User user) { User saved = userService.save(user); return ResponseEntity.status(HttpStatus.CREATED).body(saved); }

@PutMapping("/{id}") public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user) { User updated = userService.update(id, user); return ResponseEntity.ok(updated); }

@DeleteMapping("/{id}") public ResponseEntity<Void> deleteUser(@PathVariable Long id) { userService.delete(id); return ResponseEntity.noContent().build(); }}


Die Klasse UserService enthält die Geschäftslogik und greift auf das Spring Data JPA-Repository zu. Es ist wichtig zu beachten, dass jeder Dienst seine eigene Datenbank hat. Für den user-service könnte dies PostgreSQL mit der Tabelle users sein.



Service-Discovery mit Eureka

In der Microservice-Architektur registrieren und finden sich Dienste dynamisch gegenseitig. Netflix Eureka ist ein beliebter Service-Discovery-Dienst. Fügen wir

Blogs

Buchempfehlungen