eureka server 启动流程
2021-09-01 16:23:22 3 举报
eureka server 启动流程
作者其他创作
大纲/内容
EurekaBootstrap
创建eurekaClient(DiscoveryClient)就是创建eureka客户端
加载eureka-client配置文件
initScheduledTasks
创建EurekaTransport
创建PeerEurekaNodes,eureka-server节点
改变状态up ,然后取消instanceInfoReplicator的调度器,然后进行服务注册
registry.openForTraffic这个就是为了改变applicationInstanceManager的状态,改成启动,然后进行服务注册
initEurekaEnvironment
创建eurekaServerContext
服务发现
initEurekaServerContext
如果配置了拉取注册表,然后fetchRegistry进行拉取注册表工作
如果配置了服务注册,就启动服务续约定时任务,然后是30s一次
进行环境的初始化操作
启动instanceInfoReplicator,创建一个调度器,第一次是40s后调度,然后调用discoveryClient.register();进行服务注册, 如果启ApplicationInstanceManager 启动在这个40s之前,instanceInfoReplicator.onDemandUpdate() 就会停止这个调度,否则的话40s后进行注册,只要ApplicationInstanceManager 没有状态改变,之后就会每30s调度一次,直到ApplicationInstanceManager启动ok
EurekaServerContext初始化操作
将serverContext放到servletContext中
如果拉取注册表失败就就从备份中获得
listener
注册表调用父类的postInit
如果配置了不注册也不拉取注册表,就return
registry.syncUp()从其他节点复制注册表
web容器
服务续约
创建注册表PeerAwareInstanceRegistryImpl
启动一个任务调度, 然后1分钟执行一次,用来清理长时间没有renew的服务
加载eureka-server配置文件
启动一个任务调度,然后1分钟一次,会将收到renew数量,放到lastBucket中,然后将currentBucket设置成0 ,其实就是收集上分钟的一个心跳数量,用来保护机制使用
如果配置拉取注册表,也就是服务发现,就创建定时任务,默认30s去拉一次
peerEurekaNodes 启动动作
创建instanceInfoReplicator对象,然后创建一个监听器,然后将监听器注册到applicationInstanceManager上面, 只要监听器收到通知,就会调用instanceInfoReplicator.onDemandUpdate()方法执行服务注册
创建instanceInfo
创建ApplicationInfoManager(里面维护了instanceInfo)
黄色为大流程,
PeerAwareInstanceRegistryImpl注册表的init动作
eurekaServerContext初始化动作
0 条评论
回复 删除
下一页