Sobes.tech
Junior — Middle

Как се реализира обменът на информация между микросервизите в архитектурата на системата?

sobes.tech AI

Отговор от AI

Обменът на информация между микросервизи обикновено се реализира чрез два основни подхода:

  1. Синхронно взаимодействие — чрез REST API или gRPC. Микросервисите изпращат HTTP заявки един към друг, очаквайки отговор. Това е просто и разбираемо, но може да доведе до забавяния и проблеми с устойчивостта.

  2. Асинхронно взаимодействие — чрез системи за обмен на съобщения (message brokers), като Kafka, RabbitMQ или ActiveMQ. Микросервисите публикуват събития или съобщения в опашка, а други се абонират за тях. Този подход увеличава мащабируемостта и устойчивостта на системата.

Пример за синхронно извикване на REST в Java с използване на 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("Поръчката е създадена");
        } else {
            return ResponseEntity.status(HttpStatus.PAYMENT_REQUIRED).body("Плащането неуспешно");
        }
    }
}

Тук PaymentService може да бъде клиент на друг микросервис.

За асинхронен обмен може да се използва Kafka Producer и Consumer, където един сервиз публикува събитие, а другият го слуша и обработва.