UP | HOME

服务发现

Table of Contents

1. client-side 服务发现

当向服务端发起请求时,客户端向服务注册中心查询后端服务的地址列表(注册中心知道所有服务的实例地址)。

  1. 服务启动时向注册中心注册实例地址;
  2. 客户端向服务端发起请求时,向注册中心查询后端服务地址列表;
  3. 客户端做 Load balance(选择一个后端实例);

2. server-side 服务发现

  1. 服务启动时向注册中心注册实例地址;
  2. 客户端向服务器发起请求时,向路由器(或者负载均衡器)发出请求
  3. 路由器(router)向注册中心查询后端实例地址;
  4. 路由器(基于某种策略)选择一个后端地址发出请求;

AWS 的 ELB 就是一个 router,在一些集群方案中,Kubernetes 是通过在集群中的每个机器中都运行一个代理(kube-proxy)来负责服务发现和触达。

路由器必须支持必要通信协议(HTTP、gRPC、Thrift等),除非他是基于 TCP 的 router。

3. 服务注册中心(registry)

registry 是一个服务的数据库,包括实例和位置。服务实例在启动时注册(register),关闭时注销(deregister)。服务的客户端和 路由器从这里查询可用的服务地址。注册中心可能会调用服务实例健康检测来验证是否能够处理请求。

First created: 2022-03-09 14:01:54
Last updated: 2022-12-11 Sun 12:49
Power by Emacs 29.0.91 (Org mode 9.6.6)