文章目录

  • 1.分布式理论之强一致性概念
  • 2.分布式理论之最终一致性概念
  • 3. Zookeeper集群选举原理策略
  • 4.构建Zookeeper集群环境
  • 5.为什么zookeeper集群节点最好要是奇数

参考蚂蚁课堂

1.分布式理论之强一致性概念

假如说有一个mysql集群,然后数据库表中有一个字段name。

如图所示name原来的值都是张三,然后这个时候突然name被更改为李四。这个时候你查MySQL1一定会查到name值为李四,你查MySQL2,name值也为李四,这就是数据库强一致性。但是由于在数据同步的过程中网络会发生抖动,等原因,可能你查的name不是李四,还是张三也就是说数据不会那么及时的同步到MySQL2当中。所以强一致性很难实现。如果想达到这个效果我们可以这样做,就是在数据同步时对MySQL2这个数据库的读操作加锁,等数据同步之后再解锁,在分布式领域中强一致性几乎无法实现。

2.分布式理论之最终一致性概念

最终一致性是指我不需要你在修改的时候,实时同步,也就是说你可以出现读取到原来的数据,但是最终无论你通过什么手段都要达到最终一致性。比如假如说网络发生抖动,那么我就可以通过不断的尝试,啥时候网络好了,啥时候同步。这就跟犯罪了似的,不管逃到天涯海角,海枯石烂,早晚有一天会面临正义的审判,正义会迟到,但永远不会缺席!!!!这就跟最终一致性差不多你中间可能有各种原因导致数据库不同步,但是早晚有一天你得同步。

3. Zookeeper集群选举原理策略

首先介绍一下Zookeeper集群的相关概念,Zookeeper集群的节点最好是奇数而不是偶数。宕机之后剩余集群节点总数一定要大于集群节点总数/2这样的话zk才可以运行。集群当中一定会有的就是主节点和从节点,谁是主节点谁是从节点是通过选举机制选出来的,zookeeper选举的机制很简单就是投票。每台zookeeper服务器都会有配置文件配置文件里面会有myID,谁的myID大就会给谁投票。假设说集群当中只有一台zookeeper,那么这时候的选举就是等额选举,投票的时候肯定会投自己。假设这时候有两台zookeeper一台myID是1记为奥奥,另一台myID是2记为拜拜,那么投票的时候拜拜会得到两票一票是他自己的,另一票是奥奥的,因为他myID大,所以别人都认为它很牛逼。所以这时候拜拜会被选举为President,这个时候myID为3的川川想加入这个这个集群想参与这场竞争,但是这个时候川川输了,尽管他认为自己很牛逼。这主要是因为这届President的选举已经结束了,已经有President了,川川这个时候来就无法成为President,那么什么时候川川才能上位呢?只有拜拜死了(宕机)的时候,他才有机会被重新选举成为新的President。

4.构建Zookeeper集群环境

首先我们准备3台zookeeper机器。

分别是3,7,9这三台机器,然后分别在这3台机器的配置文件/usr/local/zookeeper/conf/zoo.cfg里面添加这3台机器的IP地址和其他底层的一些通信协议。即添加:

server.1=192.168.247.3:2888:3888

server.2=192.168.247.7:2888:3888

server.3=192.168.247.9:2888:3888

然后在/usr/local/zookeeper/data下面创建文件myid,里面分别写上1,2,3就行。

3是1,7是2,9是3。

注意myID不能重复,然后由于我们这3台主机之间需要相互通信所以我们必须把3台节点的防火墙关了。

systemctl stop firewalld

当我们有一台zookeeper节点启动的时候整个集群是无法启动的,因为整个集群一共有3台zookeeper,1 < 3/2,没有过半所以集群无法启动。

这个时候我们把7这台机器启动起来。

然后查看一下status发现他已经加入到这个集群当中而且mode为follower。之后我们再看一下3这台机器的status

3这个时候的角色为leader。

5.为什么zookeeper集群节点最好要是奇数

如果zk集群总数为5的话,能够保证zk可用性问题最多只能宕机2台,因为(5-2)=3 > 5/2。

如果zk集群总数为6的话,能够保证zk可用性问题最多只能宕机2台,因为(6-2)=4 > 6/2。

既然5台和6台效果是一样的那么,5台明显比6台要好,它节约了服务器资源。

