Zookeeper
欧拉兔
vfrvwr
展开
-
利用Zookeeper(Curator)实现 - Master选举
Zookeeper 是一个高可用的分布式数据管理与协调框架,基于ZAB协议算法的实现,该框架能够很好的保证分布式环境中数据的一致性。Zookeeper的典型应用场景主要有:数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等。 本文主要介绍如何利用Zookeeper实现Master选举。1.Master选举...原创 2019-06-12 19:23:44 · 426 阅读 · 0 评论 -
Zookeeper详解-zkCli.sh客户端使用
连接操作:zkCli.sh -timeout 1000 -r -server 127.0.0.1# -timeout 设置客户端和服务器之间的超时时长,单位毫秒# -r 只读模式,不加就是读写模式# -server IP:PORT 要连接的服务器查询操作:ls / # 查看指定路径下的节点stat PATH # 查看指定节点的状态信息get PATH #...原创 2019-06-11 21:15:43 · 811 阅读 · 0 评论 -
Zookeeper单机部署和集群部署
zookeeper有单机、伪集群、集群三种部署方式,可根据自己对可靠性的需求选择合适的部署方式。下边对这三种部署方式逐一进行讲解。1. 系统环境准备操作系统 :centos7java 环境:jdk8我搭建的是自centos7的linux下,先配置好java的配置环境,然后下载zookeeper的相关的jar进行部署2.zookeeper部署下 载 zookeeper 安装包:...原创 2019-06-17 02:14:17 · 1589 阅读 · 1 评论 -
Zookeeper-节点ACL权限设置
概述ACL全称为Access Control List(访问控制列表),用于控制资源的访问权限。ZooKeeper使用ACL来控制对其znode(ZooKeeper数据树的数据节点)的访问。ACL实现与UNIX文件访问权限非常相似:它使用权限位来允许/禁止针对节点的各种操作以及位应用的范围。与标准UNIX权限不同,ZooKeeper节点不受用户(文件所有者),组和world(其他)的三个标准范...原创 2019-06-17 02:07:59 · 905 阅读 · 0 评论 -
ZooKeeper简介
1. 什么是 Zookeeper? Zookeeper是一个高效的分布式协调服务,它暴露了一些公用服务,比如命名/配置管理/同步控制/群组服务等。我们可以使用ZK来实现比如达成共识/集群管理/leader选举等 Zookeeper 是一个高可用的分布式管理与协调框架,基于 ZAB 算法(原子消息广播协议)的实现。该框架能够很好地保证分布式环境中数据的一一致性。也正是基于这样的特性,...原创 2019-06-17 00:16:16 · 241 阅读 · 0 评论 -
ZooKeeper开源客户端Curator介绍
zookeeper原生API的使用,不得不说,有很多的问题,比如:不能递归创建和删除节点、Watcher只能使用一次、还有很多可以解决分布式应用问题的api(比如分布式锁,leader选举等),但由于ZooKeeper提供的原始API并不是很易用,在其基础上封装一些高级应用又是一件很复杂的事情。这个时候,Curator出现了,Curator是Netflix公司开源的一个Zookeeper客户端...原创 2019-06-16 23:20:22 · 296 阅读 · 0 评论 -
利用Zookeeper(Curator)实现 - Barrier屏障
1.什么是BarrierBarrier是一个同步点,每一个进程到达此点都要等待,直到某一个条件满足,然后所有的节点继续进行。比如:赛跑大家都知道,所有比赛人员都会在起跑线外等待,直到教练员的枪响之后,所有参赛者立刻开始赛跑。JDK的并发包下有CyclicBarrier,它看起来和CountDownLatch有很大的相似之处:CountDownLatch:是一个同步的辅助类,允许一个或多...原创 2019-06-16 21:05:02 · 167 阅读 · 0 评论 -
利用Zookeeper(Curator)实现 - 服务注册与发现
随着业务增加,以前简单的系统已经变得越来越复杂,单纯的提升服务器性能也不是办法,而且代码也是越来越庞大,维护也变得越来越困难,这一切都催生了新的架构设计风格 – 微服务架构的出现。微服务给我们带来了很多好处,例如:独立可扩展、易维护。但是随着应用的分解,微服务的引入,服务越来越多,业务系统与服务系统之间的调用,该架构的问题暴露出来:最明显的问题是所有的请求都需要nginx来转发,随着内部服务的...原创 2019-06-16 15:23:43 · 2192 阅读 · 1 评论 -
利用Zookeeper(Curator)实现 - 消息队列
目录前言1.DistributedQueue2.DistributedIdQueue3.DistributedPriorityQueue4.DistributedDelayQueue前言Curator框架也有分布式队列实现 。 利用ZK的PERSISTENT SEQUENTIAL(持久顺序)节点,可以保证放入到队列中的项目是按照顺序排队的。并且宕机重启并不丢失消息, 如...原创 2019-06-16 02:34:38 · 1425 阅读 · 1 评论 -
利用Zookeeper(Curator)实现-分布式锁
在分布式环境中 ,为了保证数据的一致性,经常在程序的某个运行点(例如,减库存操作或者流水号生成等)需要进行同步控制。以一个"流水号生成"的场景为例,普通的后台应用通常都是使用时间戳来生成流水号,但是在用户访问量很大的情况下,可能会出现并发问题。下面通过示例程序就演示一个典型的并发问题:public static void main(String[] args) throws Except...原创 2019-06-16 01:53:20 · 309 阅读 · 0 评论 -
利用Zookeeper(Curator)实现-事件监听
事件监听Zookeeper原生就支持通过注册Watcher来进行事件监听,但是其使用并不是特别方便,需要开发人员反复注册Watcher,比较繁琐。Curator引入了Cache来实现对zookeeper服务端事件的监听,Cache是Curator中对事件的包装,其对事件的监听其实可以近似的看做是一个本地缓存视图和远程Zookeeper视图的对比过程。同时Curator能够自动为开发人员处理反复...原创 2019-06-14 00:00:07 · 970 阅读 · 0 评论 -
利用Zookeeper实现-分布式计数器
之前我们了解了基于Corator的分布式锁之后,我们就很容易基于其实现一个分布式计数器,顾名思义,计数器是用来计数的, 利用ZooKeeper可以实现一个集群共享的计数器。 只要使用相同的path就可以得到最新的计数器值, 这是由ZooKeeper的一致性保证的。Curator有两种计数器。1.SharedCount这个类使用int类型来计数。 主要涉及三个类。SharedCount...原创 2019-06-13 02:05:48 · 1118 阅读 · 0 评论 -
ZooKeeper典型应用场景
1.ZooKeeper 概述ZooKeeper 是一个开源的高可用的分布式数据管理与系统协调框架,基于对 Paxos 算法的实现,保证了分布式环境中数据的强一致性。2.ZooKeeper 典型应用场景2.1 配置中心(数据发布与订阅)发布与订阅模型:发布者发布数据到 ZK 节点上,供订阅者动态获取数据。在数据量很少,但是数据更新快的场景下:配置信息放到 ZK节点上集中...原创 2019-06-13 01:36:53 · 106 阅读 · 0 评论 -
利用Zookeeper实现 - 实现分布式锁
Curator提供了zk场景的绝大部分实现,使用Curator就不必关心其内部算法,Curator提供了来实现分布式锁,用方法获取锁,以及用方法释放锁,同其他锁一样,方法需要放在finakky代码块中,确保锁能正确释放。1.添加Maven依赖<dependency> <groupId>org.apache.curator</group...原创 2019-06-12 01:02:25 · 172 阅读 · 0 评论