ZooKeeper分布式过程协同技术详解-第一章

Zookeeper简介

对于现在的分布式系统,应用服务由很多个独立的程序组成,这些独立的程序则运行在形形色色、千变万化的一组计算机上。相对于开发在一台计算机上运行的单个程序,如何让一个应用中多个 独立的程序协同工作是一件非常困难的事情。开发这样的应用,很容易让很多开发人员陷入如何使多个程序协同工作的逻辑中,最后导致没有时间更好地思考和实现他们自己的应用程序逻辑;又或者开发人员对协同逻辑 关注不够,只是用很少的时间开发了一个简单脆弱的主协调器,导致不可靠的单一失效点。

ZooKeeper的设计保证了其健壮性,这就使得应用开发人员可以更多关 注应用本身的逻辑,而不是协同工作上。

ZooKeeper从文件系统API得到启 发,提供一组简单的API,使得开发人员可以实现通用的协作任务,包括 选举主节点、管理组内成员关系、管理元数据等。ZooKeeper包括一个应用 开发库(主要提供Java和C两种语言的API)和一个用Java实现的服务组 件。ZooKeeper的服务组件运行在一组专用服务器之上,保证了高容错性和 可扩展性。

当你决定使用ZooKeeper来设计应用时,最好将应用数据和协同数据独立开。比如,网络邮箱服务的用户对自己邮箱中的内容感兴趣,但是并不 关心由哪台服务器来处理特定邮箱的请求。在这个例子中,邮箱内容就是 应用数据,而从邮箱到某一台邮箱服务器之间的映射关系就是协同数据 (或称元数据)。整个ZooKeeper服务所管理的就是后者。

1、zookeeper的使命

zookeeper可以在分布式系统中协作多个任务。一个协作任务是指一个包含多个进程的任务。 这个任务可以是为了协作或者是为了管理竞争。协作意味着多个进程需要 一同处理某些事情,一些进程采取某些行动使得其他进程可以继续工作。 比如,在典型的主-从(master-worker)工作模式中,从节点处于空闲状态 时会通知主节点可以接受工作,于是主节点就会分配任务给从节点。竞争则不同。它指的是两个进程不能同时处理工作的情况,一个进程必须等待 另一个进程。同样在主-从工作模式的例子中,我们想有一个主节点,但是 很多进程也许都想成为主节点,因此我们需要实现互斥排他锁(mutual exclusion)。实际上,我们可以认为获取主节点身份的过程其实就是获取 锁的过程,获得主节点控制权锁的进程即主节点进程。

当开发人员使用 ZooKeeper进行开发时,开发人员设计的那些应用往往可以看成一组连接到 ZooKeeper服务器端的客户端,它们通过ZooKeeper的客户端API连接到 ZooKeeper服务器端进行相应的操作。Zookeep的客户端API功能强大,其中包括:

  • 保障强一致性、有序性和持久性。
  • 实现通用的同步原语的能力。
  • 在实际分布式系统中,并发往往导致不正确的行为。ZooKeeper提供了一种简单的并发处理机制。

2、zookeeper不适用场景

  • 整个ZooKeeper的服务器集群管理着应用协作的关键数据。ZooKeeper 不适合用作海量数据存储。

3、通过ZooKeeper构建分布式系统

分布式系统中的进程通信有两种选择:直接通过网络进行信息交换, 或读写某些共享存储。ZooKeeper使用共享存储模型来实现应用间的协作和 同步原语。对于共享存储本身,又需要在进程和存储间进行网络通信。我 们强调网络通信的重要性,因为它是分布式系统中并发设计的基础。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值