微服务学习(二) 服务发现
一. 服务发现的好处
- 快速地对在环境中运行的服务实例数量进行水平伸缩.因为服务消费者不知道实际服务实例的物理位置,所以可以冲服务池中添加/移除实例.
- 提高应用程序弹性.如果微服务实例不健康/不可用,可以在微服务发现引擎中移除实例.使得不健康/不可用的服务造成的损失最小化.
二. 使用DNS和负载均衡器的传统服务位置解析模型

负载均衡器在收到消费者请求后,根据访问地址,在路由表中定位物理地址.找到目标后,将请求转发到服务层的某一个服务器中.
为了实现高可用性,辅助负载均衡器处于空闲状态.通过ping主负载均衡器,检测它是否可用.如果不可用,辅助负载均衡器会代替主负载均衡器的工作.
微服务下的传统服务位置解析器的缺点:
- 1. 单点故障
如果负载均衡器出现了问题,依赖它的所有服务都会出现问题. - 2. 有限的水平可伸缩性
- 3. 静态管理
大多传统负载均衡器不是为了快速注册和注销服务设计的.它们使用集中式数据库存储规则的路由,使用供应商专有API添加路由. - 4. 复杂
负载均衡器充当服务的代理,它需要将服务消费者的请求映射到物理服务.这增加了服务基础设施的复杂度.而且开发人员必须手动定义和部署映射规则.新服务的注册是手动完成的,并非新服务的实例启动时完成.
三. 基于云的微服务的服务发现
- 服务发现的特点:
- 高可用
服务发现集群跨多个节点,共享服务查找.一个节点不可用也不会影响服务查找工作 - 点对点
服务发现集群中每个节点共享服务实例的状态 - 负载均衡
- 有弹性
服务发现的客户端在本地缓存服务信息.在有缓存的情况下, 如果服务发现服务不可用,可以用基于本地缓存中的信息来运行和定位服务. - 容错
如果服务实例不健康,可以从可用服务列表中将该服务移除.
- 高可用
- 服务发现架构
因为客户端会完全依赖于服务发现层查找和调用服务,所以有了更加健壮的基于客户端的负载均衡架构.
- 基于客户端负载均衡服务发现
服务消费者调用服务的过程:
1. 联系服务发现,获取它请求的所有服务实例,将实例缓存在本地.
2. 当客户端调用一个服务时,先从本地缓存查找服务位置信息.客户端会使用简单的负载均衡算法,确保负载均衡.
3. 客户端定期和服务发现练习,刷新本地缓存.

浙公网安备 33010602011771号