ZooKeeper
文章平均质量分 84
ITKaven
ACMER
本科软件工程专业
硕士计算机技术专业
专注于WEB开发的烟酒僧
展开
-
ZooKeeper :Docker Compose部署ZooKeeper集群
用于Docker Compose部署ZooKeeper集群的yaml文件:version: '3'networks: zookeeper-networks: driver: bridgeservices: zookeeper1: image: zookeeper container_name: zookeeper1 restart: always ports: - 9001:2181 volumes: - "/usr/l原创 2022-02-13 17:05:46 · 3272 阅读 · 3 评论 -
ZooKeeper :客户端命令介绍
客户端命令Sessionquit:直接离开客户端(停止了客户端程序),因此再次连接服务端需要重新运行zkCli.sh脚本。close:不会直接离开客户端,只是关闭与服务端的连接,执行该命令后Session状态会变成CLOSED,由于没有离开客户端,因此还可以使用connect命令重新连接服务端,但Session和之前的Session不是同一个了,session id会发生改变了,但session timeout还是保留了之前的配置(毕竟没有停止客户端程序)。connect:该命令就是原创 2022-02-12 11:51:36 · 1278 阅读 · 0 评论 -
ZooKeeper : Curator框架之分布式锁InterProcessReadWriteLock
InterProcessReadWriteLock跨JVM工作的可重入读/写互斥锁,使用Zookeeper来持有锁,所有JVM中使用相同锁路径的所有进程都将实现进程间临界区。这个互斥锁是公平的,每个用户都会按照请求的顺序获得互斥锁(从ZK的角度来看)。读写锁维护一对关联的锁,一个用于只读操作,一个用于写操作。只要没有写锁,读锁可以被多个用户同时持有,而写锁是独占的。读写锁允许从写锁降级为读锁,方法是先获取写锁,然后就可以获取读锁。但是,无法从读锁升级到写锁。测试pom.xml:<?xml原创 2022-01-19 14:54:06 · 1930 阅读 · 3 评论 -
ZooKeeper : Curator框架之共享计数器DistributedAtomicLong
DistributedAtomicLong尝试原子增量操作的计数器,首先尝试使用乐观锁进行增量操作,如果失败,则采用可选的InterProcessMutex(悲观锁)。 对于乐观锁和悲观锁,重试策略都用于重试增量操作。各种增量方法都会返回一个AtomicValue实例,通过调用AtomicValue实例的succeeded()可以查询增量操作是否执行成功,除了get() 外,其他任何方法都不保证成功。AtomicValue接口源码(原子操作返回的值的抽象):public interface Atom原创 2022-01-19 11:29:26 · 2683 阅读 · 0 评论 -
ZooKeeper : Curator框架之共享计数器SharedCount
SharedCountSharedCount类的源码注释:Manages a shared integer. All clients watching the same path will have the up-to-date value of the shared integer (considering ZK’s normal consistency guarantees).管理一个共享整数。观看同一路径的所有客户端都将拥有共享整数的最新值(考虑到ZK的正常一致性保证)。SharedC原创 2022-01-18 21:32:00 · 908 阅读 · 0 评论 -
ZooKeeper : Curator框架之分布式屏障DistributedDoubleBarrier
DistributedDoubleBarrierDistributedDoubleBarrier类的源码注释:Double barriers enable clients to synchronize the beginning and the end of a computation. When enough processes have joined the barrier, processes start their computation and leave the barrier once原创 2022-01-18 12:59:02 · 788 阅读 · 0 评论 -
ZooKeeper : Curator框架之分布式屏障DistributedBarrier
DistributedBarrierDistributedBarrier类的源码注释:Distributed systems use barriers to block processing of a set of nodes until a condition is met at which time all the nodes are allowed to proceed.分布式系统使用屏障来阻止一组节点的处理,直到满足允许所有节点继续的条件为止。类比单体应用的屏障CyclicBarri原创 2022-01-17 20:23:28 · 1070 阅读 · 0 评论 -
ZooKeeper : Curator框架之分布式锁InterProcessSemaphoreMutex
InterProcessSemaphoreMutexA NON re-entrant mutex that works across JVMs. Uses Zookeeper to hold the lock. All processes in all JVMs that use the same lock path will achieve an inter-process critical section.跨JVM工作的非可重入互斥锁。使用Zookeeper来持有锁。所有JVM中使用相同锁路径原创 2022-01-17 19:03:41 · 855 阅读 · 0 评论 -
ZooKeeper : Curator框架之分布式锁InterProcessMutex
InterProcessMutexInterProcessMutex类的源码注释:A re-entrant mutex that works across JVMs. Uses Zookeeper to hold the lock. All processes in all JVMs that use the same lock path will achieve an inter-process critical section. Further, this mutex is “fair” - ea原创 2022-01-17 15:42:51 · 2163 阅读 · 1 评论 -
ZooKeeper : Curator框架之Leader选举LeaderSelector
在上一篇博客中给大家介绍了 Curator框架的LeaderLatch,它是一种Leader选举实现,本篇博客介绍Curator框架的另一种Leader选举实现LeaderSelector。ZooKeeper : Curator框架之Leader选举LeaderLatch这里不再赘述Leader选举的概念。测试代码CuratorFrameworkProperties类(提供CuratorFramework需要的一些配置信息):package com.kaven.zookeeper;impo原创 2022-01-07 19:36:06 · 1296 阅读 · 0 评论 -
ZooKeeper : Curator框架之Leader选举LeaderLatch
Leader选举在分布式计算中,Leader选举是指指定单个进程作为分布在多台计算机(节点)之间的某些任务的组织者的过程。在任务开始之前,所有网络节点都不知道哪个节点将充当任务的Leader。然而,在执行Leader选举算法之后,整个网络中的每个节点都会选举出一个特定的、唯一的节点作为任务Leader。LeaderLatchCurator框架提供了两种Leader选举的实现,LeaderLatch(非公平)和LeaderSelector(公平),本篇博客介绍LeaderLatch的使用。测试代码C原创 2022-01-07 12:40:25 · 2099 阅读 · 0 评论 -
ZooKeeper : Curator框架之数据缓存与监听CuratorCache
CuratorCacheCuratorCache会试图将来自节点的数据保存在本地缓存中。 也可以缓存节点下方的整个子树(可选地)。 将响应更新、创建、删除事件以及下拉数据等。可以给CuratorCache实例注册发生更改时接收通知的监听器。 CuratorCache cache = CuratorCache.build(curator, "/father/son/grandson1"); CuratorCacheListener listener = CuratorCac原创 2021-12-30 18:06:15 · 4109 阅读 · 0 评论 -
ZooKeeper汇总
ZooKeeper部署ZooKeeper :Shell脚本搭建单机版ZooKeeperZooKeeper :搭建ZooKeeper集群ZooKeeper :Nginx基于TCP协议代理ZooKeeper集群ZooKeeper概念与框架ZooKeeper :重要概念 & 客户端命令介绍ZooKeeper :Java客户端Session、ACL、Znode API介绍ZooKeeper :Java客户端Watcher API介绍ZooKeeper :Java客户端执行批量任务和Tr原创 2021-12-20 13:45:12 · 1542 阅读 · 0 评论 -
Canal:部署Canal与Canal Admin
简介canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费。工作原理canal模拟MySQL slave的交互协议,将自己伪装为MySQL slave,向MySQL master发送dump协议。MySQL master收到dump请求,开始推送binary log给slave(即canal )。canal解析binary log对象(原始为byte流)。因此可以用Canal来提供MySQL数据库增量数据的订阅和消费,当My原创 2021-12-14 18:21:58 · 5856 阅读 · 3 评论 -
ZooKeeper : Curator框架Watcher API介绍
ZooKeeper : Curator框架Watcher API介绍在之前的博客中,博主已经介绍了Curator框架的Session、Znode以及ACL API:ZooKeeper : Curator框架重试策略和Session API介绍ZooKeeper : Curator框架Znode、ACL API介绍本篇博客将介绍Curator框架的Watcher API,它简化了Java客户端原生Watcher API的使用,了解后者可以更好地理解前者的实现:ZooKeeper :Java客户原创 2021-12-09 17:34:06 · 1561 阅读 · 0 评论 -
ZooKeeper : Curator框架Znode、ACL API介绍
ZooKeeper : Curator框架Znode、ACL API介绍在之前的博客中,博主介绍了Curator框架的重试策略和Session API,并且对namespace进行了原理分析:ZooKeeper : Curator框架重试策略和Session API介绍ZooKeeper : Curator框架namespace原理分析博主使用的Curator框架版本是5.2.0,ZooKeeper版本是3.6.3(5.2.0版本的Curator使用3.6.3版本的ZooKeeper,因此它们是原创 2021-12-03 18:09:17 · 2506 阅读 · 0 评论 -
ZooKeeper : Curator框架namespace原理分析
ZooKeeper : Curator框架Session API介绍在学习Curator框架API之前,可以先了解Java客户端原生API,这样不仅可以更好的理解Curator框架API,还可以突出Curator框架的方便和强大。ZooKeeper :Java客户端Session、ACL、Znode API介绍ZooKeeper :Java客户端Watcher API介绍ZooKeeper :Java客户端执行批量任务和Transaction API介绍Curator是一个比较完善的ZooKe原创 2021-11-26 11:40:24 · 3495 阅读 · 0 评论 -
ZooKeeper : Curator框架重试策略和Session API介绍
ZooKeeper : Curator框架Session API介绍在学习Curator框架API之前,可以先了解Java客户端原生API,这样不仅可以更好的理解Curator框架API,还可以突出Curator框架的方便和强大。ZooKeeper :Java客户端Session、ACL、Znode API介绍ZooKeeper :Java客户端Watcher API介绍ZooKeeper :Java客户端执行批量任务和Transaction API介绍Curator是一个比较完善的ZooKe原创 2021-11-25 22:02:14 · 2113 阅读 · 0 评论 -
ZooKeeper :Java客户端执行批量任务和Transaction API介绍
ZooKeeper :Java客户端执行批量任务和Transaction API介绍在上一篇博客中,博主介绍了Watcher API的使用:ZooKeeper :Java客户端Watcher API介绍这篇博客,博主给大家介绍如何执行批量任务和Transaction API的使用。为什么需要执行批量任务的功能?原因也很简单,因为可以有效的降低处理多任务时的耗时,主要是可以减少客户端与服务端的连接、验证以及数据传输等耗时操作的次数,当然批量任务也不能太多,不然数据包太大,可能因为网络问题导致丢包和重原创 2021-11-23 17:41:08 · 1607 阅读 · 0 评论 -
ZooKeeper :Java客户端Watcher API介绍
ZooKeeper :Java客户端Watcher API介绍在上一篇博客中,博主给大家介绍了Java客户端的Session、ACL以及Znode API:ZooKeeper :Java客户端Session、ACL、Znode API介绍这一篇博客,博主将会介绍Watcher API的使用。先创建一个maven项目:pom.xml如下所示:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven原创 2021-11-22 17:56:19 · 1668 阅读 · 0 评论 -
ZooKeeper :Java客户端Session、ACL、Znode API介绍
ZooKeeper :Java客户端API介绍前期回顾:ZooKeeper :Shell脚本搭建单机版ZooKeeperZooKeeper :重要概念 & 客户端命令介绍ZooKeeper :搭建ZooKeeper集群ZooKeeper :Nginx基于TCP协议代理ZooKeeper集群本篇博客博主将会给大家介绍ZooKeeper提供的Java客户端API,下一篇博客再介绍Curator的使用。先创建一个maven项目:pom.xml:<?xml version="1原创 2021-11-21 14:04:01 · 1294 阅读 · 0 评论 -
Nginx:Nginx基于TCP协议代理ZooKeeper集群
ZooKeeper :Nginx基于TCP协议代理ZooKeeper集群在上一篇博客中博主介绍了如何搭建ZooKeeper集群:ZooKeeper :搭建ZooKeeper集群搭建ZooKeeper集群是为了使用它,之前博主也介绍过如何搭建Nacos集群,并且使用了Nginx作为Nacos集群的代理,这样客户端需要使用Nacos集群,就只需要与该Nginx进行交互即可(不需要考虑Nacos集群的复杂性,Nginx会将请求转发给Nacos集群,而Nacos集群的响应,Nginx也会响应给客户端),而原创 2021-11-19 18:07:44 · 3143 阅读 · 0 评论 -
ZooKeeper :搭建ZooKeeper集群
ZooKeeper :搭建ZooKeeper集群本文将介绍如何搭建ZooKeeper集群,博主准备搭建由三个ZooKeeper节点组成的集群,先需要创建三台虚拟机(VirtualBox可以复制虚拟机),系统为CentOS7,每台虚拟机配置相同,内存2G以及磁盘8G。如何创建虚拟机请参考这篇博客:VirtualBox安装CentOS7还需要使用XShell来连接虚拟机,毕竟在VirtualBox上操作虚拟机比较麻烦。先使用VirtualBox进入虚拟机,查询该虚拟机的IP地址(使用ip addr或者原创 2021-11-18 21:44:29 · 2593 阅读 · 2 评论 -
ZooKeeper :重要概念
ZooKeeper :Shell脚本搭建单机版ZooKeeper上一篇博客介绍了如何使用Shell脚本搭建单机版的ZooKeeper:ZooKeeper :Shell脚本搭建单机版ZooKeeper这篇博客,博主打算介绍ZooKeeper提供的客户端命令和ZooKeeper的一些重要概念。ZooKeeper的一些重要概念总结如下:会话(Session):Session指的是ZooKeeper客户端与服务端的会话。客户端启动时,会与服务端建立一个TCP长连接,客户端需要通过心跳与服务端保持会话原创 2021-11-17 22:29:49 · 1684 阅读 · 0 评论 -
ZooKeeper :Shell脚本搭建单机版ZooKeeper
ZooKeeper :Shell脚本搭建单机版ZooKeeper本文博主将使用Shell脚本搭建单机版ZooKeeper,上一篇博客介绍了使用Shell脚本搭建Nacos集群:Spring Cloud Alibaba:搭建Nacos集群方法其实是类似的,搭建集群版ZooKeeper以后再介绍,博主最近比较忙,要准备发小论文和申请自由探索。ZooKeeper是分布式应用程序的高性能协调服务,分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管原创 2021-11-14 20:12:11 · 1959 阅读 · 0 评论