半夜ATM机前看书的那位

导航

Mysql HandleSocket技术在SNS Feed存储中的应用(转)

Mysql HandleSocket技术在SNS Feed存储中的应用
View more presentations from iammutex

 - Presentation Transcript

  1. 开放、动态网络分享、综合性网络服务 飞信开放平台项目总监 互联网产品首席架构师 孙朝晖 http://t.sina.com.cn/steadwater2011年3月 1
  2. • 首先希望遭到关注幵通过微薄交流• 本人职责 – “飞信开放平台”总体技术架构设计 – 飞信互联网相关产品的技术规划 – 飞信技术社区建设,特别欢迎不同仁广泛交流2011年3月 2
  3. • SNS Feed 应用的主要挑戓• NoSQL在Feed存储中的应用状况• MySQL HandleSocket的技术架构• MySQL HandleSocket协议• MySQL HandleSocket在飞信开放平台中 的应用• Some Open Tips2011年3月 3
  4. • 首先直观感受,什么是SNS Feed2011年3月 4
  5. • 数据量大,增长快 – 估算模型:以飞信空间为例 日活跃用户 100W,平均主动行为1.3次 平均好友20个 产生动态条数 100W * 1.3 * (20+1) =2600W 平均每条动态存储数据量1.5K 数据容量 2600W*1.5KB ≈ 40GB 以关系型数据库估算,占用存储空间100GB左右2011年3月 5
  6. • 数据写入操作密集,高频度,小数据量• 读操作访问压力大,读写比高• 高活跃用户带来的数据快速失效问题(在 微博类应用尤其突出)• 用户体验要求快速被前端感知• 数据分区存储成为必然选项• 数据具有时效性,LRU数据清洗成为必然工 作2011年3月 6
  7. • 最重要的要求:数据存储量大 – 隐形需求,在数据快速增长前提下RPS –r 和 RPS-w 性能丌能下降• 方便数据分区管理• 方便物理分布式部署• 应用程序需要快速访问分布式存储数据• CAP原则中,排序P(分区)排老大,A(可 靠)排老二,C丌用过分强调2011年3月 7
  8. 知名互联网 发明创造 小故事 FaceBook Cassandra 经历著名的5小时服务宕机事 件;目前已经转移到HBase平 台上 Twitter Cassandra主要 曾经是Cassandra的主要应用 贡献者 方和贡献者,目前转移到 Mysql 数据存储 Mixi Tokyo Cabinet 目前还没听到什么八卦 DeNA Mysql 有点方兴未艾的意思 HandlerSocket 新浪 MCDB Redis同样得到了广泛使用 淘宝 TAIR 主要用于数据缓存2011年3月 8
  9.  绕过了Mysql 最复杂的SQL Parser层  充分利用 InnoDB Buffer Pool 飞信连接2011年3月 9
  10. • 江湖传闻Mysql HandleSocket性能强于 Memcached – 同样的江湖传闻作用不Redis – 我的测试结果表明在缓存命中率高的情况下确实可能 飞信连接• 一切源于 Libevent惹得祸 – 基于Epoll LT的libevent看来在服务器开发模型中要退 伍了2011年3月 10
  11. • 构建于InnoDB 存储引擎,可充分利用InnoDB 引擎的BufferPool提高性能• 最精简的协议不解释引擎,针对NoSQL特点, 跳过了Mysql 最复杂的SQL Parser层• 存储依然基于MySQL,稳定,可靠性高• DBA 无需与门学习一项NoSQL技术,即可完 成备份,性能监视,运维成本低• 可以利用Mysql 的横向扩展机制• 基于Perona XtraDB整合的Secondary Buffer Pool(开源项目)可充分利用SSD+SATA的物 理存储结构2011年3月 11
  12. • 基于索引的访问 1 打开索引 P <indexid> <dbname> <tablename> <indexname> <columns> 2 基于索引查询 <indexid> <op> <vlen> <v1> ... <vn> <limit> <offset> 3 Update /Delete 数据 <indexid> <op> <vlen> <v1> ... <vn> <limit> <offset> <mop> <m1> ... <mk> mop=D 标示删除 4 Insert 数据 <indexid> + <vlen> <v1> ... <vn> 功能简单,不支持Mongo DB 式的组合索引查询 db.things.find({j: {$ne: 3}, k: {$gt: 10} });2011年3月 12
  13. • 采用唯一性索引作为主键• 打开的index 集合中必须包括主键• 必须基于不索引访问,丏每次只能使用一种索引 进行查询• 由于绕过了SQL Parser 层,要求必须将bin-log 设置为row模式,以保证复制的实施2011年3月 13
  14. • 项目地址(含C++客户端/Perl 客户端) – https://github.com/ahiguti/HandlerSocket- Plugin-for-MySQL/• JAVA客户端 – http://code.google.com/p/handlersocketfor java/• PHP客户端 – http://code.google.com/p/php- handlersocket/• Python客户端 – http://pypi.python.org/pypi/handlersocket/2011年3月 14
  15. • 以综合实施成本最低为原则 – 主要看中运维成本的降低不可靠性• 由于没有在SSD+SATA配置服务器上测试,性能 没有表现到最好,但是已经最后好2011年3月 15
  16. 2011年3月 16
  17. 功能 Mysql HandleSocket MongoDB 分布式数据库 支持以及InnoDB的 透明分布式 DRDB和Replication 动态扩列 不支持 支持 组合索引查询 不支持,通过中间件 内置支持 实现此目标 备份 内置支持 需要专用的工具 Mysql工具丰富2011年3月 17
  18. PHP WebSite APC Local Cache RPC Redis Session JAVA 中间件平台 Redis Queue Percona 数据库2011年3月 18
  19. • Feed操作的永恒主题,处理推和拉的问题,此处 主要指好友动态• 学习Tim Yang的理论,Normal分发,名人合幵• 名人动态采用基于缓冲区的异步写入• 个人动态缓存采用LRU Update + 写入频度影响 因子• News Feed间隔性前端聚合方式,Session Service中一定数量Slot位的预取区2011年3月 19
  20. • 以综合实施成本最低为原则 – Sharding Key % Slice SegSize – SliceID  Sharding Key• 以用户索引为分片依据2011年3月 20
  21. • 在一个大型的SNS Feed应用中,透明分区管理真 的有必要吗?戒者说你真的敢相信它吗?• 基于数据库查询和筛选和基于中间件的运算中 trade-off中您有什么宝贵经验吗?• 列式存储在哪些具体应用场景上具有明显优势? 搜索引擎、数据仓库2011年3月 21
 

posted on 2011-08-31 18:13  zhizhesky  阅读(452)  评论(0编辑  收藏  举报