SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
开放、动态网络分享、综合性网络服务




                                          飞信开放平台项目总监
                                          互联网产品首席架构师
                                                       孙朝晖
                              http://t.sina.com.cn/steadwater
2011年3月                                                     1
• 首先希望遭到关注幵通过微薄交流
• 本人职责
    – “飞信开放平台”总体技术架构设计
    – 飞信互联网相关产品的技术规划
    – 飞信技术社区建设,特别欢迎不同仁广泛交流
2011年3月                      2
• SNS Feed 应用的主要挑戓
• NoSQL在Feed存储中的应用状况
• MySQL HandleSocket的技术架构
• MySQL HandleSocket协议
• MySQL HandleSocket在飞信开放平台中
  的应用
• Some Open Tips

2011年3月                        3
• 首先直观感受,什么是SNS Feed




2011年3月                4
• 数据量大,增长快
    – 估算模型:以飞信空间为例
    日活跃用户 100W,平均主动行为1.3次
    平均好友20个
    产生动态条数 100W * 1.3 * (20+1) =2600W
    平均每条动态存储数据量1.5K
    数据容量 2600W*1.5KB ≈ 40GB
    以关系型数据库估算,占用存储空间100GB左右


2011年3月                                 5
• 数据写入操作密集,高频度,小数据量
• 读操作访问压力大,读写比高
• 高活跃用户带来的数据快速失效问题(在
  微博类应用尤其突出)
• 用户体验要求快速被前端感知
• 数据分区存储成为必然选项
• 数据具有时效性,LRU数据清洗成为必然工
  作
2011年3月              6
• 最重要的要求:数据存储量大
    – 隐形需求,在数据快速增长前提下RPS –r 和
      RPS-w 性能丌能下降
•   方便数据分区管理
•   方便物理分布式部署
•   应用程序需要快速访问分布式存储数据
•   CAP原则中,排序P(分区)排老大,A(可
    靠)排老二,C丌用过分强调


2011年3月                         7
知名互联网      发明创造            小故事

   FaceBook   Cassandra       经历著名的5小时服务宕机事
                              件;目前已经转移到HBase平
                              台上
   Twitter    Cassandra主要     曾经是Cassandra的主要应用
              贡献者             方和贡献者,目前转移到
                              Mysql 数据存储
   Mixi       Tokyo Cabinet   目前还没听到什么八卦

   DeNA       Mysql           有点方兴未艾的意思
              HandlerSocket
   新浪         MCDB            Redis同样得到了广泛使用

   淘宝         TAIR            主要用于数据缓存



2011年3月                                           8
 绕过了Mysql 最复杂的SQL Parser层

    充分利用 InnoDB Buffer Pool




                               飞信连接




2011年3月                               9
• 江湖传闻Mysql HandleSocket性能强于
  Memcached
    – 同样的江湖传闻作用不Redis
    – 我的测试结果表明在缓存命中率高的情况下确实可能

                  飞信连接
• 一切源于 Libevent惹得祸
    – 基于Epoll LT的libevent看来在服务器开发模型中要退
      伍了




2011年3月                              10
• 构建于InnoDB 存储引擎,可充分利用InnoDB
  引擎的BufferPool提高性能
• 最精简的协议不解释引擎,针对NoSQL特点,
  跳过了Mysql 最复杂的SQL Parser层
• 存储依然基于MySQL,稳定,可靠性高
• DBA 无需与门学习一项NoSQL技术,即可完
  成备份,性能监视,运维成本低
• 可以利用Mysql 的横向扩展机制
• 基于Perona XtraDB整合的Secondary Buffer
  Pool(开源项目)可充分利用SSD+SATA的物
  理存储结构
2011年3月                                11
• 基于索引的访问
  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
• 采用唯一性索引作为主键

• 打开的index 集合中必须包括主键

• 必须基于不索引访问,丏每次只能使用一种索引
  进行查询

• 由于绕过了SQL Parser 层,要求必须将bin-log
  设置为row模式,以保证复制的实施


