【原创】大数据基础之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集 ...
随机推荐
- linux系统安装redis
redis的下载安装教程 1.进入到linux指定目录中 cd /usr/local 路径看你自己情况 2.下载redis,执行如下命令: wget http://download.re ...
- JAVA获取计算机CPU、硬盘、主板、网络等信息
通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到j ...
- CodeForces 1151C Problem for Nazar
题目链接:http://codeforces.com/problemset/problem/1151/C 题目大意: 有一个只存奇数的集合A = {1, 3, 5……2*n - 1,……},和只存偶数 ...
- docker下载镜像received unexpected Http status:500 Internal Server Error
解决办法 1.就是网上说的 关闭selLinue ,但是对我就没用 2.就是不使用镜像加速 ,但是出现连接超时 3.就是加上具体版本号 结果就成功了 [root@localhost ~]# docke ...
- 好用的UI设计工具
51yuansu 好用的在线画UI图工具 51yuansu.com processon.com processon在线画图工具,程序流程图及UI设计原型图,脑图等 draw.io的PC版画图工 ...
- MySQL字符串进行加减乘除的运算
原文链接:https://www.jianshu.com/p/2ab2c0dc3cb5 在mysql当中,字符串类型间进行加减乘除运算的时候,会截取字符串以数字开头的那一部分数字进行运算,如果字符串前 ...
- 函数遍历DOM树
//获取页面中的根节点--根标签 var root=document.documentElement;//html //函数遍历DOM树 //根据根节点,调用fn的函数,显示的是根节点的名 ...
- Sumdiv POJ 1845
http://poj.org/problem?id=1845 题目 Time Limit: 1000MS Memory Limit: 30000K Description Consider two ...
- linux中的&&,|| 与 () 命令
用&&连接两个命令,前一命令执成功(返回0)下一命令才会执行, 如 date && echo 1 会打印1,而data && echo 2不会打印2 & ...
- Android学习第十天
计算机表示图形的几种方式 a) Bmp:以高质量保存,用于计算机 b) Jpg:以良好的质量保存,用于计算机或网络 c) Png:以高质量保存 d) ...