`
deeravenger
  • 浏览: 17246 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

EC2介绍(三)

阅读更多

    首先我们来看一下EC2是怎么解决数据均衡分布的问题的。

一、数据均衡问题
    我们知道,在分布式环境下,数据是分布在不同的节点上的,这些节点可能是物理节点,也有可能是虚拟节点。但是不管怎么样,总是有一个问题,我怎么保证每个节点上比较均衡地分布数据的问题。在中心式的环境下,这个问题的处理比较容易理解,只要用一台中心服务器管理元数据好了。这样我自然就可以解决数据均衡的问题(不过这种办法有自己的麻烦,比如当数据量非常非常大的时候,元数据的规模也会很大,另外还有单点失效的问题)。但如前所述,EC2的设计是去中心化的,这意味着并没有一个这样的中心服务器来管理元数据,那他怎么解决数据均衡问题呢?
    答案是DHT。DHT是Distributed Hash Table的缩写,中文可以称为分布式哈希表。虽然听起来有点陌生又有点高深,但其实这种技术可能很多人都在不知不觉中用了很多年了。电驴和BT这类下载软件相信大家不会陌生,这类被称作P2P的下载软件区别于传统的客户端--服务器的下载模式,它们就是基于DHT实现的。这里还涉及到另外一个概念:一致性哈希(Consistent Hash)。目前主流的DHT的实现都是基于他的。两者的概念定义参见附录,他们之间的关系如下图:


 
    如图所以,DHT这个概念最大,它里面包含Consistent Hash。而Consistent Hash中包含着具体的算法,比方说电驴就是采用Kademlia算法实现的。
    下面就来讲讲一致性哈希的核心思想。
    总的来讲,既然是哈希,那么必然有key和value,因此基于这种方式实现的存储系统,也要求数据有key和value两部分,这也带来了一些弊端,比如模糊搜索就做不了。普通的Hash是仅仅对key做Hash运算,因为Hash运算必然涉及一个模的问题,这个模当然就取节点的数目了。假定有5个节点,那么hash运算一番之后,key所代表的哈希值被分为了五个区间,分别代表五个节点,然后将数据往五个节点上放就行了。
    这里有几个问题,如果节点数目发生变化,那么由于模发生了变化,必然导致绝大部分key的映射关系都发生了改变,这就意味着绝大部分数据需要搬迁,这非常不合理。
    一致性哈希首先要解决这个问题,它通过对key和node都进行hash运算的方式来避免这个问题。如下图所示:


 

    如果有一个写入缓存的请求,其中Key值为K,计算器hashHash(K) Hash(K) 对应于图环中的某一个点,如果该点对应没有映射到具体的某一个机器节点,那么顺时针查找,直到第一次找到有映射机器的节点,该节点就是确定的目标节点,如果超过了2^32仍然找不到节点,则命中第一个机器节点。比如 Hash(K) 的值介于n1~n2之间,那么命中的机器节点应该是n2节点。

    如果这个时候有一个新节点加入怎么办?看下图:



 
    显然,受影响的数据之局限于新加入那个节点的相邻两个节点,这就避免了大量数据搬迁带来的一系列问题。有节点撤出的情况也相似。

    另外,还有一个问题需要考虑,比如节点个数很少的时候,容易导致分布不均衡的情况发生,而Dynamo引入虚节点的概念,可以有效地缓解分布不均的问题。如下图所示,左边是引入虚节点之前分布不均的情况,右边是引入虚节点后,导致节点数大大增加,因而可以较好地解决数据均衡分布的问题。



 

说明如下:

1、在节点少的情况下,hash函数的随机性可能导致某几个节点上负载过多,节点越少,这种情况越明显。

2、在节点少的情况下,一个节点离开或者加入,引起的数据震荡较大。

3、不同物理节点的硬件配置与实际处理能力往往不一样,他们承载能力也不一样。

引入虚节点可以较好地解决这些问题。

据统计数据表明,当节点个数达到上百个的时候,各个节点间负载比较均衡。

 

    但上面这个模型其实有很多问题没考虑,比如路由表的问题。如果当前的节点只保存下一个节点的位置,那么每次查找都要遍历很多节点,不现实;如果所有的节点保存所有其他节点的位置,那么数据量很大,也不太现实。不过Dynamo采用的是第二种方式,他怎么处理路由表过大的问题就不得而知了。

    

(未完待续)

  • 大小: 21.1 KB
  • 大小: 16.2 KB
  • 大小: 20.7 KB
  • 大小: 20.7 KB
分享到:
评论

相关推荐

    ec修改器最新版.rar

    软件介绍: 本软件是模拟器的金手指工具。内附最新版、经典版和老版。ec修改器最新版使用方法:0.下载EC官方修改器(附带完全附件)1.运行 官方版模拟器(以官方模拟器为准,不包括任何其他非官方所谓汉化或胡乱修改或...

    1350多个精品易语言模块

    二进制到三十六进制.ec 互 联网扩展模块1.1.ec 互联网扩展模块1[1].1.ec 五笔编码查询模块.ec 代码编辑器部分模块.ec 仿 vista截图.ec 仿WinXP窗口v3.1版.ec 仿XP界面3.0特别版模块 3.0.ec 仿XP窗口2.0.ec 仿 真...

    ec电源管理一些基础的知识

    三、 THERMAL ............................................................................................................................... 25 1、 功能介绍: ............................................

    game.ec4.3破解版

    2.线程注入功能,全局注入类,内存注入类,输入法注入等。复杂的功能都能一行代码搞定。 3.超级模块含有几十个类别,上千功能,这里不一一介绍。 4.超级模块中含有丰富的实用功能,轻松实现高级编程。 5.找图找色找...

    阿里云服务器ECS介绍.pptx

    业界相关产品对比 产品高级功能 阿里云-弹性计算 Amazon-EC2 弹性块存储 快照回滚 快照只读挂载 防DDOS攻击 故障恢复 在线迁移 弹性内存 Elastic Compute Unit Virtual Private Cloud 安全组 自定义配置 自定义镜像...

    云计算讲义PPPT 2

    重点阐述了云计算领域具代表性的Google、亚马逊和微软三个...亚马逊AWS的Dynamo、EC2、S3、SQS、SimpleDB和CloudFront等;微软的 Azure、SQL服务、.Net服务和Live服务等;开源云计算技术的HDFS、HBase和Eucalyptus等。

    云计算系列完整教程 第三部分

    本书是中国云计算专家委员会刘鹏教授主编的系统讲解云计算...亚马逊AWS的Dynamo、EC2、S3、SQS、SimpleDB和CloudFront等;微软的 Azure、SQL服务、.Net服务和Live服务等;开源云计算技术的HDFS、HBase和Eucalyptus等。

    Angular2中select用法之设置默认值与事件详解

    本文主要给大家介绍了Angular2中select用法之设置默认值与事件的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 一、设置默认值: 现在有三个学生小明,小红,小黑,对双向绑定的student设置你想要的...

    ofbiz综合技术文档

    2、ECAs 23 3、服务组 25 4、路由服务(Route services) 25 5、HTTP 服务 26 6、JMS 服务 26 三、服务引擎配置指南 26 1、简介 26 2、验证 26 3、线程池 26 4、引擎定义 27 5、资源加载器 27 6、全局服务 27 7、服务...

    云计算讲义PPT 1

    重点阐述了云计算领域具代表性的Google、亚马逊和微软三个...亚马逊AWS的Dynamo、EC2、S3、SQS、SimpleDB和CloudFront等;微软的 Azure、SQL服务、.Net服务和Live服务等;开源云计算技术的HDFS、HBase和Eucalyptus等。

    OpenSSL编程(三合一版).zip

    65 12.1 BASE64编码介绍 65 12.2 BASE64编解码原理 65 12.3 主要函数 66 12.4 编程示例 66 第十三章 Openssl ASN1库 69 13.1 ASN1简介 69 13.2 DER编码 70 13.3 ASN1基本类型示例 71 ...

    Google Earth开源版源码下载

    开源介绍的翻译: 谷歌地球企业的开源发布,一个地理空间应用程序,它提供了建立和托管自定义3D地球仪和二维地图的能力。谷歌地球企业版不提供谷歌图像,谷歌地图或地球地球目前可用的私人版本。 应用套件由三个核心...

    wrkshp_ec-101

    介绍 欢迎来到我们的工作室! {%embed url =“ ” caption =“满足当今世界上每天依靠24x7全天候运行的运算能力”%} 关于Master大型机竞赛 是一种有趣的方式,可以在各种技术上获得动手经验,发展宝贵的技能并...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 javascript数据类型三大类型 9-26 5 javascript算术运算符及位运算 9-26 6 javascript三大流程控制 9-27 1 课程回顾 9-27 2 循环控制 金字塔的...

    (全)传智播客PHP就业班视频完整课程

    9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 javascript数据类型三大类型 9-26 5 javascript算术运算符及位运算 9-26 6 javascript三大流程控制 9-27 1 课程回顾 9-27 2 循环控制 金字塔的...

    史上最全传智播客PHP就业班视频课,8月份视频

    9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 javascript数据类型三大类型 9-26 5 javascript算术运算符及位运算 9-26 6 javascript三大流程控制 9-27 1 课程回顾 9-27 2 循环控制 金字塔的...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 javascript数据类型三大类型 9-26 5 javascript算术运算符及位运算 9-26 6 javascript三大流程控制 9-27 1 课程回顾 9-27 2 循环控制 金字塔的...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 javascript数据类型三大类型 9-26 5 javascript算术运算符及位运算 9-26 6 javascript三大流程控制 9-27 1 课程回顾 9-27 2 循环控制 金字塔的...

    马头拧紧枪用户手册-CN

    电动工具分为手持式(EC)、固定式 (MC、MCL)、ECPHT 三个系列。 ECPHT 系列为强力枪式工具,机械转速 2 档可调, 具备较高的空转转速和最终扭矩。 ECPHT 系列工 具采用特殊的电机驱动方式,因此本手册将对该系 列...

Global site tag (gtag.js) - Google Analytics