Sobes.tech
Junior — Middle

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:

  1. 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.

  2. 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.