ZooKeeper复制模式

ZooKeeper服务有两种不同的运行模式。独立模式(standalone mode)和复制模式(replicated mode).

独立模式:简单,适合于测试环境,不能保证高可用性和恢复性。

复制模式:适合生产环境,运行于一个计算机集群上,通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能提供服务。因此集合体通常包含奇数台机器。

ZooKeeper概念:它所做的就是确保对znode树的每个修改都会被复制到集合体中超过半数的机器上。如果少于半数的机器出现故障,则最少有一台机器保存最新的状态,其余的副本最终也会更新到这个状态。

ZooKeeper使用了Zab协议,该协议包括两个无限重复的阶段:

阶段1:领导选举

集合体中的所有机器通过一个选择过程来选出一台被称为“领导者”(leader)的机器,其他的机器被称为“跟随者”(follower)。一旦半数以上(或指定数量)的跟随者已经将其状态与领导者同步,则表明这个阶段已经完成。

阶段2:原子广播

所有的写请求都被转发给领导者,再由领导者将更新广播给跟随者。当半数以上的跟随者都已经将修改持久化以后,领导者才会提交这个更新,然后客户端才会收到一个更新成功的响应。这个用来达成共识的协议被设计成具有原子性,因此每个修改要么成功要么失败。这类似于数据库的两阶段提交协议。

当领导者出现故障,其余的机器会选出另外一个领导者,并和新的领导者一起继续提供服务。随后,如果之前的领导者恢复正常,便成为一个跟随者。领导者选举的过程是非常快的,大约200毫米,因此在选举的过程中不会出现明显的性能降低。

在更新内存中znode树之前,集合体中的所有机器都会先将更新写入磁盘。任何一台机器都可以为读请求提供服务,并且由于读请求只涉及内存检索,因此非常快。

时间: 2024-11-09 03:58:19

ZooKeeper复制模式的相关文章

MariaDB 10 Slave Crash-Safe需转为GTID复制模式

之前写了一篇<MySQL5.6 crash-safe replication> ,但在Mariadb10.0.X和10.1.X上不支持relay_log_info_repository = TABLE参数,官网建议用GTID复制模式代替传统复制模式,传统复制模式是不支持Slave Crash-Safe的. 在mysql库下,会有一张gtid_slave_pos表(在安装初始化时,就已经是innodb引擎) START TRANSACTION; -- Statement 1 -- ... -- 

五五复制排位、五五复制模式开发平台

五五复制公排系统开发(杨?姐:136*027*9-9492 微电)公排系统APP,公排系统五五复制模式开发.公排系统奖金制度系统开发.公排系统五五复制商城系统APP开发.全网五五复制公排系统开发 全网五五复制公排系统开发,五五复制公排系统形式阐明: 一.全网五五复制公排系统开发直推奖金20% 二.全网五五复制公排系统开发见点奖30%(第2代到11代共10层见点9元) 2代到11代见点9元.按1推5单10层排满是48828125个点位,算计439453125元,引荐越多赚的越多,真实的以小博大.

MySQL5.7 开启GTID复制模式终于不用开启log_slave_updates参数了

MySQL5.6的GTID复制模式,必须开启log_slave_updates参数,否则启动就报错,因为需要在binlog找到同步复制的信息(UUID:事务号),如果在密集型写的环境,比如双十一大促在线支付,这无疑增加了从库不必要的磁盘IO开销. (注:开启log_slave_updates参数,是把relay-log里的日志内容再记录到slave本地的binlog里.) 但在MySQL5.7里,官方终于做了调整,用一张gtid_executed系统表记录同步复制的信息(UUID:事务号),这样

MySQL高可用之双主复制模式

MySQL双主模式高可用实现 生产案例:VIP:10.105.98.211MASTERHOSTNAME IPADDR PORTmy-prod01.oracle.com 192.168.10.97 3306 my-prod02.oracle.com 192.168.10.5 3306 SLAVE HOSTNAME IPADDR PORT my-em01.oracle.com 10.100.10.10.65 3306 两个主库之间复制模式:半同步复制 主库从库之间复制模式:异步复制 keepaliv

Mysql半同步复制模式说明 - 运维小结

MySQL主从复制包括异步模式.半同步模式.GTID模式以及多源复制模式,默认是异步模式 (如之前详细介绍的mysql主从复制).所谓异步模式指的是MySQL 主服务器上I/O thread 线程将二进制日志写入binlog文件之后就返回客户端结果,不会考虑二进制日志是否完整传输到从服务器以及是否完整存放到从服务器上的relay日志中,这种模式一旦主服务(器)宕机,数据就可能会发生丢失. 异步模式是一种基于偏移量的主从复制,实现原理是:主库开启binlog功能并授权从库连接主库,从库通过chan

分布式管中窥豹之zookeeper小白学习(五)启动zookeeper仲裁模式

欢迎来到分布式管中窥豹之zookeeper小白学习系列,本系列会记录zookeeper以及分布式系统学习过程中的一些操作和细节,大饼果子非科班出身,如有错误,欢迎指出 本篇将启动zookeeper服务的仲裁模式,三个节点将以不同的端口号在本地被启动 1. 首先我们需要修改一下配置文件 节点1的配置文件z1.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/Users/dabingguozi/Documents/zookeeper/data/z

MySQL 半同步复制模式说明及配置示例 - 运维小结

MySQL主从复制包括异步模式.半同步模式.GTID模式以及多源复制模式,默认是异步模式 (如之前详细介绍的mysql主从复制).所谓异步模式指的是MySQL 主服务器上I/O thread 线程将二进制日志写入binlog文件之后就返回客户端结果,不会考虑二进制日志是否完整传输到从服务器以及是否完整存放到从服务器上的relay日志中,这种模式一旦主服务(器)宕机,数据就可能会发生丢失. 异步模式是一种基于偏移量的主从复制,实现原理是: 主库开启binlog功能并授权从库连接主库,从库通过cha

CentOS下ZooKeeper单机模式、集群模式安装

本文环境如下: 操作系统:CentOS 6 32位 ZooKeeper版本:3.4.8 0. 环境需求 Zookeeper需要JDK1.6以上版本的Java环境 可以参考: CentOS 6使用rpm方式安装JDK8 1. 下载软件包 到ZooKeeper官网上http://zookeeper.apache.org/下载软件包,例如: wget "http://apache.opencas.org/zookeeper/stable/zookeeper-3.4.8.tar.gz" tar

zookeeper standalone模式安装

首先需要安装jdk,参考之前的文章:Ubuntu 13.10-14.10 安装Oralce JDK 然后下载最新稳定版本到/opt目录 /opt$ wget http://mirrors.cnnic.cn/apache/zookeeper/stable/zookeeper-3.4.6.tar.gz 解压目录: tar zxvf zookeeper-3.4.6.tar.gz 解压后的目录结构为: /opt/zookeeper-3.4.6$ tree -L 1 . ├── bin ├── build