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