Nacos是如何实现CP的?

提问者:帅平 问题分类:面试刷题
Nacos是如何实现CP的?
1 个回答
午后的阳光让人昏沉
午后的阳光让人昏沉
Nacos的CP实现是基于Raft算法来实现的
在1.x版本早期,Nacos是自己手动实现Raft算法
在2.x版本,Nacos移除了手动实现Raft算法,转而拥抱基于蚂蚁开源的JRaft框架
在Raft算法,每个节点主要有三个状态
Leader,负责所有的读写请求,一个集群只有一个
Follower,从节点,主要是负责复制Leader的数据,保证数据的一致性
Candidate,候选节点,最终会变成Leader或者Follower

当有写请求时,如果请求的节点不是Leader节点时,会将请求转给Leader节点,由Leader节点处理写请求。
首先,Leader在处理写请求时,不会直接数据应用到自己的系统,而是先向所有的Follower发送请求,让他们先处理这个请求
当超过半数的Follower成功处理了这个写请求之后,Leader才会写数据,并返回给客户端请求处理成功
如果超过一定时间未收到超过半数处理成功Follower的信号,此时Leader认为这次写数据是失败的,就不会处理写请求,直接返回给客户端请求失败
发布于:2个月前 (04-01) IP属地:四川省
我来回答