文档章节

彻底摆脱配置文件 一(开源项目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
773
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

没有更多内容

加载失败,请刷新页面

加载更多

JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
8
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
8
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
8
0
HTML5+CSS3从入门到精通 中文pdf版​

本文转载于:专业的前端网站➵HTML5+CSS3从入门到精通 中文pdf版 HTML5+CSS3从入门到精通是通过基础知识+中小实例+综合案例的方式,讲述了用HTML5+ CSS3设计构建网站的必备知识,相对于专业指...

前端老手
昨天
6
0
聊聊nacos client的ConfigFilterChainManager

序 本文主要研究一下nacos client的ConfigFilterChainManager IConfigFilterChain nacos-1.1.3/api/src/main/java/com/alibaba/nacos/api/config/filter/IConfigFilterChain.java public in......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部