Sobes.tech
Junior — Middle

Come viene realizzato lo scambio di informazioni tra microservizi nell'architettura del sistema?

sobes.tech AI

Risposta dell'AI

La comunicazione tra microservizi viene generalmente implementata attraverso due approcci principali:

  1. Interazione sincrona — tramite REST API o gRPC. I microservizi effettuano richieste HTTP tra loro, aspettando una risposta. È semplice e comprensibile, ma può portare a ritardi e problemi di resilienza.

  2. Interazione asincrona — tramite sistemi di messaggistica (broker di messaggi), come Kafka, RabbitMQ o ActiveMQ. I microservizi pubblicano eventi o messaggi in una coda, e altri si iscrivono ad essi. Questo approccio aumenta la scalabilità e la resilienza del sistema.

Esempio di chiamata REST sincrona in Java con 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");
        }
    }
}

Qui, PaymentService può essere un client di un altro microservizio.

Per l'interazione asincrona, si può usare Kafka Producer e Consumer, dove un servizio pubblica un evento e un altro lo ascolta e lo elabora.