文档库 最新最全的文档下载
当前位置:文档库 › 一致性哈希算法及其在分布式系统中的应用

一致性哈希算法及其在分布式系统中的应用

一致性哈希算法及其在分布式系统中的应用
一致性哈希算法及其在分布式系统中的应用

摘要

本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。

分布式缓存问题

假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读写数据库的方式不太给力了,于是我们想引入Memcached作为缓存机制。现在我们一共有三台机器可以作为Memcached服务器,如下图所示。

很显然,最简单的策略是将每一次Memcached请求随机发送到一台Memcached

服务器,但是这种策略可能会带来两个问题:一是同一份数据可能被存在不同的机器上而造成数据冗余,二是有可能某数据已经被缓存但是访问却没有命中,因为无法保证对相同key的所有访问都被发送到相同的服务器。因此,随机策略无论是时间效率还是空间效率都非常不好。

要解决上述问题只需做到如下一点:保证对相同key的访问会被发送到相同的服务器。很多方法可以实现这一点,最常用的方法是计算哈希。例如对于每次访问,可以按如下算法计算其哈希值:

h = Hash(key) % 3

其中Hash是一个从字符串到正整数的哈希映射函数。这样,如果我们将Memcached Server分别编号为0、1、2,那么就可以根据上式和key计算出服务器编号h,然后去访问。

这个方法虽然解决了上面提到的两个问题,但是存在一些其它的问题。如果将上述方法抽象,可以认为通过:

h = Hash(key) % N

这个算式计算每个key的请求应该被发送到哪台服务器,其中N为服务器的台数,并且服务器按照0 – (N-1)编号。

这个算法的问题在于容错性和扩展性不好。所谓容错性是指当系统中某一个或几个服务器变得不可用时,整个系统是否可以正确高效运行;而扩展性是指当加入新的服务器后,整个系统是否可以正确高效运行。

现假设有一台服务器宕机了,那么为了填补空缺,要将宕机的服务器从编号列表中移除,后面的服务器按顺序前移一位并将其编号值减一,此时每个key就要按h = Hash(key) % (N-1)重新计算;同样,如果新增了一台服务器,虽然原有服务器编号不用改变,但是要按h = Hash(key) % (N+1)重新计算哈希值。因此系统中一旦有服务器变更,大量的key会被重定位到不同的服务器从而造成大量的缓存不命中。而这种情况在分布式系统中是非常糟糕的。

一个设计良好的分布式哈希方案应该具有良好的单调性,即服务节点的增减不会造成大量哈希重定位。一致性哈希算法就是这样一种哈希方案。

一致性哈希算法

算法简述

一致性哈希算法(Consistent Hashing)最早在论文《Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web》中被提出。简单来说,一致性哈希将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0 - 232-1(即哈希值是一个32位无符号整形),整个哈希空间环如下:

整个空间按顺时针方向组织。0和232-1在零点中方向重合。

下一步将各个服务器使用H进行一个哈希,具体可以选择服务器的ip或主机名作为关键字进行哈希,这样每台机器就能确定其在哈希环上的位置,这里假设将上文中三台服务器使用ip地址哈希后在环空间的位置如下:

接下来使用如下算法定位数据访问到相应服务器:将数据key使用相同的函数H 计算出哈希值h,通根据h确定此数据在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务器就是其应该定位到的服务器。

例如我们有A、B、C、D四个数据对象,经过哈希计算后,在环空间上的位置如下:

根据一致性哈希算法,数据A会被定为到Server 1上,D被定为到Server 3上,而B、C分别被定为到Server 2上。

容错性与可扩展性分析

下面分析一致性哈希算法的容错性和可扩展性。现假设Server 3宕机了:

可以看到此时A、C、B不会受到影响,只有D节点被重定位到Server 2。一般的,在一致性哈希算法中,如果一台服务器不可用,则受影响的数据仅仅是此服务器到其环空间中前一台服务器(即顺着逆时针方向行走遇到的第一台服务器)之间数据,其它不会受到影响。

下面考虑另外一种情况,如果我们在系统中增加一台服务器Memcached Server 4:

此时A、D、C不受影响,只有B需要重定位到新的Server 4。一般的,在一致性哈希算法中,如果增加一台服务器,则受影响的数据仅仅是新服务器到其环空间中前一台服务器(即顺着逆时针方向行走遇到的第一台服务器)之间数据,其它不会受到影响。

综上所述,一致性哈希算法对于节点的增减都只需重定位环空间中的一小部分数据,具有较好的容错性和可扩展性。

虚拟节点

一致性哈希算法在服务节点太少时,容易因为节点分部不均匀而造成数据倾斜问题。例如我们的系统中有两台服务器,其环分布如下:

此时必然造成大量数据集中到Server 1上,而只有极少量会定位到Server 2上。为了解决这种数据倾斜问题,一致性哈希算法引入了虚拟节点机制,即对每一个服务节点计算多个哈希,每个计算结果位置都放置一个此服务节点,称为虚拟节点。具体做法可以在服务器ip或主机名的后面增加编号来实现。例如上面

的情况,我们决定为每台服务器计算三个虚拟节点,于是可以分别计算“Memcached Server 1#1”、“Memcached Server 1#2”、“Memcached Server 1#3”、“Memcached Server 2#1”、“Memcached Server 2#2”、“Memcached Server 2#3”的哈希值,于是形成六个虚拟节点:

同时数据定位算法不变,只是多了一步虚拟节点到实际节点的映射,例如定位到“Memcached Server 1#1”、“Memcached Server 1#2”、“Memcached Server 1#3”三个虚拟节点的数据均定位到Server 1上。这样就解决了服务节点少时数据倾斜的问题。在实际应用中,通常将虚拟节点数设置为32甚至更大,因此即使很少的服务节点也能做到相对均匀的数据分布。

总结

目前一致性哈希基本成为了分布式系统组件的标准配置,例如Memcached的各种客户端都提供内置的一致性哈希支持。本文只是简要介绍了这个算法,更深入的内容可以参看论文《Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web》,同时提供一个C语言版本的实现供参考。

分布式设计与开发(二)_几种必须了解的分布式算法

