微服务学习(二) 服务发现

一. 服务发现的好处

  1. 快速地对在环境中运行的服务实例数量进行水平伸缩.因为服务消费者不知道实际服务实例的物理位置,所以可以冲服务池中添加/移除实例.
  2. 提高应用程序弹性.如果微服务实例不健康/不可用,可以在微服务发现引擎中移除实例.使得不健康/不可用的服务造成的损失最小化.

二. 使用DNS和负载均衡器的传统服务位置解析模型

负载均衡器在收到消费者请求后,根据访问地址,在路由表中定位物理地址.找到目标后,将请求转发到服务层的某一个服务器中.
为了实现高可用性,辅助负载均衡器处于空闲状态.通过ping主负载均衡器,检测它是否可用.如果不可用,辅助负载均衡器会代替主负载均衡器的工作.
微服务下的传统服务位置解析器的缺点:

  • 1. 单点故障
    如果负载均衡器出现了问题,依赖它的所有服务都会出现问题.
  • 2. 有限的水平可伸缩性
  • 3. 静态管理
    大多传统负载均衡器不是为了快速注册和注销服务设计的.它们使用集中式数据库存储规则的路由,使用供应商专有API添加路由.
  • 4. 复杂
    负载均衡器充当服务的代理,它需要将服务消费者的请求映射到物理服务.这增加了服务基础设施的复杂度.而且开发人员必须手动定义和部署映射规则.新服务的注册是手动完成的,并非新服务的实例启动时完成.

三. 基于云的微服务的服务发现

  1. 服务发现的特点:
    • 高可用
      服务发现集群跨多个节点,共享服务查找.一个节点不可用也不会影响服务查找工作
    • 点对点
      服务发现集群中每个节点共享服务实例的状态
    • 负载均衡
    • 有弹性
      服务发现的客户端在本地缓存服务信息.在有缓存的情况下, 如果服务发现服务不可用,可以用基于本地缓存中的信息来运行和定位服务.
    • 容错
      如果服务实例不健康,可以从可用服务列表中将该服务移除.
  2. 服务发现架构
    ![](https://img2020.cnblogs.com/blog/1364500/202104/1364500-20210430174807987-872733847.png)

    因为客户端会完全依赖于服务发现层查找和调用服务,所以有了更加健壮的基于客户端的负载均衡架构.

  3. 基于客户端负载均衡服务发现


    服务消费者调用服务的过程:
    1. 联系服务发现,获取它请求的所有服务实例,将实例缓存在本地.
    2. 当客户端调用一个服务时,先从本地缓存查找服务位置信息.客户端会使用简单的负载均衡算法,确保负载均衡.
    3. 客户端定期和服务发现练习,刷新本地缓存.

posted @ 2021-04-30 17:47  Monstro  阅读(160)  评论(0)    收藏  举报