Service discovery
- Node.js kursu
- İleri seviye
- Ders 52/83
- 5 dk
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.
Başlangıç kodu
// registry olarak yeni bir Map oluştur
// buraya yaz
// user-service kaydını ekle
// buraya yaz
// adresi al ve yazdır
// buraya yazÖrnek çözüm
const registry = new Map();
registry.set("user-service", "10.0.0.5:3000");
console.log(registry.get("user-service"));Beklenen çıktı
10.0.0.5:3000
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Service discovery ne işe yarar?
registry.register(name, addr)- Servisi kapatır
- İstek sayısını sayar
- Servis adresini dinamik bulur Doğru cevap
- Veritabanı yedeği alır
Açıklama: Service discovery adresi dinamik bulur.
2 registry.set çağrısını tamamla
registry.set("user-service", "10.0.0.5:3000");
const addr = registry.____("user-service");
registry.set("user-service", "10.0.0.5:3000");
const addr = registry.get("user-service");
Açıklama: registry.get ile adres alınır.
3 Kavramı rolüne eşle
| Kavram | Anlamı |
|---|---|
registry |
Adresleri tutar |
register |
Servis açılırken kaydolur |
lookup |
Adresi sorar |
health check |
Ölü kopyaları temizler |