服务提供者地址查询
Open API:
SDK:
InstanceController中的list方法:
- 解析请求参数
- 通过doSrvIPXT返回服务列表数据
- 根据namespaceId、serviceName获得Service实例
- 从Service实例中基于srvIPs得到所有服务提供者实例
- 遍历组装JSON字符串并返回
Nacos服务地址动态感知原理
可以通过subscribe方法来实现监听,其中serviceName表示服务名、EventListener表示监听到的事件:
具体调用方式如下:
或者调用selectInstance方法,如果将subscribe属性设置为true,会自动注册监听:
Nacos客户端中有一个HostReactor类,它的功能是实现服务的动态更新,基本原理是:
- 客户端发起时间订阅后,在HostReactor中有一个UpdateTask线程,每10s发送一次Pull请求,获得服务端最新的地址列表
- 对于服务端,它和服务提供者的实例之间维持了心跳检测,一旦服务提供者出现异常,则会发送一个Push消息给Nacos客户端,也就是服务端消费者
- 服务消费者收到请求之后,使用HostReactor中提供的processServiceJSON解析消息,并更新本地服务地址列表







