Spring Cloud Eureka的示例分析

60次阅读
没有评论

共计 1968 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 Spring Cloud Eureka 的示例分析,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于 Netflix Eureka 做了二次开发,主要负责完成微服务架构中的服务治理功能。

Eureka 基础架构三个核心要素

 1:服务注册中心

    2:服务提供者

    3:服务消费者

    服务治理主要分为:

    1:服务注册:

    在服务治理框架中,通常都会构建一个服务注册中心,每个服务提供者需要向注册中心,登记自己的注册信息。比如 IP,端口号,版本号,服务名,通信协议等等附加信息告知注册中心,注册中心会根据服务名,进行分类服务清单。例如下图:

    eureka 维护分类服务清单,是通过一个双层 Map, 第一层 Map 的 key 就是服务名,例如上图的 HELLO-SERVICE, 第二层的 Key 就是具体的实例信息,例如上图的 DLBOOH……..:hello-service:8081

    2:服务发现

    由于在服务治理框架下运作程序,服务间的调用不在是通过指定具体的实例地址来实现,服务间的调用通过服务名来调用,例如:http://hello-service:8081/hello。所以当服务调用方 想要调用服务提供方的接口时,服务调用方是不知道服务提供方的具体实例地址的,    因此调用方需要向注册中心 Eureka 咨询服务,并获取所有服务的实例清单。例如:现有服务 B 想要调用服务 A,服务 B 就需要向注册中心发起请求获取服务 A 的实例清单,注册中心返回服务 A 的实例清单,然后服务 B 会从清单中以某种策略轮询访问清单中的的实例,实现负载均衡的效果   访问方式可以通过  Ribbon。

    实际生产项目中,不会在每一次请求中都获取服务列表清单,这样做效率低下。实际场景中缓存和服务剔除等机制也会有一些不同的实现方式

        3:服务同步

    当 Eureka 实现高可用后,服务提供者可分别注册到集群中的不同服务注册中心上,也就是说 它们的信息分别被不同的注册中心维护,此时由于服务中心互相注册为服务(高可用),当服务提供者发送注册请求到一个服务注册中心时,它会将该请求转发同步给集群中的其他注册中心,从而实现服务注册中心的服务同步。通过服务同步,两个服务提供者的服务信息就可以通过这两台服务注册中心中的任意一台获取到

  4:服务续约

    在注册完服务之后,服务提供者会维护一个心跳用来持续告诉 Eureka“我还活着”,以防止 Eureka 的剔除服务将该服务从列表清单中排除出去,我们称该操作为服务续约

    关于服务续约有两个重要的属性,

    ## 用于定义服务续约任务的调用间隔时间,默认为 30 秒    

 eureka.instance.lease-renewal-interval-in-seconds=30

    ## 参数用于定义服务失效的时间,默认为 90 秒

 eureka.instance.lease-expiration-duration-in-seconds=90

           5:获取服务

    当服务消费者程序启动时,它会发送一个 Rest 请求给注册中心,来获取上面注册的服务清单,为了性能考虑,Eureka 会维护一份只读的服务清单来返回给客户端,同时该缓存清单会每隔 30 秒更新一次。

    获取服务是服务消费者的基础,所以必须确保 eureka.client.fetch-registry=true 默认为 true,若希望修改缓存清单的更新时间,可以通过 eureka.client.registry-fetch-interval-seconds=30 进行修改,默认 30 秒,参数单位秒

   6:服务调用

    获取服务清单后,通过服务名可以获取实例的名和实例的元数据(ip,port 等等)利用 Ribbon 实现轮询方式调用服务提供方。

   7:    服务下线

      当服务下线后,正常情况下 我们是不希望,服务消费方继续调用已经下线的服务的,所以再服务提供方正常关闭时,会触发一个服务下线的 REST 请求,告诉 Eureka“我要下线了”。Eureka 收到请求后,会将此服务设置为(DOWN),并将此消息广播到出去,更新缓存清单。

    8:服务中心的失效剔除

    当服务非正常关闭时,比如机器 Down 了,断电,内存溢出,网络故障等等。这时候是不会触发服务下线的 REST 的请求,为了将这些已经无法提供的服务剔除,Eureka Server 会在启动时,创建一个定时任务,默认每隔 60 秒将清单中超时没有续约的剔除。

关于“Spring Cloud Eureka 的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计1968字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)