【原创】大数据基础之Zookeeper(4)应用场景
1 集群配置管理
应用服务器的配置通常会放到properties文件中,格式为:
system1.module2.prop3=value4
然后启动的时候加载,这样带来的问题是启动后无法修改,想修改必须要重启应用服务器;
- 一个简单的替代方式是存放到数据库中,应用服务器每次从数据库中加载配置,这样带来的问题是由于数据库是一种昂贵的资源从而降低性能;
- 一个简单的改进方式是存放到数据库中后再存放到缓存中,应用服务器每次从缓存中加载配置,这时要解决的问题是数据库和缓存的数据一致性问题,缓存的可靠性问题,而且会增加相当多的网络IO(缓存读操作);
- 一个简单的改进方式是应用服务器在本地也存一份配置,每次从缓存中加载配置或者定时从缓存中加载配置,缓存读超时则使用本地配置;
回过头来看,配置的名字是一个标准的树形结构,可以直接将所有配置以及值放到zookeeper中,
/config/system1/module2/prop3=value4
由于zookeeper将所有的数据存放在内存中,所以读操作非常快,应用服务器启动之后从zookeeper中将所有配置存储到本地一份,另外利用zookeeper的watcher,当配置修改之后所有的应用服务器都可以收到通知,同步修改本地配置即可,这样达到的效果是如果配置没有更新(极大概率事件),则所有的配置读取都是本地操作(没有网络io);如果配置有更新(极小概率事件),所有的应用服务器都可以及时收到通知并更新本地;
2 服务器分组及动态更新
在大规模集群中通常有很多类型角色的服务器,这时会将服务器按照类型角色进行分组,然后可以动态监控组内服务器的变更,然后做进一步处理;
比如在Dubbo中会将producer服务器分组,当producer服务器有变更时consumer端会及时收到更新方便做balance,这样实现producer服务器动态增减以及自动发现;
比如在Kafka中会将consumer服务器分组,当consumer服务器有变更时也会触发rebalance;
另外还可以用来对组内服务器的存活进行监控报警;
3 Master主备
众多的开源软件中比如Hadoop(HDFS、YARN)、HBase、Spark Standalone、Oozie等,都是通过zookeeper来实现master的HA,实现主从切换;
比如:
/hadoop-ha/$hdfs_name/ActiveStandbyElectorLock
/yarn-leader-election/$yarn_name/ActiveStandbyElectorLock
/hbase/master
4 分布式锁
分布式环境中有时需要在服务器之间进行协调,比如一个任务只允许在集群中的一台服务器运行等,常用的方法是利用数据库锁,这里分为乐观锁和悲观锁两种实现;
比如Quartz的分布式部署,就是利用数据库锁;
使用数据库锁有一些问题,1 数据库资源昂贵,而且有并发数限制,悲观锁会直接占用连接数,乐观锁可能由于数据库连接池满导致锁释放,悲观锁可能由于数据库连接池满导致卡住;2 数据库连接有超时时间限制;
利用zookeeper的Ephemeral Node+Sequence Node+watch可以很方便的实现分布式锁,Sequence Node可以保证只有一个节点能拿到锁,Ephemeral Node+watch可以保证一旦锁的持有者挂掉,其他等待锁的节点可以马上收到通知,同时再利用Sequence Node保证下一个节点能拿到锁;
【原创】大数据基础之Zookeeper(4)应用场景的更多相关文章
- 【原创】大数据基础之Zookeeper(2)源代码解析
核心枚举 public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING; } zookeeper服务器状态:刚启动LOOKING,f ...
- 【原创】大数据基础之Zookeeper(1)介绍、安装及使用
zookeeper3.4.11 http://zookeeper.apache.org/ 一 简介 ZooKeeper is a centralized service for maintaining ...
- 【原创】大数据基础之Zookeeper(3)选举算法
提到zookeeper选举算法,就不得不提Paxos算法,因为zookeeper选举算法是Paxos算法的一个变种: Paxos要解决的问题是:在一个分布式网络环境中有众多的参与者,但是每个参与者都不 ...
- 决战大数据之三-Apache ZooKeeper Standalone及复制模式安装及测试
决战大数据之三-Apache ZooKeeper Standalone及复制模式安装及测试 [TOC] Apache ZooKeeper 单机模式安装 创建hadoop用户&赋予sudo权限, ...
- 大数据篇:Zookeeper
Zookeeper 1 Zookeeper概念 Zookeeper是什么 是一个基于观察者设计模式的分布式服务管理框架,它负责和管理需要关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Z ...
- 【原创】大数据基础之Impala(1)简介、安装、使用
impala2.12 官方:http://impala.apache.org/ 一 简介 Apache Impala is the open source, native analytic datab ...
- 【原创】大数据基础之词频统计Word Count
对文件进行词频统计,是一个大数据领域的hello word级别的应用,来看下实现有多简单: 1 Linux单机处理 egrep -o "\b[[:alpha:]]+\b" test ...
- 【原创】大数据基础之Benchmark(2)TPC-DS
tpc 官方:http://www.tpc.org/ 一 简介 The TPC is a non-profit corporation founded to define transaction pr ...
- 大数据平台搭建-zookeeper集群的搭建
本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...
随机推荐
- vue webpack打包
webpack构建流程 从启动webpack构建到输出结果经历了一系列过程,它们是: 解析webpack配置参数,合并从shell传入和webpack.config.js文件里配置的参数,生产最后的配 ...
- MySQL与MongoDB
MySQL MongoDB DB DB table Collections row Documents column Field 增 db.tables.insert({})#效 ...
- OracleSql语句学习(三)
--在SELECT子句中出现的函数或表达式会在结果集中作为字段名,这样的可读性差,因此可以为--这样的字段添加别名(别名中不能出现空隔,除非是用双引号括起来的)--别名中如果希望包含空隔或者区分大小写 ...
- mybatis 配置文件全解
目录 properties settings typeAliases mappers properties mybatis配置文件中,可以像代码一样定义变量,然后在配置文件的其他地方使用,比如数据库连 ...
- deb包转化为rpm包
deb文件格式本是ubuntu的安装文件,那么我想要在fedora中安装,需要把deb格式转化成rpm格式,我们用skype举例: 1.下载转换工具alien_8.78.tar.gz 2.deb转化成 ...
- SpringCloud学习笔记:负载均衡Ribbon(3)
1. RestTemplate简介 RestTemplate是Spring Resource中一个访问第三方RESTful API接口的网络请求框架. RestTemplate是用来消费REST服务的 ...
- [模板] 匈牙利算法&&二分图最小字典序匹配
匈牙利算法 简介 匈牙利算法是一种求二分图最大匹配的算法. 时间复杂度: 邻接表/前向星: \(O(n * m)\), 邻接矩阵: \(O(n^3)\). 空间复杂度: 邻接表/前向星: \(O(n ...
- apache Storm 学习笔记
Storm流之FieldGrouping字段分组: https://blog.csdn.net/Simon_09010817/article/details/80092080
- A.01.12—模块的输出—通讯(CAN&LIN)
AN和LIN相关的内容很多,今天仅对几年前困扰过我的一个疑问进行说明. 以前最常见的通迅方式为CAN和LIN,但现在也有很多其他的通讯方式了,而这两种通讯方式仍使用广泛. 前几年常听人说CAN的成本和 ...
- [SHOI2008]仙人掌图 II——树形dp与环形处理
题意: 给定一个仙人掌,边权为1 距离定义为两个点之间的最短路径 直径定义为距离最远的两个点的距离 求仙人掌直径 题解: 类比树形dp求直径. f[i]表示i向下最多多长 处理链的话,直接dp即可. ...