分布式设计与开发(二)------几种必须了解的分布式算法 分布式设计与开发中有些疑难问题必须借助一些算法才能解决,比如分布式环境一致性问题,感觉以下分布式算法是必须了解的(随着学习深入有待添加): ?Paxos算法 ?一致性Hash算法 Paxos算法 1)问题描述 分布式中有这么一个疑难问题,客户端向一个分布式集群的服务端发出一系列更新数据的消息,由于分布式集群中的各个服务端节点是互为同步数据的,所以运行完客户端这系列消息指令后各服务端节点的数据应该是一致的,但由于网络或其他原因,各个服务端节点接收到消息的序列可能不一致,最后导致各节点的数据不一致。举一个实例来说明这个问题,下面是客户端与服务端的结构图: 当client1、client2、client3分别发出消息指令A、B、C时,Server1~4由于网络问题,接收到的消息序列就可能各不相同,这样就可能由于消息序列的不同导致Server1~4上的数据不一致。对于这么一个问题,在分布式环境中很难通过像单机里处理同步问题那么简单,而Paxos算法就是一种处理类似于以上数据不一致问题的方案。 2)算法本身 算法本身我就不进行完整的描述和推导,网上有大量的资料做了这个事情,但我学习以后感觉莱斯利·兰伯特(Leslie Lamport,paxos算法的奠基人,此人现在在微软研究院)的Paxos Made Simple是学习paxos 最好的文档,它并没有像大多数算法文档那样搞一堆公式和数学符号在那里吓唬人,而是用人类语言让你搞清楚Paxos要解决什么问题,是如何解决的。这里也借机抨击一下那些学院派的研究者,要想让别人认可你的成果,首先要学会怎样让大多数人乐于阅读你的成果,而这个描述Paxos算法的文档就是我们学习的榜样。 言归正传,透过Paxos算法的各个步骤和约束,其实它就是一个分布式的选举算法,其目的就是要在一堆消息中通过选举,使得消息的接收者或者执行者能达成一致,按照一致的消息顺序来执行。其实,以最简单的想法来看,为了达到大伙执行相同序列的指令,完全可以通过串行来做,比如在分布式环境前加上一个FIFO 队列来接收所有指令,然后所有服务节点按照队列里的顺序来执行。这个方法当然可以解决一致性问题,但

分布式数据库系统及其一致性方法研究

2007年第24卷第10期微电子学与计算机 1引言 分布式数据库系统在系统结构上的真正含义是指物理上分布、逻辑上集中的分布式数据库结构。数据在物理上分布后,由系统统一管理,用户看到的似乎不是一个分布式数据库,而是一个数据模式为全局数据模式的集中式数据库[1 ̄5]。 分布式数据库系统包括两个重要组成部分:分布式数据库和分布式数据库管理系统。分布式数据库系统具有位置透明性和复制透明性,使用户看到的系统如同一个集中式系统。分布式数据库系统分为三类:同构同质型DDBS、同构异质型DDBS和异构DDBS。同构同质型DDBS是指各个场地都采用同一类型的数据模型,并且是同一型号数据库管理系统;同构异质型DDBS是指各个场地都采用同一类型的数据模型,但是数据库管理系统是不同型号的;异构型DDBS是指各个场地的数据模型是不同的类型。 分布式结构是相对于集中式结构而言的。从数据处理的角度来说,典型的集中式结构是数据集中存放和处理,用户通过远程终端或通过网络连接来共享集中存放的数据。分布式结构则是将数据及其处理分散在不同场地,各场地各自管理一部分数据,同时又通过网络系统相互连接。各场地的用户除可以访问和处理本地数据外,也可以访问和处理别的场地的数据。分布式数据库是典型的分布式结构。它包括对数据的分布存储和对事务的分布处理。设计一个分布式数据库系统会遇到许多集中式数据库设计中所没有的问题,一致性是其中必须认真对待和解决的主要问题。 2DDBS的体系结构 2.1综合型体系结构 综合型体系结构是指在综合权衡用户需求之后,设计出分布的数据库,然后再设计出一个完整的DBMS,把DBMS的功能按照一定的决策分散配置在一个分布的环境中。每个结点的DBMS均熟知整个网络的情况,也了解其它结点的情况。从整体上,各结点组成一个完整的系统,它们之间是靠进程通讯的手段来维持互访连接,如图1所示。2.2联合型体系结构 联合型体系结构是指每个结点上先有DBMS,以此为基础,再建立分布式环境以实现互访连接。若各个结点的局部DBMS支持同一种数据模式和 分布式数据库系统及其一致性方法研究 刘萍芬,马瑞芳,王军 (西安交通大学电信学院,陕西西安710049) 摘要:分布式数据库系统是数据库领域中的一个主要研究方向,数据一致性维护是分布式数据库系统中的一个非常关键的技术问题。在分析分布式数据库系统体系结构的基础上,讨论了两种一致性方法:两阶段提交和复制服务器,并提出一种具有复制服务器的分布式数据库系统的结构框架,它具有有效性和实用性。 关键词:分布式数据库系统;一致性;两阶段提交;复制服务器 中图分类号:TP31文献标识码:A文章编号:1000-7180(2007)10-0137-03 ResearchofDistributedDatabaseSystemandDataConsistency LIUPing-fen,MARui-fang,WANGJun (CollegeofElectronicsandInformationEngineeting,Xi′anJiaotongUniversity,Xi′an710049,China) Abstract:Distributeddatabasesystemisamainresearchdirectioninthedatabasefield.Maintainingthedataconsis-tencyisacriticaltechnicalprobleminthedistributeddatabasesystem.Thispaperdiscussestwomethodsofmaintainingdataconsistencybasedonanalyzingthestructureofthedistributeddatabasesystem,whichare2PCandreplicationserv-er.Thenthepaperputsforwardadistributeddatabaseframeworkwhichhavereplicationserverstructure.Anditiseffec-tiveandapplied. Keywords:distributeddatabasesystem;dataconsistency;2PC;replicationserver 收稿日期:2006-10-27 137

网络系统与分布式系统

