概念:分布式协调框架,帮别的集群选举主节点,帮自己选举节点(面试重点)
CAP原则【理解※】:
Avaliability:可用性 【在有效的时间返回结果】
Consistency:一致性 【在集群中任何一个节点获取数据都是相同的】
Partition Tolerance:分区容错性 【集群部署】
只能同时保证两种特性
AC:单击应用
CP:集群部署,数据一致性 银行【金融】
AP:可用,分区容错 秒杀,不要求用户看到的数据实时一致【电商查询】
BASE理论
BA:基本可用-保留基本功能不影响正常运作
S:软状态一致性-当写入集群达到一半即达到软状态一致性
E:最终一致性-最终能达到一致性即可
最终一致性:
读:从某个节点获取的数据可能不是最新的,但是如果需要修改这个数据,必须获取最新数据。比如12306抢票系统。
写:当写入集群节点大于二分之一,就认为达到软状态一致性,最终可以通过广播等机制实现最终一致性。
拜占庭将军问题!
Paxos算法
活锁的产生是由于偶数个议员,33对立造成的。
解决方案:
1、使用奇数台服务器,但是奇数台有一台宕机依然为偶数台也是不行的。
2、使用有主模型,所有的提议都只能有总统来发出。
总统挂掉以后怎么办?快速选择总统?
找PID最接近公共PID的议员,但是不能大于公共PID【因为不是法令】。
如果有多个议员PID相同,那么就选择MYID最大的那个【议员3、议员4=>议员4】
如果网络波动就会出现脑裂出现多个主节点,最终合并选主必须过半原则。
两个主需要看那边议员多谁就做最新的总统。
节点越多业务能力越强,但是选主越慢!
-> 减少选举参与者 ->观察者Observer
角色:Leader、Follower、Candidate
Term:版本朝代
在换朝代只会进行重新的一次选举,注意:选举拉票也需要总人数过半才可以成为新的总统Leader。【只要出现新的候选人就会直接换朝代号】
如果出现分区的情况,在合并的的时候要看Leader的朝代版本号Term;
日志复制:
主要用户保证节点的一致性,这阶段所做的操作时为了一致性与高可用。
Leader选举首先通过随机倒计时【选举超时】150ms-300ms之间,先倒计时完的Follower成为Candidate,然后进行拉票,当拉票过半即可成为Leader。
当Leader接收到事务(更新操作)后,经过Leader先存放到日志中,然后将该Entry同步到其他Follower,当Leader收到过半Follower的ACK(签收)信息后,将日志设置为已提交并追加到本地磁盘中,并通知其他客户端将Entry存到自己的磁盘中。完成数据一致性。
同时启动 myid最大成为主节点
依次启动 过半第一个节点将成为主节点
Zab协议的全称为Zookeeper Atomic Broadcast 【Zookeeper原子广播】
ZAB协议是为分布式协调服务zookeeper专门设计的一种支持崩溃恢复的原子广播协议。ZAB借鉴Paxos算法。
Zookeeper就是通过Zab协议来保证分布式事务的最终一致性的。
Zab协议的三个阶段:发现->同步->广播
定义了事务请求的处理方式:
所有的请求必须由全局唯一的Leader服务器协调处理,其他则是Follower服务器
Leader服务器负责将一个客户端事务请求,转换成一个事务Proposal,并分发到所有Follower服务器
分发之后Leader服务器需要等待所有的Follower服务器的反馈【ACK请求】,在Zab协议中,只要超过一半的反馈之后,Leader会再次向所有的Follower发送Commit消息。
包含两种基本模式:1、崩溃恢复-数据恢复;2、消息广播-原子广播;
文章目录华为OD面试流程1.mysql数据库建了两个字段,且设置了联合索引,如果其中有一个字段为空会出现什么问题?2.谈谈springIOC的理解,有什么好处,解决了什么问题3.谈谈springAOP的理解,切面编程有没有实际应用,有哪些注解,作用是什么,有那些应用场景?4.Erika和zookeeper有了解过吗,作用是什么,主要解决了什么问题5.谈谈JDK、JRE、JVM的理解,区别是什么6.谈谈对泛型的理解7.JVM的组成华为OD面试流程机试:三道算法题,关于机试,橡皮擦已经准备好了各语言专栏,可以直接订阅。性格测试:机试技术一面(本专栏核心)技术二面(本专栏核心)主管面试定级定薪发of
1.Zookeeper Zookeeper是 ApacheHadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高。 Zookeeper的功能主要是它的树形节点来实现的。当有数据变化的时候或者节点过期的时候,会通过事件触发通知对应的客户端数据变化了,然后客户端再请求zookeeper获取最新数据,采用push-pull来做数据更新。服务注册和消费信息直接存储在zk树形节点上,集群下采用过半机制保证服务节点间一致性。 2.Nacos Nacos是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理。Nacos是Dub
Zookeeper一、zookeeper简述大型分布式计算开源的分布式配置服务,同步服务和命令注册。架构通过冗余实现高可用。目标:将那些负载且容易出错的分布式一致性服务封装其拉力,构成一个高效可靠的原语集,以一系列简单易用的接口提供给用户使用。一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命令服务、分布式协调/通知,集群管理、master选举、分布式锁和分布式队列等。1.1zookeeper数据结构它提供的名称空间类似标准文件系统,k-v的形式存储。名称key由斜线/分割的一系列路径元素,zookeeper名称空间中的每个节点都是由一个路径标识
我有一个关于zookeeper的问题,我正在尝试使用go-zookeeper实现简单的服务发现,我正在使用go-zookeeper:https://github.com/samuel/go-zookeeper我的问题是每当我使用例如连接到zookeeper时:zoo_keeper,_,err:=zk.Connect(s,time.Second)函数立即返回,没有报错,但还没有真正有效的连接。现在,例如,如果我想创建znode,我需要检查什么以确保在这样做之前我有一个有效的连接? 最佳答案 在尝试了几件事之后,感谢Imesha的建议,
zookeeper单节点部署及注意事项kafka戳这里:kafka单节点部署,手把手从零到一事前准备:1、一台Linux服务器或者是一台虚拟机2、准备好JDK环境3、安装好wget(当然也可以不用这个,只是用于下载安装包的一个工具,所以能下载好包就是没问题的)4、需要了解vim的一些基础操作,不懂得可自行百度1、Zookeeper的单节点部署1.1、下载这里用的zookeeper版本为3.6.4运行命令:wgethttps://dlcdn.apache.org/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz运行命令,进行压
我正在使用从Confluent(http://www.confluent.io/product/kafka-streams/)下载的kafka流。我按照说明在Windows上运行Zookeeper和Kafka。但是当我尝试使用命令启动ZooKeeper时D:\Softwares\confluent-3.0.1\bin\windows>zookeeper-server-start.bat./etc/kafka/zookeeper.properties,我得到错误D:\Softwares\confluent-3.0.1\bin\windows../../etc/kafka/log4j.pr
文章目录企业日志中心——ELFK+kafka+zookeeper部署一、组件介绍1.Elasticsearch2.Logstash3.Kibana4.Kafka5.Filebeat二、环境介绍三、搭建架构四、搭建ELFK+Kafka+Zookeeper1.准备阶段2.安装zookeeper3.安装KafkaKafka命令行操作(单节点)3.1.创建topic3.2.查看当前topic列表3.3.查看topic详细信息3.4.发布消息3.5.消费消息3.6.扩大分区3.7.删除主题3.8.kafka-topics.sh脚本中的参数4.安装Elasticsearch5.安装Logstash测试Lo
🙆♂️🙆♂️写在前面🏠个人主页:csdn春和📚推荐专栏:更多专栏尽在主页! Scala专栏(spark必学语言已完结) JavaWeb专栏(从入门到实战超详细!!!) SSM专栏(更新中…)📖本期文章:大数据技术之——zookeeper的安装部署如果对您有帮助还请三连支持,定会一一回访!🙋🏻♂️📌本文目录大数据技术之——Zookeeper的安装一、本地模式安装部署1.1、安装前准备1.2、修改配置1.3、操作zookeeper1.4、配置参数解读二、zookeeper集群安装1、集群规划2、解压安装3、将zookeeper·分发到其他两台机器上4、配置zoo.cfg文件5、同步z
windows下zookeeper安装和启动zookeeper是开放源码的分布式应用程序协调服务,可以作为dubbo等服务的注册中心,也可以在分布式系统中实现分布式锁。ZooKeeper的基本运转流程:1、选举Leader。(选举leader可以参考https://blog.csdn.net/gaoshan12345678910/article/details/67638657)2、同步数据。3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。4、Leader要具有最高的执行ID,类似root权限。5、集群中大多数的机器得到响应并接受选出的Leader。zookeeper的四种状
提示:宝塔面板安装docker/docker-compose,一条命令搞定rabbitmq的安装与配置文章目录前言一、docker-compose.yml配置二、安全组规则添加端口三、通过浏览器访问rabbitmq的管控页面四、提供其他项目依赖总结前言已经安装好了宝塔面板、并且可以在Docker栏目,选择docker安装,会把docker和docker-compose都安装好了一、docker-compose.yml配置在任意一个目录下创建并编辑vimdocker-compose.yml配置粘贴version:'3.8'services:rabbitmq:image:rabbitmq:3.7.