




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Zookeeper统一配置管理1概述Zookeeper的介绍与部署使用Zookeeper的配置管理场景与解决方案百度Disconf的介绍与部署使用关于配置管理的细节讨论例如程序的演示2Zookeeper介绍简介 ApacheZookeeper是一个开放源代码的分布式协调效劳,由知名互联网公司雅虎创立,是GoogleChubby的开源实现,由ApacheHadoop的子工程开展而来,与2021年11月从Hadoop工程中别离,正式成为Apache的顶级工程。Zookeeper为分布式应用提供了高效且可靠的分布式协调效劳,提供了诸如数据发布/订阅、负载均衡、分布式协调/通知、集群管理、统一命名效劳、分布式锁和分布式队列等分布式的根底效劳。Zookeeper的设计目标是将那些复杂且容易出错的分布式一致性效劳封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。3Zookeeper介绍Zookeeper总体结构Zookeeper效劳自身组成一个集群(2n+1个效劳允许n个失效)。Zookeeper效劳有两个角色,一个是leader,负责写效劳和数据同步,剩下的是follower,提供读效劳,leader失效后会在follower中重新选举新的leader。客户端可以连接到每个server,每个server的数据完全相同。每个follower都和leader有连接,接受leader的数据更新操作。Server记录事务日志和快照到持久存储。大多数server可用,整体效劳就可用。4Zookeeper介绍数据结构Zookeeper表现为一个分层的文件系统目录树结构,不同于文件系统的是,节点可以有自己的数据,而文件系统中的目录节点只有子节点。每个节点称为znode。5Zookeeper介绍通知机制ZooKeeper支持一种Watch操作,Client可以在某个ZNode上设置一个Watcher来注册监听它关心的目录节点,并且Watch该ZNode上的变化。如果该ZNode上有相应的变化〔数据改变、被删除、子目录节点增加删除〕,就会触发这个Watcher,把相应的事件通知给设置Watcher的Client。需要注意的是,ZooKeeper中的Watcher是一次性的,即触发一次就会被取消,如果想继续Watch的话,需要客户端重新设置Watcher。6Zookeeper介绍一致性保证ZooKeeper是一个高性能,可扩展的效劳。读和写操作都非常快速。之所以如此,全因为zookeeper有数据一致性的保证:顺序一致性:按照客户端发送请求的顺序更新数据。原子性:更新要么成功,要么失败,不会出现局部更新。单一性:无论客户端连接哪个server,都会看到同一个视图。可靠性:一旦数据更新成功,将一直保持,直到新的更新。及时性:客户端会在一个确定的时间内得到最新的数据。7Zookeeper介绍运用场景数据发布与订阅应用配置集中到节点上,应用启动时主动获取,并在节点上注册一个watcher,每次配置更新都会通知到应用。命名空间效劳分布式命名效劳,创立一个节点后,节点的路径就是全局唯一的,可以作为全局名称使用。分布式通知/协调不同的系统都监听同一个节点,一旦有了更新,另一个系统能够收到通知。8Zookeeper介绍分布式锁Zookeeper能保证数据的强一致性,用户任何时候都可以相信集群中每个节点的数据都是相同的。一个用户创立一个节点作为锁,另一个用户检测该节点,如果存在,代表别的用户已经锁住,如果不存在,那么可以创立一个节点,代表拥有一个锁。集群管理每个参加集群的机器都创立一个节点,写入自己的状态。监控父节点的用户会受到通知,进行相应的处理。离开时删除节点,监控父节点的用户同样会收到通知。〔zookeeper还有临时节点的概念,这些节点的生命周期依赖于创立它们的session是否活泼。session结束时节点即被销毁。也由于这种特性,临时节点不允许有子节点。〕9Zookeeper部署和使用zookeeper单节点安装Standalones模式1、下载Zookeeperwget://apache.dataguru/zookeeper/stable/zookeeper-3.4.7.tar.gztarxvfzookeeper-3.4.7.tar.gz2、修改配置文件conf/zoo.cfgviconf/zoo.cfgtickTime=2000initLimit=10syncLimit=5dataDir=/home/xxx/zk0clientPort=218110Zookeeper部署和使用3、启动zookeeperbin/zkServer.sh查看运行状态bin/zkServer.shstatusJMXenabledbydefaultUsingconfig:/home/xxx/zookeeper-3.4.7/conf/zoo.cfgMode:standalone4、停止zookeeperbin/zkServer.shstop11Zookeeper部署和使用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.cfg12Zookeeper部署和使用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.cfg13Zookeeper部署和使用客户端的使用ZooKeeper的命令行操作bin/zkCli.sh-server:2181查看/目录内容ls/创立一个znode节点created/node、查看/node的数据信息get/node修改数据set/nodexxxxx删除节点delete/node退出客户端连接quit14Zookeeper部署和使用Zookeeper的java客户端操作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)15Zookeeper配置管理简介配置管理在某些场合称“数据发布与订阅〞,顾名思义就是将数据发布到Zookeeper节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,地址列表等就非常适合使用。场景描述配置的管理在分布式应用环境中很常见,一个带配置的效劳程序,部署在假设干台机器上,如果配置发生了变化,接下去要进行的操作是停止所有机器上的该程序,修改每一台机器上该程序对应的配置文件。这个情景会有两个问题:第一,机器多了,逐个修改配置是一件不合理的运维;第二,配置一般是程序启动时读入的,所以配置修改后,程序应该重启。16Zookeeper配置管理技术原理ZooKeeper效劳器集群存储配置信息,在效劳器上创立一个保存数据的节点(创立节点操作);配置管理程序提供一个配置管理的UI界面或者命令行方式,用户通过配置界面修改ZooKeeper效劳器节点上配置信息(设置节点数据操作);分布式应用连接到ZooKeeper集群上(创立ZooKeeper客户端操作),监听配置信息的变化(使用获取节点数据操作,并注册一个watcher)。当节点中的配置信息发生变化,所有监听该节点的客户端会收到zookeeper的通知,然后从Zookeeper获取新的配置信息动态加载到系统中。17Zookeeper配置管理18Zookeeper配置管理优势简单。配置统一管理,方便运维;用户只要修改配置,无需进行其他任何操作,配置自动生效。可靠。ZooKeeper效劳集群具有无单点失效的特性,使整个系统更加可靠,即使ZooKeeper集群中的一台机器失效,也不会影响整体效劳,更不会影响分布式应用配置信息的更新。实时。ZooKeeper的数据更新通知机制,可以在数据发生变化后,立即通知给分布式应用程序,具有很强的变化响应能力。劣势最终一致性。配置的更新并不能做到强一致性,因为网络延迟等原因,只能做到最终一致性。19Disconf介绍
20简介Disconf〔DistributedConfigurationManagementPlatform〕是百度前端技术部研发的基于Zookeeper的分布式配置管理平台,它是专注于各种系统的配置管理的通用组件/通用平台。使用Disconf,可以对所有业务系统的配置进行统一管理,远程对配置进行动态更新,免去重复发布的各种问题。目前工程放在github上,并开放源代码。20Disconf介绍重要功能特点支持配置〔配置项+配置文件〕的分布式化管理配置发布统一化配置发布、更新统一化〔云端存储、发布〕:配置存储在云端系统,用户统一在平台上进行发布、更新配置。配置更新自动化:用户在平台更新配置,使用该配置的系统会自动发现该情况,并应用新配置。特殊地,如果用户为此配置定义了回调函数类,那么此函数类会被自动调用。极简、低侵入的使用方式支持Spring方式编程支持注解式编程,极简、低侵入的使用方式:通过简单的标注和极简单的代码撰写,即可完成复杂的配置分布式化。21Disconf介绍模块信息客户端disconf-core:分布式配置根底包模块。disconf-client:分布式配置客户端模块,依赖disconf-core包。用户程序使用它作为Jar包进行分布式配置编程。disconf-tool:分布式配置工具包,依赖disconf-core包,目前使用不多,建议不使用。管理端disconf-web是统一的分布式配置管理平台。disconf-web:分布式配置平台效劳模块,依赖disconf-core包。采用SpringMvc+纯HTML方式〔前后端别离架构〕实现。用户使用它来进行日常的分布式配置管理。22Disconf介绍23Disconf部署与使用分布式配置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-resources24Disconf部署与使用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>25Disconf部署与使用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$_host;proxy_redirectoff;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Scheme$scheme;proxy_pass://disconf;}}26Disconf部署与使用客户端使用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细节讨论配置项或配置文件储存位置优势劣势比照职责分配放在web平台上:ZooKeeper只负责通知,web负责新建、更新、存储配置,并为client提供下载配置效劳。放在Zookeeper上:ZooKeeper负责通知与配置数据存储,并提供下载效劳,web端管理一些非配置数据,只作为操作平台。放在web平台上职责分配明确,更能发挥各自的优势。配置管理放在web平台上:用数据库统一存储所有配置数据,可持久化存储非常方便管理,不管未来是迁移或者扩展之类都非常方便。放在Zookeeper上:不易管理,Zookeeper上的数据相比数据库不易管理。28细节讨论数据获取放在web平台上:client不管是启动还是更新时,均是从web上获取配置。启动时,client会在ZK监控结点;更新时,disconf-web更新ZK结点。web不会在ZK上新建结点。放在Zookeeper上:client启动时,需要从Zookeeper上下载配置。因此必须使用web先写到Zookeeper上,否那么client启动时就无法使用最新配置。配置更新时,client直接从Zookeeper获取最新配置。web必须统一的在Zookeeper上新建、更新结点。两种方案从数据获取方面没有什么区别29细节讨论配置“不一致性读“问题问题描述应用系统的配置更新过程,它会涉及到多个配置项的更新,它不是一个原子过程。如果在配置更新的过程中,应用程序去读取配置,这里可能存在些“时间窗口〞,从而导致不一致性读问题。解决方法前提无论何种实现,要实现统一读取,防止“非一致性〞问题,就必须要对所有读取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单位食堂改造合同范本
- 房屋租赁合同范本 商用
- 新开超市供货合同范本
- 超市柜台转让合同范本
- 搬运服务协议合同范本
- 2025年春一年级语文上册 14 文具的家(+公开课一等奖创新教案+素材)
- 教师校园安全知识
- 韵达快递年终总结
- 辽宁省葫芦岛2025年高三下学期六校(4月)联考数学试题试卷含解析
- 宜宾学院《嵌入式系统设计实验》2023-2024学年第二学期期末试卷
- 水利安全生产风险防控“六项机制”右江模式经验分享
- FZ∕T 25005-2021 底网造纸毛毯
- 2024年淮北职业技术学院单招职业适应性测试题库及答案解析
- 2023全国高考四套文言文真题挖空训练(答案)
- 姓吴的研究报告
- 神经外科常见引流管护理课件
- 自缢的护理查房
- 安全生产费用使用台账
- 精神障碍社区康复服务投标方案
- 冰箱温度监测登记表
- 《利用导数研究函数的零点问题》教学设计
评论
0/150
提交评论