Global SRV Record Checker
Trong khi các bản ghi A và AAAA tiêu chuẩn chỉ giới hạn ở việc dịch một domain name sang địa chỉ IP, bản ghi SRV (Service) lại phức tạp hơn rất nhiều. Được định nghĩa trong RFC 2782, bản ghi SRV thiết lập một quy chuẩn để định nghĩa hostname chính xác, giao thức, và số port cụ thể cho một số ứng dụng mạng. Đây chính là xương sống của các enterprise service discovery, được ứng dụng cực nhiều cho Microsoft Active Directory, routing SIP/VoIP, XMPP instant messaging, và các kiến trúc server nhiều người chơi quy mô lớn (như việc resolve _minecraft._tcp.example.com).
Cú pháp và Port Binding
Một bản ghi SRV rất dễ nhận diện nhờ cấu trúc định dạng cứng nhắc của nó. Tên bản ghi phải bắt đầu bằng một dấu gạch dưới (underscore) biểu thị service, tiếp theo là dấu gạch dưới biểu thị transport protocol, được nối vào base domain (ví dụ: _sip._tls.example.com). Payload trả về cung cấp 4 dữ liệu cụ thể cho client đang kết nối: Priority, Weight, Target Port, và Target Hostname (Canonical). Cơ chế này cho phép các admin chạy nhiều service khác nhau trên cùng một địa chỉ IP sử dụng các port phi tiêu chuẩn, mà không bắt buộc end-user phải ghi nhớ và gõ số port vào client của họ.
Native Failover và Weighted Load Balancing
Tính năng mạnh mẽ nhất của bản ghi SRV là logic routing tự nhiên nhiều tầng (multi-tiered). Số nguyên Priority hoạt động y hệt như bản ghi MX; các client kết nối sẽ luôn ưu tiên cố gắng negotiate handshake với server có độ ưu tiên thấp nhất (chỉ số nhỏ nhất) trước. Việc này giúp thiết lập khả năng dự phòng failover tức thì. Nếu nhiều bản ghi có chung một giá trị Priority, số nguyên Weight sẽ được kích hoạt. Giá trị này hoạt động như một Load Balancer theo tỷ lệ. Nếu Server A có weight là 75 và Server B có weight là 25, ứng dụng client sẽ route 75% các connection mới về phía Server A. Khả năng này cho phép các engineer định tuyến traffic một cách thông minh xuyên suốt các cụm (cluster) có dung lượng phần cứng khác nhau.
Tại sao HTTP bỏ qua bản ghi SRV
Một câu hỏi phổ biến từ các junior developer là tại sao web traffic (HTTP/HTTPS) không sử dụng các bản ghi SRV để đạt được native load balancing. Câu trả lời mang đậm tính lịch sử. Tới thời điểm các bản ghi SRV được tiêu chuẩn hóa, những quy ước kiến trúc quy định HTTP phải chạy nghiêm ngặt trên port 80 và HTTPS chạy trên port 443 đã được hardcode gần như ở mọi trình duyệt web trên thế giới. Việc chuyển đổi web sang sử dụng SRV lookup sẽ làm tăng penalty cho bước resolution rất lớn (do đòi hỏi thêm các round-trip) nhưng đổi lại chẳng được bao nhiêu lợi ích. Thay vào đó, HTTP dựa vào các application-layer load balancer và Anycast IP routing.