Sobes.tech
Junior — Middle

Ako sa realizuje výmena informácií medzi mikroslužbami v architektúre systému?

sobes.tech AI

Odpoveď od AI

Výmenník informácií medzi mikroslužbami sa zvyčajne realizuje dvoma hlavnými prístupmi:

  1. Synchronná interakcia — pomocou REST API alebo gRPC. Mikroslužby posielajú HTTP požiadavky navzájom a čakajú na odpoveď. Je to jednoduché a zrozumiteľné, ale môže viesť k oneskoreniam a problémom s odolnosťou.

  2. Asynchrónna interakcia — cez systémy výmeny správ (message brokery), ako Kafka, RabbitMQ alebo ActiveMQ. Mikroslužby publikujú udalosti alebo správy do fronty, a iné sa na ne prihlásia. Tento prístup zvyšuje škálovateľnosť a odolnosť systému.

Príklad synchronického volania REST v Jave s použitím Spring Boot:

@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("Objednávka vytvorená");
        } else {
            return ResponseEntity.status(HttpStatus.PAYMENT_REQUIRED).body("Platba zlyhala");
        }
    }
}

Tu PaymentService môže byť klientom iného mikroslužby.

Pre asynchrónnu výmenu sa dá použiť Kafka Producer a Consumer, kde jedna služba publikuje udalosť a druhá ju počúva a spracováva.