Sobes.tech
Junior — Middle

Cum se realizează schimbul de informații între microservicii în arhitectura sistemului?

sobes.tech AI

Răspuns de la AI

Comunicarea între microservicii se realizează de obicei prin două abordări principale:

  1. Interacțiune sincronică — folosind REST API sau gRPC. Microserviciile fac solicitări HTTP între ele, așteptând un răspuns. Este simplu și ușor de înțeles, dar poate duce la întârzieri și probleme de reziliență.

  2. Interacțiune asincronă — prin sisteme de schimb de mesaje (brokeri de mesaje), cum ar fi Kafka, RabbitMQ sau ActiveMQ. Microserviciile publică evenimente sau mesaje în coadă, iar altele se abonează la ele. Această abordare crește scalabilitatea și reziliența sistemului.

Exemplu de apel REST sincron în Java cu 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("Comanda creată");
        } else {
            return ResponseEntity.status(HttpStatus.PAYMENT_REQUIRED).body("Plata a eșuat");
        }
    }
}

Aici, PaymentService poate fi clientul altui microserviciu.

Pentru schimbul asincron, se poate folosi Kafka Producer și Consumer, unde un serviciu publică un eveniment, iar altul îl ascultă și îl procesează.