本文主要是介绍体系化认识微服务之四:服务注册发现机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
服务调用者要在众多的微服务中调用具体的服务提供者,必然涉及到负载均衡的问题,根据负载均衡的实现可以分为集中式LB、进程内LB和独立进程LB。
集中式LB
LB上有所有的服务地址配置,当服务消费者调用某个服务的时候,LB会根据负载均衡策略(随机、轮询等)将请求转发到具体的服务上。此外,服务调用者还需要知道LB的地址,通常的做法是运维在服务器上配置一个DNS域名或者IP,这个域名指向LB。
这种实现方式的问题每次调用都要访问LB,LB存在单点问题,无法水平扩展
进程内LB
为了解决每次服务调用都经过LB的不足,把LB放在客户端可以很好解决,这里多了一个注册表,服务提供方启动时,首先将服务地址注册到服务注册表,定期发送心跳包到服务注册表,检查存活状态。
服务消费方要访问某个服务时,经历以下过程:
- 服务消费者在启动时从服务注册表获取需要的服务注册信息
- 将服务提供者注册信息缓存在本地(客户端LB)
- 监听服务提供者注册信息的变更,如接收到服务注册中心的服务变更通知,则在本地缓存中更新服务的注册信息
- 根据本地缓存中的服务注册信息构建服务调用请求,并根据负载均衡策略(随机负载均衡
这篇关于体系化认识微服务之四:服务注册发现机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!