网络系统与分布式系统 1.概述 网络操作系统与分布式操作系统在概念上的主要区别是,网络操作系统可以构架于不同的操作系统之上,也就是说它可以在不同的本机操作系统上,通过网络协议实现网络资源的统一配置,在大范围内构成网络操作系统。在网络操作系统中并不要求对网络资源进行透明的访问,即需要指明资源位置与类型,对本地资源和异地资源访问区别对待。分布式比较强调单一性,它是由一种操作系统构架的。在这种操作系统中,网络的概念在应用层被淡化了。所有资源(本地的资源和异地的资源)都用同一方式管理与访问,用户不必关心资源在哪里,或者资源是怎样存储的。 2.网络系统 ●网络系统是一个事理系统。有人参与和受人的影响的系统称为事理系统。网络计划 属于系统工程范畴,是人类改造客体系统有用的工程技术。网络系统直接受人(应 用者)的影响,因而是一个事理系统。 ●网络系统是一个信息系统。系统的输入端(开始节点)可视为信源、系统的内态可 视为信道,系统的输出端(结束节点)可视为信宿。应当特别指出的是,网络系统 是一个事理系统,因此,网络系统的信宿本质上就是系统的操作者(人类) ●网络系统是一个复杂自适应系统 ●网络系统是是一个开放系统。网络系统是复杂自适应系统,自然就是一个开放系统。 ●网络系统是一个有序强动力学系统。网络系统沿着时间的方向演化,元素和网络内 环境要素的相互作用、网络系统要素和网络环境要素的相互作用、网络相容性贯穿 于系统运行的全过程,在这个过程的各个发展阶段上,系统自组织、自优化,这些 充分表明网络系统是一个有序强动力学系统。 ●网络系统是一个符号化系统。网络系统由网络能指和网络所指两部分构成,网络能 指是一个结构符号化系统,网络所指是一个数学符号化系统;结构符号化系统和数 学符号化系统之间具有相容性,统称为网络符号化系统。 ●网络系统是一个形式系统。 网络系统软件中的重要一环是网络操作系统,有人也将它称为网络管理系统,它与传统的单机操作系统有所不同,它是建立在单机操作系统之上的一个开放式的软件系统,它面对的是各种不同的计算机系统的互连操作,面对不同的单机操作系统之间的资源共享、用户操作协调和与单机操作系统的交互,从而解决多个网络用户(甚至是全球远程的网络用二分布式操作系统。 计算机网络系统是由计算机系统、数据通信和网络系统软件组成的。从硬件上看主要由下列组成部分: ●终端:用户进入网络所用的设备,如电传打字机、键盘显示器、计算机等。在局域 网中,终端一般由微机担任,叫工作站,用户通过工作站共享网上资源。 ●主机:有于进行数据分析处理和网络控制的计算机系统,其中包括外部设备、操作 系统及其它软件。在局域网中,主机一般由较高档的计算机担任,叫服务器,它应 具有丰富的资源,如大容量硬盘、足够的内存和各种软件等。 ●通信处理机:在接有终端的通信线路和主机之间设置的通信控制处理机器,分担数 据交换和各种通信的控制和管理。在局域网中,一般不设通讯处理机,直接由主机

集中式网络管理和分布式网络管理的区别及优缺点

集中式网络管理和分布式网络管理的区别及优缺点 集中式网络管理模式是在网络系统中设置专门的网络管理节点。管理软件和管理功能主要集中在网络管理节点上,网络管理节点与被管理节点是主从关系。 优点:便于集中管理 缺点: (1)管理信息集中汇总到管理节点上,信息流拥挤 (2)管理节点发生故障会影响全网的工作 分布式网络管理模式是将地理上分布的网络管理客户机与一组网络管理服务器交互作用,共同完成网络管理的功能。 优点: (1)可以实现分部门管理:即限制每个哭户籍只能访问和管理本部门的部分网络资源,而由一个中心管理站实施全局管理。 (2)中心管理站还能对客户机发送指令,实现更高级的管理 (3)灵活性和可伸缩性 缺点: 不利于集中管理 所以说采取集中式与分布式相结合的管理模式是网络管理的基本方向 snmp安装信息刺探以及安全策略 一、SNMP的概念,功能 SNMP(Simple Network Management Protocol)是被广泛接受并投入使用的工业标准,它的目标是保证管理信息在任意两点中传送,便于网络管理员在网络上的任何节点检索信息,进行修改,寻找故障;完成故障诊断,容量规划和报告生成。它采用轮询机制,提供最基本的功能集。最适合小型、快速、低价格的环境使用。它只要求无证实的传输层协议UDP,受到许多产品的广泛支持。 本文将讨论如何在Win2K安装使支持SNMP功能,SNMP技术对于提升整体安全水准是有益的,但也可能存在风险,本文将同时检验这两个方面。另外,除了介绍一些开发工具外,还将图解通过SNMP收集信息的可能用法,以及如何提高安全性。 二、在Win2K中安装SNMP 提供一个支持SNMP的Win2K设备与增加一个额外的Windows组件同样简单,只需要进入"开始/设置/控制面板/", 选择"添加/删除程序",然后选择"添加/删除Windows组件",随之出现一个对话框,在其中选择"管理和监视工具", 最后点击"下一步",依照提示安装: OK,现在Win2K就可以通过SNMP来访问了. 三、对snmp信息的刺探方法 1、Snmputil get 下面我们在命令行状态下使用Win2K资源工具箱中的程序 来获取安装了SNMP的Win2K机器的网络接口数目,命令参数是get: 前提是对方snmp口令是public 提供基本的、低级的SNMP功能,通过使用不同的参数和变量,可以显示设备情况以及管理设备。

Java分布式架构设计

Java分布式架构设计 一种互联网应用的分布式架构模式微服务应用框架的实现(gradle,dubbo,zookeeper,springmmvc) 简介: 框架是用freemarker、springmvc、dubbo、hibernate编写的快速互联网应用敏捷开发框架,采用web层和service层分离独立的设计模式, 用最流行的微服务架构,使用gradle替代maven管理项目结构依赖 架构应用图: 主要分5部分组成: fw_core:核心微层服务基类 fw_web:前端web框架使用 fw_facade:api层记录 fw_string:字符串处理 fw_cg:代码生成工具 此项目已经放到github上,由于时间有限,开档不全!

希望各位大神有好的建议,联系我一起交流! 源码地址:https://https://www.wendangku.net/doc/ab13328518.html,/ligson/hfw (技术交流扣扣群:487490324) 微服务架构的好处 微服务架构模式有很多好处。首先,通过分解巨大单体式应用为多个服务方法解决了复杂性问题。在功能不变的情况下,应用被分解为多个可管理的分支或服务。每个服务都有一个用RPC-或者消息驱动API定义清楚的边界。微服务架构模式给采用单体式编码方式很难实现的功能提供了模块化的解决方案,由此,单个服务很容易开发、理解和维护。 第二,这种架构使得每个服务都可以有专门开发团队来开发。开发者可以自由选择开发技术,提供API服务。当然,许多公司试图避免混乱,只提供某些技术选择。然后,这种自由意味着开发者不需要被迫使用某项目开始时采用的过时技术,他们可以选择现在的技术。甚至于,因为服务都是相对简单,即使用现在技术重写以前代码也不是很困难的事情。 第三,微服务架构模式是每个微服务独立的部署。开发者不再需要协调其它服务部署对本服务的影响。这种改变可以加快部署速度。UI团队可以采用AB测试,快速的部署变化。微服务架构模式使得持续化部署成为可能。 最后,微服务架构模式使得每个服务独立扩展。你可以根据每个服务的规模来部署满足需求的规模。甚至于,你可以使用更适合于服务资源需求的硬件。比如,你可以在EC2 Compute Optimized instances上部署CPU敏感的服务,而在EC2 memory-optimized instances上部署内存数据库。 微服务架构的不足 Fred Brooks在30Year前写道,“there are no silver bullets”,像任何其它科技一样,微服务架构也有不足。其中一个跟他的名字类似,『微服务』强调了服务大小,实际上,有一些开发者鼓吹建立稍微大一些的,10-100 LOC服务组。尽管小服务更乐于被采用,但是不要忘了这只是终端的选择而不是最终的目的。微服务的目的是有效的拆分应用,实现敏捷开发和部署。 另外一个主要的不足是,微服务应用是分布式系统,由此会带来固有的复杂性。开发者需要在RPC或者消息传递之间选择并完成进程间通讯机制。更甚于,他们必须写代码来处理消息传递中速度过慢或者不可用等局部失效问题。当然这并不是什么难事,但相对于单体式应用中通过语言层级的方法或者进程调用,微服务下这种技术显得更复杂一些。 另外一个关于微服务的挑战来自于分区的数据库架构。商业交易中同时给多个业务分主体更新消息很普遍。这种交易对于单体式应用来说很容易,因为只有一个数据库。在微服务架构应用中,需要更新不同服务所使用的不同的数据库。使用分布式交易并不一定是好的选择,不仅仅是因为CAP理论,还因为今天高扩展性的NoSQL数据库和消息传递中间件并不支持这一需求。最终你不得不使用一个最终一致性的方法,从而对开发者提出了更高的要求和挑战。

PaxosRaft 分布式一致性算法原理剖析及其在实战中的应用

基础架构事业群-数据库技术-数据库内核 何登成 Paxos/Raft 分布式一致性算法原理剖析及其在实战中的应用

目录Contents Consensus Problem Basic Paxos Multi-Paxos and Raft 实战分析 参考资料

定义:The consensus problem requires agreement among a number of processes (or agents) for a single data value.

?理解Consensus 问题的关键 ?绝对公平,相互独立:所有参与 者均可提案,均可参与提案的决 策 ?针对某一件事达成完全一致:一 件事,一个结论 ?已经达成一致的结论,不可被推 翻 ?在整个决策的过程中,没有参与 者说谎 ?晚饭吃什么? 炉鱼食堂同乐会 炉鱼炉鱼 炉鱼 Consensus Algorithm

Consensus Algorithm:Basic Paxos ?Basic Paxos ?一个或多个Servers可以发起提案(Proposers) ?系统必须针对所有提案中的某一个提案,达成一致 ?何谓达成一致?系统中的多数派同时认可该提案?最多只能针对一个确定的提案达成一致 ?Liveness (只要系统中的多数派存活,并且可以相互通信)?整个系统一定能够达成一致状态,选择一个确定的提案

Basic Paxos:Components ?Proposers ?Active:提案发起者(value) ?处理用户发起的请求 ?Acceptors ?Passive:参与决策,回应 Proposers的提案 ?存储accept的提案(value), 存储决议处理的状态 ?Learners ?Passive:不参与决策,从 Proposers/Acceptors学习最新 达成一致的提案(value)?本文接下来的部分,一个Server同时具有Proposer和Acceptor两种角色,Learner角色逻辑简单,暂时不讨论

分布式数据处理

分布式数据处理 整个70年代中期,流行的思想是利用大型设备采用集中信息服务的方式来争取公司信息服务的全面性和综合性。随着规模的扩大,灵活性就降低了,这就削弱了信息服务部门的响应能力。这种响应能力的减弱是取消集中方式的主要原因;另一个原因是计算机硬件成本的迅速 降低, □分布式数据处理的含义 分散的选择方案就是分布式数据处理(DDP)方案。分布式数据处理不仅是一种技术上的概念 , 也是一种结构上的概念。分布式数据处理的概念是建立在集中和分散这两种信息服务都能实 现的总则基砒上的" 集中/分散的问题归结起来就是建立综合的信息系统(集中)和对用户服务(分散)这两者结合 的问题,规模的大小已不再是争论点。从理论上来说,分布式数据处理将这两个领域能最好地结合在一起。计算机系统不仅能连接到所有的业务领域,而且能致力于各业务领域的应用。 由于所有的分布式系统都用一个网络联在一起,所以信息系统的综合也就很容易实现了。 公司应诊认识到分布式处理系统会貝右枚高的运行效率,因为其中某个计算机系统的失效并不危及整个公司的工作。事实上,在一个设计周到的分布式数据处理系统中,任何一个计算机子系统都能用来使整个系统正’ □分布式数据处理的范围 在分布式数据处理系统中,计算机组成网络,每台计算机可以与一台或多台其它计算机联结起来。分布式数据处理网络一般按照地理位置或功能来考虑设计,而大多数网络是这两方面的结合° 分布式数据处理也是一个经常使用的术语,它与日常所说的意思不同,很容易被用户和信息 服务工作人员误解。由于缺乏统一的认识,所以经常导致一些问题得不到解决。例如:“分 布的内容是什么?”“分布到什么程度才能最好地满足公司的需要?”下面所列的部分或全部內容部可以用丁分布式罟息朋务系统: 1. 输入/谕Fi 2. 处 II! 3. 4. 5. 3. : 在考虑任一信息服务改革尝试之前,应首先解决哪一方面要分布,以及哪一方面要分布到什 么程度的问題。 □分布式数据处理的控制 卫星计算机系统和分布式数据处理系统的中心能够通过集中的信息服务部门(由业务领域所分派的)或决策组织(其中用户和信息服务分担管理责任)来控制。无论哪一种情况,为了保持公司数据库的兼容性、一致性和信息处理的综合性, 1.评价和选择彼件 2. 3.

简述计算机网络与分时多用户系统、多机系统、分布式系统的区别

简述计算机网络与分时多用户系统、多机系统、分布式系统的区别

简述计算机网络与分时多用户系统、多机系统、分布式系统的区别 一、计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 主要作用: 1、硬件资源共享。可以在全网范围内提供对处理资源、存储资源、输入输出资源等昂贵设备的共享,使用户节省投资,也便于集中管理和均衡分担负荷。 2、软件资源共享。允许互联网上的用户远程访问各类大弄数据库,可以得到网络文件传送服务、远地进程管理服务和远程文件访问服务,从而避免软件研制上的重复劳动以及数据资源的重复存贮,也便于集中管理。 3、用户间信息交换。计算机网络为分布在各地的用户提供了强有力的通信手段。用户可以通过计算机网络传送电子邮件、发布新闻消息和进行电子商务活动。 二、分时多用户系统 使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处

理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。 产生分时系统是为了满足用户需求所形成的一种新型 OS 。它与多道批处理系统之间,有着截然不同的性能差别。用户的需求具体表现在以下几个方面: 人—机交互共享主机便于用户上机 三、多机系统多机系统是由两台以上的电子计算机组成的计算机系统。一般配置在同一地点且不需通信系统来联接。其中任一台计算机发生故障,不影响整个系统的正常运转。建立多机系统的目的是为了提高可靠性和运算速度多处理机与多机系统、分布处理系统和计算机网:多处理机与多机系统是进一步发展并行技术的必由之路,是巨型、大型机主要发展方向。它们是多指令流多数据流(MIMD)系统,各机处理各自的指令流(进程),相互通信,联合解决大型问题。它们比并行处理机有更高的并行级别,潜力大,灵活性好。用大量廉价微型机,通过互连网络构成系统,以获得高性能,是研究多处理机与多机系统的一个方向。多处理机与多机系统要求在更高级别(进程)上研究并行算法,高级程序语言提供并发、同步进程的手段,其操作系统也大为复杂,必须解决多机间多进程的通信、同步、控制等问题。 四、分布式计算机系统

集群的负载均衡技术综述

集群的负载均衡技术综述 摘要:当今世界,无论在机构内部的局域网还是在广域网如Internet上,信息处理量的增长都远远超出了过去最乐观的估计,即使按照当时最优配置建设的网络,也很快会感到吃不消。如何在完成同样功能的多个网络设备之间实现合理的业务量分配,使之不致于出现一台设备过忙、而别的设备却未充分发挥处理能力的情况,负载均衡机制因此应运而生。本组在课堂上讲解了《集群监控与调度》这一课题,本人在小组内负责负载均衡部分内容,以及PPT的制作。 关键词:负载均衡集群网络计算机 一、前言 负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。它主要完成以下任务:解决网络拥塞问题,服务就近提供,实现地理位置无关性;为用户提供更好的访问质量;提高服务器响应速度;提高服务器及其他资源的利用效率;避免了网络关键部位出现单点失效。 其实,负载均衡并非传统意义上的“均衡”,一般来说,它只是把有可能拥塞于一个地方的负载交给多个地方分担。如果将其改称为“负载分担”,也许更好懂一些。说得通俗一点,负载均衡在网络中的作用就像轮流值日制度,把任务分给大家来完成,以免让一个人累死累活。不过,这种意义上的均衡一般是静态的,也就是事先确定的“轮值”策略。 与轮流值日制度不同的是,动态负载均衡通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理分配出去。结构上分为本地负载均衡和地域负载均衡(全局负载均衡),前一种是指对本地的服务器集群做负载均衡,后一种是指对分别放置在不同的地理位置、在不同的网络及服务器群集之间作负载均衡。 服务器群集中每个服务结点运行一个所需服务器程序的独立拷贝,诸如Web、FTP、Telnet或e-mail服务器程序。对于某些服务(如运行在Web服务器上的那些服务)而言,程序的一个拷贝运行在群集内所有的主机上,而网络负载均衡则将工作负载在这些主机间进行分配。对于其他服务(例如e-mail),只有一台主机处理工作负载,针对这些服务,网络负载均衡允许网络通讯量流到一个主机上,并在该主机发生故障时将通讯量移至其他主机。 二、负载均衡技术实现结构 在现有网络结构之上,负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。它主要完成以下任务: 1.解决网络拥塞问题,服务就近提供,实现地理位置无关性 2.为用户提供更好的访问质量 3.提高服务器响应速度

分布式数据处理

分布式数据处理 Prepared on 22 November 2020

分布式数据处理 整个70年代中期,流行的思想是利用大型设备采用集中信息服务的方式来争取公司信息服务的全面性和综合性。随着规模的扩大,灵活性就降低了,这就削弱了信息服务部门的响应能力。这种响应能力的减弱是取消集中方式的主要原因;另一个原因是计算机硬件成本的迅速降低,特别是小型计算机系统的降价。 □分布式数据处理的含义 分散的选择方案就是分布式数据处理(DDP)方案。分布式数据处理不仅是一种技术上的概念,也是一种结构上的概念。分布式数据处理的概念是建立在集中和分散这两种信息服务都能实现的原则基础上的。 集中/分散的问题归结起来就是建立综合的信息系统(集中)和对用户服务(分散)这两者结合的问题,规模的大小已不再是争论点。从理论上来说,分布式数据处理将这两个领域能最好地结合在一起。计算机系统不仅能连接到所有的业务领域,而且能致力于各业务领域的应用。由于所有的分布式系统都用一个网络联在一起,所以信息系统的综合也就很容易实现了。 公司应该认识到分布式处理系统会具有较高的运行效率,因为其中某个计算机系统的失效并不危及整个公司的工作。事实上,在一个设计周到的分布式数据处理系统中,任何一个计算机子系统都能用来使整个系统正常工作。 □分布式数据处理的范围 在分布式数据处理系统中,计算机组成网络,每台计算机可以与一台或多台其它计算机联结起来。分布式数据处理网络一般按照地理位置或功能来考虑设计,而大多数网络是这两方面的结合。 分布式数据处理也是一个经常使用的术语,它与日常所说的意思不同,很容易被用户和信息服务工作人员误解。由于缺乏统一的认识,所以经常导致一些问题得不到解决。例如:“分布的内容是什么”“分布到什么程度才能最好地满足公司的需要”下面所列的部分或全部内容都可以用于分布式信息服务系统: 1.输入/输出 2.处理 3.数据存储 4.个人信息或管理部门的信息 5.检查和控制 6.规划 在考虑任一信息服务改革尝试之前,应首先解决哪一方面要分布,以及哪一方面要分布到什么程度的问题。 □分布式数据处理的控制 卫星计算机系统和分布式数据处理系统的中心能够通过集中的信息服务部门(由业务领域所分派的)或决策组织(其中用户和信息服务分担管理责任)来控制。无论哪一种情况,为了保持公司数据库的兼容性、一致性和信息处理的综合性,集中小组通常应负责下列工作: 1.评价和选择硬件 2.制定标准、方法和文件 3.制定近期和长期信息服务规划 4.补充或雇佣信息服务人员 5.运行公司的数据库(包括提供数据库所需的数据)

学生分布式系统复习题与参考答案2

一、填空题 1.访问透明性是指对不同数据表示形式以及资源访问方式的隐藏。而位置透明是用户无法判别资源在系统中的物理位置。 2. 迁移透明性是指分布式系统中的资源移动不会影响该资源的访问方式。而复制透明是指对同一个资源存在多个副本的隐藏。 3. 一个开放的分布式系统就是根据一系列准则来提供服务,这些准则描述了所提供服务的语法和语义。 4. 集群计算系统一个突出的特征是它的同构性;它提供了最大限度的分布式透明性。可用于单个程序在多台计算机上并行地运行。 5. 网格计算系统具有高度的异构性:其硬件、操作系统、网络、管理域和安全策略等都不尽相同。 6. 网格计算系统一个关键问题是如何把来自不同计算机组织的资源集中起来,使一组人或机构进行协调工作。 7. 分布式事务处理的四个特性是:原子性、一致性、独立性和持久性。 8. 分布式普适系统应用程序的需求归纳为三种,它们是:接受上下文的变化、促使自主合成、认可共享为默认行为。 9. 分布式系统体系结构样式很多,其最重要的有:分层体系结构;基于对象的体系结构、以数据为中心的体系结构以及基于事件的体系结构等四类。10. 客户/服务器结构的应用程序通常划分为三层,它们是:用户接口层、处理层和数据层。 11. 在结构化点对点体系结构中覆盖网络是用一个确定性的过程来构成的,这个使用最多的进程是通过一个分布式哈希表来组织进程的。 12. 超级对等体通常是维护一个索引或充当一个代理程序的结点。 13. 分布式软件体系结构主要分集中式、非集中式和各种混合形式三大类。其非集中式体系结构又分为 结构化的点对点、非结构化的点对点、超级对等体 三种。 14. 实现软件自适应的基本技术分为要点分离、计算 映像和基于组件的设计三种类型。 15. 分布式的自主系统指的是自我管理、自我恢复、 自我配置和自我优化等各种自适应性。 16. 一个线程独立地执行它自己的程序代码。线程系 统一般只维护用来让多个线程共享CPU所必需的最 少量信息。 17. 有两种实现线程线程包的基本方法:一是可以构 造一个完全在用户模式下执行的线程;二是由内核 来掌管线程并进行调度。 18. 分布式系统中的多线程通常有:多线程用户和多 线程服务器两大类型。而以分发器/工作者模型组织 起来的多线程服务器是最为流行的一种。 19. 虚拟化可采用两种方法,一是构建一个运行时系 统,提供一套抽象指令集来执行程序。二是提供虚 拟机监视器。 20. 在服务器的组织结构中,迭代服务器是自己处理 请求,将响应返回给客户;而并发服务器将请求传 递给某个独立线程或其他进程来处理。 21. 服务器集群在逻辑上由三层组成,第一层是逻辑 交换机;第二层是应用/计算服务;第三层是文件/ 数据库系统。 22. 在代码迁移的框架结构中,进程包含三个段,它 们是代码段、资源段和执行段三个段。 23. 进程对资源的绑定有三种类型:一是按标识符绑 定;二是按值绑定;三是按类型绑定。而三种类型 的资源对机器的绑定是未连接资源、附着连接资源 和紧固连接资源。 24. 中间件是一种应用程序,它在逻辑上位于应用层 中,但在其中包含有多种通用协议,这些协议代表 各自所在的层,独立于其他更加特别的应用。 25. 在RPC操作中,客户存根的功能是将得到的参 数打包成消息,然后将消息发送给服务器存根。 26. 所有DCE的底层编程模型都是客户-服务器模 型。而DCE本身的一部分是由分布式文件服务、目 录服务、安全服务以及分布式时间服务等构成的。 27. IDL编译器的输出包括三个文件,它们是头文件、 客户存根和服务器存根。 28. 在面向消息的通信中,通常分为面向消息的瞬时 通信和持久通信两种机制。 29. 在面向消息的瞬时通信中,通常采用套接字接口 和消息传递接口。 30. 在面向持久的通信中,消息队列系统为持久异步 通信提供多种支持。它提供消息的中介存储能力。 31. 在消息队列系统中,队列由队列管理器来管理, 它与发送或接收消息的应用程序直接交互。 32. 在消息队列系统中,转换是由队列网络中特定结 点完成的,这些结点称为消息转换器。 33. 在面向流的通信中,数据流的传输模式有异步传 输模式、同步传输模式和等时传输模式等三种。 34. 在流与服务质量(QOS)描述中,服务质量特性指 的是数据传输所要求的比特率、创建会话的最大延 时、端到端的最大延时、最大延时抖动以及最大往 返延时等。 35. 流同步有两种类型,一种是在离散数据流与连续 数据流之间保持同步;另一种是连续数据流之间的 同步。 36. 在流同步的机制中,需要研究的两个问题是:一 个是两个流同步的基本机制;二是在网络环境下这 些机制的分布式版本。 37. 应用层多播的基本思想是结点组织成一个覆盖 网络,然后用它来传播信息给其成员。一个重要的 因素是网络路由器不在组成员中。

分布式数据处理(DDP)

分布式数据处理(DDP) 整个70年代中期,流行的思想是利用大型设备采用集中信息服务的方式来争取公司信息服务的全面性和综合性。随着规模的扩大,灵活性就降低了,这就削弱了信息服务部门的响应能力。这种响应能力的减弱是取消集中方式的主要原因;另一个原因是计算机硬件成本的迅速降低,特别是小型计算机系统的降价。 □分布式数据处理的含义 分散的选择方案就是分布式数据处理(DDP)方案。分布式数据处理不仅是一种技术上的概念,也是一种结构上的概念。分布式数据处理的概念是建立在集中和分散这两种信息服务都能实现的原则基础上的。 集中/分散的问题归结起来就是建立综合的信息系统(集中)和对用户服务(分散)这两者结合的问题,规模的大小已不再是争论点。从理论上来说,分布式数据处理将这两个领域能最好地结合在一起。计算机系统不仅能连接到所有的业务领域,而且能致力于各业务领域的应用。由于所有的分布式系统都用一个网络联在一起,所以信息系统的综合也就很容易实现了。 公司应该认识到分布式处理系统会具有较高的运行效率,因为其中某个计算机系统的失效并不危及整个公司的工作。事实上,在一个设计周到的分布式数据处理系统中,任何一个计算机子系统都能用来使整个系统正常工作。 □分布式数据处理的范围 在分布式数据处理系统中,计算机组成网络,每台计算机可以与一台或多台其他计算机联结起来。分布式数据处理网络一般按照地理位置或功能来考虑设计,而大多数网络是这两方面的结合。 分布式数据处理也是一个经常使用的术语,它与日常所说的意思不同,很容易被用户和信息服务工作人员误解。由于缺乏统一的认识,所以经常导致一些问题得不到解决。例如:“分布的内容是什么?”“分布到什么程度才能最好地满足公司的需要?”下面所列的部分或全部内容都可以用于分布式信息服务系统: 1.输入/输出

分布式系统和集中式系统

分布式系统和集中式系统 Prepared on 22 November 2020

分布式系统与集中式系统 根据管理信息系统的硬件、软件、数据等信息资源在空间的分布情况,系统的结构又可分为集中式和分布式两大类型。 一、分布式系统 利用计算机网络把分布在不同地点的计算机硬件、软件、数据等信息资源联系在一起服务于一个共同的目标而实现相互通信和资源共享,就形成了管理信息系统的分布式结构。具有分布结构的系统称为分布式系统。 实现不同地点的硬、软件和数据等信息资源共享,是分布式系统的一个主要特征。分布式系统的另一个主要特征是各地与计算机网络系统相联的计算机系统既可以在计算机网络系统的统一管理下工作,又可脱离网络环境利用本地信息资源独立开展工 作。 下图是分布式的图例: a)硬件环境 原来系统内中央处理器处理的任务分散给相应的处理器,实现不同功能的各个处理器相互协调,共享系统的外设与 软件。 b)网络环境 多数分布式系统是建立在计算机网络之上的,所以分布式系统与计算机网络在物理结构上是基本相同的。分布式操作系统的设计思想和网络操作系统是不同的,这决定了他们在结构、工作方式和功能上也不同。网络操作系统要求网络用户在使用网络资源时首先必须了解网络资源,网络用户必须知道网络中各个计算机的功能与配置、软件资源、网络文件结构等情况,在网络中如果用户要读一个共享文件 时,用户必须知道这个文件放在哪一台计算机的哪一个目录下;分布式操作系统是以全局方式管理系统资源的,它可以为用户任意调度网络资源,并且调度过程是“透明”的。当用户提交一个作业时,分布式操作系统能够根据需要在系统中选择最合适的处理器,将用户的作业提交到该处理程序,在处理器完成作业后,将结果传给用户。在这

