Sobes.tech
Junior — Middle

Hoe wordt de informatie-uitwisseling tussen microservices in de systeemarchitectuur gerealiseerd?

sobes.tech AI

Antwoord van AI

De communicatie tussen microservices wordt meestal gerealiseerd via twee hoofdbenaderingen:

  1. Synchrone interactie — met behulp van REST API of gRPC. Microservices doen HTTP-verzoeken naar elkaar en wachten op een antwoord. Dit is eenvoudig en begrijpelijk, maar kan leiden tot vertragingen en problemen met fouttolerantie.

  2. Asynchrone interactie — via berichtenuitwissingssystemen (berbrokers), zoals Kafka, RabbitMQ of ActiveMQ. Microservices publiceren gebeurtenissen of berichten in een wachtrij, en anderen abonneren zich daarop. Deze aanpak verhoogt de schaalbaarheid en de veerkracht van het systeem.

Voorbeeld van een synchrone REST-aanroep in Java met 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("Order created");
        } else {
            return ResponseEntity.status(HttpStatus.PAYMENT_REQUIRED).body("Payment failed");
        }
    }
}

Hier kan PaymentService een client zijn van een ander microservice.

Voor asynchrone uitwisseling kan Kafka Producer en Consumer worden gebruikt, waarbij één service een gebeurtenis publiceert en een andere luistert en verwerkt.