Mimari (IT)Backend mimarı

Dış hizmetlerin mimaride mesaj otobüsü (Message Bus) üzerinden entegrasyonunu nasıl gerçekleştirebiliriz ve karşılaşabileceğimiz zorluklar nelerdir?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap.

Dış hizmetlerin IT mimarisinde entegrasyonu için giderek daha fazla mesaj otobüsü (örneğin, RabbitMQ, Apache Kafka veya NATS) kullanılmaktadır. Bu yaklaşım, eşzamansız etkileşimi gerçekleştirmeye, sistemler arasındaki bağımlılığı azaltmaya ve dayanıklılığı artırmaya olanak tanır.

Uygulama şu adımlara dayanır:

  1. Hizmetler, otobüste konulara/kuyruklara mesajlar yayımlar.
  2. Dış hizmetler, ilgilendikleri olaylara/kuyruklara abone olurlar.
  3. Olay alındığında, alıcı tarafında eşzamansız işleme gerçekleşir.

Java'da Kafka'ya bir olay gönderme örneği:

ProducerRecord<String, String> record = new ProducerRecord<>("events.orders", "orderCreated", jsonOrderData); producer.send(record);

Anahtar özellikler:

  • İç ve dış hizmetler arasındaki doğrudan bağımlılığın azaltılması.
  • Hata işleme için yeniden deneme mekanizmaları (retries), Dead Letter Queues.
  • Veri iletiminde ölçeklenebilir ve güvenilir bir yapı sağlama imkanı.

Kandırmaca sorular.

Mesaj otobüsünün kullanımı veri kaybını önleyebilir mi?

Cevap: Hayır. Teslimat politikalarını (onaylama, mesajların kalıcılığı) ayrı ayrı ayarlamak gerekir ve bazen aracının sınırlamalarını aşmak (örneğin, ağ kesintileri veya kuyrukların aşırı dolması) gerekebilir.


Gönderilen tüm mesajların geldikleri sıraya göre işlenmesi şart mı?

Cevap: Her zaman değil. Sıra garanti edilebilir, ancak bu performansı düşürebilir. Bazı durumlarda işleme sırası önemli değildir ve eşzamansız paralel tüketimi kullanmak daha iyidir.


Entegrasyonu ölçeklendirmek için hizmete mesaj kuyrukları desteği eklemek yeterli mi?

Cevap: Hayır. Ölçeklendirme için parçalara ayırma (shard'lar arasına bölme), grup aboneliği ve tüketicilerin dengeli yüklenmesi üzerinde düşünülmesi gerekir.