• 分布式环境的特点
  1. 分布性:多台机器位置不同,但是相互协同做某一件事情。
  2. 并发性:程序运行过程中,并发性操作是很长见的。比如:同一个分布式系统中的多个节点,同时访问一个共享资源。(数据库,分布式存储)
  3. 无序性:进程之间的消息通信,会出现顺序不一致问题。
  • 分布式环境下面临的问题
  1. 网络通讯:不同机器之间数据是通过网络通讯的,而因为网络本身的不可靠性,因此会涉及到一些网络通讯问题(停电断网,电缆被挖断了),导致通讯失败.
  2. 网络分区(脑裂):当网络发生异常导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式架构的所有节点,只有部分节点能够正常通讯。
  3. 三态:在分布式架构里面,除了成功,失败,还有超时。
  • 分布式事务:ACID(原子性,一致性,隔离性,持久性)
  1. 原子性:一个原子事务要么完整执行,要么干脆不执行。
  2. 一致性:一致性代表底层数据存储的完整性。
  3. 隔离性:隔离性意味着事务必须在不干扰其他进程或事务的前提下独立执行。
  4. 持久性:持久性表示在某个事务的执行过程中,对数据所作的所有改动都必须在事务成功结束前保存至某种物理存储设备。
  • 中心化和去中心化:(分户式环境中常用思想就是,当集群中故障发生的时候,集群中马上进行自动选举,比如zookeeper和etcd )
  1. 中心化:主备思想(冷备和热备:热备就是两个master或leader但是只有一个在工作的状态,冷备就是主挂掉后马上进行选举)。
  2. 去中心化:没有主备之分,好处就是至少保证只是一部分不能正常工作。
  • 经典的CAP/BASE理论

    • CAP
  1. 一致性 Consistency): 所有节点上的数据,时刻保持一致
  2. 可用性(Availability):每个请求都能够收到一个响应,无论响应成功或者失败
  3. 分区容错 (Partition-tolerance):表示系统出现脑裂以后,可能导致某些server与集群中的其他机器失去联系(网络问题不可避免,一定会出现)
  4. 所以两种方式:要么保证一致性要么保证可用性(CA冲突),组合为:CP/AP
  5. CAP理论仅适用于原子读写的Nosql场景,不适用于数据库系统
    • BASE
  1. 基于CAP理论,CAP理论并不适用于数据库事务(因为更新一些错误的数据而导致数据出现紊乱,无论什么样的数据库高可用方案都是徒劳) ,虽然XA(分布式事务解决方案)事务可以保证数据库在分布式系统下的ACID特性,但是会带来性能方面的影响。
  2. BASE理论:
    1. Basically available:数据库采用分片模式, 把100W的用户数据分布在5个实例上。如果破坏了其中一个实例,仍然可以保证80%的用户可用。
    2. soft-state:在基于client-server模式(C/S结构)的系统中,server端是否有状态,决定了系统是否具备良好的水平扩展、负载均衡、故障恢复等特性。
    3. Server端承诺会维护client端状态数据,这个状态仅仅维持一小段时间, 这段时间以后,server端就会丢弃这个状态,恢复正常状态。
  3. Eventually consistent:数据的最终一致性。

 

  • 初识zookeeper:zookeeper是一个开源的分布式协调服务,是由雅虎创建的,基于google chubby(Chubby主要用于解决分布式一致性问题)。
  • zookeeper是什么?分布式数据一致性解决方案
  • zookeeper能做什么?
  1. 数据的发布/订阅(配置中心:disconf)
  2. 负载均衡(dubbo利用了zookeeper机制实现负载均衡)
  3. 命名服务
  4. master选举(kafka,hadoop,hbase)
  5. 分布式队列
  6. 分布式锁
  • zookeeper的特性
  1. 顺序一致性:从同一个客户端发起的事务请求,最终会严格按照顺序被应用到zookeeper中
  2. 原子性:所有的事务请求的处理结果在整个集群中的所有机器上的应用情况是一致的,也就是说,要么整个集群中的所有机器都成功应用了某一事务,要么全都不应用
  3. 可靠性:一旦服务器成功应用了某一个事务数据,并且对客户端做了响应,那么这个数据在整个集群中一定是同步并且保留下来的
  4. 实时性:一旦一个事务被成功应用,客户端就能够立即从服务器端读取到事务变更后的最新数据状态;(zookeeper仅仅保证在一定时间内,近实时)

