Global SRV Kaydı Kontrol Aracı
Standart A ve AAAA kayıtları bir alan adını bir IP adresine çevirmekle sınırlıyken, SRV (Service) kaydı çok daha karmaşıktır. RFC 2782'de tanımlanan SRV kaydı, belirli ağ uygulamaları için kesin host adını, protokolü ve tam port numarasını tanımlamak için standartlaştırılmış bir yol oluşturur. Microsoft Active Directory, SIP/VoIP routing, XMPP anlık mesajlaşma ve devasa çok oyunculu sunucu mimarileri (örneğin _minecraft._tcp.example.com çözümlemesi) için yoğun olarak kullanılan kurumsal hizmet keşfinin (service discovery) omurgasıdır.
Sözdizimi (Syntax) ve Port Bağlama (Binding)
Bir SRV kaydı, katı biçimlendirme yapısıyla anında tanınabilir. Kayıt adı, hizmeti belirten bir alt çizgiyle başlamalı, ardından aktarım protokolünü belirten bir alt çizgi gelmeli ve temel alan adına (örneğin, _sip._tls.example.com) eklenmelidir. Ortaya çıkan Payload, bağlanan istemciye dört özel veri noktası sunar: Öncelik (Priority), Ağırlık (Weight), hedef Port ve kurallı (canonical) hedef Host adı. Bu, yöneticilerin son kullanıcıların istemcilerine port numaralarını ezberleyip yazmalarını gerektirmeden, standart olmayan portlar kullanarak tek bir IP adresi üzerinde birden fazla farklı hizmet çalıştırmasına olanak tanır.
Yerel Failover ve Ağırlıklı Load Balancing
SRV kaydının en güçlü özelliği, yerel, çok katmanlı routing mantığıdır. Priority (Öncelik) tam sayısı, bir MX kaydı gibi çalışır; bağlanan istemciler her zaman önce en düşük öncelikli sunucuyla bir handshake görüşmesi yapmaya çalışır. Bu anında failover yedekliliği sağlar. Birden fazla kayıt tamamen aynı Önceliği paylaşıyorsa, Weight (Ağırlık) tam sayısı tetiklenir. Bu, orantılı bir Load Balancer olarak çalışır. Sunucu A'nın ağırlığı 75 ve Sunucu B'nin ağırlığı 25 ise, istemci uygulama yeni bağlantıların %75'ini Sunucu A'ya yönlendirecektir. Bu, mühendislerin trafiği değişen donanım kapasitelerine sahip kümeler (cluster) arasında akıllıca yönlendirmesine olanak tanır.
HTTP Neden SRV Kayıtlarını Görmezden Gelir?
Kıdemsiz (junior) geliştiricilerden gelen yaygın bir soru, web trafiğinin (HTTP/HTTPS) yerel Load Balancing elde etmek için neden SRV kayıtlarını kullanmadığıdır. Cevap tamamen tarihseldir. SRV kayıtları standartlaştırıldığında, HTTP'nin kesinlikle 80 numaralı portta ve HTTPS'nin 443 numaralı portta çalışması şeklindeki mimari gelenekler evrensel olarak her web tarayıcısına çoktan kodlanmıştı (hardcoded). Web'i SRV lookup'larına kaydırmak, marjinal bir fayda için devasa bir çözümleme cezası (ek gidiş-dönüş / round-trip gerektirerek) eklerdi. Bunun yerine, HTTP uygulama katmanı (application-layer) Load Balancer'larına ve Anycast IP routing'e güvenir.