详细解析Dynamo存储引擎

Dynamo 是个什么东东呢?他是 Amazon 公司的一个分布式存储 引擎。那么这个什么引擎又是什么?

  首先,假设一个场景,你的网站要存储用户登陆的IP。这个问题怎么解决 呢?传统的方法是用数据库。数据库提供了方便的操作接口,复杂的查询能力以及事物的保证。

  好,现在假设大家都很喜欢你的网站,访问的人 越来越多。一个数据库已经处理不过来了。于是你安装了3台数据库主机,把用户分成了三类(男人,女人,IT人;总是有某种方法把用户分成数目大致差不多的 几个部分吧)。

  每次访问的时候,先看用户属于哪一类,然后直接访问存储那类用户数据的数据库。于是处理能力增加了三倍。这个时候你已经 实现了一个分布式的存储引擎,Dynamo 就是一个类似的东西。只是它的可靠性,可用性等方面更好一点而已。下面我们看看那个简单的分布式存储系统有什么不方便的地方,而Dynamo是如何解决 的。

  简单分布式系统实现云存储可能存在的问题

  先列举一下简单的分布式系统可能存在的问题吧:

   1 很难扩容:如果现在业务发展迅速,3台主机撑不住了,需要加到5台主机,那要如何处理呢?首先要更改分类方法,把用户分成5类,然后重新迁移已经存在的数 据。你要在网站上贴个条子,“系统维护中”,然后开始伟大的迁移工程,等到终于迁移完成,发现其实3台也不用了,用户都走光了。

  2 数据可靠性无法保证:有一天,发现有一台数据库服务器硬盘 坏了,这下麻烦就来了,本来网站就不赚钱,没用什么高档机器,只有一个定期 的增量备份而已。经过一天复杂的恢复工作,你还要对部分用户说,麻烦你们把做过的事情再做一遍啊。

  3 单点问题:负责把用户分类,然后决定使用哪个数据服务器 的那台主机是网站的命根子啊,它如果宕机,所有的数据都不能访问了,它 如果满负荷了,增加数据服务器也不会对整体性能有帮助。我好像看到一台贴满着驱邪保平安符咒的pc server。

  这几个问题,看似不 大,解决起来还真的不容易呢。尤其是想到自己的网站也许有一天也会和google有一样多的用户(可能因为你是天才或者google快倒闭了)。现在我们 看看 Dynnamo 是怎么解决的吧。

 

Dynamo虚节点思想解决扩容问题

  这个问题实际上是数据分布方式的问题(怎么分组)。最简单最容易想到的就是根 据资源数目对数据进行哈希分布,比如算出一个哈希值,然后对资源数取模。这种简单处理的结果就是当资源数变化的时候,每个数据重新取模后,其分布方式都可 能变化,从而需要迁移大量的数据。

  举个简单的例子来说明一下,假设我的数据是自然数(1-20),资源现在是三台主机(A,B,C), 采用取模分配方式,那么分配后A主机的数据为(1,4,7,10,13,16,19),B为(2,5&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值