← Back to microservices patterns mapdiscovery
🔍
Microservices Pattern
Service Discovery
Services register and discover dynamic endpoints instead of hardcoding hostnames or IPs.
Detailed Description
In containerized systems, service instances appear and disappear constantly. Discovery makes this normal.
Kubernetes DNS handles a lot of this automatically, while service registries offer richer metadata and health awareness.
Visual Diagram
Client-Side Discovery
ServiceA → query [Service Registry]
← "UserSvc is at 10.0.1.5:8080"
→ call 10.0.1.5:8080 directly
Server-Side Discovery
ServiceA → [Load Balancer]
LB queries registry internally
→ routes to correct instance
Registry: Consul, Eureka, K8s DNSTradeoffs
Pros
Dynamic scaling, no hardcoded config
Cons
Registry becomes critical infrastructure
Examples: Consul, Kubernetes DNS, Eureka
Client-Side Discovery
ServiceA -> query [Service Registry]
<- "UserSvc is at 10.0.1.5:8080"
-> call 10.0.1.5:8080 directly
Server-Side Discovery
ServiceA -> [Load Balancer]
LB queries registry internally
-> routes to correct instance
Registry: Consul, Eureka, K8s DNS