Nacos 寻址机制


前提
Nacos 支持单机部署以及集群部署,针对单机模式,Nacos 只是自己和自己通信;对于集群模式,则集群内的每个 Nacos 成员都需要相互通信。因此这就带来⼀个问题,该以何种方式去管理集群内的 Nacos 成员节点信息,而这,就是 Nacos 内部的寻址机制。
设计
无论是单机模式,还是集群模式,其根本区别只是 Nacos 成员节点的个数是单个还是多个,并且,要能够感知到节点的变更情况:节点是增加了还是减少了;当前最新的成员列表信息是什么;以何种方式去管理成员列表信息;如何快速的支持新的、更优秀的成员列表管理模式等等。
针对上述需求点,我们抽象出了⼀个 MemberLookup 接口,具体设计如下:

public interface MemberLookup {

/**
* start.
*
* @throws NacosException NacosException
*/
void start() throws NacosException;
/**
* Inject the ServerMemberManager property.
*

* @param memberManager {@link ServerMemberManager}
*/
void injectMemberManager(ServerMemberManager memberManager);
/**
* The addressing pattern finds cluster nodes.
*
* @param members {@link Collection}
*/
void afterLookup(Collection<Member> members);
/**
* Addressing mode closed.
*
* @throws NacosException NacosException
*/
void destroy() throws NacosException;
}

(ServerMemberManager 存储着本节点所知道的所有成员节点列表信息,提供了针对成员节点的
增删改查操作,同时维护了⼀个MemberLookup 列表,方便进行动态切换成员节点寻址方式。)
可以看到,MemberLookup 接口非常简单,核心接口就两个—— injectMemberManager 以及
afterLookup ,前者用于将ServerMemberManager 注入到MemberLookup 中,方便利用
ServerMemberManager 的存储、查询能力,后者afterLookup 则是⼀个事件接口,当MemberL
ookup 需要进行成员节点信息更新时,会将当前最新的成员节点列表信息通过该函数进行通知给
ServerMemberManager,具体的节点管理方式,则是隐藏到具体的MemberLookup 实现中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值