有三个角色:服务提供方、服务发现组件、服务请求方
一、服务提供方:
1)向组件注册服务信息(IP地址、端口、接口信息等)
2)会向组件进行心跳访问,一旦组件几个周期都没有收到某个服务实例的心跳,则剔除这个服务的该服务实例
3)服务实例在关闭的时候还会自主调用组件,将自身服务实例从这个服务中剔除
二、服务发现组件:
提供的能力:存储、定时删除、调用删除、查询
三、服务请求方:
1)向组件注册请求方信息(IP地址、端口等),方便后续梳理调用链
2)从组件处获取服务提供方的信息,缓存下来,每过一段时间更新缓存
3)如果无法访问到服务提供方,也会立刻重新拉取服务提供方的信息
4)请求到服务提供方
可以充当服务发现的组件有很多:Zookeeper ,Consul , Eureka 等