LTE系统的移动负载均衡

LTE 系统的移动负载均衡技术 摘要—在本文中我们提出的仿真结果表明,一个基于自动调节切换门限的简单的分布式同频负载均衡算法能显著降低LTE(Long Term Evolution,长期演进)网络中的呼叫阻塞率,并提高蜂窝边缘的吞吐量。 【关键词】LTE 负载均衡 切换 SON 无线电资源管理(RRM) 简介 负载均衡的描述为,将过载小区的负载分配给轻载的相邻小区使整个网络的无线资源运用更有效率。在本文中,我们所关心的是同频负载平衡机制,它在几分钟或几小时内测量反应时间,并能在长期演进网(LTE )中以最低的额外信令实现。 有很多方法可以重新分配小区之间的负载。一种方法是通过修改导频功率来调整小区的覆盖范围[1]。一个更强的导频功率实际上可以允许更多的远距离的用户进入小区,从而达到增加覆盖范围的目的。然而,自动调节小区覆盖范围冒着可能会造成覆盖漏洞的风险。另一种重新分配小区负载方法是修改两个相邻小区之间的切换区域。这种方法被称为移动负载均衡(MLB )。移动负载均衡的规则是一偏置切换测量值来调整切换区域,致使超载小区的边缘用户切换到负载较轻的相邻小区,从而提高资源的利用效率[2]。其结果是在呼叫阻塞率的降低和蜂窝边缘的吞吐量的提高。由于小区间负载分配自动的被完成,这种技术是自组织网络(SON )算法的一种。 本文的结构安排如下:在第二节中将介绍一个简单的分布式负载均衡算法;在第三节中,将介绍一个仿真模型并给出仿真结果;最后的结论将在第四节给出。 移动负载均衡 根据文献[3],切换可以被许多事件所触发。在这篇文章中我们只涉及一个特定的事件,这个事件被称为事件A3,触发事件A3是当一个特定用户检测到一个相邻小区的信号质量比当前服务小区的好时进行切换触发。这个触发条件可以被描述为公式(1),其中i 和j 分别是当前小区和相邻小区,Mi 和Mj 分别是用户测量到小区i 和j 的信号强度,()O f i 和()O f j 分别是小区i 和j 的频率fi 与fj 的频率偏移,()cs i O 是服务小区的小区偏置,(),cn i j O 是小区i 对j 的小区偏置,ξ和η分别是一个滞后术语和一个固定的偏移量。Mi 的测量值可以是一个单位为dBm 的参考信号接收功率的形式,或者是单位为dB 的参考信号接收质

