Trong hệ động, instance của service liên tục thay đổi IP/port (autoscale, deploy, container). Service discovery giúp một service tìm được địa chỉ của service khác mà không hardcode.
Thành phần trung tâm là service registry (Consul, etcd, Eureka): mỗi instance đăng ký khi khởi động, gỡ khi tắt, và có health check để loại instance chết.
Hai kiểu:
- Client-side discovery: client hỏi registry rồi tự chọn instance và cân bằng tải. Ít hop hơn nhưng logic nằm ở client.
- Server-side discovery: client gọi qua load balancer/gateway, thành phần này tra registry và định tuyến. Client đơn giản; phổ biến với Kubernetes (Service + kube-proxy/DNS).