【ZooKeeper怎么玩】之一:为什么需要ZK
博客已经搬家,见【ZooKeeper怎么玩】之一:为什么需要ZK

学习新东西首先需要搞清楚为什么学它,这是符合我们的一个认知过程。
<!--more-->
#ZooKeeper是什么
ZooKeeper是一个分布式协调服务,它致力去解决如何在分布式环境下保持数据一致性的问题。
#分布式环境下遇到的问题
共享的资源在并发的情况下会出现竞争,在线程间可以使用Java提供的锁机制来协调这些资源,那么在分布式的环境下,如何来协调这些资源呢?
如何协调分布式环境下的资源,首先应该明确由单机环境转到分布式环境下遇到了什么问题?
1. **分布式环境下无法保证顺序**。
在单机环境如果想让A先执行,B后执行,先调用A后调用B就可以了;由于网络是不可靠的,分布式环境中则不同,在网络延迟的情况下A可能比B执行要晚。
2. **分布式环境下无法明确执行结果**。
单机中调用A成功和失败很明确;而在分布式环境中,即使调用A执行成功了,而在网络传输中超时了,此时无法判断A是否执行成功了,需要通过重试的方式才能判断A有没有执行成功。
3. **分布式环境下无法保证数据一致性**。
分布式环境如果很多台服务器提供相同的服务,如何保证服务的某一个改动要么同时生效,要么失败,是分布式和单机环境的最重要的区别。
#没有ZooKeeper之前的世界是什么样子
1. **保证事务顺序一致性**。
如果事务A在一台服务器上优先于事务B先执行,则在所有的服务器上事务A都将优先于事务B执行。由于网络是不可靠的,如果没有ZooKeeper如何保证在所有服务器上事务顺序一致将是一个很复杂的问题,而ZooKeeper使我们专注于业务逻辑,而不用过分关注于分布式协调。
2. **保证单调一致性**。
单调一致性是最终一致性的变种。在任何情况下,用户一旦读到某个数据的某次更新后的值,就不会再读到比这个值更旧的值了。
【ZooKeeper怎么玩】之一:为什么需要ZK的更多相关文章
- 搭建一个基于CentOS的可视化zookeeper管理工具zkUI实现对zk的可视化管理
一. zookeeper 可视化工具 JMX => CLRProfile ZKUI => java写的一个可视化的web网站 github中下载 https://github.com/ ...
- zookeeper笔记之基于zk实现分布式锁
一.分布式锁概述 Java中基于AQS框架提供了一系列的锁,但是当需要在集群中的多台机器上互斥执行一段代码或使用资源时Java提供的这种单机锁就没了用武之地,此时需要使用分布式锁协调它们.分布式锁有很 ...
- zk 06之:ZooKeeper命令、命令行工具及简单操作
常用命令ZooKeeper 支持某些特定的四字命令字母与其的交互.它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息.用户在客户端可以通过 telnet 或 nc 向 ZooK ...
- 欢迎来到 ZooKeeper 动物世界
本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费有趣.入门级的 ZooKeeper 开源教程,面向有编程基础的新手. Zo ...
- Spark ZooKeeper数据恢复
Spark使用ZooKeeper进行数据恢复的逻辑过程如下: 1.初始化:创建<CuratorFramwork,LeaderLatch,LeaderLatchListener>用于选举 创 ...
- zookeeper工作原理、安装配置、工具命令简介
1.Zookeeper简介 Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. 2.zo ...
- ZooKeeper 笔记(1) 安装部署及hello world
先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.org/doc/r3.4.6/zookeeperOver.html Get ...
- ZooKeeper学习总结 第二篇:ZooKeeper深入探讨(转载)
其实zookeeper系列的学习总结很早就写完了,这段时间在准备找工作的事情,就一直没有更新了.下边给大家送上,文中如有不恰当的地方,欢迎给予指证,不胜感谢!. 1. 数据模型 1.1. 只适合存储小 ...
- dubbo+zookeeper简单环境搭建
dubbo+zoopeeper例子 [TOC] 标签(空格分隔): 分布式 dubbo dubbo相关 dubbo是目前国内比较流行的一种分布式服务治理方案.还有一种就是esb了.一般采用的是基于Ap ...
随机推荐
- 【P2236】彩票(搜索+剪枝)
想说这个题要是想做出来就必须不干一件事情,那就是不要点开标签..点开标签看到那些平衡树什么的.... 首先,我们要理解这个题的题意.买彩票是什么大家都应该知道吧,一般来说,就是从很多数里面选出来几个, ...
- 泛型学习第三天——C#读取数据库返回泛型集合 把DataSet类型转换为List<T>泛型集合
定义一个类: public class UserInfo { public System.Guid ID { get; set; } public string LoginName ...
- hive学习5(复制表结构)
hive复制表结构 CREATE TABLE new_table LIKE old_table; 例:创建一个和stg_job表一样表结构的s_job表 create table s_job like ...
- JavaScript -- 广告随鼠标移动, 点击一次后关闭
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Android 实现http通信(servlet做服务器端) HttpClient、HttpURLConnection实现登录验证
一,写好服务器端 在eclipse或其它javaee开发工具中新建一个web项目(我这里的项目名是:Android),建一个servlet(我这里的servlet名是:LoginServlet),模拟 ...
- SPOJ1825 FTOUR2 - Free tour II
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 转 Nova: 虚机的块设备总结 [Nova Instance Block Device]
和物理机一样,虚拟机包括几个重要的部分:CPU.内存.磁盘设备.网络设备等.本文将简要总结虚机磁盘设备有关知识. 1. Nova boot CLI 中有关虚机块设备的几个参数 nova boot CL ...
- Spring Cloud Ribbon实现客户端负载均衡
1.构建microservice-consumer-movie-ribbon项目,在pom.xml中引入ribbon依赖 在引入Eureka依赖的时候,默认里面含有ribbon依赖 2.添加@Load ...
- JAVA中的泛型类型不可以直接初始化
class Para<CLS>{ private CLS class1; public Para(CLS class1) { ...
- jsp:jstl标签库国际化 fmt
首先资源文件目录是:src/man/sources (这是它默认的资源文件) i18n_en_US.properties文件内容 copyright=Copyright \u00A9 2013 lan ...