阿里分布式负载均衡架构介绍

阿里分布式负载均衡架构介绍 以表格存储为例

Table Store是构建在阿里云飞天系统之上的分布式NoSQL数据存储服务,支持单表千万级读写和数十P数据存储,具备99.99%的数据可用性以及11个9的数据可靠性。表格存储基于庞大的共享资源池来服务客户,通过负载均衡来协调不同客户对资源的诉求,削峰填谷带来了成本的下降,并最终让客户收益。 本次分享即对表格存储负载均衡技术做一些总结,以便探讨分布式系统中负载均衡的问题和思路。 下面会先对表格存储做简单的介绍,以便更好的讨论我们碰到的问题。然后会介绍多租户的概念,并说明单机多租户和分布式系统多租户的不同。最后重点介绍分布式系统中多租户负载均衡的核心问题。 一、表格存储概览 需求驱动 先来看看为什么要做表格存储。就像10年前谷歌BigTable论文里面描述的一样,新时代数据有一些明显的特征: o数据量大、读写量大、增长速度很难预计。关于增长速度,比如答题,一天内访问量就可能上涨几十倍,不差钱,就看你能不能搞定。 o数据之间关系很弱。比如对邮箱应用来说,不同用户的邮件记录之间完全没有关系,无论是收发还是搜索,你都只能在自己的邮箱数据内进行。

