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,会话,开源,设计模式,链接 来源: https://www.cnblogs.com/ilovebath/p/15107585.html