2011年3月                            13
• 项目地址(含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
• 以综合实施成本最低为原则
    – 主要看中运维成本的降低不可靠性
• 由于没有在SSD+SATA配置服务器上测试,性能
  没有表现到最好,但是已经最后好




2011年3月                      15
2011年3月   16
功能       Mysql HandleSocket   MongoDB
      分布式数据库   支持以及InnoDB的          透明分布式
               DRDB和Replication
      动态扩列     不支持                  支持
      组合索引查询   不支持,通过中间件            内置支持
               实现此目标
      备份       内置支持                 需要专用的工具
               Mysql工具丰富




2011年3月                                       17
PHP WebSite   APC Local
                               Cache

                 RPC
                                Redis
                               Session
          JAVA 中间件平台
                               Redis
                               Queue




             Percona 数据库



2011年3月                                   18
• Feed操作的永恒主题,处理推和拉的问题,此处
  主要指好友动态

• 学习Tim Yang的理论,Normal分发,名人合幵

• 名人动态采用基于缓冲区的异步写入
• 个人动态缓存采用LRU Update + 写入频度影响
  因子
• News Feed间隔性前端聚合方式,Session
  Service中一定数量Slot位的预取区
2011年3月                         19
• 以综合实施成本最低为原则
    – Sharding Key % Slice SegSize
    – SliceID  Sharding Key



• 以用户索引为分片依据




2011年3月                              20
• 在一个大型的SNS Feed应用中,透明分区管理真
  的有必要吗?戒者说你真的敢相信它吗?

• 基于数据库查询和筛选和基于中间件的运算中
  trade-off中您有什么宝贵经验吗?

• 列式存储在哪些具体应用场景上具有明显优势?
  搜索引擎、数据仓库



2011年3月                   21
感谢!


2011年3月   22

Más contenido relacionado

La actualidad más candente

新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构XiaoJun Hong
 
No sql@vip new
No sql@vip newNo sql@vip new
No sql@vip newChao Zhu
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案XiaoJun Hong
 
数据架构方面的一些探讨
数据架构方面的一些探讨数据架构方面的一些探讨
数据架构方面的一些探讨Chao Zhu
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 Chao Zhu
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践孙立
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版XiaoJun Hong
 
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Dahui Feng
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术团队
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性Xuefeng Zhang
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术团队
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构Sky Jian
 
Nginx深度開發與客制化
Nginx深度開發與客制化Nginx深度開發與客制化
Nginx深度開發與客制化Joshua Zhu
 
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题XiaoJun Hong
 
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pubChao Zhu
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化XiaoJun Hong
 
1号店数据库架构
1号店数据库架构1号店数据库架构
1号店数据库架构Louis liu
 
了解集群
了解集群了解集群
了解集群Feng Yu
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaknuthocean
 

La actualidad más candente (20)

新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构
 
No sql@vip new
No sql@vip newNo sql@vip new
No sql@vip new
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案
 
数据架构方面的一些探讨
数据架构方面的一些探讨数据架构方面的一些探讨
数据架构方面的一些探讨
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
 
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构
 
Nginx深度開發與客制化
Nginx深度開發與客制化Nginx深度開發與客制化
Nginx深度開發與客制化
 
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
 
唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub唯品会大数据实践 Sacc pub
唯品会大数据实践 Sacc pub
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
 
1号店数据库架构
1号店数据库架构1号店数据库架构
1号店数据库架构
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
了解集群
了解集群了解集群
了解集群
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in china
 

Destacado

Couchdb and me
Couchdb and meCouchdb and me
Couchdb and meiammutex
 
Consistency Models in New Generation Databases
Consistency Models in New Generation DatabasesConsistency Models in New Generation Databases
Consistency Models in New Generation Databasesiammutex
 
8 minute MongoDB tutorial slide
8 minute MongoDB tutorial slide8 minute MongoDB tutorial slide
8 minute MongoDB tutorial slideiammutex
 
Consistency in Distributed Systems
Consistency in Distributed SystemsConsistency in Distributed Systems
Consistency in Distributed SystemsShane Johnson
 
SDEC2011 NoSQL Data modelling
SDEC2011 NoSQL Data modellingSDEC2011 NoSQL Data modelling
SDEC2011 NoSQL Data modellingKorea Sdec
 
Big Challenges in Data Modeling: NoSQL and Data Modeling
Big Challenges in Data Modeling: NoSQL and Data ModelingBig Challenges in Data Modeling: NoSQL and Data Modeling
Big Challenges in Data Modeling: NoSQL and Data ModelingDATAVERSITY
 
Thoughts on Transaction and Consistency Models
Thoughts on Transaction and Consistency ModelsThoughts on Transaction and Consistency Models
Thoughts on Transaction and Consistency Modelsiammutex
 
Boosting Machine Learning with Redis Modules and Spark
Boosting Machine Learning with Redis Modules and SparkBoosting Machine Learning with Redis Modules and Spark
Boosting Machine Learning with Redis Modules and SparkDvir Volk
 
Schema Design with MongoDB
Schema Design with MongoDBSchema Design with MongoDB
Schema Design with MongoDBrogerbodamer
 
Coherence and consistency models in multiprocessor architecture
Coherence and consistency models in multiprocessor architectureCoherence and consistency models in multiprocessor architecture
Coherence and consistency models in multiprocessor architectureUniversity of Pisa
 
Consistency in Distributed Systems
Consistency in Distributed SystemsConsistency in Distributed Systems
Consistency in Distributed SystemsDATAVERSITY
 
Cache coherence problem and its solutions
Cache coherence problem and its solutionsCache coherence problem and its solutions
Cache coherence problem and its solutionsMajid Saleem
 
Redis modules 101
Redis modules 101Redis modules 101
Redis modules 101Dvir Volk
 
Cache coherence
Cache coherenceCache coherence
Cache coherenceEmployee
 
Redis data modeling examples
Redis data modeling examplesRedis data modeling examples
Redis data modeling examplesTerry Cho
 
Data Modeling for NoSQL
Data Modeling for NoSQLData Modeling for NoSQL
Data Modeling for NoSQLTony Tam
 

Destacado (20)

Couchdb and me
Couchdb and meCouchdb and me
Couchdb and me
 
Ooredis
OoredisOoredis
Ooredis
 
Consistency Models in New Generation Databases
Consistency Models in New Generation DatabasesConsistency Models in New Generation Databases
Consistency Models in New Generation Databases
 
8 minute MongoDB tutorial slide
8 minute MongoDB tutorial slide8 minute MongoDB tutorial slide
8 minute MongoDB tutorial slide
 
Consistency in Distributed Systems
Consistency in Distributed SystemsConsistency in Distributed Systems
Consistency in Distributed Systems
 
SDEC2011 NoSQL Data modelling
SDEC2011 NoSQL Data modellingSDEC2011 NoSQL Data modelling
SDEC2011 NoSQL Data modelling
 
skip list
skip listskip list
skip list
 
Big Challenges in Data Modeling: NoSQL and Data Modeling
Big Challenges in Data Modeling: NoSQL and Data ModelingBig Challenges in Data Modeling: NoSQL and Data Modeling
Big Challenges in Data Modeling: NoSQL and Data Modeling
 
Cache coherence
Cache coherenceCache coherence
Cache coherence
 
Thoughts on Transaction and Consistency Models
Thoughts on Transaction and Consistency ModelsThoughts on Transaction and Consistency Models
Thoughts on Transaction and Consistency Models
 
Boosting Machine Learning with Redis Modules and Spark
Boosting Machine Learning with Redis Modules and SparkBoosting Machine Learning with Redis Modules and Spark
Boosting Machine Learning with Redis Modules and Spark
 
Schema Design with MongoDB
Schema Design with MongoDBSchema Design with MongoDB
Schema Design with MongoDB
 
Coherence and consistency models in multiprocessor architecture
Coherence and consistency models in multiprocessor architectureCoherence and consistency models in multiprocessor architecture
Coherence and consistency models in multiprocessor architecture
 
Consistency in Distributed Systems
Consistency in Distributed SystemsConsistency in Distributed Systems
Consistency in Distributed Systems
 
Cache coherence problem and its solutions
Cache coherence problem and its solutionsCache coherence problem and its solutions
Cache coherence problem and its solutions
 
Redis modules 101
Redis modules 101Redis modules 101
Redis modules 101
 
Big Data Modeling
Big Data ModelingBig Data Modeling
Big Data Modeling
 
Cache coherence
Cache coherenceCache coherence
Cache coherence
 
Redis data modeling examples
Redis data modeling examplesRedis data modeling examples
Redis data modeling examples
 
Data Modeling for NoSQL
Data Modeling for NoSQLData Modeling for NoSQL
Data Modeling for NoSQL
 

Similar a Mysql HandleSocket技术在SNS Feed存储中的应用

从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
众行业公司系统架构案例介绍
众行业公司系统架构案例介绍众行业公司系统架构案例介绍
众行业公司系统架构案例介绍mysqlops
 
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBBig Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBMonster Supreme
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Feng Yu
 
大众点评网的技术变迁之路
大众点评网的技术变迁之路大众点评网的技术变迁之路
大众点评网的技术变迁之路jeffz
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)Shanda innovation institute
 
