代码编织梦想

健康检查

健康检查是在服务注册的时候开启的。服务注册时会调用到com.alibaba.nacos.naming.core.Service#init

service.init(); --> HealthCheckReactor.scheduleCheck(clientBeatCheckTask); 这个东东就是健康检查了。 搞了一个定时任务,延时5s执行,然后每隔5s一次。

public static void scheduleCheck(ClientBeatCheckTask task) {
    futureMap.putIfAbsent(task.taskKey(), GlobalExecutor.scheduleNamingHealth(task, 5000, 5000, TimeUnit.MILLISECONDS));
}

我们来看下这个定时任务com.alibaba.nacos.naming.healthcheck.ClientBeatCheckTask#run

1.获取所有的实例

2.判断最后一次心跳时间是否超过了15s

3.如果超时了,则将健康状态设置为false

9a32e734b250f141cad2a75696be6b10.png

再往下看,还有一个for循环,如果超过30s没有发送心跳了会删除实例

5bdf119302ea718219616da1cd253e8d.png

集群模式下的健康检查

集群模式下,每个服务的心跳只会在一个服务器上进行检查然后同步给其他服务器。

我们在回头看下com.alibaba.nacos.naming.healthcheck.ClientBeatCheckTask#run

之前我们跳过了开始的这两块代码,现在我们回过头来再看看。

18f512a20c5236b66b5ade7fa8699c2a.png

getDistroMapper().responsible中取出serviceName,然后进行散列运算,在对服务节点的数量取模。然后进行了一个条件判断。只有符合条件的才会继续ClientBeatCheckTask#run后续的逻辑。这样就对服务器的节点进行了过滤,只有一台才能执行健康检查。

int index = servers.indexOf(EnvUtil.getLocalAddress());
int lastIndex = servers.lastIndexOf(EnvUtil.getLocalAddress());
if (lastIndex < 0 || index < 0) {
    return true;
}

int target = distroHash(serviceName) % servers.size();
return target >= index && target <= lastIndex;
if (!getDistroMapper().responsible(service.getName())) {
    return;
} 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MaoTongBin/article/details/129470659

Nacos 1.4.1 紧急升级修复Alibaba Nacos 认证绕过漏洞-爱代码爱编程

使用背景 Nacos是Spring Cloud Alibaba的微服务的配置和发现的组件,目前暴露出安全漏洞,主要包括如下: 根据Nacos官方在github发布的issue,Alibaba Nacos存在一处认证绕过漏洞。由于对User-Agent字段判断规则不完善,Nacos开启鉴权后攻击者仍可以绕过鉴权访问任意http接口,从而进行访问用户列表、添

SpringCloud nacos1.4.1版本升级开启登录认证踩坑-爱代码爱编程

SpringCloud nacos1.4.1版本升级开启登录认证踩坑 环境:SpringCloud Greenwich.SR4 SpringBoot 2.1.1.RELEASE spring-cloud-starter-alibaba-nacos-config 2.1.1.RELEASE Nacos服务端版本:1.4.1背景:Nacos鉴权漏洞修复,na

nacos (二). nacos1.4.1安装-爱代码爱编程

nacos官网:Nacos 快速开始 linux安装流程:linux下安装nacos环境_bananachong的博客-CSDN博客_linux 安装nacos windows安装流程: 目录: 下载解压服务中心使用mysql保存数据修改配置文件启动访问安装到服务器源码解读 一.nacos下载地址,我下载的ZIP nacos (一). naco

nacos 1.4.1 源码环境搭建_thoughtcodes的博客-爱代码爱编程

nacos 1.4.1 源码环境搭建 目录概 述nacos 源码环境搭建1.下载源码2.依赖载入3.修改配置文件4.测试查看console管理端总结:相关工具如下:分析:小结:参考资料和推荐阅读 LD is tigger forever,CG are not brothers forever, throw the pot and shin

springcloudalibaba 微服务组件 nacos 之配置中心源码深度解析_肥肥技术宅的博客-爱代码爱编程

大家好,这篇文章跟大家聊下 SpringCloudAlibaba 中的微服务组件 Nacos。Nacos 既能做注册中心,又能做配置中心,这篇文章主要来聊下做配置中心时 client 端的一些设计,主要从源码层面进行分析,相信看完这篇文章你对 Nacos client 端的工作原理应该有比较深刻的了解。 SpringCloud 应用启动拉去配置 我们之

centos上面用docker 安装nacos 1.4.1-爱代码爱编程

方式一: 下载nacos本地文件 1. 去官网下载GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native application