eureka-client服务启动

本文详细介绍了Eureka客户端启动过程中的关键步骤,包括向Eureka服务器注册、拉取服务器上的注册信息并缓存,以及同步客户端状态。注册过程通过后台线程实现,涉及InstanceInfo的刷新和register方法,最终通过HTTP请求Eureka-Server的特定接口完成。同时,文章提到了Eureka-Server如何接收并处理注册请求,将实例信息存储在Lease中。
摘要由CSDN通过智能技术生成

我们在看流程前看下下面的一个类图,其中client的流程基本都在DiscoveryClient的构造方法中,而eureka-server的逻辑大部分在PeerAwareInstanceRegistryImpl和PeerEurekaNodes中。


这里再介绍下InstanceInfo和EurekClient的区别, 主要用于标示这个应用的实例信息,如应用名称、consumer(provider)等,而EurekClient就是一个客户端的信息,如地址、注册信息等

那么eureka-client启动之前,我们先理一下它应该需要做那些事情。
1、告诉eureka-server(注册)。
2、拉取eureka-server上面的注册信息缓存到本地,实现高可用。
3、同步client的状态给eureka-server(心跳等)。
一、首先介绍下client向eureka-server注册的实现:
那么我们先看eureka-client的注册是怎么实现的,并不是直接注册的,而是通过后台线程是实现的,看下代码:

//DiscoveryClient.java
 @Inject
    DiscoveryClient(ApplicationInfoManager applicationInfoManager, EurekaClientConfig config, AbstractDiscoveryClientOptionalArgs args,
                    Provider<BackupRegistry> backupRegistryProvider) {
            //代码省略...
            // default size of 2 - 1 each for heartbeat and cacheRefresh
            scheduler = Executors.newScheduledThreadPool(2,
                    new ThreadFactoryBuilder()
                            .setNameFormat("DiscoveryClient-%d")
                            .setDaemon(true)
                            .build());
        //代码省略...
        // finally, init the schedule tasks (e.g. cluster resolvers, heartbeat, instanceInfo replicator, fetch
        initScheduledTasks();
        //代码省略...
    }
private void initScheduledTasks() {
        if (clientConfig.shouldFetchRegistry()) {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值