class Mesajlaşma Sistemleri (Mikroservisler) extends Post

@created_at( "2025-01-14 15:26" ) @tag( "microservis" )
### Mesajlaşma Sistemleri Mesajlaşma sistemleri, mikroservisler arasında mesajların gönderilmesini, alınmasını ve işlenmesini sağlayan temel yapılar sunar. Bu sistemler, asenkron iletişim, gevşek bağlantı ve yük dengelemesi gibi avantajlarıyla modern yazılım mimarilerinde önemli bir rol oynar. --- #### 1. RabbitMQ **Açıklama:** Açık kaynaklı, mesaj tabanlı bir middleware (ara yazılım) sistemidir. Mesajları kuyruğa koyar ve ilgili servislere dağıtır. **Kullanım Alanı:** - Küçük ve orta ölçekli sistemlerde kullanılır. - Hızlı teslimat gereken uygulamalarda idealdir. **Örnek Senaryo:** - Öğrenci kayıt olur. - RabbitMQ, "Öğrenci Kaydı" mesajını kuyruğa ekler. - Kuyruğu dinleyen diğer servisler (Finans, E-posta) bu mesajı alır ve işler. **Ek Örnekler:** - Sipariş sistemi: Müşteri bir ürün satın aldığında sipariş bilgisi kuyruğa eklenir. Stok, fatura ve sevkiyat servisleri bu mesajı işler. - Bildirim sistemi: Kullanıcılara anlık bildirim göndermek için mesaj kuyruğu kullanılır. **Avantajları:** - Kolay kurulum ve yönetim. - Mesajların sırasını korur. - Geniş dil desteği sunar (Java, Python, PHP, vb.). --- #### 2. Apache Kafka **Açıklama:** Büyük miktarda veri işlemek için kullanılan, olay tabanlı, dağıtılmış bir mesajlaşma sistemidir. **Kullanım Alanı:** - Büyük ölçekli sistemlerde ve gerçek zamanlı veri akışlarında kullanılır. - Örneğin, binlerce kullanıcı aynı anda işlem yaptığında bile yüksek performans sağlar. **Örnek Senaryo:** - Bir öğrencinin notları girilir. - Kafka, bu olayı diğer sistemlere (Raporlama, Transkript) iletir. **Ek Örnekler:** - Bankacılık: Gerçek zamanlı işlem izleme ve dolandırıcılık tespiti. - IoT: Sensör verilerinin anlık analizi ve işlenmesi. - E-ticaret: Gerçek zamanlı stok güncellemeleri ve kullanıcı aktivitelerinin izlenmesi. **Avantajları:** - Yüksek performans ve ölçeklenebilirlik. - Büyük veri analitiği için uygundur. - Olay geçmişini uzun süre saklayabilir. --- #### 3. Laravel Queue **Açıklama:** Laravel’in kendi içerisinde sunduğu bir asenkron mesajlaşma ve görev işleme sistemi. **Kullanım Alanı:** - Laravel tabanlı projelerde basit bir mesajlaşma veya görev kuyruğu yapısı kurmak için kullanılır. - E-posta gönderimi, PDF oluşturma gibi arka plan görevlerinde yaygındır. **Örnek Senaryo:** - Bir öğrenci kayıt olurken karşılama e-postası göndermek istersiniz. - Laravel Queue, e-posta gönderme işini sıraya koyar ve başka bir süreçte çalıştırır. **Ek Örnekler:** - Raporlama: Büyük veri setlerini işlemek için uzun süren rapor oluşturma süreçleri kuyruklanabilir. - Video İşleme: Yüklenen videoların arka planda işlenmesi. **Avantajları:** - Laravel projelerinde kolay entegrasyon. - Redis, Amazon SQS, RabbitMQ gibi sistemlerle çalışabilir. --- #### Mesajlaşma Sistemlerinin İşleyişi Bir mesajlaşma sisteminde işleyiş genellikle şu şekilde olur: 1. **Publisher (Gönderici):** Mesajı oluşturan ve kuyruğa gönderen servistir. - Örneğin: Öğrenci Yönetim Servisi, "Yeni Öğrenci Kaydı" mesajını RabbitMQ'ya gönderir. 2. **Queue (Kuyruk):** Mesajların beklediği yerdir. Mesajlar burada sıralanır ve tüketiciler tarafından alınmayı bekler. - Örneğin: RabbitMQ'da, "E-posta Kuyruğu" ve "Finans Kuyruğu" gibi kuyruğunuz olabilir. 3. **Consumer (Tüketici):** Kuyruktaki mesajları dinler ve işler. - Örneğin: E-posta Servisi, "Hoş geldin" e-postasını gönderir. --- #### Mesajlaşmanın Avantajları 1. **Asenkron İşlem:** Servisler, birbirinin tamamlanmasını beklemeden çalışır. Daha hızlı ve etkili sistemler oluşturur. 2. **Gevşek Bağlantı:** Servisler doğrudan birbirine bağımlı değildir. Bir servis devre dışı kalsa bile kuyruktaki mesajlar durur ve yeniden işlenebilir. 3. **Yük Dengesi:** Trafik yoğunluğunu dengelemek için idealdir. Mesajlar sırayla işlenir. 4. **Hata Toleransı:** Mesajlar kuyrukta bekletildiği için sistem arızaları durumunda kaybolmaz. --- #### Bir Örnekle Tamamlayalım Bir öğrenci kayıt işlemini ele alalım: 1. **Publisher:** "Öğrenci Yönetim Servisi", "Ahmet Yılmaz kayıt oldu" mesajını RabbitMQ'ya gönderir. 2. **Queue:** RabbitMQ mesajı "Öğrenci Kaydı" kuyruğuna alır. 3. **Consumers:** - **E-posta Servisi:** Ahmet Yılmaz’a hoş geldin e-postası gönderir. - **Finans Servisi:** Ahmet Yılmaz için ödeme planı oluşturur. - **Raporlama Servisi:** Ahmet Yılmaz’ın bilgilerini rapor sistemine kaydeder. Bu yapı, mikroservislerin bağımsızlığını ve sistemin ölçeklenebilirliğini artırır. RabbitMQ, Kafka veya Laravel Queue, farklı ölçek ve ihtiyaçlara göre bu iletişimi mükemmel şekilde sağlar.