分布式协调技术

32人阅读 评论(0) 收藏 举报
分类:

一、分布式协调技术

在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术。那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术 主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。这时,有人可能会说这个简单,写一个调 度算法就轻松解决了。说这句话的人,可能对分布式系统不是很了解,所以才会出现这种误解。如果这些进程全部是跑在一台机上的话,相对来说确实就好办了,问 题就在于他是在一个分布式的环境下,这时问题又来了,那什么是分布式呢?这个一两句话我也说不清楚,但我给大家画了一张图希望能帮助大家理解这方面的内 容,如果觉得不对尽可拍砖,来咱们看一下这张图,如图1.1所示。

给大家分析一下这张图,在这图中有三台机器,每台机器各跑一个应用程序。然后我们将这三台机器通过网络将其连接起来,构成一个系统来为用户提供服务,对用户来说这个系统的架构是透明的,他感觉不到我这个系统是一个什么样的架构。那么我们就可以把这种系统称作一个分布式系统

那我们接下来再分析一下,在这个分布式系统中如何对进程进行调度,我假设在第一台机器上挂载了一个资源,然后这三个物理分布的进程都要竞争这个资源,但我们又不希望他们同时进行访问,这时候我们就需要一个协调器,来让他们有序的来访问这个资源。这个协调器就是我们经常提到的那个,比如说"进程-1"在使用该资源的时候,会先去获得锁,"进程1"获得锁以后会对该资源保持独占,这样其他进程就无法访问该资源,"进程1"用完该资源以后就将锁释放掉,让其他进程来获得锁,那么通过这个锁机制,我们就能保证了分布式系统中多个进程能够有序的访问该临界资源。那么我们把这个分布式环境下的这个锁叫作分布式锁。这个分布式锁也就是我们分布式协调技术实现的核心内容,那么如何实现这个分布式呢,那就是我们后面要讲的内容。

 

二、分布式锁的实现

好我们知道,为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。那么这个锁怎么实现呢?这实现起来确实相对来说比较困难的。

1.1 面临的问题

在看了图1.1所示的分布式环境之后,有人可能会感觉这不是很难。无非是将原来在同一台机器上对进程调度的原语,通过网络实现在分布式环境中。是的,表面上是可以这么说。但是问题就在网络这,在分布式系统中,所有在同一台机器上的假设都不存在:因为网络是不可靠的。

比如,在同一台机器上,你对一个服务的调用如果成功,那就是成功,如果调用失败,比如抛出异常那就是调用失败。但是在分布式环境中,由于网络的不可 靠,你对一个服务的调用失败了并不表示一定是失败的,可能是执行成功了,但是响应返回的时候失败了。还有,A和B都去调用C服务,在时间上 A还先调用一些,B后调用,那么最后的结果是不是一定A的请求就先于B到达呢? 这些在同一台机器上的种种假设,我们都要重新思考,我们还要思考这些问题给我们的设计和编码带来了哪些影响。还有,在分布式环境中为了提升可靠性,我们往 往会部署多套服务,但是如何在多套服务中达到一致性,这在同一台机器上多个进程之间的同步相对来说比较容易办到,但在分布式环境中确实一个大难题。

所以分布式协调远比在同一台机器上对多个进程的调度要难得多,而且如果为每一个分布式应用都开发一个独立的协调程序。一方面,协调程序的反复编写浪 费,且难以形成通用、伸缩性好的协调器。另一方面,协调程序开销比较大,会影响系统原有的性能。所以,急需一种高可靠、高可用的通用协调机制来用以协调分 布式应用。

1.2 分布式锁的实现者

目前,在分布式协调技术方面做得比较好的就是Google的Chubby还有Apache的ZooKeeper他们都是分布式锁的实现者。有人会问 既然有了Chubby为什么还要弄一个ZooKeeper,难道Chubby做得不够好吗?不是这样的,主要是Chbby是非开源的,Google自家 用。后来雅虎模仿Chubby开发出了ZooKeeper,也实现了类似的分布式锁的功能,并且将ZooKeeper作为一种开源的程序捐献给了 Apache,那么这样就可以使用ZooKeeper所提供锁服务。而且在分布式领域久经考验,它的可靠性,可用性都是经过理论和实践的验证的。所以我们 在构建一些分布式系统的时候,就可以以这类系统为起点来构建我们的系统,这将节省不少成本,而且bug也 将更少。


分布式系统常用思想和技术总结(入门很重要)

http://www.360doc.com/content/14/0821/09/1073512_403507606.shtml

查看评论

分布式监项目开发

-
  • 1970年01月01日 08:00

分布式应用程序协调服务Zookeeper

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功...
  • jeccisnd
  • jeccisnd
  • 2017-08-30 10:42:16
  • 224

zookeeper分布式协调服务的使用一

Zookeeper是一个高性能,分布式的应用协调服务。 提供服务: 1、集群成员的管理(Group Membership) 2、分布式锁(Locking) 3、选主(Leader Election) ...
  • fengshizty
  • fengshizty
  • 2016-04-01 15:20:38
  • 2693

Zookeeper场景实践:(5)分布式通知/协调

总的来说,利用Zookeeper的watcher注册和异步通知功能,通知的发送者创建一个节点,并将通知的数据写入的该节点;通知的接受者则对该节点注册watch,当节点变化时,就算作通知的到来。...
  • qq910894904
  • qq910894904
  • 2014-11-05 21:52:41
  • 2428

ZooKeeper:一个用于分布式应用的分布式协调服务

根据官方文档翻译整理而成本文,原文地址: http://zookeeper.apache.org/doc/trunk/zookeeperOver.html 一 设计目标 1 Zookeeper...
  • u011414200
  • u011414200
  • 2015-12-20 11:33:32
  • 1461

Zookeeper: 一个分布式应用程序协调服务

Zookeeper: A Service for Coordinating Processes of Distributed ApplicationsA Scalable,reliable,robus...
  • lilele12211104
  • lilele12211104
  • 2016-08-23 15:11:18
  • 1699

ZooKeeper的典型应用场景之分布式协调/通知。

博文中的内容来源《从Paxos到Zookeeper 分布式一致性原理与实践》这一本书,感激不尽。...
  • en_joker
  • en_joker
  • 2017-12-14 11:39:17
  • 579

集群与负载均衡技术学习笔记二 分布式应用程序协调服务zookeeper简介

zookeeper 的使用 简介 Zookeeper是一个分布式的、开放源码的分布式应用程序协调服务。 它是Hadoop生态系统的重要组件。与之对应的Google类似的服务叫:Chubby...
  • xundh
  • xundh
  • 2016-03-15 16:58:26
  • 964

分布式配置服务etcd VS 分布式协调服务zookeeper

coreOS中使用了etcd作为集群配置服务,拥有众多出色的特点,etcd是一个key,value的数据服务器,单实例可达每秒 1000 次写操作,以及方便的REST接口。 zookeeper则是在H...
  • lb7758zx
  • lb7758zx
  • 2016-05-18 18:26:43
  • 920

分布式节点协调实现方式

分布式系统是多个节点通过网络连接再一起并通过消息的传递来进行协调的系统。通常节点间的协调与控制主要是通过以下几种方式完成的。   一、硬件负载均衡        这是一个远程通...
  • u013031185
  • u013031185
  • 2017-08-15 15:35:39
  • 593
    个人资料
    等级:
    访问量: 223
    积分: 32
    排名: 195万+
    文章存档