服务发现详解(定义作用及原理框架)

服务发现详解(定义作用及原理框架)-mikechen

服务发现定义

服务发现是微服务架构中的一个关键概念,它指的是在分布式系统中动态地发现和识别可用的服务实例。

服务发现即通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。

如下图所示:

服务发现详解(定义作用及原理框架)-mikechen

ServiceA去注册中心获取服务实例的信息,这就是服务发现。

 

服务发现作用

在传统的单体应用中,通常会使用硬编码的方式来指定服务的位置和地址。

而在微服务架构中,由于服务数量多、实例动态变化,硬编码的方式不再适用,因此需要引入服务发现机制。

服务发现的作用:是使服务能够自动注册、注销和发现其他服务的实例,以便实现动态的服务调用和负载均衡。

 

服务发现原理

服务发现的原理主要基于以下几个关键步骤:

1.注册

服务发现详解(定义作用及原理框架)-mikechen

当一个服务实例启动时,它会向注册中心注册自己的信息,包括IP地址、端口号、服务名称、健康状态等。注册中心将这些信息存储在自己的注册表中。

 

2.发现

当需要调用其他服务时,服务消费方会向注册中心发送查询请求,请求指定服务的可用实例列表。

服务发现详解(定义作用及原理框架)-mikechen

注册中心根据注册表信息,返回满足条件的可用实例列表给服务消费方。

 

3.负载均衡

服务消费方从注册中心获取到可用实例列表后,根据负载均衡算法选择一个实例进行调用。

负载均衡算法可以根据实例的负载情况、权重等因素进行选择,以实现请求的分发和负载均衡。

 

4.监测与健康检查

注册中心会定期发送心跳检查请求到服务实例,用于检测实例的健康状态。

如果一个实例长时间没有响应心跳或被标记为不可用,注册中心会将其从可用实例列表中移除,保证服务消费方只获取到可用的实例信息。

 

5.动态更新

当服务实例的状态发生变化(如启动、关闭、下线、上线等),它会及时向注册中心发送注册或注销请求,以便更新注册表信息。

注册中心会根据实时的变化动态地更新可用实例列表,保证服务消费方获取到最新的服务实例信息。

 

服务发现框架

以下是一些常见的服务发现框架:

  1. Netflix Eureka:Eureka开源的服务发现组件,提供了服务注册与发现的功能。
  2. Apache ZooKeeper:Zookeeper一个分布式协调服务,可以用作服务注册中心。
  3. Consul:Consul一个开源的服务发现和配置工具,支持服务注册、健康检查和服务发现等功能。
  4. Etcd:Etcd一个分布式键值存储系统,也可以用作服务注册中心。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法