2013-07-23

SSDB存储集群

Views: 33761 | 6 Comments

虽然拥有主从同步结构, 甚至是多主多从的同步结构, SSDB仍然是一个单机存储数据库系统, 所以SSDB天生适合存储1TB以内的数据. 如果数据可以静态分布, SSDB当然可以存储无限的数据量. 当然, 这样的SSDB并不是一个集群, 也不是一个严格意义上的分布式存储系统, 统一入口是集群的最基本特征.

"一致性哈希"常常被认为是分布式存储系统的一个重要概念, 事实上, 它只是一个可选的九牛一毛而已. 分布式存储要解决的重要问题不是数据如何分布, 而是如何保证数据迁移对用户不可见.

当一个区间(r1, r2)内的数据在从S1存储点向S2存储点迁移的过程, 处于这个区间的数据的读写会涉及到定位的问题. 读问题其实很好解决, 把迁移分为复制和删除两个步骤, 那么就可以保证在复制过程中还是从S1读取. 写问题也是类似, 但要复制得多, S1必须保证复制过程中的所有写操作都被同步(sync)到S2.

在区间内数据被删除后, S1再接收到读或者写请求时, 应该返回一个out-of-range(oor)错误, 并redirect到S2, 这时客户端可以更新寻址表然后重试.

另外, 迁移完成后, 应该由S1进行报告, S2无权进行报告, 而只能被动地接受通知区间的变化. 也就是说, 虽然S2知道自己已经接收了区间内的数据, 但S1仍然可以在这时取消迁移.

Related posts:

  1. SSDB 的双主和多主配置
  2. SSDB源码分析 – 主从和多主同步原理解析
  3. 一个 Paxos 库的功能模块划分
  4. SSDB 配置文件
  5. 遍历NSString每一个字符的正确方式!
Posted by ideawu at 2013-07-23 00:17:18

6 Responses to "SSDB存储集群"

  • 最近一直在研究ssdb,真的是出乎我的意料的好!打算用于网游当中,请问目前的ssdb的双主架构中,数据一致性解决的如何了?我是否可以建立双主架构后,完全信赖两个ssdb的数据是一致的? Reply
    @aldmd: 是可以的. 但有一点要注意, 不能在两台主上面, 分别操作相同的一个 key. Reply
    @ideawu: 非常感谢您的回复,我后来看到另外一个网友的文章,说ssdb可以进行毫秒级别的同步,我想再配合Twemproxy的话,应该可以满足网游的要求了,网游程序设计中,会避免同时对于一个key的数据进行操作,周六一整天对SSDB进行了性能测试,除了在写入大数据量的时候,会有卡顿先向,但这个应该是levelDB的问题,其它的性能都很强大,而且使用起来非常简单,再次感谢您!:)将来有机会还要向您多多学习。 Reply
    @aldmd: 好的, 也可以加入群交流. Reply
  • 一句话,挺复杂 Reply
    @dengqiao: 分布式存储确实是非常复杂的一项工程. Reply

Leave a Comment