浅谈 My sql 性能调优
浅谈 My sql 性能调优浅谈 My sql 性能调优
浅谈 My sql 性能调优thinkinlamp
 
MySQL应用优化实践
MySQL应用优化实践MySQL应用优化实践
MySQL应用优化实践mysqlops
 
Tdsql在微众银行核心交易系统中的实践 雷海林
Tdsql在微众银行核心交易系统中的实践 雷海林Tdsql在微众银行核心交易系统中的实践 雷海林
Tdsql在微众银行核心交易系统中的实践 雷海林Cheng Feng
 
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索liu sheng
 
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New翀 刘
 
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引liu sheng
 
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraAccelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraJunchi Zhang
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构Cosey Lee
 
Nodejs介绍
Nodejs介绍Nodejs介绍
Nodejs介绍myzykj
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲84zhu
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CDChen-Tien Tsai
 

Similar a Mysql HandleSocket技术在SNS Feed存储中的应用 (20)

从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
众行业公司系统架构案例介绍
众行业公司系统架构案例介绍众行业公司系统架构案例介绍
众行业公司系统架构案例介绍
 
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBBig Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDB
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
 
大众点评网的技术变迁之路
大众点评网的技术变迁之路大众点评网的技术变迁之路
大众点评网的技术变迁之路
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
 
