微服务服务发现架构示意图

前言

分布式架构之中,定位某个服务的具体物理地址称为服务发现。服务发现主要解决了,分布式服务之间互相调用(没一个微服务即是服务提供者,也可以是服务消费者)以及服务集中管理、监控问题。服务发现,让服务的消费者和提供者之间解耦,且透明化服务的发现过程。这一特点主要体现在,某项目中不同模块微服务实例(某个已启动的微服务,类似Java中实例和类之间关系)数量不同,但消费者使用时不需要考虑调用不同微服务的实例之间的差异,且开发者可以根据各个微服务吞吐量等,动态的从服务池之中新增、移除某个微服务的实例,替代以往通过调整单一服务器配置的方式,以实现系统吞吐量等指标提高,解决系统高负载下响应慢等问题,也可根据系统之中不同业务的执行频率、压力,调整不同服务的实例数。

服务发现架构

示意图如下:
微服务服务发现架构示意图
说明:
1.每个服务实例向发现层某个节点注册之后,发现层节点之间通过点对点传播服务注册信息,共享服务注册信息。
2.消费者与服务之间透明,不能直接获取服务信息。
3.服务发现完全依赖于服务发现层,很脆弱,实际开发中一般使用客户端负载均衡。

客户端负载均衡方式的服务架构

示意图如下:
微服务服务发现架构示意图
说明
1.消费者需要调用某个服务时,通过服务发现层查询服务并将服务信息缓存到本地。
2.再次调用时,消费者会查询本地缓存信息,并使用一定的负载均衡算法,轮询,随机等,调用不同服务实例。
3.客户端定期与服务发现层通信,及时刷新服务信息。
4.调用过程中,出现调用失败情况,客户端会立即与发现层通信,获取最新的服务信息。