Sobes.tech
Junior — Middle

Kuidas toimub teabevahetamine mikroteenuste vahel süsteemi arhitektuuris?

sobes.tech AI

Vastus AI-lt

Mikroteenustevahelise teabevahetuse peamised lähenemisviisid on tavaliselt kaks:

  1. Sünkroonne suhtlus — REST API või gRPC abil. Mikroteenused saadavad üksteisele HTTP-päringuid ja ootavad vastuseid. See on lihtne ja arusaadav, kuid võib põhjustada viivitusi ja vastupidavusprobleeme.

  2. Asünkroonne suhtlus — sõnumivahetussüsteemide (message brokers), näiteks Kafka, RabbitMQ või ActiveMQ, kaudu. Mikroteenused avaldavad sündmusi või sõnumeid järjekorda, ning teised tellivad neid. See lähenemine suurendab süsteemi skaleeritavust ja vastupidavust.

Näide sünkroonsest REST-päringust Java-s Spring Bootiga:

@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("Tellimus loodud");
        } else {
            return ResponseEntity.status(HttpStatus.PAYMENT_REQUIRED).body("Makse ebaõnnestus");
        }
    }
}

Siin võib PaymentService olla teise mikroteenuse klient.

Asünkroonseks vahetuseks võib kasutada Kafka Producerit ja Consumerit, kus üks teenus avaldab sündmuse ja teine kuulab ning töötleb seda.