zookeeper:1的更多相关文章

  1. 《从Paxos到Zookeeper:分布式一致性原理与实践》【PDF】下载

    内容简介 Paxos到Zookeeper分布式一致性原理与实践从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议. ...

  2. zookeeper:3

    zoo.cfg配置文件 tickTime=2000  :zookeeper中最小的时间单位长度 (ms). initLimit=10  :follower节点启动后与leader节点完成数据同步的时间 ...

  3. zookeeper:2

    单机环境下安装: 下载地址:http://apache.fayea.com/zookeeper/stable/ 解压zookeeper :tar -zxvf zookeeper-3.4.10.tar. ...

  4. ZooKeeper:第三方客户端 ZKClient

    ZKClient ZKClient的设计 ZKClient组件说明 重要的处理流程说明 启动ZKClient 为节点注册Watcher ZooKeeper的变更操作 客户端处理变更 序列化处理 ZKC ...

  5. ZooKeeper:Java客户端网络处理

    了解ZooKeeper客户端的实现,对于使用ZooKeeper的客户端非常重要. 通过对客户端源码的阅读,了解了如下信息: 创建ZooKeeper对象时,应会创建一个ClientCnxn(代表了客户端 ...

  6. ZooKeeper:数据模型

    ZooKeeper数据模型 ZNode ZNode 分类 Stat Watcher Watcher工作原理 Watcher事件说明 Watcher注册 事件发布 示例 ZooKeeper 数据模型 整 ...

  7. ZooKeeper:Quick Start

    下载.安装与配置 下载地址 安装 配置 ZooKeeper bin目录下脚本说明 Server 启动.停止 客户端操作 使用简易客户端访问 使用Java客户端访问 使用开源客户端ZkClient访问 ...

  8. Zookeeper:分布式程序的基石

    一.目录 1.zookeeper是什么? 2.安装.配置.启动.监控 3.javaApi基础用法 4.应用场景 5.CAP理论/paxos算法 二.zookeeper简介 官方版:zookeeper是 ...

  9. ZooKeeper:win7上安装单机及伪分布式安装

    zookeeper是一个为分布式应用所设计的分布式的.开源的调度服务,它主要用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用,协调及其管理的难度,提高性能的分布式服务. 本章的目的:如何 ...

随机推荐

  1. 定时杀死warn进程

    6 6 * * * /root/wz/mysqlRestart.sh    #MySQL restart7 6 * * * /bin/sh /home/warn/kill_.sh8 6 * * * / ...

  2. python 类型注解

    函数定义的弊端 python 是动态语言,变量随时可以被赋值,且能赋值为不同类型 python 不是静态编译型语言,变量类型是在运行器决定的 动态语言很灵活,但是这种特性也是弊端 def add(x, ...

  3. 成为java架构师的技能

    0: 数据结构算法 数组.链表.堆.栈.队列.Hash表.二叉树等; 算法思想:递推.递归.穷举.贪心.分治.动态规划.迭代.分枝界限; 排序查找 B+/B-数.红黑树.图等; 图的深度优先搜索.图的 ...

  4. 【ARM-Linux开发】Rico Board DIY系列实验教程 Day 2——搭建Boa服务器

    一:BOA WebServer简介 BOA WebServer是一款单任务的HTTP服务器,与其他网页服务器不同之处,是当有连接请求到来是,它既不是为每个连接都单独创建进程,也不是采用复制自身进程处理 ...

  5. 用BERT做语义相似度匹配任务:计算相似度的方式

    1. 自然地使用[CLS] 2. cosine similairity 3. 长短文本的区别 4. sentence/word embedding 5. siamese network 方式 1. 自 ...

  6. 去掉右键Open Folderas Intellij IDEA Project

    解决: WIN+R键打开运行,输入regedit 打开注册表 在地址栏输入: 计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\Powershell 然 ...

  7. WUSTOJ 1237: 将八进制的字符串转换成等价的十进制字符串(Java)

    1237: 将八进制的字符串转换成等价的十进制字符串 题目   输入八进制,输出十进制.更多内容点击标题. 分析   输入的八进制数有20位.已经超出了Integer.MAX_VALUE的范围,因此此 ...

  8. harbor环境搭建及web使用

    概述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基 ...

  9. 13-MySQL DBA笔记-迁移、升级、备份、恢复数据库

    第13章 迁移.升级.备份.恢复数据库本章将为读者讲述数据库的各种维护任务:迁移.升级.备份和恢复.因为每个人熟悉的工具不同,其对应的迁移.升级.备份和恢复的方式也都略有不同,本书将尽量对笔者认为最具 ...

  10. (三)SpringBoot之配置文件详解:Properties和YAML

    一.配置文件的生效顺序,会对值进行覆盖: 1. @TestPropertySource 注解 2. 命令行参数 3. Java系统属性(System.getProperties()) 4. 操作系统环 ...