浅谈 My sql 性能调优
浅谈 My sql 性能调优浅谈 My sql 性能调优
浅谈 My sql 性能调优
 
MySQL应用优化实践
MySQL应用优化实践MySQL应用优化实践
MySQL应用优化实践
 
Tdsql在微众银行核心交易系统中的实践 雷海林
Tdsql在微众银行核心交易系统中的实践 雷海林Tdsql在微众银行核心交易系统中的实践 雷海林
Tdsql在微众银行核心交易系统中的实践 雷海林
 
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
20141128(刘胜)UTC2014分布式和云服务的思考与实践——支付清算行业分布式架构的探索
 
Altibase介绍
Altibase介绍Altibase介绍
Altibase介绍
 
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New
 
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
 
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraAccelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud era
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构
 
Nodejs介绍
Nodejs介绍Nodejs介绍
Nodejs介绍
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
 
Java@taobao
Java@taobaoJava@taobao
Java@taobao
 
Cdc@ganji.com
Cdc@ganji.comCdc@ganji.com
Cdc@ganji.com
 

Más de iammutex

Scaling Instagram
Scaling InstagramScaling Instagram
Scaling Instagramiammutex
 
Redis深入浅出
Redis深入浅出Redis深入浅出
Redis深入浅出iammutex
 
深入了解Redis
深入了解Redis深入了解Redis
深入了解Redisiammutex
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析iammutex
 
MongoDB 在盛大大数据量下的应用
MongoDB 在盛大大数据量下的应用MongoDB 在盛大大数据量下的应用
MongoDB 在盛大大数据量下的应用iammutex
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告iammutex
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现iammutex
 
Introduction to couchdb
Introduction to couchdbIntroduction to couchdb
Introduction to couchdbiammutex
 
What every data programmer needs to know about disks
What every data programmer needs to know about disksWhat every data programmer needs to know about disks
What every data programmer needs to know about disksiammutex
 
redis运维之道
redis运维之道redis运维之道
redis运维之道iammutex
 
