apache开源项目--ZooKeeper
ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Zookeeper是Google的Chubby一个开源的实现.是高有效和可靠的协同工作系统.Zookeeper能够用来leader选举,配置信息维护等.在一个分布式的环境中,我们需要一个Master实例或存储一些配置信息,确保文件写入的一致性等.Zookeeper能够保证如下3点:
Watches are ordered with respect to other events, other watches, and
asynchronous replies. The ZooKeeper client libraries ensures that
everything is dispatched in order.A client will see a watch event for a znode it is watching before seeing the new data that corresponds to that znode.
The order of watch events from ZooKeeper corresponds to the order of the updates as seen by the ZooKeeper service.
在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据.如果在创建znode时Flag设置 为EPHEMERAL,那么当这个创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper 里.Zookeeper使用Watcher察觉事件信息,当客户端接收到事件信息,比如连接超时,节点数据改变,子节点改变,可以调用相应的行为来处理数 据.Zookeeper的Wiki页面展示了如何使用Zookeeper来处理事件通知,队列,优先队列,锁,共享锁,可撤销的共享锁,两阶段提交.
那么Zookeeper能帮我们作什么事情呢?简单的例子:假设我们我们有个20个搜索引擎的服务器(每个负责总索引中的一部分的搜索任务)和一个 总服务器(负责向这20个搜索引擎的服务器发出搜索请求并合并结果集),一个备用的总服务器(负责当总服务器宕机时替换总服务器),一个web的 cgi(向总服务器发出搜索请求).搜索引擎的服务器中的15个服务器现在提供搜索服务,5个服务器正在生成索引.这20个搜索引擎的服务器经常要让正在 提供搜索服务的服务器停止提供服务开始生成索引,或生成索引的服务器已经把索引生成完成可以搜索提供服务了.使用Zookeeper可以保证总服务器自动 感知有多少提供搜索引擎的服务器并向这些服务器发出搜索请求,备用的总服务器宕机时自动启用备用的总服务器,web的cgi能够自动地获知总服务器的网络 地址变化.这些又如何做到呢?
提供搜索引擎的服务器都在Zookeeper中创建znode,zk.create("/search/nodes/node1",
"hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);总服务器可以从Zookeeper中获取一个znode的子节点的列表,zk.getChildren("/search/nodes", true);
总服务器遍历这些子节点,并获取子节点的数据生成提供搜索引擎的服务器列表.
当总服务器接收到子节点改变的事件信息,重新返回第二步.
总服务器在Zookeeper中创建节点,zk.create("/search/master", "hostname".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateFlags.EPHEMERAL);
备用的总服务器监控Zookeeper中的"/search/master"节点.当这个znode的节点数据改变时,把自己启动变成总服务器,并把自己的网络地址数据放进这个节点.
web的cgi从Zookeeper中"/search/master"节点获取总服务器的网络地址数据并向其发送搜索请求.
web的cgi监控Zookeeper中的"/search/master"节点,当这个znode的节点数据改变时,从这个节点获取总服务器的网络地址数据,并改变当前的总服务器的网络地址.
转载于:https://www.cnblogs.com/haore147/p/5103079.html
apache开源项目--ZooKeeper相关推荐
- apache开源项目_众筹开源笔记本电脑,新的Apache项目等
apache开源项目 开源新闻让您阅读愉快 2014年3月29日至4月4日 在本周的开放源代码新闻摘要中,我们介绍了完全开放的笔记本电脑Ubuntu One的发布,微软最近向开放迈进的步伐等等. Mi ...
- Apache开源项目分类列表
Apache开源项目分类列表 分类 项目名 说明 开发语言 服务器 (共20) Apache HTTP Server 全球第一HTTP服务器 C/C++ Tomcat Java的Web服务器 Java ...
- Apache开源项目
tomcat Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发 ...
- 连续三年蝉联第一,Flink 荣膺全球最活跃的 Apache 开源项目
简介:Apache 软件基金会 2020 年度总结发布,Flink 多项排名领先! 2020年,一个注定会被历史铭记的一年.在全球化合作受到挑战的大环境下,作为全球最大的开源软件基金会,Apache ...
- apache开源项目--nutch
Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. Nutch的创始人是Doug Cutting,他同时也是Lucene.Hado ...
- 15个具有高度影响力的Apache开源项目
Apache还提供更为宽容的开源许可证. 下面是15个多年来非常重要的Apache项目,这些项目不仅对开源运动来说非常重要,对于与一般的技术世界来说也是非常重要的. Cassandra Cassand ...
- 中国高校首个Apache开源项目 清华数为物联网时序数据库IoTDB 及可自由组装的大数据软件栈系列组件发布...
四月的清华园,百花冠冕,春意盎然. 4月25日,清华软件学院师生校友相约云端,共贺清华大学109周年校庆,软件学院建院19周年. 由于疫情防控需要,软件学院通过腾讯会议和学堂在线在线直播方式,举办&q ...
- apache开源项目--Lens
Lens 提供了一个统一数据分析接口.通过提供一个跨多个数据存储的单一视图来实现数据分析任务切分,同时优化了执行的环境.无缝的集成 Hadoop 实现类似传统数据仓库的功能. 该项目主要特性: 简单元 ...
- apache开源项目--ApacheDS
ApacheDS (Apache Directory Server)的核心是目录服务,可以保存数据,并对不同类型的数据进行搜索操作.协议的实现在目录服务器顶层工作,提供与数据存储.搜索和检索有关的 I ...
最新文章
- 再见 for 循环!pandas 提速 315 倍~
- Oracle中的数据字典技术及常用数据字典总结
- 又一款基于BCH开发出来的社交软件BlockPress
- python restful服务部署_用python为mysql实现restful接口
- cocos2d-x游戏实例(3)-获得地图索引
- python二维数组去重复_php二维数组去重,array_unique出除重复数据
- 基于C#.NET的--Windows进程管理工具
- 图神经网络让预估到达准确率提升50%,谷歌地图实现新突破
- windows 安装docker_Windows下docker安装 postgresql12.0
- ORA-01157报错cannot identify/lock data file
- codeforces 212E IT Restaurants(树形dp+背包思想)
- keras实现声音二分类
- 随意切换双卡流量,立即获取对应卡的SMIS
- 编程课程_您可以从今天开始的300项免费在线编程课程
- COLLADAMaxNew插件,opencollada导出DAE文件格式 for 3dmax2019
- 递推法 c语言,递推法
- 数据结构Python版--线性结构
- java hasnext_java – hasNext() – 什么时候阻止,为什么?
- Binutils 相关工具记录
- 森林防火无线监控系统解决方案
热门文章
- nginx启动不了_nginx 变量与监控
- 升级鸿蒙系统效果,鸿蒙系统初体验 全方位体验升级[多图]
- android 相机路径,android – 如何获取刚从相机捕获的图像路径
- mac mysql ip访问不了_解决mysql中只能通过localhost访问不能通过ip访问的问题
- 网站的服务器角色选哪个,原神平民开服选什么角色最好-开服必备角色推荐_好特网...
- python字符串之查找与替换_Python字符串操作(查找,替换,分割和连接)方法及其使用...
- 软件测试oracle问题,数据库基础:Oracle数据库中时间问题比较
- linux远程执行本地脚本,ssh远程执行命令方法和Shell脚本实例
- 单元测试 applicationinfomanager bean无法注入_你真的会用Spring吗?如何在单例Bean中注入原型Bean...
- 交叉路口红绿灯控制程序linux,PLC十字路口的交通灯控制编程实例!