【Java进阶营】【SpringCloud技术专题】「Eureka源码分析」从源码层面让你认识Eureka工作流程和运作机制(上)

前言介绍

了解到了SpringCloud,大家都应该知道注册中心,而对于我们从过去到现在,SpringCloud中用的最多的注册中心就是Eureka了,所以深入Eureka的原理和源码,接下来我们要进行讲解下eureka的源码分析,由此应运而产生的本章节的内容。

基本原理

Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

Eureka Client 是一个Java 客户端,用于简化与Eureka Server的交互,客户端同时也具备一个内置的、使用轮询负载算法的负载均衡器。

在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒),如果Eureka Server在多个心跳周期(默认3个周期)没有收到某个节点的心跳,Eureka Server 将会从服务注册表中把这个服务节点移除(默认90秒)。

Eureka Server之间将会通过复制的方式完成数据的同步;

Eureka Client具有缓存的机制,即使所有的Eureka Server都挂掉的话,客户端依然可以利用缓存中的信息消费其它服务的API;

启动流程分析
从EurekaServer 启动的流程日志入手分析:

2021-01-21 18:14:17.635 INFO 5288 — [ main] o.s.j.e.a.AnnotationMBeanExporter : Located managed bean ‘environmentManager’: registering with JMX server as MBean [org.springframework.cloud.context.environment:name=environmentManager,type=EnvironmentManager]
2021-01-21 18:14:17.650 INFO 5288 — [ main] o.s.j.e.a.AnnotationMBeanExporter : Located managed bean ‘restartEndpoint’: registering with JMX server as MBean [org.springframework.cloud.context.restart:name=restartEndpoint,type=RestartEndpoint]
2021-01-21 18:14:17.661 INFO 5288 — [ main] o.s.j.e.a.AnnotationMBeanExporter : Located managed bean ‘refreshScope’: registering with JMX server as MBean [org.springframework.cloud.context.scope.refresh:name=refreshScope,type=RefreshScope]
2021-01-21 18:14:17.674 INFO 5288 — [ main] o.s.j.e.a.AnnotationMBeanExporter : Located managed bean ‘configurationPropertiesRebinder’: registering with JMX server as MBean [org.springframework.cloud.context.properties:name=configurationPropertiesRebinder,context=335b5620,type=ConfigurationPropertiesRebinder]
2021-01-21 18:14:17.683 INFO 5288 — [ main] o.s.j.e.a.AnnotationMBeanExporter : Located managed bean ‘refreshEndpoint’: registering with JMX server as MBean [org.springframework.cloud.endpoint:name=refreshEndpoint,type=RefreshEndpoint]
2021-01-21 18:14:17.926 INFO 5288 — [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 0
2021-01-21 18:14:17.927 INFO 5288 — [ main] c.n.e.EurekaDiscoveryClientConfiguration : Registering application unknown with eureka with status UP
2021-01-21 18:14:17.927 INFO 5288 — [ Thread-10] o.s.c.n.e.server.EurekaServerBootstrap : Setting the eureka configuration…
2021-01-21 18:14:17.948 INFO 5288 — [ Thread-10] o.s.c.n.e.server.EurekaServerBootstrap : isAws returned false
2021-01-21 18:14:17.949 INFO 5288 — [ Thread-10] o.s.c.n.e.server.EurekaServerBootstrap : Initialized server context
2021-01-21 18:14:17.949 INFO 5288 — [ Thread-10] c.n.e.r.PeerAwareInstanceRegistryImpl : Got 1 instances from neighboring DS node
2021-01-21 18:14:17.949 INFO 5288 — [ Thread-10] c.n.e.r.PeerAwareInstanceRegistryImpl : Renew threshold is: 1
2021-01-21 18:14:17.949 INFO 5288 — [ Thread-10] c.n.e.r.PeerAwareInstanceRegistryImpl : Changing status to UP
2021-01-21 18:14:17.958 INFO 5288 — [ Thread-10] e.s.EurekaServerInitializerConfiguration : Started Eureka Server
2021-01-21 18:14:18.019 INFO 5288 — [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8761 (http)
2021-01-21 18:14:18.020 INFO 5288 — [ main] c.n.e.EurekaDiscoveryClientConfiguration : Updating port to 8761
2021-01-21 18:14:18.023 INFO 5288 — [ main] c.s.cloud.EurekaServerApplication : Started EurekaServerApplication in 8.299 seconds (JVM running for 8.886)

Eureka微服务已启动.

日志打印“Setting the eureka configuration..”,eureka开始进行配置,说不定也许就是Eureka Server流程启动的开始呢?我们抱着怀疑的心态进入这行日志打印的EurekaServerBootstrap类去看看。

EurekaServerBootstrap类

看看,看这个类的名字,见名知意,应该就是 EurekaServer 的启动类了:

protected void initEurekaEnvironment() throws Exception {
log.info(“Setting the eureka configurat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值