Hogyan valósul meg az információcsere a mikroszolgáltatások között a rendszerarchitektúrában?
sobes.tech MI
Válasz az MI-től
A mikroszolgáltatások közötti információcsere általában két fő megközelítésen keresztül valósul meg:
-
Szinkrón kommunikáció — REST API vagy gRPC segítségével. A mikroszolgáltatások HTTP-kéréseket küldenek egymásnak, és várják a választ. Ez egyszerű és érthető, de késleltetéseket és hibatűrő problémákat okozhat.
-
Aszinkron kommunikáció — üzenetküldő rendszerek (üzenetbrokerek), például Kafka, RabbitMQ vagy ActiveMQ segítségével. A mikroszolgáltatások eseményeket vagy üzeneteket tesznek közzé sorokban, és mások feliratkoznak rájuk. Ez a megközelítés növeli a rendszer skálázhatóságát és ellenálló képességét.
Példa szinkron REST hívásra Java-ban Spring Boot használatával:
@RestController
public class OrderController {
private final PaymentService paymentService;
public OrderController(PaymentService paymentService) {
this.paymentService = paymentService;
}
@PostMapping("/order")
public ResponseEntity<String> createOrder(@RequestBody Order order) {
boolean paymentResult = paymentService.processPayment(order.getPaymentInfo());
if (paymentResult) {
return ResponseEntity.ok("Rendelés létrehozva");
} else {
return ResponseEntity.status(HttpStatus.PAYMENT_REQUIRED).body("Fizetés sikertelen");
}
}
}
Itt a PaymentService lehet egy másik mikroszolgáltatás kliensje.
Aszinkron kommunikációhoz használható Kafka Producer és Consumer, ahol az egyik szolgáltatás eseményt tesz közzé, a másik pedig hallgatja és feldolgozza azt.