dynamo(Dynamo的入门基础)
本文目录
Dynamo的入门基础
Dynamo的意思是发电机,顾名思义,这一整套的方案都像发电机一样,源源不断地提供服务,永不间断。以下内容看上去有点教条,但基本上如果你要理解原理,这每一项都是必须知道的。 CAP原则先来看历史,Eric A. Brewer教授,Inktomi公司的创始人,也是berkeley大学的计算机教授,Inktomi是雅虎搜索2013年的台端技术核心支持。最主要的是,他们 (Inktomi公司)在最早的时间里,开始研究分布计算。CAP原则的提出,可以追溯到2000年的时候(可以想象有多么早!),Brewer教授在一次谈话中,基于他运作Inktomi以及在伯克利大学里的经验,总结出了CAP原则(文末参考资料中有其演讲资料链接)。图一是来自Brewer教授当年所画的图:图一:CAP原则当年的PPTConsistency(一致性):即数据一致性,简单的说,就是数据复制到了N台机器,如果有更新,要N机器的数据是一起更新的。Availability(可用性):好的响应性能,此项意思主要就是速度。Partition tolerance(分区容错性):这里是说好的分区方法,体现具体一点,简单地可理解为是节点的可扩展性。定理:任何分布式系统只可同时满足二点,没法三者兼顾。忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。DHT——分布式哈希表DHT(Distributed Hash Table,分布式哈希表),它是一种分布式存储寻址方法的统称。就像普通的哈希表,里面保存了key与value的对应关系,一般都能根据一个key去对应到相应的节点,从而得到相对应的value。这里随带一提,在DHT算法中,一致性哈希作为第一个实用的算法,在大多数系统中都使用了它。一致性哈希基本解决了在P2P环境中最为关键的问题 ——如何在动态的网络拓扑中分布存储和路由。每个节点仅需维护少量相邻节点的信息,并且在节点加入/退出系统时,仅有相关的少量节点参与到拓扑的维护中。至于一致性哈希的细节就不在这里详细说了,要指明的一点是,在Dynamo的数据分区方式之后,其实内部已然是一个对一致性哈希的改造了。
dynamo怎么添加子类别
首先要给项目中的常规模型设置所需要的共享参数。然后新建各个构件族,输入四个属性,接下来要设置每个构件的编号。具体如下:1.首先要给项目中的常规模型设置所需要的共享参数。2.然后新建各个构件族,族的名称要遵守命名规则:楼层+预制构件标识+编号(如预制墙板15-17PCB-1),由于各项目预制构件的编码方式不同,程序可能需要微调。 3.构件一共有四个属性需要输入,项目名称,楼号比较容易,直接设置即可,构件的楼层属性要提取每个构件所在的楼层,然后赋予给构件楼层属性。 4.接下来要设置每个构件的编号,也是任务最繁琐的一步,需要一个一个的手动输入,因为每个构件的编号都不一样,如15PCQ-1(15楼的预制墙1)。思路是1.提取构件实际所在的楼层,提取数字2转化为字符串"2"2.提取构件的族名称,去除左侧的楼层,提取字符串"PCB-1"3.将两个字符串相加即可得到每个构件的真正编号"2PCB-1"4.将"2PCB-1"赋予给属性构件平面编号。
Dynamo的高级分析
有了上面一章里的两个基础介绍之后,我们开始进入Dynamo的世界。Dynamo的数据分区与作用在Dynamo的实现中提到一个关键的东西,就是数据分区。 假设我们的数据的key的范围是0到2的64次方(不用怀疑你的数据量会超过它,正常甚至变态情况下你都是超不过的,甚至像伏地魔等其他类Dynamo系统是使用的 2的32次方),然后设置一个常数,比如说1000,将我们的key的范围分成1000份。然后再将这1000份key的范围均匀分配到所有的节点(s个节点),这样每个节点负责的分区数就是1000/s份分区。如图二,假设我们有A、B、C三台机器,然后将我们的分区定义了12个。图二:三个节点分12个区的数据的情况因为数据是均匀离散到这个环上的(有人开始会认为数据的key是从1、2、3、4……这样子一直下去的,其实不是的,哈希计算出来的值,都是一个离散的结果),所以我们每个分区的数据量是大致相等的。从图上我们可以得出,每台机器都分到了三个分区里的数据,并且因为分区是均匀的,在分区数量是相当大的时候,数据的分布会更加的均匀,与此同时,负载也被均匀地分开了(当然了,如果硬要说你的负载还是只集中在一个分区里,那就不是在这里要讨论的问题了,有可能是你的哈希函数是不是有什么样的问题了)。为什么要进行这样的分布呢,分布的好处在于,在有新机器加入的时候,只需要替换原有分区即可,如图三所示:图三:加入一个新的节点D的情况同样是图二里的情况,12个分区分到ABC三个节点,图三中就是再进入了一个新的节点D,从图上的重新分布情况可以得出,所有节点里只需要转移四分之一的数据到新来的节点即可,同时,新节点的负载也伴随分区的转移而转移了(这里的12个分区太少了,如果是1200个分区甚至是12000个分区的话,这个结论就是正确的了,12个分区只为演示用)。从Dynamo的NRW看CAP法则在Dynamo系统中,第一次提出来了NRW的方法。N:复制的次数;R:读数据的最小节点数;W:写成功的最小分区数。这三个数的具体作用是用来灵活地调整Dynamo系统的可用性与一致性。举个例子来说,如果R=1的话,表示最少只需要去一个节点读数据即可,读到即返回,这时是可用性是很高的,但并不能保证数据的一致性,如果说W同时为1的 话,那可用性更新是最高的一种情况,但这时完全不能保障数据的一致性,因为在可供复制的N个节点里,只需要写成功一次就返回了,也就意味着,有可能在读的这一次并没有真正读到需要的数据(一致性相当的不好)。如果W=R=N=3的话,也就是说,每次写的时候,都保证所有要复制的点都写成功,读的时候也是都读到,这样子读出来的数据一定是正确的,但是其性能大打折扣,也就是说,数据的一致性非常的高,但系统的可用性却非常低了。如果R + W 》 N能够保证我们“读我们所写”,Dynamo推荐使用322的组合。Dynamo系统的数据分区让整个网络的可扩展性其实是一个固定值(你分了多少区,实际上网络里扩展节点的上限就是这个数),通过NRW来达到另外两个方 向上的调整。Dynamo的一些增加可用性的补救针对一些经常可能出现的问题,Dynamo还提供了一些解决的方法。第一个是hinted handoff数据的加入:在一个节点出现临时性故障时,数据会自动进入列表中的下一个节点进行写操作,并标记为handoff数据,在收到通知需要原节点恢复时重新把数据推回去。这能使系统的写入成功大大提升。第二个是向量时钟来做版本控制:用一个向量(比如说表示这个数据在a节点第一次写入)来标记数据的版本,这样在有版本冲突的时候,可以追溯到出现问题的地方。这可以使数据的最终一致成为可能。(Cassandra未用vector clock,而只用client timestamps也达到了同样效果。)第三个是Merkle tree来提速数据变动时的查找:使用Merkle tree为数据建立索引,只要任意数据有变动,都将快速反馈出来。第四个是Gossip协议:一种通讯协议,目标是让节点与节点之间通信,省略中心节点的存在,使网络达到去中心化。提高系统的可用性。
更多文章:
![音域的英语翻译 音域用英语怎么说?什么是显示器的gamut模式](/static/images/nopic/11.jpg)
音域的英语翻译 音域用英语怎么说?什么是显示器的gamut模式
2023年10月3日 00:45
![gtx670m相当于什么显卡(笔记本显卡 GTX670MX 大概相当于桌面级的哪个卡)](/static/images/nopic/17.jpg)
gtx670m相当于什么显卡(笔记本显卡 GTX670MX 大概相当于桌面级的哪个卡)
2024年6月13日 06:17
![中关村电子城(北京中关村科贸电子城楼栋间距够大吗,通透性怎样)](/static/images/nopic/16.jpg)
中关村电子城(北京中关村科贸电子城楼栋间距够大吗,通透性怎样)
2023年10月23日 17:15
![暴风影音2018老版本下(从曾经涨到300多的暴风影音到退市,你怎么看待长线价值投资)](/static/images/nopic/25.jpg)
暴风影音2018老版本下(从曾经涨到300多的暴风影音到退市,你怎么看待长线价值投资)
2024年6月3日 09:29
![华硕n53拆机(华硕笔记本,型号n53.自己拆机除灰了,现在屏幕不亮了,开机也没驱动的声音但是灯会亮)](/static/images/nopic/1.jpg)
华硕n53拆机(华硕笔记本,型号n53.自己拆机除灰了,现在屏幕不亮了,开机也没驱动的声音但是灯会亮)
2023年12月12日 04:45
![飞天茅台53度价格(飞天茅台53度秒杀价600元一瓶飞天茅台真得靠谱吗)](/static/images/nopic/11.jpg)
飞天茅台53度价格(飞天茅台53度秒杀价600元一瓶飞天茅台真得靠谱吗)
2024年7月1日 09:49
![titanium ip镜架是纯钛吗(镜架的脚上写着IP TITANIUM 这个是纯钛的还是镀钛的)](/static/images/nopic/17.jpg)
titanium ip镜架是纯钛吗(镜架的脚上写着IP TITANIUM 这个是纯钛的还是镀钛的)
2023年8月31日 07:30
![金星代言的生姜洗发水防脱效果怎么样(金星推荐的洗发水防脱效果怎么样)](/static/images/nopic/8.jpg)
金星代言的生姜洗发水防脱效果怎么样(金星推荐的洗发水防脱效果怎么样)
2024年6月25日 23:23
![海思四核与rk3328处理器对比(海思HI3798和瑞芯微RK3288哪个好)](/static/images/nopic/8.jpg)
海思四核与rk3328处理器对比(海思HI3798和瑞芯微RK3288哪个好)
2024年4月19日 04:40