Sobes.tech
Junior — Middle

Sistem arxitekturasında mikroxidmətlər arasında məlumat mübadiləsi necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Mikroxidmətlər arasında məlumat mübadiləsi adətən iki əsas yanaşma ilə həyata keçirilir:

  1. Sinxron qarşılıqlı əlaqə — REST API və ya gRPC vasitəsilə. Mikroxidmətlər bir-birinə HTTP sorğuları göndərir və cavab gözləyirlər. Bu sadə və başa düşüləndir, amma gecikmələr və dayanıqlıq problemlərinə səbəb ola bilər.

  2. Asinxron qarşılıqlı əlaqə — mesaj mübadiləsi sistemləri (mesaj brokerləri), məsələn, Kafka, RabbitMQ və ya ActiveMQ vasitəsilə. Mikroxidmətlər hadisələr və ya mesajlar növbəsinə yerləşdirir və digər xidmətlər onlara abunə olur. Bu yanaşma sistemin miqyasını və dayanıqlığını artırır.

Java və Spring Boot istifadə edərək sinxron REST çağırışına nümunə:

@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("Sifariş yaradıldı");
        } else {
            return ResponseEntity.status(HttpStatus.PAYMENT_REQUIRED).body("Ödəniş uğursuz oldu");
        }
    }
}

Burada PaymentService başqa bir mikroxidmətin müştərisi ola bilər.

Asinxron mübadilə üçün Kafka Producer və Consumer istifadə edilə bilər, burada bir xidmət hadisə yayımlayır və digər onu dinləyir və işləyir.