o业务变动频繁,schema也需要跟着频繁变动。 受传统数据库约束,这三个需求都没有得到很好地解决。第一是扩展性,比如你跟DBA说业务明天要扩大10倍,估计DBA得头痛一下。他要给你准备好资源,分库分表,甚至需要业务逻辑也随之改动,很麻烦。 第二个是可用性。传统单机数据库一般是主备,有强同步、弱同步等选择,看起来给应用很多的选择权,其实选哪个你都觉得不爽,因为你想的是既要、又要、还要…… 第三点是灵活性。这也很好理解,比如数据库里面有几十亿条数据,业务方跟DBA说我要加一列,看看DBA的脸色你就知道了,DBA是不喜欢这种需求的,一般来说业务方会预留一些空白字段来避开这种需求。 正因为需求真实的存在,已有的数据库没有很好的解决,所以很多新的数据库就出来了,NoSQL是其中一个思路,是传统SQL数据库的一个很好的补充,所以我认为应该解释为Not Only SQL。未来将迎来数据库百花齐放的几年,数据库将和行业更紧密的结合,拭目以待。 特性

网络与分布式计算复习提纲

1.2 什么是分布式计算系统?它的实质是什么? 分布式计算系统是由多个相互连接的计算机组成的一个整体,这些计算机在一组系统软件(分布式操作系统或中间件)环境下,合作执行一个共同的或不同的任务,最少依赖于集中的控制过程、数据和硬件。 实质:分布计算系统=分布式硬件+分布式控制+分布式数据。 1.10多处理机与多计算机的区别是什么?同构多计算机和异构多计算机各有什么特点? 区别:多计算机是将多个计算机联合起来处理问题, 多处理机是在一个系统内集成多个处理器. 广义上说,使用多台计算机协同工作来完成所要求的任务的计算机系统都是多处理机系统。即多计算机系统。 狭义上说:多处理机系统的作用是利用系统内的多个CPU来并行执行用户的几个程序,以提高系统的吞吐量或用来进行冗余操作以提高系统的可靠性。 同构计算机的特点: 1.每个节点是一台计算机,包含CPU和存储器。 2.节点间的通信量较少。 3.同构计算机系统的互连有两种结构:基于总线的多计算机系统和基于交换的多计算机系统。 异构计算机的特点:

