zoukankan      html  css  js  c++  java
  • 【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. **保证单调一致性**。

    单调一致性是最终一致性的变种。在任何情况下,用户一旦读到某个数据的某次更新后的值,就不会再读到比这个值更旧的值了。

  • 相关阅读:
    iOS获取系统时间
    iOS面试-assign与retain
    iOS-检测网络可连接性
    iOS-ASI异步下载图片
    iOS-NSString值为Unicode格式(字符串编码转换成中文编码)
    iOS-模态视图动画
    iOS-UIScrollView滚动视图(转)
    iOS-NSFileManager
    iOS-self.用法
    iOS-iphone网络编程总结
  • 原文地址:https://www.cnblogs.com/geyifan/p/4639268.html
Copyright © 2011-2022 走看看