文档章节

彻底摆脱配置文件 一(开源项目zkconfigutil详解)

book
 book
发布于 2014/02/18 20:59
字数 571
阅读 1375
收藏 6

zkconfigutil介绍

    它只是个工具,用于实现分布式集群间配置项的管理,虽小,但很、灰常好用,easy play

    项目个性化地址http://jerrysearch.github.io/zkconfigutil/

代码实例

/**
 * just test
 * @author JERRY
 *
 */
@TypeZkConfigurable(path="/test/jerry", server="localhost:2181", useOwnZkServer=false)
public final class Demo {
	
	@FieldZkConfigurable(resove=DemoF1Resolve.class, dynamicUpdate=true)
	public static String F1 = "F1";
	
	@FieldZkConfigurable(resove=DemoF2Resolve.class, dynamicUpdate=true)
	public static String F2 = "F2";
	
	@FieldZkConfigurable(resove=DemoF3Resolve.class, dynamicUpdate=true)
	public static Boolean F3 = false;
}

public final class DemoF1Resolve extends AbstractResolve{

		@Override
		public String resolve() {
			// TODO Auto-generated method stub
			return Demo.F1;
		}

		@Override
		public void dResolve(String src) {
			// TODO Auto-generated method stub
			Demo.F1 = src;
		}
		
	}

    

详解

该Demo模拟集群环境,假入Demo用于工程公共配置管理,一般其会有比较多的字段,当前zkconfigutil版本只考虑可配置的字段的值均可以通过string表示,这样我们就可以通过eclipse zookeeer插件方便的实现可视化修改

如您所见,Demo中主要有两类注解,一个用于class,一个用于字段

@TypeZkConfigurable(path="/test/jerry", server="localhost:2181", useOwnZkServer=false)

该注解用于class主要有三个参数,path代表该配置在zookeeper上的根目录,一个配置项实际保存在zookeeper上的路径为/path/ClassSimpleName/FieldName,server代表使用的zookeeper地址,标准的zookeeper地址格式,useOwnZkServer表示是否使用自己指定的私有zookeeper,下面您会看到一个totalzookeeper,耐心往下看


@FieldZkConfigurable(resove=DemoF1Resolve.class, dynamicUpdate=true)

该注解用于field主要有两个参数,resove主要实现该字段的赋值操作,dynamicUpdate设置该字段是否需要动态更新,true时,zookeeper会对该路径添加dataListener,当zookeeper上值发生变更时,通过reslove实现字段的更新操作

您可能看到了,主要工作在于reslove的开发,但其实其只有两个方法,easy play


ZkConfigUtil app = new ZkConfigUtil("localhost:2181");
app.register(Demo.class, true);

so easy,两行代码实现Demo的zookeeper化,心动不如行动。game over!!!


description

    是的,这个工具其实是我写的,分享给大家,同时也希望大家多提提建议或意见,希望能将其开源,用在N多分布式系统上,所以您可以在https://github.com/jerrysearch/zkconfigutil/wiki 上fork该project,真心希望您能成为其中一员!!!


                                                                                                                                                                   此致,敬礼

jerry 于2014-02-18晚

© 著作权归作者所有

book

book

粉丝 42
博文 22
码字总数 15217
作品 2
海淀
高级程序员
私信 提问
加载中

评论(3)

翡翠水滴
翡翠水滴
不知道你对多线程的处理是怎么样的。直接修改值在多线程环境下还是相当危险的,最好能有个事件什么的。
book
book 博主

引用来自“翡翠水滴”的评论

要摆脱配置文件,第一步是要摆脱配置 zookeeper 的地址……
谢谢哥们诚恳的建议,第一版不够完善,正式版可以通过jvm参数,在程序启动时指定javaagent的参数或设置-DZK=,解决了这个问题,并实现了对服务的零侵入,对服务本身而言,可能只是多了几个注解 http://my.oschina.net/jerrysearch/blog/287573
翡翠水滴
翡翠水滴
要摆脱配置文件,第一步是要摆脱配置 zookeeper 的地址……
彻底摆脱配置文件 二 (开源项目zkconfigutil resolve自动生成)

本人一直想把zkconfigutil推向开源,虽现在不是很完善,但也从未停止前进的步伐,最近一直在想如何解决大量resolve的编写问题,写个eclipse插件看来是比较好的做法,JET也不好弄,所以由于时...

book
2014/03/01
774
0
zkconfigutil 1.0.1 发布,分布式系统配置项zookeeper化

zkconfigutil 1.0.1 发布,这是第一个正式版,zkconfigutil 是一个零侵入、采用注解机制、基于javaagent,完美实现分布式服务zookeeper化配置的工具,与eclipse zookeeper插件搭配非常完美!...

book
2014/07/05
1K
1
分布式工程配置zookeeper化--zkconfigutil

分布式系统配置项zookeeper化,可实现动态更新,极大方便系统的配置管理,彻底摆脱配置文件,使用annotation实现,easy play! 这是一个非常好用的使用zookeeper配置(分布式)工程的组件,使...

book
2014/03/02
2.9K
2
彻底摆脱配置文件 七(基于linux USER2信号检查当前管理的配置项信息)

基于linux USER2信号检查zkconfigutil当前管理的配置信息 当zkconfigutil管理的配置项过多时,我们也不确定是否有漏配置的,这个功能可以理解为配置项检查。 基于linux signal实现,使用起来...

book
2014/08/13
468
0
彻底摆脱配置文件 三(开源项目zkconfigutil通用resolve自动生成)

系列文章见本人博客 castresolvetemplate.xml文件在工程template下,地址:castresolve_template public static final class DemoF3Resolve extends AbstractResolve { @Overridepublic Stri......

book
2014/03/17
126
0

没有更多内容

加载失败,请刷新页面

加载更多

arduino项目-1. 模拟楼道灯

@toc 1.1 情景说明 说明 漆黑的夜晚,当有人非法进入一所房屋,房屋内的灯在恰当的时间亮起,也许会有效阻止非法活动的继续。 效果展示 1.2 实验器材 器材名称 数量 继电器 1 人体红外感应器...

acktomas
3分钟前
1
0
Nacos 常见问题及解决方法

Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈。在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方...

阿里云官方博客
9分钟前
2
0
pinyin4j 满足中文转拼音的需求

引入依赖 // https://mvnrepository.com/artifact/com.belerweb/pinyin4j //汉字转拼音compile group: 'com.belerweb', name: 'pinyin4j', version: '2.5.1' 写入中文转拼英的工具......

edison_kwok
14分钟前
2
0
IPSE接入Substrate/Polkadot插槽实现互操作性的运行原理

Substrate框架将区块链的众多功能都模块化,对于开发者来说,只是一个选择的问题,同时还保持了众多的可以定制的功能和模块,比如底层通信模块,比如账户体系,比如共识机制等都是可以自己定...

IPSE
20分钟前
15
0
linux配置安装phpMyAdmin的步骤记录

1、首先在phpMyAdmin官方网站 http://www.phpmyadmin.net/downloads下载源码包,或者通过脚本之家进行下载://www.jb51.net/codes/405261.html ,下载后上传到服务器解压即可,或者通过Linux...

蜗牛女孩
21分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部