LightCloud的设计原理 – 某人的栖息地

LightCloud的设计原理

2010-03-12 @ 01:37:16 · 作者Volcano · 归类于common

你可能会感兴趣的内容

试着开源LiteCloud项目

关于“facebook的memcached实战”小记

igbinary vs serialize vs json_encode

memcache连接慢又一例

启用memcached压缩注意事项

LightCloud是最近看到的一个比较轻巧的分布式key-value数据库,尽管这类软件已经让人觉得审美疲劳,但我仍然觉得它的设计思路值得一提。

特色

除开其项目主页上列出来的特点不提,我觉得还能数得上的特色有:

理论上可以用任意key-value数据库做为底层存储,现在支持以tokyo tyrant或者redis作为底层的存储,如果使用redis可以获得更好的性能(大概提升30%~50%)

没有定制服务器端,基本上靠客户端语言来实现键值查找。优点是部署起来比较简单,缺点也是显而易见的,效率会有损失。

可以很方便的移植到其它语言上,我已经在github上找到一个ruby版本,甚至还有个php版本的实现。

可以方便的增加节点。

结构简单,方便hack

LightCloud的设计原理

Hash ring

LightCloud不能免俗的使用了一致性hash算法(Consistent Hashing),这是为了避免新增数据节点时发生集体拆迁事件。Consistent Hashing算法的原理请参考这里。

last.fm的工作人员写的ketama算法算是比较常见的一致性算法,在libmemcached里大量使用。而LightCloud的作者当时还没发现合适的ketama python版,所以干脆自己捋起袖子写了个python版本的hash_ring,不到50行。这个是量身定制的,所以效率也还过得去,但是兼容ketama就别想了。

献上hash圈圈一个以明志:

LightCloud的hash环有什么与众不同?

其它分布式key-value数据库采用的办法是复制数据到多个节点上,例如Amazon Dynamo的复制策略图:

Dynamo用了许多办法解决consistent问题,系统相当复杂。而LightCloud直接使用tokyo tyrant的master-master复制功能,大幅简化了这部分的逻辑。所以在它的hash环上,单个节点其实是一对master-master的tokyo tyrant,焦不离孟不离焦。

在新增数据节点时,如果没有路由服务找到正确的服务器,可能会损失数据。那么LightCloud继续采用流氓手段解决这个问题,他又给上了个环,保证不会发生意外。这两个hash环里的节点仍然是之前提到的tokyo tyrant双人组,一个环叫lookup,记录了每一个key保存在哪个storage节点上;另外一个环叫storage,这是真正存放数据的地方。于是它的结构图变成了下面这个样子:

这部分比较难以理解,试着就上图阐述一下:

一个名叫A的家伙,住在storage_SB地区(storage ring)。同时,我们还告诉记性好的lookup_B(lookup ring),A君的地址为storage_SB。

很不幸或很幸运,咱们的数据膨胀到需要扩容了,于是新增了一个违章建筑storge_X,这个该死的建筑正好影响了我们找到A君。这时候,我们还可以问起记性好的lookup_B,A君住在哪个角落里啊? —— lookup_B日道:他就住在sotrage_SB一带~

lookup这群家伙记性虽然好,但是也架不住人多,再也记不住这么多人的住址,所以又新来了几个记性好的lookup。这个会影响咱们找到storage住哪吗?答案是不会,因为没有新增别的违章storage建筑,咱们不需要问路也能找着人。

按照以上推论,一定要避免同时增加lookup和storage节点,这很可能会损失数据。

_xyz

LightCloud的设计原理

2010-03-12 @ 01:37:16 · 作者Volcano · 归类于common

你可能会感兴趣的内容

试着开源LiteCloud项目

关于“facebook的memcached实战”小记

igbinary vs serialize vs json_encode

memcache连接慢又一例

启用memcached压缩注意事项

LightCloud是最近看到的一个比较轻巧的分布式key-value数据库,尽管这类软件已经让人觉得审美疲劳,但我仍然觉得它的设计思路值得一提。

特色

除开其项目主页上列出来的特点不提,我觉得还能数得上的特色有:

理论上可以用任意key-value数据库做为底层存储,现在支持以tokyo tyrant或者redis作为底层的存储,如果使用redis可以获得更好的性能(大概提升30%~50%)

没有定制服务器端,基本上靠客户端语言来实现键值查找。优点是部署起来比较简单,缺点也是显而易见的,效率会有损失。

可以很方便的移植到其它语言上,我已经在github上找到一个ruby版本,甚至还有个php版本的实现。

可以方便的增加节点。

结构简单,方便hack

LightCloud的设计原理

Hash ring

LightCloud不能免俗的使用了一致性hash算法(Consistent Hashing),这是为了避免新增数据节点时发生集体拆迁事件。Consistent Hashing算法的原理请参考这里。

last.fm的工作人员写的ketama算法算是比较常见的一致性算法,在libmemcached里大量使用。而LightCloud的作者当时还没发现合适的ketama python版,所以干脆自己捋起袖子写了个python版本的hash_ring,不到50行。这个是量身定制的,所以效率也还过得去,但是兼容ketama就别想了。

献上hash圈圈一个以明志:

LightCloud的hash环有什么与众不同?

其它分布式key-value数据库采用的办法是复制数据到多个节点上,例如Amazon Dynamo的复制策略图:

