前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud Alibaba学习笔记 ——(四、Nacos 集群部署实现)

SpringCloud Alibaba学习笔记 ——(四、Nacos 集群部署实现)

作者头像
Gorit
发布2021-12-30 17:29:33
4080
发布2021-12-30 17:29:33
举报
文章被收录于专栏:Gorit 带你学全栈系列

SpringCloudAlibaba Nacos 集群部署实现

Author: Gorit

Date:2021年1月

Refer:阿里云大学

2021年发表博文: 9/50

四、Nacos 集群部署实现原理

Nacos 核心帮助我们做的事情

  • 注册中心
  • 分布式配置中心

注册中心:没有必要将数据持久化到数据库中,可以持久化到本地硬盘。(需要在 注册中心的 server-addr 指定 nacos 的服务,可以指定多个)

分布式配置中心:默认是将数据持久化到本地嵌入式数据库,改为 mysql 数据库

本地搭建伪集群,开启三个不同端口的 nacos 服务,然后在 cluster.conf 中加入三个 nacos 服务的路径 + 端口

Nacos 在不同版本下运行集群是不一样的。

注意:

  1. nacos 在 windwos 版本下运行默认是单机版本 需要指定 startup.cmd -m cluster(但是我用的版本默认就是集群开启的)
  2. nacos 在 linux 版本下运行默认是集群版本 如果连接单机版本 startup.cmd -mstandalone
  3. 集群的 ip 地址不能采用 127.0.0.1

4.1 分布式一致性的算法 Raft协议

4.1.1 分布式系统中一致性协议有哪些

Raft 到底是什么问题:分布式一致性算法

分布式系统一致性算法 应用于系统软件实现集群保持每个节点数据的同步性

保持我们集群中每个节点数据一致性问题,专业术语分布式一致性的。

场景:

  • Redis集群
  • Nacos集群
  • MangoDB集群

分布式事务一致性算法 与 分布式系统一致性算法有哪些

前者框架:核心解决我们实际系统产生的跨事务导致的分布式事务问题。

核心靠最终一致性:rocketmaq事务消息、rabbitmq补单、lcn、seata等。

后者框架:解决系统之间集群之后每个节点保证数据一致性

raft(nacos)、zab(zookeeper)、paxos等

整个集群为保证数据一致性问题,必须满足大多数情况 > n /2+1,可运行的接地那才可以使用

4.1.2 ZAB 协议与 Paxos 协议类型的区别

ZAB 协议实现原理

ZAB 协议实现原理是通过比较 myidmyid 谁最大谁谁就可能成为领导角色,只要满足过半机制即可成为领导角色,后来启动的节点也不会参与成为领导角色

数据一致性

4.2 Nacos Raft一致性心跳的实现原理

4.2.1 在 Raft 协议算法中分为角色 | 名词

  1. 状态:分为跟随者、竞选者(候选人)、领导角色
  2. 大多数: > n/2+1(n 集群的总结点)
  3. 任期:每次选举一个新的领导角色 任期都会实现增加

注意:任何算法都来源生活

  1. 经选择谁的票数最多,谁就是为领导角色。

存在的疑问:

多个竞选者:产生的票数都完全一样,这样谁才能成为领导角色

4.2.2 选举的过程是如何?

  1. 默认的情况下每个节点都是为跟随者
  2. 每个节点会随机的生成一个选举的超时时间,例如大概是 100 - 300ms,在这个超时的时间范围内必须要等待
  3. 超时时间过后,当前节点的状态可能由跟随者 变为 竞选者状态,会给其他的节点发出选举投票通知,只要该经选择超过半数以上即可进选

核心设计的原理:谁超时时间最短大概率的为领导角色

那么随机性树有可能出现一样的情况下:

  1. 如果所有的节点的超时随机数都是一样的情况下,当投票全部作废,重新进入随机生成超时时间
  2. 如果有多个节点生成的随机都是一样的,比较谁的票数最多,谁就是为领导,如果票数完全一样的情况下,直接作废,重新进入随机生成的超时时间,建议集群节点为奇数

4.2.3 分布式一致性算法 Raft 协议

故障重新实现选举. 如果我们跟随者节点不能及时的收到领导角色的消息的,那么这时候跟随者状态就会变 为竞选者状态,发给其他的节点发出选举投票通知,只要该竞选者有超过半数以上即可 选举为领导角色 数据如何保证一致性 类似 zab 两阶段提交协议

  1. 所有的写的请求都是统一交给我们的领导角色完成,会写入该对应的日志,标记该状态为提交状态
  2. 为了提交该日志,领导角色就会将该日志心跳的形式发送到其他跟随者,只要满足过半的跟随者可以写入改数据,则为直接通知其他节点同步数据,这个称之为日志复制

下一节

新一代服务网关 SpringCloud Gateway

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringCloudAlibaba Nacos 集群部署实现
  • 四、Nacos 集群部署实现原理
    • 4.1 分布式一致性的算法 Raft协议
      • 4.1.1 分布式系统中一致性协议有哪些
      • 4.1.2 ZAB 协议与 Paxos 协议类型的区别
    • 4.2 Nacos Raft一致性心跳的实现原理
      • 4.2.1 在 Raft 协议算法中分为角色 | 名词
      • 4.2.2 选举的过程是如何?
      • 4.2.3 分布式一致性算法 Raft 协议
      • 下一节
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档