Nacos NamingServer 再分析

说明:本篇文章部分内容参考了网上的文章(在下文已给出原文链接),由于本人能力有限,如果有书写错误的地方,欢迎各位大佬批评指正!我们互相交流,学习,共同进步!

该项目的地址:https://github.com/xiaoheng1/nacos_read

Nacos NamingServer 再分析

NamingServer 先从 @CanDistro 这个注解说起吧.

1.按服务名选择 nacos 节点,即一个服务的实例增删改,只由特定的 nacos 节点负责.

上面的描述如何理解了?

先看下如下的注解:

// 决定方法是否要重定向的注解.
@Retention(RetentionPolicy.RUNTIME)
public @interface CanDistro {

}

然后看下 com.alibaba.nacos.naming.web.DistroFilter#doFilter 的实现.

// 核心代码:
doFilter () {

// 如有必要,代理请求到其他服务器.
if (method.isAnnotationPresent(CanDistro.class) && !distroMapper.responsible(groupedServiceName)) {

    ...

    按照 hash 取模,随机选择一台服务器,然后发送请求到那一台机器上,执行,返回结果.

} else {
    ...
}

}

转到 com.alibaba.nacos.naming.core.DistroMapper#responsible(java.lang.String) 看下它的实现.

public boolean responsible(String serviceName) {
final List servers = healthyList;


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值