版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
杨旆Zookeeper统一配置管理1/33概述Zookeeper介绍与布署使用Zookeeper配置管理场景与处理方案baiduDisconf介绍与布署使用关于配置管理细节讨论示例程序演示2/33Zookeeper介绍介绍 ApacheZookeeper是一个开放源代码分布式协调服务,由著名互联网企业雅虎创建,是GoogleChubby开源实现,由ApacheHadoop子项目发展而来,与11月从Hadoop项目中分离,正式成为Apache顶级项目。Zookeeper为分布式应用提供了高效且可靠分布式协调服务,提供了诸如数据公布/订阅、负载均衡、分布式协调/通知、集群管理、统一命名服务、分布式锁和分布式队列等分布式基础服务。Zookeeper设计目标是将那些复杂且轻易犯错分布式一致性服务封装起来,组成一个高效可靠原语集,并以一系列简单易用接口提供给用户使用。3/33Zookeeper介绍Zookeeper总体结构Zookeeper服务本身组成一个集群(2n+1个服务允许n个失效)。Zookeeper服务有两个角色,一个是leader,负责写服务和数据同时,剩下是follower,提供读服务,leader失效后会在follower中重新选举新leader。客户端能够连接到每个server,每个server数据完全相同。每个follower都和leader有连接,接收leader数据更新操作。Server统计事务日志和快照到持久存放。大多数server可用,整体服务就可用。4/33Zookeeper介绍数据结构Zookeeper表现为一个分层文件系统目录树结构,不一样于文件系统是,节点能够有自己数据,而文件系统中目录节点只有子节点。每个节点称为znode。5/33Zookeeper介绍通知机制ZooKeeper支持一个Watch操作,Client能够在某个ZNode上设置一个Watcher来注册监听它关心目录节点,而且Watch该ZNode上改变。假如该ZNode上有对应改变(数据改变、被删除、子目录节点增加删除),就会触发这个Watcher,把对应事件通知给设置WatcherClient。需要注意是,ZooKeeper中Watcher是一次性,即触发一次就会被取消,假如想继续Watch话,需要客户端重新设置Watcher。6/33Zookeeper介绍一致性确保ZooKeeper是一个高性能,可扩展服务。读和写操作都非常快速。之所以如此,全因为zookeeper有数据一致性确保:次序一致性:按照客户端发送请求次序更新数据。原子性:更新要么成功,要么失败,不会出现部分更新。单一性:不论客户端连接哪个server,都会看到同一个视图。可靠性:一旦数据更新成功,将一直保持,直到新更新。及时性:客户端会在一个确定时间内得到最新数据。7/33Zookeeper介绍利用场景数据公布与订阅
应用配置集中到节点上,应用开启时主动获取,并在节点上注册一个watcher,每次配置更新都会通知到应用。命名空间服务分布式命名服务,创建一个节点后,节点路径就是全局唯一,能够作为全局名称使用。分布式通知/协调不一样系统都监听同一个节点,一旦有了更新,另一个系统能够收到通知。8/33Zookeeper介绍分布式锁Zookeeper能确保数据强一致性,用户任何时候都能够相信集群中每个节点数据都是相同。一个用户创建一个节点作为锁,另一个用户检测该节点,假如存在,代表别用户已经锁住,假如不存在,则能够创建一个节点,代表拥有一个锁。集群管理每个加入集群机器都创建一个节点,写入自己状态。监控父节点用户会受到通知,进行对应处理。离开时删除节点,监控父节点用户一样会收到通知。(zookeeper还有暂时节点概念,这些节点生命周期依赖于创建它们session是否活跃。session结束时节点即被销毁。也因为这种特征,暂时节点不允许有子节点。)9/33Zookeeper布署和使用zookeeper单节点安装Standalones模式1、下载Zookeeperwget/zookeeper/stable/zookeeper-3.4.7.tar.gztarxvfzookeeper-3.4.7.tar.gz2、修改配置文件conf/zoo.cfgviconf/zoo.cfgtickTime=initLimit=10syncLimit=5dataDir=/home/xxx/zk0clientPort=218110/33Zookeeper布署和使用3、开启zookeeperbin/zkServer.sh查看运行状态bin/zkServer.shstatusJMXenabledbydefaultUsingconfig:/home/xxx/zookeeper-3.4.7/conf/zoo.cfgMode:standalone4、停顿zookeeperbin/zkServer.shstop11/33Zookeeper布署和使用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.cfg12/33Zookeeper布署和使用3、分别修改配置文件tickTime=initLimit=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.cfg13/33Zookeeper布署和使用客户端使用ZooKeeper命令行操作bin/zkCli.sh-server:2181查看/目录内容ls/创建一个znode节点created/node、查看/node数据信息get/node修改数据set/nodexxxxx删除节点delete/node退出客户端连接quit14/33Zookeeper布署和使用Zookeeperjava客户端操作Zookeeper提供了java开发包,客户端要连接Zookeeper服务器能够经过创建org.apache.zookeeper.ZooKeeper一个实例对象,然后调用这个类提供接口来和服务器交互。创建一个与服务器连接ZooKeeper(StringconnectString,intsessionTimeout,Watcherwatcher)创建节点Stringcreate(Stringpath,byte[]data,List<ACL>acl,CreateModecreateMode)判断是否存在节点Statexists(Stringpath,booleanwatch)删除节点voiddelete(Stringpath,intversion)设置节点数据StatsetData(Stringpath,byte[]data,intversion)15/33Zookeeper配置管理介绍配置管理在一些场所称“数据公布与订阅”,顾名思义就是将数据公布到Zookeeper节点上,供订阅者动态获取数据,实现配置信息集中式管理和动态更新。比如全局配置信息,地址列表等就非常适合使用。场景描述配置管理在分布式应用环境中很常见,一个带配置服务程序,布署在若干台机器上,假如配置发生了改变,接下去要进行操作是停顿全部机器上该程序,修改每一台机器上该程序对应配置文件。这个情景会有两个问题:第一,机器多了,逐一修改配置是一件不合理运维;第二,配置普通是程序开启时读入,所以配置修改后,程序应该重启。16/33Zookeeper配置管理技术原理ZooKeeper服务器集群存放配置信息,在服务器上创建一个保留数据节点(创建节点操作);配置管理程序提供一个配置管理UI界面或者命令行方式,用户经过配置界面修改ZooKeeper服务器节点上配置信息(设置节点数据操作);分布式应用连接到ZooKeeper集群上(创建ZooKeeper客户端操作),监听配置信息改变(使用获取节点数据操作,并注册一个watcher)。当节点中配置信息发生改变,全部监听该节点客户端会收到zookeeper通知,然后从Zookeeper获取新配置信息动态加载到系统中。17/33Zookeeper配置管理18/33Zookeeper配置管理优势简单。配置统一管理,方便运维;用户只要修改配置,无需进行其它任何操作,配置自动生效。可靠。ZooKeeper服务集群含有没有单点失效特征,使整个系统愈加可靠,即使ZooKeeper集群中一台机器失效,也不会影响整体服务,更不会影响分布式应用配置信息更新。实时。ZooKeeper数据更新通知机制,能够在数据发生改变后,马上通知给分布式应用程序,含有很强改变响应能力。劣势最终一致性。配置更新并不能做到强一致性,因为网络延迟等原因,只能做到最终一致性。19/33Disconf介绍
20介绍Disconf(DistributedConfigurationManagementPlatform)是baidu前端技术部研发基于Zookeeper分布式配置管理平台,它是专注于各种系统配置管理通用组件/通用平台。使用Disconf,能够对全部业务系统配置进行统一管理,远程对配置进行动态更新,免去重复公布各种问题。当前项目放在github上,并开放源代码。20/33Disconf介绍主要功效特点支持配置(配置项+配置文件)分布式化管理配置公布统一化配置公布、更新统一化(云端存放、公布):配置存放在云端系统,用户统一在平台上进行公布、更新配置。配置更新自动化:用户在平台更新配置,使用该配置系统会自动发觉该情况,并应用新配置。特殊地,假如用户为此配置定义了回调函数类,则此函数类会被自动调用。极简、低侵入使用方式支持Spring方式编程支持注解式编程,极简、低侵入使用方式:经过简单标注和极简单代码撰写,即可完成复杂配置分布式化。21/33Disconf介绍模块信息客户端disconf-core:分布式配置基础包模块。disconf-client:分布式配置客户端模块,依赖disconf-core包。用户程序使用它作为Jar包进行分布式配置编程。disconf-tool:分布式配置工具包,依赖disconf-core包,当前使用不多,提议不使用。管理端disconf-web是统一分布式配置管理平台。disconf-web:分布式配置平台服务模块,依赖disconf-core包。采取SpringMvc+纯HTML方式(前后端分离架构)实现。用户使用它来进行日常分布式配置管理。22/33Disconf介绍23/33Disconf布署与使用分布式配置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-resources24/33Disconf布署与使用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:<Contextpath=""docBase="/home/work/dsp/disconf-rd/war"></Context>25/33Disconf布署与使用6、配置nginx修改nginx.confupstreamdisconf{server:8015;}server{listen8081;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;}}26/33Disconf布署与使用客户端使用1、disconf-client使用在您MavenPOM文件里加入:<dependency><groupId>com.baidu.disconf</groupId><artifactId>disconf-client</artifactId><version>2.6.30</version></dependency>2、撰写配置文件对应配置文件类(生成get、set方法)3、在applicationContext.xml里添加相关Bean定义4、在配置类中添加注解@DisconfFile并在get方法上添加注解@DisconfFileItem5、添加perties,配置app、环境等27/33细节讨论配置项或配置文件储存位置优势劣势对比职责分配放在web平台上:ZooKeeper只负责通知,web负责新建、更新、存放配置,并为client提供下载配置服务。放在Zookeeper上:ZooKeeper负责通知与配置数据存放,并提供下载服务,web端管理一些非配置数据,只作为操作平台。放在web平台上职责分配明确,更能发挥各自优势。配置管理放在web平台上:用数据库统一存放全部配置数据,可持久化存放非常方便管理,不论未来是迁移或者扩展之类都非常方便。放在Zookeeper上:不易管理,Zookeeper上数据相比数据库不易管理。28/33细节讨论数据获取放在web平台上:client不论是开启还是更新时,均是从web上获取配置。开启时,client会在ZK监控结点;更新时,disconf-web更新ZK结点。web不会在ZK上新建结点。放在Zookeeper上:client开启时,需要从Zookeeper上下载配置。所以必须使用web先写到Zookeeper上,不然client开启时就无法使用最新配置。配置更新时,client直接从Zookeeper获取最新配置。web必须统一在Zookeeper上新建、更新结点。两种方案从数据获取方面没有什么区分29/33细节讨论配置“不一致性读“问题问题描述应用系统配置更新过程,它会包括到多个配置项更新,它不是一个原子过程。假如在配置更新过程中,应用程序去读取配置,这里可能存在些“时间窗口”,从而造成不一致性读问题。处理方法前提不论何种实现,要实现统一读取,防止“非一致性”问题,就必须要对全部读取操作“统一化”。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度影视制作担保合同6篇
- 2024年吊车施工进度保障协议3篇
- 2024年度地坪漆施工原材料供应及质量控制合同3篇
- 2024年古建筑大门修复与安装服务合同3篇
- 2024年度全面协议离婚书包括房产分割与子女教育安排条款3篇
- 2024年度奶茶店员工加班管理及劳动合同3篇
- 2024年度洗涤行业环保达标与验收合同范本3篇
- 2024年度旅游包车运输承包合同与导游服务配套3篇
- 2024年度知识产权金融服务及投资咨询合同6篇
- 2024年影视制作实习生就业合同附影视后期制作培训协议3篇
- 地下水动力学智慧树知到期末考试答案章节答案2024年长安大学
- GB/T 44143-2024科技人才评价规范
- 中国绿色算力发展研究报告(2024年)
- 哈齐铁路客运专线无砟轨道测量监理实施细则
- 律师事务所文档排版格式指引
- 幼儿园教师期末评语培训
- 2024年医药卫生考试-医院信息科笔试参考题库含答案
- 生物化学实验(齐鲁工业大学)智慧树知到期末考试答案2024年
- 初中语文文言文《狼》习题
- 基于STM32的双模式智能避障小车系统设计与实现
- 人教版九年级中考总复习全册《化学》全册内容默写手册
评论
0/150
提交评论