Master节点管理
集群当中最重要的是Master,所以一般都会设置一台Master的Backup。
解决问题:
Master节点高可用,并且保证唯一。
Meta信息的及时同步
配置文件管理
集群中配置文件的更新和同步是很频繁的,传统的配置文件分发都是需要把配置文件数据分发到每台worker上,然后进行worker的reload,这种方式是最笨的方式,结构很难维护,因为如果集群当中有可能很多种应用的配置文件要同步,而且效率很低,集群规模一大负载很高。还有一种就是每次更新把配置文件单独保存到一个数据库里面,然后worker端定期pull数据,这种方式就是数据及时性得不到同步。
解决问题:
统一配置文件分发并且及时让worker生效
zookeeper监控集群
利用zookeeper建立znode的强一致性,可以用于那种对集群中机器状态,机器在线率有较高要求的场景,能够快速对集群中机器变化作出响应。
分布式系统的运行是很复杂的,因为涉及到了网络通信还有节点失效等不可控的情况。下面介绍在最传统的master-workers模型,主要可以会遇到什么问题,传统方法是怎么解决以及怎么用zookeeper解决。
master节点管理
集群当中最重要的是master,所以一般都会设置一台master的backup。
backup会定期向master获取meta信息并且检测master的存活性,一旦master挂了,backup立马启动,接替master的工作自己成为master,分布式的情况多种多样,因为涉及到了网络通信的抖动,针对下面的情况:
backup检测master存活性传统的就是定期发包,一旦一定时间段内没有收到响应就判定master
down了,于是backup就启动,如果master其实是没有down,backup收不到响应或者收到响应延迟的原因是因为网络阻塞的问题
呢?backup也启动了,这时候集群里就有了两个master,很有可能部分workers汇报给master,另一部分workers汇报给后来启动
的backup,这下子服务就全乱了。
backup是定期同步master中的meta信息,所以总是滞后的,一旦master挂了,backup的信息必然是老的,很有可能会影响集群运行状态。
解决问题:
master节点高可用,并且保证唯一。
meta信息的及时同步
zookeeper master选举
zookeeper会分配给注册到它上
面的客户端一个编号,并且zk自己会保证这个编号的唯一性和递增性,n多机器中只需选出编号最小的client作为master就行,并且保证这些机器的
都维护一个一样的meta信息视图,一旦master挂了,那么这n机器中编号最小的胜任master,meta信息是一致的。
配置文件管理
集
群中配置文件的更新和同步是很频繁的,传统的配置文件分发都是需要把配置文件数据分发到每台worker上,然后进行worker的reload,这种方
式是最笨的方式,结构很难维护,因为如果集群当中有可能很多种应用的配置文件要同步,而且效率很低,集群规模一大负载很高。还有一种就是每次更新把配置文
件单独保存到一个数据库里面,然后worker端定期pull数据,这种方式就是数据及时性得不到同步。
解决问题:
统一配置文件分发并且及时让worker生效
zookeeper发布与订阅模型
发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到zk节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。
分布式锁
在
一台机器上要多个进程或者多个线程操作同一资源比较简单,因为可以有大量的状态信息或者日志信息提供保证,比如两个a和b进程同时写一个文件,加锁就可以
实现。但是分布式系统怎么办?需要一个三方的分配锁的机制,几百台worker都对同一个网络中的文件写操作,怎么协同?还有怎么保证高效的运行?
解决问题:
高效分布式的分布式锁
zookeeper分布式锁
分布式锁主要得益于zookeeper为我们保证了数据的强一致性,zookeeper的znode节点创建的唯一性和递增性能保证所有来抢锁的worker的原子性。
集群worker管理
集群中的worker挂了是很可能的,一旦workera挂了,如果存在其余的workers互相之间需要通信,
那么workers必须尽快更新自己的hosts列表,把挂了的worker剔除,从而不在和它通信,而master要做的是把挂了worker上的作业
调度到其他的worker上。同样的,这台worker重新恢复正常了,要通知其他的workers更新hosts列表。传统的作法都是有专门的监控系统,通过不断去发心跳包(比如ping)来发现worker是否alive,缺陷就是及时性问题,不能应用于在线率要求较高的场景
解决问题:
集群worker监控
zookeeper监控集群
利用zookeeper建立znode的强一致性,可以用于那种对集群中机器状态,机器在线率有较高要求的场景,能够快速对集群中机器变化作出响应。
Hadoop|
Apache Pig|
Apache Kafka|
Apache Storm|
Impala|
Zookeeper|
SAS|
TensorFlow|
人工智能基础|
Apache Kylin|
Openstack|
Flink|
MapReduce|
大数据|
云计算|
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....