微服务学习-SpringCloud -Nacos (集群及CP架构相关学习)

本文深入探讨Nacos集群下心跳机制的变化,解释为何只有一台服务器负责心跳检查并同步状态。介绍了CAP和BASE原则,并对比了不同注册中心的实现。接着详细阐述了Nacos的AP和CP架构协议,特别是CP架构中raft协议的运用,包括数据写入、同步和leader选举的源码分析。
摘要由CSDN通过智能技术生成

Nacos集群下心跳机制相对于单机会有怎样的改变?

在上一遍单机模式下心跳机制的文字中有提到过这段代码:
在这里插入图片描述
我们发现第一个判断,如果这个服务的心跳不是由当前server负责,直接退出。这句话是什么意思呢?我们现在就来阅读以下其中源码。
在这里插入图片描述
通过这样一个逻辑,取到对应的Nacos机器。

  • 这样的做的原因是什么呢?

当Nacos在集群模式下,需要对客户端的机器检查心跳,维护心跳,那么需要集群中的每台机器都去检查心跳吗?肯定是只有一台去做心跳检查,然后进行同步,这样设计才是合理的。所以再看上面的代码,当有服务进行健康检查时,执行到这个方法,取模以后发现负责心跳检查的服务并不是当前服务,那么直接退出。只有当负责这个服务心跳检查的服务执行时才能正常执行。
后续逻辑就和单机模式一样了。

  • 如果其中一台集群挂了,取模不就发生错误了,需要使用一致性hash算法吗?
    不需要。Nacos集群相互之间也维护了心跳,它会定时的去调用其它集群机器的心跳接口, 如果一段時間未请求在,则认为服务已经挂了,则会更新服务size,解决取模发生错误。这就是集群服务之间节点状态的同步。
    Nacos对于每个节点独立处理的数据,会及时同步给其它节点,来保持一个数据的一致性,可能会有一点点时间延迟,但是基本可以忽略。

CAP原则和BASE原则

  • CAP原则
    C:一致性(Consistency)
    A:可用性(Availability)
    P:分区容错性(Partition tolerance)
  • BASE原则
    BA:基本可用(Basically Available)
    S:软状态(Soft State)
    E:最终一致性(Eventual Consistency)

常见的注册中心实现对比

  • mysql单机(CA)
  • eureka集群(AP)
  • zookeeper集群(CP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值