- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分布式 Key Value Store 漫谈
V1.0
广州技术沙龙(09/08/08)
Tim Yang
/
Agenda
• Key value store 漫谈
– MySQL / Sharding / K/V store
– K/V store性能比较
• Dynamo 原理及借鉴思想
– Consistent hashing
– Quorum (NRW)
– Vector clock
– Virtual node
• 其他话题
说明
• 不复述众所周知的资料
– 不是Key value store知识大全
• 详解值得讲解或有实践体会的观点
场景
• 假定场景为一IM系统,数据存储包括
– 1. 用户表(user)
• {id, nickname, avatar, mood}
– 2. 用户消息资料(vcard)
• {id, nickname, gender, age, location…}
– 好友表(roster)
• {[id, subtype, nickname, avatar,
remark],[id2,…],…}
单库单表时代
• 最初解决方案
– 单库单表, MySQL
• 随着用户增长,将会出现的问题
– 查询压力过大
• 通常的解决方案
–MySQL replication及主从分离
单库单表时代
• 用户数会继续增大,超出单表写的负
载
• Web 2.0, UGC, UCD的趋势,写请求
增大,接近读请求
– 比如读feed, 会有 “like” 等交互需要写
• 单表数据库出现瓶颈,读写效率过低
分库分表时代
• 将用户按ID(或其他
字段)分片到不同数
据库
• 通常按取模算法
hash() mod n
• 解决了读写压力问
题
但是,Shard ≠ 架构设计
• 架构及程序人员的精力消耗在
切分上
• 每一个新的项目都是重复劳动
不眠夜-resharding
通知:我们需要21:00-7:00停机维护
• 有办法避免吗?
Sharding framework
• 框架,如hivedb
– 隔离分库的逻辑
– 期望对程序透明,和单库方式编程
• 没有非常成功的框架
– 数据存储已经类似key/value
– 期望用SQL方式来用,架构矛盾
• 框架之路也失败了,为什么?
分库分表过时了
• 无需继续深入了解那些切分的奇巧淫技
• nosql!
Key value时代
• 我们需要的是一个分布式,自扩展
的storage
• Web应用数据都非常适合
key/value形式
–User, vcard, roster 数据
• {user_id: user_data}
百家争鸣
• Berkeley DB(C), MemcacheDB(C)
• Bigtable, Hbase(Java), Hypertable(C++, baidu)
• Cassandra(Java)
• CouchDB(Erlang)
• Dynamo(Java), Kai/Dynomite/E2dynamo(Erlang)
• MongDB
• PNUTS
• Redis(C)
• Tokyo
原创力文档


文档评论(0)