本文主要是介绍zookeeper实战:ConfigServer代码样例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
http://shift-alt-ctrl.iteye.com/blog/1859725
ConfigServer从业务需要上来说,作为一个全局配置管理中心,负责保存公用服务中的服务接口/server配置/通讯网关/全局权限等;对服务消费方而言,可以良好的解偶对硬编码配置的依赖,并可以实现服务的动态管理等。
系统配置数据普遍具有“类别多”,“数据小”,“非关系型”,并要求存储系统具备高效的存取能力和健壮性,本例使用zookeeper来简单实现此功能。如下代码仅作参考。
1. TestMain.java:测试引导类。
2. ConfigManager.java: 配置管理类,负责管理“服务类型”(serverType).可以通过向configManager提交“服务类型”,configManager将会把此类型交付给zookeeper持久存储,服务类型创建成功后,configServer实例就可以在此类型下挂载数据。
3. ConfigServer.java: 配置生成类,负责向zookeeper提交数据,不过只能在其所属的serverType下生成子节点,那么此子节点就可以挂载当前server的信息,此例中假定数据为 ip + port字符串。
4. ConfigClient.java:配置消费类,负责从zookeeper中获得其感兴趣的serverType的数据集合。每个client可以获得多种serverType数据。
因为zookeeper系统本身提供了watch机制,因为对数据的“异步获取”提供了有利的条件,同时因为zk对网络IO有较强的敏感性,watch事件本身也是“即发即失”,因为需要考虑client/manager/server三种角色中网络失效情况下的补救措施,或者“容忍”。
设计思路已经在代码注释中标明,如有不妥,请多多指教。
TestMain.java
这篇关于zookeeper实战:ConfigServer代码样例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!