Dynamo用了许多办法解决consistent问题,系统相当复杂。而LightCloud直接使用tokyo tyrant的master-master复制功能,大幅简化了这部分的逻辑。所以在它的hash环上,单个节点其实是一对master-master的tokyo tyrant,焦不离孟不离焦。

在新增数据节点时,如果没有路由服务找到正确的服务器,可能会损失数据。那么LightCloud继续采用流氓手段解决这个问题,他又给上了个环,保证不会发生意外。这两个hash环里的节点仍然是之前提到的tokyo tyrant双人组,一个环叫lookup,记录了每一个key保存在哪个storage节点上;另外一个环叫storage,这是真正存放数据的地方。于是它的结构图变成了下面这个样子:

这部分比较难以理解,试着就上图阐述一下:

一个名叫A的家伙,住在storage_SB地区(storage ring)。同时,我们还告诉记性好的lookup_B(lookup ring),A君的地址为storage_SB。

很不幸或很幸运,咱们的数据膨胀到需要扩容了,于是新增了一个违章建筑storge_X,这个该死的建筑正好影响了我们找到A君。这时候,我们还可以问起记性好的lookup_B,A君住在哪个角落里啊? —— lookup_B日道:他就住在sotrage_SB一带~

lookup这群家伙记性虽然好,但是也架不住人多,再也记不住这么多人的住址,所以又新来了几个记性好的lookup。这个会影响咱们找到storage住哪吗?答案是不会,因为没有新增别的违章storage建筑,咱们不需要问路也能找着人。

按照以上推论,一定要避免同时增加lookup和storage节点,这很可能会损失数据。

_xyz


相关内容

  • 新目标人教版英语九年级全册单词
  • 九年级新目标英语单词全册 第一单元 抽认卡 词汇 出声地:大声地 发音:发音法 明确的:具体的 记住:熟记 语法:语法规则 不同地:有区别地 使失望:使沮丧:使厌烦 令人失望的:令人沮丧的:令人厌烦的 快地:迅速地 补充:继续说 发......音:正确(或清晰地)吐(字.音等) 口语的:口头的 慢地 ...

  • 苏教版英语8A单词及词组 (8)
  • UNIT1: 1. 更多一些 2. 使...特别 3. 愿意做某事 4. 和我一样苗条 5. 和别人分享东西 6. 乐于助人 7. 给有需要的人让座 8. 环游世界 9. 视力差 10.过多使用电脑 11.看起来聪明 12.有幽默感 13.感觉无聊 14.说笑话 15.使我笑 16.把我们的书撞得从 ...

  • [优化方案]2016年高中生物 专题5.1 生态工程的基本原理课时作业 新人教版选修3
  • [优化方案]2016年高中生物 专题5.1 生态工程的基本原理课 时作业 新人教版选修3 1.下列观点不符合生态农业设计思路的是( ) . A .循环利用农业有机废弃物 B .调整产业结构,开展多种经营 C .保持生态系统内的生态平衡 D .大量使用化肥以获得农业的高产量 解析:选D .生态农业首先 ...

  • [大学]全文及解释
  • <大学>全文及解释 [原文] 大学之道,在明明德,在亲民,在止于至善. 知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得. 物有本末,事有终始.知所先后,则近道矣. [译文] 大学的宗旨在于弘扬光明正大的品德,在于使人弃旧图新,在于使人达到最完善的境界.知道应达到的境界才能够 ...

  • 牛津初中英语9A_Unit4知识点汇总
  • 牛津初中英语9A Unit4知识点汇总 重点短语 Welcome to the unit in India在印度 face danger 面临危险 be a bit disturbed 感到有一点心烦意乱 in the natural habitat 在自然生活环境(栖息地) win an awar ...

  • 东华理工大学环境修复原理课程论文
  • 鄱阳湖流域湿地生态修复技术 摘要:鄱阳湖生态湿地是中国第一大淡水湖生态湿地,也是生物多样性非常丰富的世界六大湿地之一,对调蓄长江洪水.保障长江中下游水生态安全.保护候鸟和湿地多样性具有重要意义.随着经济社会的发展,湿地保护与当地经济社会发展的矛盾日益凸显.本文就鄱阳湖生态湿地保护中存在的问题,提出进 ...

  • 创新当然是大赢家,但是
  • 如果你们是个大的.旧式的公司,不要东施效颦地一味追求创新,只要做好你自己就行了.紧随创始者进入市场的公司,能够从前者的错误和局限性中得到经验. iPad上市――这个当今商业界最大的新闻事件已经过去了,但它却仍是技术业界的热门话题.它的照片也频频出现在杂志封面上,市场分析师们在猜测它是否会改变出版业和 ...

  • 景观生态规划
  • ⑴ 河流生态系统恢复: ① 河流的总体生态功能:a.地表水资源的分配 b.地形地貌的塑造 c.水质的调节 d.生物栖息地 e.小气候调节 对河流的大量开发,兴建大量工程,改变了河流的地理学特征 ② 河流生态系统:A.生物:a.生物入侵b.过度捕捞狩猎 B.生境:a.水:污染.水土流失.围垦毁林.水利 ...

  • 景观生态学原理在土地整理中的应用
  • 作者:安晨刘世梁李新举邱扬 地域研究与开发 2010年06期 修回日期:2009-09-30 中图分类号:F311 文献标识码:A 文章编号:1003-2363(2009)06-0068-07 土地整理是指在一定地域范围内,按照土地利用规划,采取行政.经济.法律和工程技术手段,对土地利用状况进行调整 ...