本次使用的版本还是
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
2.1.0.RELEASE
那么接着上文Nacos-Client服务注册的主脉络我们看到如下位置
相关铺垫
其实客户端心跳比较简单,查阅官方文档后我们得知其实也是向Nacos发送http请求
刚开始我以为是采用socket来监测心跳的,底层其实是采用线程任务,来完成的,这里并不是定时或者周期任务完成,就是一个普通的延迟任务里面套一个延迟任,等下我们看代码就懂了!
切入代码
行代码是心跳机制的入口,有个重要的参数
beatInfo.setPeriod(instanceInterval == 0 ? DEFAULT_HEART_BEAT_INTERVAL : instanceInterval);
这个是设置客户端的心跳发送间隔时间的!如果设置了,那么就用设置的时间,没有的话那么就采用默认时间5秒一次
切入addBeatInfo方法
这里Nacos的客户端心跳就是靠ScheduledExecutorService采用延迟任务来实现的,任务就定义在BeatTask中
切入BeatTask
发送心跳
long result = serverProxy.sendBeat(beatInfo);
从新调度
executorService.schedule(new BeatTask(beatInfo), nextTime, TimeUnit.MILLISECONDS);
切入sendBeat发送心跳
这里发送的是/instance/beat请求,那么和官网上的是对得上的



