Zookeeper开源客户端Curator之创建会话
前面Zookeeper的链接使用的都是其提供的原生代码,实际开发过程中非常底层的细节开发工作如连接重连,反复注册等耗费开发人员大量的工作精力并且重复工作。而开源客户端Curator的出现解决了该类问题,当然也有其他开源开源客户端解决此类问题如ZkClient等。
本文的关注点是Curator如何创建与Zookeeper之间的会话,其使用了工厂设计模式。在介绍创建会话之前可以先温习下工厂设计模式,网络上文章比较多选自己能理解的参考阅读,推荐一篇(https://www.toutiao.com/i6697059170643870221/?tt_from=mobile_qq&utm_campaign=client_share×tamp=1603481163&app=news_article&utm_source=qzone&utm_medium=toutiao_android&use_new_style=1&req_id=20201024032603010014047075261FD672&group_id=6697059170643870221)。
上本文案例源码:
上图中创建了两个client再启用命令start链接到Zookeeper,看着方式并不一样。其实本质一样,略有区别的是后者client参数设置多了个命名空间。这个差别具体链接到Zookeeper体现在何处,后面详述。
为啥本质无差别,看看newClient的实现:
具体源码分析前,首先看一下主函数中使用的几个类的UML图:
CuratorFramework的实现为什么选择CuratorFrameworkImpl?因为其build硬编码为CuratorFrameworkImpl:
从整个创建的逻辑看,还是比较直观的——重点在两个方法:build和start。build是CuratorFrameworkFactory静态内部类Bulider中的方法。几个类的大致功能基本可以确定:Builder设置参数并创建一个CuratorFramework的实现对象;CuratorFramework启用命令start链接到Zookeeper,对用户屏蔽Zookeeper提供链接的底层API。
从设计模式的维度看,创建会话的过程应用了工厂方法设计模式、命令设计模式,还有fluent风格的编程方式。
Zookeeper开源客户端Curator之创建会话的更多相关文章
- Zookeeper开源客户端Curator的使用
开源zk客户端-Curator 创建会话: RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,3); CuratorFramewor ...
- 八:Zookeeper开源客户端Curator的api测试
curator是Netflix公司开源的一套ZooKeeper客户端,Curator解决了很多ZooKeeper客户端非常底层的细节开发工作.包括连接重连,反复注册Watcher等.实现了Fluent ...
- zookeeper开源客户端curator
zookeeper的原生api相对来说比较繁琐,比如:对节点添加监听事件,当监听触发后,我们需要再次手动添加监听,否则监听只生效一次:再比如,断线重连也需要我们手动代码来判断处理等等.对于curato ...
- Zookeeper开源客户端Curator之事件监听详解
Curator对Zookeeper典型场景之事件监听进行封装,提供了使用参考.这篇博文笔者带领大家了解一下Curator的实现方式. 引入依赖 对于Curator封装Zookeeper的典型场景使用都 ...
- ZooKeeper(3.4.5) - 开源客户端 Curator(2.7.0) 的简单示例
一.创建会话 1. 创建会话 package com.huey.dream.demo; import org.apache.curator.framework.CuratorFramework; im ...
- 12. ZooKeeper之Java客户端API使用—创建会话。
转自:https://blog.csdn.net/en_joker/article/details/78686649 客户端可以通过创建一个ZooKeeper(org.apache.zookeeper ...
- Apache Zookeeper Java客户端Curator使用及权限模式详解
这篇文章是让大家了解Zookeeper基于Java客户端Curator的基本操作,以及如何使用Zookeeper解决实际问题. Zookeeper基于Java访问 针对zookeeper,比较常用的J ...
- Zookeeper开源客户端框架Curator简介
Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处理很多事情 ...
- Zookeeper开源客户端框架Curator简介[转]
Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处理很多事情 ...
随机推荐
- PPT2010制作图片玻璃磨砂效果
原文链接: https://www.toutiao.com/i6488928834799272462/ 选择"插入"选项卡,"图像"功能组,"图片&q ...
- Static 静态+this
(一):静态 1.Static修饰的都是静态的,都是类相关的,不需要new对象,直接采用类名.的方式访问 2.当一个属性是类级别的,所有对象的这个属性都是一样的,直接定义为静态 类=属性+方法 属性描 ...
- 创建VS Code 扩展插件
VS Code提供了强大的扩展功能,我们可以通过开发插件实现自己的业务模型编辑器.这里我们快速介绍一下插件的创建.开发和发布过程. 创建插件开发模板 首先需要确认系统中安装了node.js,并且可以使 ...
- Kafka connector (kafka核心API)
前言 Kafka Connect是一个用于将数据流输入和输出Kafka的框架.Confluent平台附带了几个内置connector,可以使用这些connector进行关系数据库或HDFS等常用系统到 ...
- 《剑指offer》面试题64. 求1+2+…+n
问题描述 求 1+2+...+n ,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 示例 1: 输入: n = 3 输出: 6 示 ...
- [C# 学习]窗体间调用控件
一.方法1: 假如有两个窗体,Form_A和Form_B,每个窗体里都有一个按键,Button_A和Button_B,要实现单击Button_A显示窗体B,那么窗体A中Buttom_A的单击事件的程序 ...
- Xamarin/Unity3d无法访问Azure服务器或者微软API
Xamarin因为是mono项目的商用版,mono项目是.net技术的开源修改版,所以和微软的服务对接时候会出现安全验证问题. mono项目本质是对汇编级的中间语言二次编译.可参考公共语言运行时相关知 ...
- Go 结构体方法
#### Go 结构体方法本来今天有些事情忙的不准备更新内容了,后来提前完成了, 所以还是要更新了; 毕竟坚持本就是一件不容易的事情!加油,相信不管是大家还是我,都有一些事情想要做,那就坚持吧,剩下的 ...
- 集合框架-工具类-JDK5.0特性-静态导入
1 package cn.itcast.p4.news.demo; 2 3 import java.util.ArrayList; 4 //import java.util.Collections; ...
- Nginx限制连接控制访问量
目录 一:限制连接数模块(同时访问网址能访问多少次) 1.修改网址模块文件 2.测试 3.重启 4.增加解析ip 5.压力测试 二:控制Nginx访问量 1.连接池 2.限制数 3.测试 4.重启 5 ...