Reliability & Operations
Service Discovery
Service discovery 与注册发现
Service discovery 用于在网络中发现服务实例。Service Discovery Protocol (SDP) 是实现资源发现的网络标准。
为什么需要 Service Discovery?
Monolith 里服务间直接调用;但在 microservices 场景下,服务实例数量和位置会动态变化(虚拟机/容器),因此需要一种机制让 client 能找到动态变化的服务实例。
Implementations
两种主流模式:
Client-side discovery

Client 通过查询 service registry 获取服务位置。
Server-side discovery

Client 通过中间层(如 load balancer)访问服务,LB 负责把请求转发到可用实例。
Service Registry
Service registry 是保存服务实例网络位置的数据库,需要高可用且实时更新。
Service Registration
常见注册方式:
Self-Registration
服务实例自行注册/注销,并通过 heartbeat 保活。
Third-party Registration
Registry 通过 polling 或订阅事件感知实例变更,自动注册或注销。
Service mesh
服务间通信随着规模增长会变复杂。Service mesh 提供可管理、可观测、安全的服务通信能力,并与 service discovery 协作发现服务。
常见 service mesh 技术:Istio、Envoy