#微架构设计#快速表态存储设计

开发 架构
V5版微博推出表态业务,用户可以快速表达意见。假设对表态业务进行简化,只保留最新三条表态,多余的表态不再展示。表态类似于评论,热度非常明显,一条微博的表态可能有上千个,峰值写入也会超过1000/s,如何精简存储那?MC+Mysql or Redis or ?

#微架构设计# V5版微博推出表态业务,用户可以快速表达意见。假设对表态业务进行简化,只保留最新三条表态,多余的表态不再展示。表态类似于评论,热度非常明显,一条微博的表态可能有上千个,峰值写入也会超过1000/s,如何精简存储那?MC+Mysql or Redis or ?

分析快速表态,一条微博存3个表态,而每天有上亿微博,存储量是微博的3倍,量极大。

最新的3条表态,对更新要求高,每发一条新表态,就要去更新,写入量瞬间峰值也会非常大,甚至到达1000次/秒。

可见我们面对的主要挑战有两个:海量的表态数据存储和每秒上千次的并发写入。

具体分析如下:

  • 数据特点
  1. key无限(与微博数量相当)
  2. 数据冷热程度明显(最近几天的微博的表态访问量较大)
  3. 只需要存储最新的3条表态
  • 方案对比

针对上面数据的特点,可以考虑的存储方案有redis、mc+mysql、HBase等。下面从几个维度对这几个方案进行对比:

我们在满足并发读写量的需求时,还要尽量节俭存储,从前面的提示可知,快速表态业务的并发写入量可能会达到1000次/s,HBase显得大材小用,而redis能很好满足,但是经过实际业务统计,发现同一微博的表态,每秒同时并发写入量只有几十次每秒,因此可以忽略mysql并发写的问题,又考虑到redis的故障恢复成本较高。因此,mc+mysql相比于redis更加适合这个业务场景。

  • 容量规划

下面分析采用mc+mysql的存储方案时,如何进行具体的容量规划。

假设,每天发表的微博数1亿,有表态的占10%,则:

  1. mc   1亿*10%*7*100B=7G(每天发表微博数*有表态的比例*一周*mc中每条记录大小),命中率在99%以上。
  2. mysql 每天增加1亿*10%=1000W行,峰值1000次/秒
  • 存储设计

主要涉及mc的设计和mysql的表结构设计。

  1. mc              key: 微博id, value:list(存放3个表态id)
  2. mysql        
  • 分库策略      按微博id进行hash,分为32个库
  • 分表策略      根据微博id按月分表
  • 表结构设计    

+-----------+---------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-----------+---------------------+------+-----+---------+-------+

| status_id | bigint(20) unsigned | NO | PRI | NULL |微博id |

| attitude_ids | varchar(50) | NO | | NULL |评论id |

  • 逻辑设计

原文链接:http://blog.csdn.net/huzhongxiang20/article/details/7994689

责任编辑:林师授 来源: huzhongxiang20的博客
相关推荐

2020-12-08 11:17:41

微内核架构设计

2017-11-24 08:32:04

架构设计存储

2013-05-27 10:58:28

Tumblr架构设计雅虎收购

2023-03-09 07:29:28

微信朋友圈架构

2015-06-02 04:17:44

架构设计审架构设计说明书

2023-07-05 08:00:52

MetrAuto系统架构

2017-11-27 08:50:29

架构数据存储

2024-10-15 11:04:18

2013-09-02 17:46:41

MVC架构设计MVC架构设计

2024-04-17 08:03:45

架构设计Java

2015-06-02 04:34:05

架构设计

2009-07-10 09:31:57

MyEclipse U

2024-08-18 14:09:24

2017-11-17 07:06:27

互联网分层架构APP

2021-07-21 16:30:38

iOSAPP架构

2019-11-25 10:58:19

Tomcat架构Web

2012-06-07 10:45:12

软件架构设计原则

2021-10-28 06:17:46

架构设计组件

2009-02-01 10:17:19

Java架构设计设计模式

2023-05-12 08:06:46

Kubernetes多云架构
点赞
收藏

51CTO技术栈公众号