服务注册和发现学习
转自:https://zhuanlan.zhihu.com/p/439331952(讲的很好),https://zhuanlan.zhihu.com/p/32027014
1.介绍
服务发现:精准地定位需要调用的服务ip以及端口。主要包括2部分:
- 服务注册 — 存储服务的主机和端口信息
- 服务发现 — 允许其他用户发现服务注册阶段存储的信息,不管是服务新增和服务删减都能实现自动发现。(也就是一个增删改查的过程。)
在服务启动的时候,先去进行注册,并且定时反馈本身功能是否正常。由服务发现机制统一负责维护一份正确或者可用的服务清单。 还需要能够提供健康监控、多种查询、实时更新和高可用性等。
常见的服务发现 :zookeeper\consul\etcd。
2.服务注册
- 自注册:服务启动时注册到服务注册中心,在服务执行过程中,通过不断的发送心跳信息,来通知注册中心,本服务运行正常。注册中心只要超过一定的时间没有收到心跳消息,就可以将这个服务状态判断为异常,进而移除该服务的注册记录。
- 第三方注册:
//两者不互斥,可以结合使用。
3.服务发现
服务发现机制的关键部分是注册中心。注册中心提供管理和查询服务注册信息的API。当服务提供者的实例发生变更时(新增/删除服务),服务注册表更新最新的状态列表,并将其最新列表以适当的方式通知给服务消费者(即进行实时服务信息的推送)。分为客户端发现和服务端发现,本质区别在于客户端是否保存服务列表信息。
3.1 客户端发现
在客户端模式下,如果要进行微服务调用,首先要进行的是到服务注册中心获取服务列表,然后再根据调用端本地的负载均衡策略(由客户端控制路由策略),进行服务调用。
优点:
- client端可以定制化负载均衡算法。
- 可以实现点对点的网状通讯,即去中心化的通讯。可以有效避开单点造成的性能瓶颈和可靠性下降等问题。
缺点:
3.2 服务端发现
在服务端模式下,调用方直接向服务注册中心进行请求,服务注册中心再通过自身负载均衡策略,对微服务进行调用。这个模式下,调用方不需要在自身节点维护服务发现逻辑以及服务注册信息。
优点:服务的发现逻辑对客户端是透明的。
缺点:需要额外部署和维护高可用的负载均衡器;变为集中式,注册中心和负载均衡器成为瓶颈;
4.难点
转自:https://zhuanlan.zhihu.com/p/161277955
目前的结局方案:
//目前不理解,什么事watcher机制?不懂。