问题导读:
1.master挂机,传统做法备份必然是以前数据,该如何保证挂机数据与备份数据一致?
2.分布式系统如何实现对同一资源的访问,保证数据的强一致性?
3.集群中的worker挂了,传统做法是什么?zookeeper又是如何做的?
分布式系统的运行是很复杂的,因为涉及到了网络通信还有节点失效等不可控的情况。下面介绍在最传统的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的强一致性,可以用于那种对集群中机器状态,机器在线率有较高要求的场景,能够快速对集群中机器变化作出响应。
分享到:
相关推荐
内容概要:本文介绍了Zookeeper作为一个分布式协调服务框架的基础入门内容,包括安装配置、启动服务、基本操作和关键概念的理解。...此外,还讨论了在高并发场景下的性能瓶颈和死锁问题的解决方法。
在Zookeeper的应用场景中,确保服务的稳定性和高可用性至关重要,而Exhibitor则为此提供了直观且易用的界面。它允许用户轻松地配置、管理和监视Zookeeper实例,从而简化了运维流程。 标题中的"exhibitor-1.6"指的是...
在Linux环境下,您可以通过以下步骤来运行ZooKeeper: 1. **解压文件**:首先,使用`tar -zxvf zookeeper-3.4.13.tar.gz`命令解压缩下载的文件。 2. **配置ZooKeeper**:进入解压后的目录,如`cd zookeeper-3.4.13`...
Zookeeper是Apache Hadoop项目下的一个分布式协调服务,它是一个为分布式应用提供一致性服务的软件,主要用于解决分布式环境中的数据一致性问题。在本场景中,我们关注的是Zookeeper的单节点部署模式,这对于理解...
ZooKeeper被广泛应用于解决多种分布式问题,以下是一些典型的ZooKeeper应用场景: 1. 数据发布与订阅(配置中心): ZooKeeper作为一个配置中心,允许发布者将数据发布到特定节点,订阅者则可以通过注册Watcher...
4. **创建数据目录**:根据`zoo.cfg`中的`dataDir`配置,创建对应的目录并给予正确权限,如`mkdir -p /var/zookeeper && chown zookeeper:zookeeper /var/zookeeper`。 5. **启动Zookeeper**:返回到Zookeeper的bin...
ZooKeeper是一个强大的...然而,需要注意的是,ZooKeeper适用于数据量小、更新频繁的场景,对于大规模的数据存储并不适用。在实际应用中,合理地选择和使用ZooKeeper,结合其特性,可以大大提高系统的稳定性和效率。
基于ZooKeeper的分布式锁适用于对高可靠性和一致性要求较高,而并发量不是太高的场景。由于ZooKeeper的选举机制和强一致性保证,它可以处理更复杂的分布式锁场景。 ZooKeeper分布式锁的实现 ZooKeeper分布式锁的...
在本场景中,我们讨论的是ZooKeeper的3.4.11稳定版本的安装包,它既支持Windows操作系统,也适用于Linux环境中的CentOS发行版。 **ZooKeeper的主要功能和应用:** 1. **命名服务**:为分布式应用提供全局唯一的名字...
在本场景中,我们关注的是ZooKeeper的3.4版本,该版本是针对Java Development Kit (JDK) 1.7环境优化的。 **ZooKeeper 3.4与JDK 7的兼容性** ZooKeeper 3.4版本发布于2013年,那时JDK 7是主流的Java版本。这个版本...
使用场景及目标:本指南适用于想要理解和使用ZooKeeper进行分布式应用开发的技术人员,旨在帮助读者掌握ZooKeeper的基本原理和实用技巧,能够在真实项目中有效应用ZooKeeper的功能。 其他说明:文档不仅涵盖理论知识...
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它为分布式计算提供了一个高可用、高性能的解决方案。本话题将深入探讨如何利用 ZooKeeper 来管理会话,而不是传统的 Memcached 方法。 在传统Web...
ZooKeeper是一个分布式的协调服务框架,它主要解决了分布式系统中常见的协调问题。通过实现Paxos算法,确保了在分布式环境中数据的高度一致性。ZooKeeper提供了简单易用的API,使得开发者能够方便地构建各种分布式...
一、Zookeeper:分布式协调服务 Zookeeper是由Apache开发的一款开源分布式协调服务,它提供了一种高效、可靠的分布式一致性解决方案。其核心功能包括命名服务、配置管理、集群同步、分布式锁等。Zookeeper的设计...
然而,需要注意的是,这种改造可能会引入额外的复杂性和潜在的性能影响,因此在实际部署时,需要根据具体场景权衡利弊,确保改造方案的合理性和适用性。 总结,本文详细介绍了如何在Zookeeper 3.4.14版本中实现IP...
通过深入理解并掌握Zookeeper 3.4.8的核心特性和实际应用,开发者能够有效地在分布式环境中解决一致性、配置管理、组成员动态发现等问题,提升系统的稳定性和可靠性。在大数据、云计算等领域的实践中,Zookeeper无疑...
Zookeeper 是一个强大的分布式协调框架,它在云原生架构中扮演着至关重要的角色,确保在大规模分布式...通过理解和掌握Zookeeper的使用,开发者可以在构建复杂分布式系统时,有效解决一致性、可用性和扩展性等问题。
- 定期检查日志,及时发现并解决问题。 - 对于性能优化,可根据实际应用场景调整Hadoop、Zookeeper、HBase的各项参数,提升系统整体性能。 #### 八、总结 Hadoop、Zookeeper、HBase的联合部署为大数据处理提供了...