Access Control List,简称ACL,即访问控制列表,在分布式系统中重要性是毋庸置疑的。
标签归档:Zookeeper
ZooKeeper原理及使用
ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。今天这篇文章分为三个部分来介绍ZooKeeper,第一部分介绍ZooKeeper的基本原理,第二部分介绍ZooKeeper提供的Client API的使用,第三部分介绍一些ZooKeeper典型的应用场景。
继续阅读
PHP中zookeeper的类与方法
__construct( $host = ‘‘, $watcher_cb = null, $recv_timeout = 10000)
$host:zookeeper的ip和端口,多组信息使用,分隔
$watcher_cb:全局监听函数,任何的监听都会执行该回调函数
$recv_timeout:会话超时,在zookeeper的服务器中可以设置 minSessionTimeout和maxSessionTimeout,限制客户端设置session的超时范围
Zookeeper中的命令
zookeeper中的命令不多,且比较简单,下面做一个完整的介绍。
安装PHP中的zookeeper扩展
PHP的安装以及配置都非常的简单,可以参考文章:Zookeeper的安装,今儿来看看PHP扩展的安装。
现在官方已经有0.3.2的版本了,查看 https://pecl.php.net/package/zookeeper
Zookeeper是什么
Google的三篇论文影响了很多很多人,也影响了很多很多系统。这三篇论文一直是分布式领域传阅的经典。根据MapReduce,于是我们有了Hadoop;根据GFS,于是我们有了HDFS;根据BigTable,于是我们有了HBase。而在这三篇论文里都提及Google的一个lock service—Chubby,哦,于是我们有了Zookeeper。
Zookeeper可以干什么
在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.
这大概描述了Zookeeper主要可以干哪些事情:配置管理,名字服务,提供分布式同步以及集群管理。那这些服务又到底是什么呢?我们为什么需要这样的服务?我们又为什么要使用Zookeeper来实现呢,使用Zookeeper有什么优势?接下来我会挨个介绍这些到底是什么,以及有哪些开源系统中使用了。
ZooKeeper之ZAB协议
ZooKeeper为高可用的一致性协调框架,自然的ZooKeeper也有着一致性算法的实现,ZooKeeper使用的是ZAB协议作为数据一致性的算法, ZAB(ZooKeeper Atomic Broadcast ) 全称为:原子消息广播协议;ZAB可以说是在Paxos(帕克索斯)算法基础上进行了扩展改造而来的,ZAB协议设计了支持崩溃恢复,ZooKeeper使用单一主进程Leader用于处理客户端所有事务请求,采用ZAB协议将服务器数状态以事务形式广播到所有Follower上;由于事务间可能存在着依赖关系,ZAB协议保证Leader广播的变更序列被顺序的处理,:一个状态被处理那么它所依赖的状态也已经提前被处理;ZAB协议支持的崩溃恢复可以保证在Leader进程崩溃的时候可以重新选出Leader并且保证数据的完整性;
zookeeper在分布式应用中的作用[转]
是不是要在标题的“作用”之前加上“重要”两个字,我犹豫了一下,zookeeper提供的功能是如此的重要,以至于如果你在应用中不使用它,早晚也会在你的应用中去实现zookeeper 的功能,所以,zookeeper值得你花(一点)时间去掌握。
Zookeeper的安装
大型分布式网络架构
一个大型、稳健、成熟的分布式系统的背后,往往会涉及众多的支撑系统,我们将这些支撑系统称为分布式系统的基础设施,包括:分布式协作及配置管理系统zookeeper,分布式缓存系统,持久化存储,分布式消息系统,搜索引擎,CDN系统,负载均衡系统,运维自动化系统,实时计算习系统,离线计算系统,分布式文件系统,日志搜集系统,监控系统,数据仓库等.
Zookeeper配置
# zookeeper中使用的基本时间单位, 毫秒值
tickTime=2000
# zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower.
# initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间.
# 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
initLimit=5