1.节点差异很大,节点可能是多处理机系统、集群或并行高性能计算机。 2.节点间通过互联网络如Internet连接起来的。 3.有两种实现方法:采用分布式操作系统和中间件软件层。 1.16什么是中间件,它的功能是什么?它在分布式系统中的地位是什么? 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯,是连接两个独立应用程序或独立系统的软件 功能:命名服务作业调度高级通信服务资源管理数据持久化分布式事务分布式文档系统安全服务 地位:中间件的一个重要目标是对应用程序隐藏底层平台的异构型,因此中间件系统都提供一组完整度不同的服务集。这些服务是通过中间件系统提供的接口来调用的。一般禁止跳过中间件层直接调用底层操作系统的服务。 1.18分布式系统有哪些计算模式?(必考) 1.面向对象模式

区块链技术软件开发实践:分布式系统一致性共识原理FLP、Paxos拜占庭Raft算法

分布式系统一致性与共识的原理 1一致性问题 一致性问题是分布式领域最为基础也是最重要的问题。如果分布式系统能实现“一致”,对外就可以呈现为一个完美的、可扩展的“虚拟节点”,相对物理节点具备更优越性能和稳定性。这也是分布式系统希望能实现的最终目标。 1.1定义与重要性 定义一致性(c o n s i s t e n c y),早期也叫a g r ee m e n t,是指对于分布式系统中的多个服务节点,给定一系列操作,在约定协议的保障下,试图使得它们对处理结果达成“某种程度”的认同。 理想情况下,如果各个服务节点严格遵循相同的处理协议,构成相同的处理状态机,给定相同的初始状态和输入序列,则可以保障在处理过程中的每个环节的结果都是相同的。 那么,为什么说一致性问题十分重要呢?举个现实生活中的例子,多个售票处同时出售某线路上的火车票,该线路上存 在多个经停站,怎么才能保证在任意区间都不会出现超售(同一个座位卖给两个人)的情况呢? 这个问题看起来似乎没那么难,现实生活中经常通过分段分站售票的机制。然而,为了支持海量的用户和避免出现错误,存在很多设计和实现上的挑战。特别在计算机的世界里,为了达到远超普通世界的高性能和高可扩展性需求,问题会变得更为复杂。 注意一致性并不代表结果正确与否,而是系统对外呈现的状态一致与否;