Zookeeper集群与分布式理论相关推荐

  1. Zookeeper集群搭建分布式

    集群搭建 分布式,三台物理机 或者是服务器虚拟机 搭建步骤 复制文件 修改环境变量 修改节点信息 启动节点 测试连接 第一步 复制文件 将Zookeeper复制两份 拷贝到其他两台服务器上 第二步 修 ...

  2. zookeeper集群伪分布式安装测试-windows

    1.安装jdk     2. 安装Zookeeper. 在官网http://zookeeper.apache.org/下载zookeeper.我下载的是zookeeper-3.4.13版本.     ...

  3. 学习Docker容器网络模型 - 搭建分布式Zookeeper集群

    ZooKeeper是一个流行的分布式协调服务.它提供了两种不同的部署方式:单机模式和分布式模式.其中单机模式的部署非常简单,网上也有很多资料,我们今天会利用Docker搭建分布式Zookeeper集群 ...

  4. 分布式架构中一致性解决方案——Zookeeper集群搭建

    当我们的项目在不知不觉中做大了之后,各种问题就出来了,真jb头疼,比如性能,业务系统的并行计算的一致性协调问题,比如分布式架构的事务问题, 我们需要多台机器共同commit事务,经典的案例当然是银行转 ...

  5. 架构设计 | 分布式系统调度,Zookeeper集群化管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.框架简介 1.基础简介 Zookeeper基于观察者模式设计的组件,主要应用于分布式系统架构中的,统一命名服务.统一配置管理.统一集群管理 ...

  6. 分布式与微服务系列(三)、SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者、消费者)

    SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者.消费者) 一.软件架构和微服务需求 1.1.微服务需求 1.2.框架选择 1.3.集群分布(下面为此图实 ...

  7. 分布式协调服务Zookeeper集群搭建

    分布式协调服务Zookeeper集群搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装jdk环境 1>.操作环境 [root@node101.yinzhengjie ...

  8. Zookeeper命令操作(初始Zookeeper、JavaAPI操作、分布式锁实现、模拟12306售票分布式锁、Zookeeper集群搭建、选举投票)

    Zookeeper命令操作(初始Zookeeper.JavaAPI操作.分布式锁实现.模拟12306售票分布式锁.Zookeeper集群搭建.选举投票) 1.初始Zookeeper Zookeeper ...

  9. zookeeper集群部署(分布式)

    描述 ZooKeeper可以用来保证数据在zookeeper集群之间的数据的事务一致性. 如何搭建ZooKeeper集群 1.         Zookeeper服务集群规模不小于三个节点,要求各服务 ...

最新文章

  1. webconfig的connectionStrings字段
  2. html5知识总结,HTML5初级知识总结
  3. Spring+MyBatis 多数据源配置和切换
  4. protected private public
  5. 1、在Linux虚拟机上安装 docker
  6. SNF快速开发平台2019-权限管理模型简介-权限都在这里
  7. 五分钟快速搭建Serverless免费邮件服务
  8. dotnet core 通过 frp 发布自己的网站
  9. C vector详解
  10. javascript获取系统时间时区_详解Linux操作系统修改时间和修改时区的方法
  11. diy 多路监控_如何通过此DIY设置监控空气质量
  12. 关于@Mapper注解的几个问题
  13. 【转】c语言位域操作—_结构体内冒号:的使用
  14. 2.1.0 Python初识面向对象
  15. Eclipse配置中文(汉化)
  16. 详解DenseNet(密集连接的卷积网络)
  17. MySql 内连接与外连接 作用和 区别
  18. 如何建立复杂城市排水系统模型?基于SWMM与城市内涝一维二维耦合模型的复杂排水系统建模/城市排涝/海绵城市技术
  19. 谁能辨我是雄雌?轩墨宝宝个人资料,轩墨宝宝CP照!
  20. 树梅派搭建MPI集群

热门文章

  1. torch.transpose()
  2. 智能车心得分享(六)-- 电磁入环
  3. 2019年web前端框架排行
  4. 元宇宙和web3.0的前世今生
  5. Shader Forge实现聚光灯舞台效果
  6. 马云教师节退休,他这10句区块链语录引人深思
  7. 如何在markdown中打出上标、下标和一些特殊符号
  8. php购票排位_官方排队捡漏神器!候补购票最新攻略
  9. 想转行,为什么我要选择软件测试?
  10. Altium Designer画四层板