20 servisimizi harika bir şekilde ölçeklendirdik. Hepsi aynı PostgreSQL örneğine bağlandı.

Mimari:

  • 20 mikroservis (bağımsız olarak ölçeklenebilir! ✅)
  • 1 PostgreSQL veritabanı (ölçeklenemez ❌)
  • Her servis: 10 bağlantı havuzu boyutu
  • PostgreSQL max_connections: 100

Matematik:

  • 20 servis × 10 bağlantı = 200 gerekli
  • Maksimum kullanılabilir: 100
  • Sonuç: Ölçeklendirme sırasında bağlantı kıtlığı

Gerçekte ne oldu:

  • A, B, C servisleri tüm bağlantıları kaptı
  • D-T servisleri: "bağlantı reddedildi"
  • Sağlık kontrolleri başarısız oldu
  • Pod'lar yeniden başladı, daha fazla bağlantı kaptı
  • Ölüm sarmalı

Düzeltme:

  • Bağlantı havuzu için PgBouncer
  • Servis başına bağlantı limitleri
  • Okuma ağırlıklı servisler için okuma kopyaları
  • Sonunda: servis başına veritabanı deseni

Ders: Paylaşılan bir veritabanına sahip "mikroservisler", fazladan adımlarla dağıtılmış bir monolittir.


← Alınan Derslere Dön