为什么不使用zookeeper acl 使用

为什么“hbase.zookeeper.quorum”必须配奇数个数的DataNod
zookeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。也就是说如果有2个zookeeper,那么只要
有1个死了zookeeper就不能用了,因为1没有过半,所以2个zookeeper的死亡容忍度为0;同理,要是有3个zookeeper,一个死
了,还剩下2个正常的,过半了,所以3个zookeeper的容忍度为1;同理你多列举几
个:2-&0;3-&1;4-&1;5-&2;6-&2会发现一个规律,2n和2n-1的容忍度是一样的,都是n-1,所
以为了更加高效,何必增加那一个不必要的zookeeper呢。自己的理解~~
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。zookeeper环境搭建中的几个坑[Error contacting service. It is probably not running]的分析及解决 – PayMoon贝明实验室
2015年六月
161718192021
22232425262728
插入或编辑链接
输入目标URL
在新标签页中打开链接
或链接到站点中的内容
未指定搜索条件。自动显示近期条目。
搜索或使用上下方向键来选择一项。为什么不要把ZooKeeper用于服务发现_百度知道
为什么不要把ZooKeeper用于服务发现
提问者采纳
用于个人消费或集体福利就是非应税项目。因为增值税条例规定,用于非应税项目的不能抵扣增值税不一样的
其他类似问题
为您推荐:
zookeeper的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Zookeeper似乎被使用得越来越多,而且用法也完全不局限于开始的选主需求,大家总结一下哪些系统使用Zk又是怎么用的呢
回答建议修改:抄袭了我的内容
作者修改内容通过后,回答会重新显示恢复正常。
复制一篇之前的笔记过来:&br&ZooKeeper & kazoo&p&zookeeper作为一个开源的分布式应用协调系统,已经用到了许多分布式项目中,用来完成统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等工作。&/p&&p&这里不再具体提zk的选主逻辑,paxos协议什么的,只开始讲一些用法。&/p&&p&kazoo是一个封装了zookeeper操作的python库,其中除了提供底层的zookeeper接口外,还提供了一些更高级别的封装。&/p&&br&zookeeper的基本操作&p&zookeeper主要操作分以下几种:&/p&&ol&&li&创建节点&/li&&li&读节点数据&/li&&li&更新节点数据&/li&&li&删除节点&/li&&li&监控节点变化&/li&&/ol&&p&其中节点被组织成目录树的形式,每个节点下面都可以有一些子节点。&/p&&p&节点可以是以下四种类型:&/p&&p&PERSISTENT:持久化目录节点,这个目录节点存储的数据不会丢失;&/p&&p&PERSISTENT_SEQUENTIAL:顺序自动编号的目录节点,这种目录节点会根据当前已近存在的节点数自动加 1,然后返回给客户端已经成功创建的目录节点名;&/p&&p&EPHEMERAL:临时目录节点,一旦创建这个节点的客户端与服务器端口也就是 session 超时,这种节点会被自动删除;&/p&&p&EPHEMERAL_SEQUENTIAL:临时自动编号节点。&/p&&p&监控节点变化时,可以监控一个节点的变化,也可以监控一个节点所有子节点的变化。&/p&&br&ZK应用&br&统一命名服务&p&在分布式系统中,经常需要给一个资源生成一个唯一的ID,在没有中心管理结点的情况下生成这个ID并不是一件很容易的事儿。zk就提供了这样一个命名服务。&/p&&p&一般是使用create方法,创建一个自动编号的节点。&/p&&br&配置管理&p&主要用于多个结点共享配置,并且在配置发生更新时,利用zk可以让这些使用了这些配置的结点获得通知,进行重新加载等操作。&/p&&br&集群管理&p&主要有两个方面:一是集群选主,二是资源定位。&/p&&p&集群选主是当一个集群会启动一主一备两个服务单元时,可以使用zk来选出一个主服务单元。 具体方法就是在一个节点下创建一个自动编号的临时结点,然后watch父节点,如果该临时节点成为父节点下编号最小的节点,则认为其成为了主服务单元。&/p&&p&在kazoo中,提供了 &a class=& wrap external& href=&///?target=http%3A//kazoo.readthedocs.org/en/latest/api/recipe/election.html& target=&_blank& rel=&nofollow noreferrer&&election&i class=&icon-external&&&/i&&/a& 相关的封装,使用极其简单。&/p&&br&&div class=&highlight&&&pre&&code class=&language-text&&zk = KazooClient(hosts='127.0.0.1:2181')
zk.start(10)
election = zk.Election(&/electionpath&, &my-identifier&)
# blocks until the election is won, then calls
# my_leader_function()
election.run(my_leader_function)
&/code&&/pre&&/div&&p&在实际使用时有时候会遇到一些工作单元watch集群的master结点,当主从切换时,工作单元可能会需要重新连接到新的主节点以使工作能够继续。在kazoo中,暂没发现有方法能够直接使孩子watch Election的状态,暂未试验是否可以直接使用watch接口直接watch electionpath。不过即使不能通过watch electionpath解决,也可以在master切换之后,通过直接去修改另外一个固定位置的结点而工作单元都watch那个结点来解决。&/p&&p&资源定位主要是用于分布式系统中一些服务节点位置或者状态发生变化时,通知一些相关的需要知道的服务节点发生了这些变化,以便于其能够做出一定的响应。比如,一个rpc_server发生了故障迁移,这时就需要client重新能够发现并向新的地址、端口发起请求。&/p&&br&共享锁&p&实现起来和集群选主基本一致,都是创建一个自动编号的临时结点,然后watch父结点,判断自己是否是最小编号节点。&/p&&p&在kazoo中提供了 &a class=& wrap external& href=&///?target=http%3A//kazoo.readthedocs.org/en/latest/api/recipe/lock.html& target=&_blank& rel=&nofollow noreferrer&&lock&i class=&icon-external&&&/i&&/a& 相关封装:&/p&&br&&div class=&highlight&&&pre&&code class=&language-text&&import os
import sys
import time
from kazoo.client import KazooClient
zk = KazooClient(hosts='127.0.0.1:2181')
zk.start(10)
lock = zk.Lock(&/lockpath&, &my-identifier&)
with lock:
print &got lock&
time.sleep(10)
&/code&&/pre&&/div&&p&快速的运行两遍这个程序,会发现第二次运行的程序会等到第一次运行结束之后才会输出“got lock”.&/p&&br&队列管理&p&...&/p&&br&一些基本用法&br&关于Watch:&p&前面讲集群资源定位时提到了watch,zk原生的watch都是通过get/get_children/exists等查询接口提供的,用户在查询的时候可以再设置一个watch函数,当有关心的事件触发时,watch函数会被调用。&/p&&p&例如,get方法中设置的watch函数会在数据发生更新或者删除时被触发。exists在节点的存活性发生变化时触发,而get_children则在子节点的存活性发生变化时触发。&/p&&p&另外,当watch函数触发后,用户需要重新重新设置watch函数,不然随后的事件再次发生时,将不会被触发。&/p&&p&仔细思考上述接口会发现,当一次watch事件触发之后,到再次设置watch函数之间,如果发生了watch的事件,这个事件是不会被触发的。&/p&&p&虽然表面上这个接口会导致部分watch的事件丢失,但实际上由于设置watch和get/get_children/exists是同一个原子性的操作,故丢失的事件不会影响zookeeper上的数据与client端得到的数据的最终一致性。&/p&&p&使用kazoo的DataWatch可以简化watch的使用,但有时候可能还是需要去猜测其watch的实现,并不如想象中那么好用。&/p&&p&个人认为,好多时候,我们其实并不真正的需要watch,轮询可能会使代码更为清晰,更少出错&/p&
复制一篇之前的笔记过来:ZooKeeper & kazoozookeeper作为一个开源的分布式应用协调系统,已经用到了许多分布式项目中,用来完成统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等工作。这里不再具体提zk的选主逻辑,paxos协议什么的,只开…
solr里用&br&hbase里用&br&需要多台服务器共享信息,注册与注销的&br&用zk比较方便了
solr里用hbase里用需要多台服务器共享信息,注册与注销的用zk比较方便了
已有帐号?
无法登录?
社交帐号登录
没事写几行代码压压惊 ~&&国之画&&&&&&
&& &&&&&&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!}

我要回帖

更多关于 zookeeper acl 使用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信