Node.js
Service discovery
Service discovery desenini öğrenirsin.
Service discovery
Service discovery, servislerin birbirini bulmasını sağlayan mekanizmadır. Sabit IP yerine, her servis kendini bir kayıt defterine (registry) bildirir; diğer servisler de oradan adresini alır. Bu, dinamik ortamlarda (konteyner, otomatik ölçekleme) zorunludur.
Örnek: user-servisi açılırken registry.register("user-service", "10.0.0.5:3000") ile kaydolur. sipariş servisi user-servisini çağıracağı zaman registry.lookup("user-service") ile adresini alır. Popüler araçlar: Consul, etcd, Eureka. Service discovery olmadan her servis diğerinin adresini sabit tutar; bu da kopya sayısının değiştiği ortamlarda çalışmaz. Dinamik keşif, yeni kopyalar otomatik eklenince onların da çağrılabilmesini sağlar.
Registry deseni
Bir registry, servis adını adrese eşleyen basit bir sözlüktür. Servisler açılırken kaydolur, kapanırken kaydı silinir. Çağrı yapan servis her seferinde registry'den güncel adresi sorar.
Örnek: const registry = new Map(); registry.set("user-service", "10.0.0.5:3000"); registry.get("user-service");. Üretimde bu daha gelişmiş bir araç (Consul) olur; ama ana fikir aynı. Registry'nin yüksek erişilir olması gerekir; yoksa tüm servis iletişimi durur. Sağlık kontrolü (health check) ile ölü kopyalar registry'den temizlenir. Bu, sistemin kendi kendini onarmasını sağlar.
Uygulama Basit registry yaz
Yeni bir Map'i registry değişkenine ata. registry.set("user-service", "10.0.0.5:3000") ile kayıt ekle. registry.get("user-service") ile adresi alıp console.log ile yazdır.
Örnek çözümü göster
const registry = new Map();
registry.set("user-service", "10.0.0.5:3000");
console.log(registry.get("user-service"));
Kendini test et
-
Service discovery ne işe yarar?
registry.register(name, addr)
- Servisi kapatır
- İstek sayısını sayar
- Servis adresini dinamik bulur
- Veritabanı yedeği alır
Cevabı göster
Servis adresini dinamik bulur — Service discovery adresi dinamik bulur.
-
registry.set çağrısını tamamla
registry.set("user-service", "10.0.0.5:3000");
const addr = registry.____("user-service");
Cevabı göster
registry.set("user-service", "10.0.0.5:3000");
const addr = registry.get("user-service");
-
Kavramı rolüne eşle
- registry
- Adresleri tutar
- register
- Servis açılırken kaydolur
- lookup
- Adresi sorar
- health check
- Ölü kopyaları temizler
Sıradaki ders: Circuit breaker