zookeeper如何保证数据强一致性的?

原子广播特性用来保证zookeeper集群数据强一致性的机制。

数据的强一致性是当一个外部客户端去请求一个分布式系统中的数据时一旦这个数据允许被查询,那么我们在任何一个被要求存储该数据的分布式节点上在任何时候都能够查到这份数据且数据内容要求一摸一样。

原子广播中原子就是精确一次性的意思,zookeeper是如何做到数据精确一次性的呢?他是利用了事务的两阶段提交特性;第一个阶段,集群大哥也就是leader收到数据的写入请求之后会把这份数据发送给所有的小弟也即是follower,然后等待小弟们的收到反馈,当大哥收到超过一半的小弟已经回复了,就会宣布第一阶段完成;第一阶段也叫proposal阶段。然后大哥就进入事务的第二阶段,开始告诉小弟既然大部分人都收到了数据,那咱就提交吧,各个小弟把收到的暂时只是放在内存中的数据给同步一份到磁盘中,这个阶段就叫commit。

如果中间出现意外或者超时情况,那么这次数据写入操作就会作废,也就是回滚;比如这个写入数据虽然可能因为网络延迟等原因,导致写入的各个小弟节点的时间不一致,但他可以保证只有在所有小弟将这份数据写入成功之后才对客户端可见,或者如果因为这个小弟的其他故障无法同步到这份数据那么集群在得知这个消息的时候就不把这个查询请求发送到这台机器上,这样一来就保证了整个zookeeper集群的数据强一致性,所以对外部客户端来说zookeeper就是一个能够提供读写强一致性的分布式系统。

相关推荐
大厂技术总监下海2 分钟前
深入 Apache Dubbo 架构:解读一个开源高性能 RPC 框架的设计哲学与核心源码
分布式·微服务
汪碧康2 小时前
【k8s-1.34.2安装部署】九.k8s多集群管理平台xkube-v3.9安装部署
云原生·容器·kubernetes·kubelet·xkube·eeenet
逆流°只是风景-bjhxcc2 小时前
【k8s】Kubernetes 探针(livenessProbe、readinessProbe、startupProbe)
云原生·容器·kubernetes
理智的煎蛋3 小时前
单节点 K8S IP 修改步骤
tcp/ip·云原生·容器·kubernetes
前端不太难4 小时前
不写 Socket,也能做远程任务?HarmonyOS 分布式任务同步实战
分布式·华为·harmonyos
yumgpkpm5 小时前
Cloudera CDP 7.3(国产CMP 鲲鹏版)平台与银行五大平台的技术对接方案
大数据·人工智能·hive·zookeeper·flink·kafka·cloudera
回家路上绕了弯5 小时前
Spring Retry框架实战指南:优雅处理分布式系统中的瞬时故障
分布式·后端
Msshu1235 小时前
多协议PD快充诱骗取电芯片XSP26支持快充取电和识别电脑传输数据
zookeeper·hbase·etcd·memcached·memcache
前端不太难5 小时前
HarmonyOS 分布式开发第一课:设备间协同调试实战
分布式·华为·harmonyos
AutoMQ5 小时前
当 Kafka 架构显露“疲态”:共享存储领域正迎来创新变革
分布式·架构·kafka