Realtime hadoopsigmod2011
Realtime hadoopsigmod2011Realtime hadoopsigmod2011
Realtime hadoopsigmod2011iammutex
 
[译]No sql生态系统
[译]No sql生态系统[译]No sql生态系统
[译]No sql生态系统iammutex
 
Couchdb + Membase = Couchbase
Couchdb + Membase = CouchbaseCouchdb + Membase = Couchbase
Couchdb + Membase = Couchbaseiammutex
 
Redis cluster
Redis clusterRedis cluster
Redis clusteriammutex
 
Redis cluster
Redis clusterRedis cluster
Redis clusteriammutex
 
Hadoop introduction berlin buzzwords 2011
Hadoop introduction   berlin buzzwords 2011Hadoop introduction   berlin buzzwords 2011
Hadoop introduction berlin buzzwords 2011iammutex
 
No sql but even less security
No sql but even less securityNo sql but even less security
No sql but even less securityiammutex
 
10 Key MongoDB Performance Indicators
10 Key MongoDB Performance Indicators  10 Key MongoDB Performance Indicators
10 Key MongoDB Performance Indicators iammutex
 
MongoDB开发应用实践
MongoDB开发应用实践MongoDB开发应用实践
MongoDB开发应用实践iammutex
 

Más de iammutex (20)

Scaling Instagram
Scaling InstagramScaling Instagram
Scaling Instagram
 
Redis深入浅出
Redis深入浅出Redis深入浅出
Redis深入浅出
 
深入了解Redis
深入了解Redis深入了解Redis
深入了解Redis
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
 
MongoDB 在盛大大数据量下的应用
MongoDB 在盛大大数据量下的应用MongoDB 在盛大大数据量下的应用
MongoDB 在盛大大数据量下的应用
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 
Introduction to couchdb
Introduction to couchdbIntroduction to couchdb
Introduction to couchdb
 
What every data programmer needs to know about disks
What every data programmer needs to know about disksWhat every data programmer needs to know about disks
What every data programmer needs to know about disks
 
Ooredis
OoredisOoredis
Ooredis
 
redis运维之道
redis运维之道redis运维之道
redis运维之道
 
Realtime hadoopsigmod2011
Realtime hadoopsigmod2011Realtime hadoopsigmod2011
Realtime hadoopsigmod2011
 
[译]No sql生态系统
[译]No sql生态系统[译]No sql生态系统
[译]No sql生态系统
 
Couchdb + Membase = Couchbase
Couchdb + Membase = CouchbaseCouchdb + Membase = Couchbase
Couchdb + Membase = Couchbase
 
Redis cluster
Redis clusterRedis cluster
Redis cluster
 
Redis cluster
Redis clusterRedis cluster
Redis cluster
 
Hadoop introduction berlin buzzwords 2011
Hadoop introduction   berlin buzzwords 2011Hadoop introduction   berlin buzzwords 2011
Hadoop introduction berlin buzzwords 2011
 
No sql but even less security
No sql but even less securityNo sql but even less security
No sql but even less security
 
10 Key MongoDB Performance Indicators
10 Key MongoDB Performance Indicators  10 Key MongoDB Performance Indicators
10 Key MongoDB Performance Indicators
 
MongoDB开发应用实践
MongoDB开发应用实践MongoDB开发应用实践
MongoDB开发应用实践
 

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

  • 1. 开放、动态网络分享、综合性网络服务 飞信开放平台项目总监 互联网产品首席架构师 孙朝晖 http://t.sina.com.cn/steadwater 2011年3月 1
  • 2. • 首先希望遭到关注幵通过微薄交流 • 本人职责 – “飞信开放平台”总体技术架构设计 – 飞信互联网相关产品的技术规划 – 飞信技术社区建设,特别欢迎不同仁广泛交流 2011年3月 2
  • 3. • SNS Feed 应用的主要挑戓 • NoSQL在Feed存储中的应用状况 • MySQL HandleSocket的技术架构 • MySQL HandleSocket协议 • MySQL HandleSocket在飞信开放平台中 的应用 • Some Open Tips 2011年3月 3
  • 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
  • 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