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

2024-04-01 06:04

本文主要是介绍zookeeper如何保证数据强一致性的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

这篇关于zookeeper如何保证数据强一致性的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866383

相关文章

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数

SpringBoot读取ZooKeeper(ZK)属性的方法实现

《SpringBoot读取ZooKeeper(ZK)属性的方法实现》本文主要介绍了SpringBoot读取ZooKeeper(ZK)属性的方法实现,强调使用@ConfigurationProperti... 目录1. 在配置文件中定义 ZK 属性application.propertiesapplicati

Redis中的数据一致性问题以及解决方案

《Redis中的数据一致性问题以及解决方案》:本文主要介绍Redis中的数据一致性问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Redis 数据一致性问题的产生1. 单节点环境的一致性问题2. 网络分区和宕机3. 并发写入导致的脏数据4. 持

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1