微服务架构-Eureka服务注册与发现 源码解读

本文深入探讨了微服务架构中的Eureka服务注册与发现机制,通过源码解读,揭示其实现细节,包括服务端的启动过程和客户端的注册流程。
摘要由CSDN通过智能技术生成
<!--Eureka 服务注册和发现组件 开始主要用于亚马逊的AWS平台 分为服务注册中心和客户端 -->

<!--为什么选择Eureka?
     1.他是Netflix公司开源产品,经历生产环境考验,以及3年时间不短迭代,非常稳定
     2.他是springcloud首选推荐的服务注册与发现组件,可以和其他组件无缝对接
     3.他和其他组件,如负载均衡组件Ribbon,熔断器组件Hystrix,熔断器监控组件Hystrix Dashboard,熔断器聚合监控组件Turbine组件以及网关组件Zuul相互配合
       很容易实现服务注册与发现,负载均衡,熔断和智能路由等功能-->

<!--Eureka服务过程
     首先需要一个服务注册中心Eureka Server,服务提供者Eureka Client向服务注册中心Eureka Server注册,将自己的信息(如服务名和服务的ip地址等)通过Rest API
     的形式提交给服务注册中心Eureka Server。同样,服务消费者也可以向服务注册中心Eureka server注册,同时,服务消费者获得一份服务注册列表信息,该列表包含所有
     向服务注册中心Eureka server注册服务的信息。获取服务注册列表之后服务消费者就知道服务提供者的ip,就可以通过http调度来消费服务提供者的服务-->
* 1.register 注册服务
*   当Eureka client向Euteka server注册时,会提供自身的元数据,比如 ip 端口 运行状况指标的url,主页地址等信息
*
* 2.Renew   服务续约
*   Eureka Client默认情况下会每隔30秒发送一次心跳进行续约,通过服务续约,Eureka server会知道Eureka client可用
*   如果Eureka server90秒没有收到Eureka client的心跳,Eureka server会将Eureka client实例从服务列表中去除。
*
* 3.Fetch Registeries 获取服务注册列表信息
*   Eureka client从Eureka server获取注册列表信息,并将其缓存在本地,Euraka client会从服务注册列表中获取其他服务的信息
*   ,从而进行远程调用,该信息定时更新(30秒一次),每次返回信息和缓存信息不同,Euraka client会自己处理。如果由于某种
*   原因导致注册列表信息不能完全匹配,client会重新获取注册列表信息。client和server可以使用JSON和XML进行数据通信,默认
*   使用JSON格式获取服务注册列表信息
*
* 4.Cancel 服务下线
*   client会向server发送下线请求,发送之后,该实例会从服务注册列表中剔除,该下线请求不会主动完成,需要在程序关闭时调
*   用代码 DiscoveryManager.getInstance().shutdownComponent();
*
* 5.Eviction  服务剔除
*   client连续90秒没有向client发送服务续约,即,心跳。服务将被从服务注册列表中剔除。
*
*
* 高可用架构
*   Client向server注册,将客户端的信息提交给server,然后client通过心跳来续约服务,如果某个client不能持续续约,大概90
*   秒后将从服务注册列表中去除。服务注册列表和服务注册信息会被复制到集群中每一个Eureka Server节点。同时,来自任何区
*   域的Euruka Client都可以获得整个系统的服务注册列表,根据这些注册列表信息,可以远程调用其他服务来消费
*
*
* 为什么Eureka Client获取服务实例那么慢
*   1.Eureka client注册延迟
*     client启动之后并不是立即向server注册的,而是有一个延迟向server注册的时间,默认延迟时间是40秒,源码中解读
*   2.Eureka Server响应缓存
*     Server每30秒更新一次响应缓存,可以通过配置来修改。
*   3.Eureka Client的缓存
*     Eureka client保留注册表信息缓存,也是30秒更新一次。
*   4.LoadBalancer的缓存
*     Ribbon的负载均衡从本利获取服务注册列表信息,Ribbon本身也维护了缓存,避免每一次都需要从client去拿注册列表。此缓
*     存也是30秒刷新一次。

实现步骤

服务端

/**
 * 1.添加Eureka Server依赖  spring-cloud-starter-eureka-server
 *
 * 2.配置注册中心地址
 *   注:服务注册中心默认会向自己注册,禁止注册自己   register-with-eureka: false
 *                                                          fetch-registry: false
 *
 * 3.配置服务中心注解 @EnableEurekaServer
 *
 */

客户端

/**
 * 1.添加Eureka Server依赖  spring-cloud-starter-eureka
 *
 * 2.Euraka Client注册名称
 *
 * 3.配置服务中心地址  defaultZone: http://localhost:8671/eureka/
 *
 * 3.配置服务中心注解 @EnableEurekaClient
 *
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值