




免费预览已结束,剩余28页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
杨旆,Zookeeper统一配置管理,概述,Zookeeper的介绍与部署使用Zookeeper的配置管理场景与解决方案百度Disconf的介绍与部署使用关于配置管理的细节讨论示例程序的演示,Zookeeper介绍,简介ApacheZookeeper是一个开放源代码的分布式协调服务,由知名互联网公司雅虎创建,是GoogleChubby的开源实现,由ApacheHadoop的子项目发展而来,与2010年11月从Hadoop项目中分离,正式成为Apache的顶级项目。Zookeeper为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、分布式协调/通知、集群管理、统一命名服务、分布式锁和分布式队列等分布式的基础服务。Zookeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。,Zookeeper介绍,Zookeeper总体结构Zookeeper服务自身组成一个集群(2n+1个服务允许n个失效)。Zookeeper服务有两个角色,一个是leader,负责写服务和数据同步,剩下的是follower,提供读服务,leader失效后会在follower中重新选举新的leader。,客户端可以连接到每个server,每个server的数据完全相同。每个follower都和leader有连接,接受leader的数据更新操作。Server记录事务日志和快照到持久存储。大多数server可用,整体服务就可用。,Zookeeper介绍,数据结构Zookeeper表现为一个分层的文件系统目录树结构,不同于文件系统的是,节点可以有自己的数据,而文件系统中的目录节点只有子节点。每个节点称为znode。,Zookeeper介绍,通知机制ZooKeeper支持一种Watch操作,Client可以在某个ZNode上设置一个Watcher来注册监听它关心的目录节点,并且Watch该ZNode上的变化。如果该ZNode上有相应的变化(数据改变、被删除、子目录节点增加删除),就会触发这个Watcher,把相应的事件通知给设置Watcher的Client。需要注意的是,ZooKeeper中的Watcher是一次性的,即触发一次就会被取消,如果想继续Watch的话,需要客户端重新设置Watcher。,Zookeeper介绍,一致性保证ZooKeeper是一个高性能,可扩展的服务。读和写操作都非常快速。之所以如此,全因为zookeeper有数据一致性的保证:顺序一致性:按照客户端发送请求的顺序更新数据。原子性:更新要么成功,要么失败,不会出现部分更新。单一性:无论客户端连接哪个server,都会看到同一个视图。可靠性:一旦数据更新成功,将一直保持,直到新的更新。及时性:客户端会在一个确定的时间内得到最新的数据。,Zookeeper介绍,运用场景数据发布与订阅应用配置集中到节点上,应用启动时主动获取,并在节点上注册一个watcher,每次配置更新都会通知到应用。命名空间服务分布式命名服务,创建一个节点后,节点的路径就是全局唯一的,可以作为全局名称使用。分布式通知/协调不同的系统都监听同一个节点,一旦有了更新,另一个系统能够收到通知。,Zookeeper介绍,分布式锁Zookeeper能保证数据的强一致性,用户任何时候都可以相信集群中每个节点的数据都是相同的。一个用户创建一个节点作为锁,另一个用户检测该节点,如果存在,代表别的用户已经锁住,如果不存在,则可以创建一个节点,代表拥有一个锁。集群管理每个加入集群的机器都创建一个节点,写入自己的状态。监控父节点的用户会受到通知,进行相应的处理。离开时删除节点,监控父节点的用户同样会收到通知。(zookeeper还有临时节点的概念,这些节点的生命周期依赖于创建它们的session是否活跃。session结束时节点即被销毁。也由于这种特性,临时节点不允许有子节点。),Zookeeper部署和使用,zookeeper单节点安装Standalones模式1、下载Zookeeperwget,Zookeeper部署和使用,3、启动zookeeperbin/zkServer.sh查看运行状态bin/zkServer.shstatusJMXenabledbydefaultUsingconfig:/home/xxx/zookeeper-3.4.7/conf/zoo.cfgMode:standalone4、停止zookeeperbin/zkServer.shstop,Zookeeper部署和使用,zookeeper伪分布式集群安装所谓伪分布式集群,就是在,在一台PC中,启动多个ZooKeeper的实例。“完全分布式集群”是每台PC,启动一个ZooKeeper实例。这里在一台PC中,启动3个ZooKeeper的实例。1、创建环境目录mkdir/home/xxx/zk1mkdir/home/xxx/zk2mkdir/home/xxx/zk3并在三个目录下新建myid文件,分别为“1”、“2”、“3”。2、添加配置文件在conf目录下新建3个cfg文件,分别为zk1.cfg、zk2.cfg、zk3.cfg,Zookeeper部署和使用,3、分别修改配置文件tickTime=2000initLimit=10syncLimit=5dataDir=/home/xxx/zk1clientPort=2181server.1=localhost:2888:3888server.2=localhost:2889:3889server.3=localhost:2890:38904、启动集群bin/zkServer.shstartzk1.cfgbin/zkServer.shstartzk2.cfgbin/zkServer.shstartzk3.cfg,Zookeeper部署和使用,客户端的使用ZooKeeper的命令行操作bin/zkCli.sh-server:2181查看/目录内容ls/创建一个znode节点created/node、查看/node的数据信息get/node修改数据set/nodexxxxx删除节点delete/node退出客户端连接quit,Zookeeper部署和使用,Zookeeper的java客户端操作Zookeeper提供了java的开发包,客户端要连接Zookeeper服务器可以通过创建org.apache.zookeeper.ZooKeeper的一个实例对象,然后调用这个类提供的接口来和服务器交互。创建一个与服务器的连接ZooKeeper(StringconnectString,intsessionTimeout,Watcherwatcher)创建节点Stringcreate(Stringpath,bytedata,Listacl,CreateModecreateMode)判断是否存在节点Statexists(Stringpath,booleanwatch)删除节点voiddelete(Stringpath,intversion)设置节点数据StatsetData(Stringpath,bytedata,intversion),Zookeeper配置管理,简介配置管理在某些场合称“数据发布与订阅”,顾名思义就是将数据发布到Zookeeper节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,地址列表等就非常适合使用。场景描述配置的管理在分布式应用环境中很常见,一个带配置的服务程序,部署在若干台机器上,如果配置发生了变化,接下去要进行的操作是停止所有机器上的该程序,修改每一台机器上该程序对应的配置文件。这个情景会有两个问题:第一,机器多了,逐个修改配置是一件不合理的运维;第二,配置一般是程序启动时读入的,所以配置修改后,程序应该重启。,Zookeeper配置管理,技术原理ZooKeeper服务器集群存储配置信息,在服务器上创建一个保存数据的节点(创建节点操作);配置管理程序提供一个配置管理的UI界面或者命令行方式,用户通过配置界面修改ZooKeeper服务器节点上配置信息(设置节点数据操作);分布式应用连接到ZooKeeper集群上(创建ZooKeeper客户端操作),监听配置信息的变化(使用获取节点数据操作,并注册一个watcher)。当节点中的配置信息发生变化,所有监听该节点的客户端会收到zookeeper的通知,然后从Zookeeper获取新的配置信息动态加载到系统中。,Zookeeper配置管理,Zookeeper配置管理,优势简单。配置统一管理,方便运维;用户只要修改配置,无需进行其他任何操作,配置自动生效。可靠。ZooKeeper服务集群具有无单点失效的特性,使整个系统更加可靠,即使ZooKeeper集群中的一台机器失效,也不会影响整体服务,更不会影响分布式应用配置信息的更新。实时。ZooKeeper的数据更新通知机制,可以在数据发生变化后,立即通知给分布式应用程序,具有很强的变化响应能力。劣势最终一致性。配置的更新并不能做到强一致性,因为网络延迟等原因,只能做到最终一致性。,Disconf介绍,20,简介Disconf(DistributedConfigurationManagementPlatform)是百度前端技术部研发的基于Zookeeper的分布式配置管理平台,它是专注于各种系统的配置管理的通用组件/通用平台。使用Disconf,可以对所有业务系统的配置进行统一管理,远程对配置进行动态更新,免去重复发布的各种问题。目前项目放在github上,并开放源代码。,Disconf介绍,重要功能特点支持配置(配置项+配置文件)的分布式化管理配置发布统一化配置发布、更新统一化(云端存储、发布):配置存储在云端系统,用户统一在平台上进行发布、更新配置。配置更新自动化:用户在平台更新配置,使用该配置的系统会自动发现该情况,并应用新配置。特殊地,如果用户为此配置定义了回调函数类,则此函数类会被自动调用。极简、低侵入的使用方式支持Spring方式编程支持注解式编程,极简、低侵入的使用方式:通过简单的标注和极简单的代码撰写,即可完成复杂的配置分布式化。,Disconf介绍,模块信息客户端disconf-core:分布式配置基础包模块。disconf-client:分布式配置客户端模块,依赖disconf-core包。用户程序使用它作为Jar包进行分布式配置编程。disconf-tool:分布式配置工具包,依赖disconf-core包,目前使用不多,建议不使用。管理端disconf-web是统一的分布式配置管理平台。disconf-web:分布式配置平台服务模块,依赖disconf-core包。采用SpringMvc+纯HTML方式(前后端分离架构)实现。用户使用它来进行日常的分布式配置管理。,Disconf介绍,Disconf部署与使用,分布式配置Web平台服务部署1、安装依赖软件:安装Mysql(Ver14.12Distrib5.0.45,forunknown-linux-gnu(x86_64)usingEditLinewrapper)安装Tomcat(apache-tomcat-7.0.50)安装Nginx(nginx/1.5.3)安装zookeeeper(zookeeper-3.3.0)安装Redis(2.4.5)2、修改配置文件perties(数据库配置)perties(Redis配置)perties(Zookeeper配置)perties(应用配置)放入home/work/dsp/disconf-rd/online-resources,Disconf部署与使用,3、构建war包配置环境变量配置文件目录ONLINE_CONFIG_PATH=/home/work/dsp/disconf-rd/online-resourceswar包生成目录WAR_ROOT_PATH=/home/work/dsp/disconf-rd/warexportONLINE_CONFIG_PATHexportWAR_ROOT_PATHcddisconf-webshdeploy/deploy.sh4、初始化数据库5、部署War修改server.xml文件,在Host结点下设定Context:,Disconf部署与使用,6、配置nginx修改nginx.confupstreamdisconfserver:8015;serverlisten8081;server_namelocalhost;access_log/home/work/var/logs/disconf/access.log;error_log/home/work/var/logs/disconf/error.log;location/root/home/work/dsp/disconf-rd/war/html;,if($query_string)expiresmax;location/(api|export)proxy_pass_headerServer;proxy_set_headerHost$http_host;proxy_redirectoff;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Scheme$scheme;proxy_passhttp:/disconf;,Disconf部署与使用,客户端使用1、disconf-client使用在您的MavenPOM文件里加入:com.baidu.disconfdisconf-client2.6.302、撰写配置文件相应的配置文件类(生成get、set方法)3、在applicationContext.xml里添加相关Bean定义4、在配置类中添加注解DisconfFile并在get方法上添加注解DisconfFileItem5、添加perties,配置app、环境等,细节讨论,配置项或配置文件储存位置优势劣势对比职责分配放在web平台上:ZooKeeper只负责通知,web负责新建、更新、存储配置,并为client提供下载配置服务。放在Zookeeper上:ZooKeeper负责通知与配置数据存储,并提供下载服务,web端管理一些非配置数据,只作为操作平台。放在web平台上职责分配明确,更能发挥各自的优势。配置管理放在web平台上:用数据库统一存储所有配置数据,可持久化存储非常方便管理,不管未来是迁移或者扩展之类都非常方便。放在Zookeeper上:不易管理,Zookeeper上的数据相比数据库不易管理。,细节讨论,数据获取放在web平台上:client不管是启动还是更新时,均是从web上获取配置。启动时,client会在ZK监控结点;更新时,disconf-web更新ZK结点。web不会在ZK上新建结点。放在Zookeeper上:client启动时,需要从Zookeeper上下载配置。因此必须使用web先写到Zookeeper上,否则client启动时就无法使用最新配置。配置更新时,client直接从Zookeeper获取最新配置。web必须统一的在Zookeeper上新建、更新结点。两种方案从数据获取方面没有什么区别,细节讨论,配置“不一致性读“问题问题描述应用系统的配置更新过程,它会涉及到多个配置项的更新,它不是一个原子过程。如果在配置更新的过程中,应用程序去读取配置,这里可能存在些“时间窗口”,从而导致不一致性读问题。解决方法前提无论何种实现,要实现统一读取,避免“非一致性”问题,就必须要对所有读取操作“统一化”。要实现统一读取,可以使用ThreadContext+AOP来实现。通过对配置的get方法做AOP切面,统一将用户的配置请求转发至配置服务
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度大学兼职教师教学辅导与辅导员聘用合同
- 2025办公场所无偿转租合同范本含保密条款及竞业限制
- 语言礼仪知识培训课件
- 2025年签订的竞业限制合同-你的职场保障吗-
- 2025年车辆抵押借款合同书范本
- 2025劳动合同签订模板
- 2025- 电子合同与传统合同的比较
- 2025年国际工程承包项目人民币贷款合同
- 办公环境优化与办公用品管理模板
- 企业员工职业发展路径规划模板
- 石膏固定病人护理常规
- 2025至2030中国管道运输行业深度研究及发展前景投资评估分析
- 麻醉科临床操作技术规范
- 办公场所消防培训课件
- 术后谵妄护理查房
- 绿地香港招标管理制度
- 2025年新疆中考数学试卷真题(含答案解析)
- DNA纳米导线-洞察及研究
- 2025年广西专业技术人员继续教育公需科目(三)答案
- 2025合同法自考法律本科
- 医院等级薪酬管理制度
评论
0/150
提交评论