例如,所有节点都达成失败状态也是一种一致。 1.2问题与挑战

看似强大的计算机系统,实际上很多地方都比人类世界要脆弱得多。特别是在分布式计算机集群系统中,如下几个方面很容易出现问题: ·节点之间的网络通信是不可靠的,包括消息延迟、乱序和内容错误等; ·节点的处理时间无法保障,结果可能出现错误,甚至节点自身可能发生宕机; ·同步调用可以简化设计,但会严重降低分布式系统的可扩展性,甚至使其退化为单点系统。 仍以火车票售卖问题为例,愿意动脑筋的读者可能已经想到了一些不错的解决思路,例如: ·要出售任意一张票前,先打电话给其他售票处,确认下当前这张票不冲突。即通过同步调用来避免冲突; ·多个售票处提前约好隔离的售票时间。比如第一家可以在上午8点到9点期间卖票,接下来一个小时是另外一家……即通过令牌机制来避免冲突; ·成立一个第三方的存票机构,票集中存放,每次卖票前找存票机构查询。此时问题退化为中心化单点系统。 当然,还会有更多方案。实际上,这些方案背后的思想,都是将可能引发 不一致的并行操作进行串行 化。这实际上也是现代分布式系统处理一致性问题的基础思路。只是因为现在的计算机系统应对故障往往不够“智能”,而人们又希望系统可以更快更稳定地工作,所以实际可行的方案需要更加全面和更加高效。 注意这些思路都没有考虑请求和答复消息出现失败的情况,同时假设每个售票处的售票机制是正常工作的。 1.3一致性要求

相关文档
相关文档 最新文档