1、 海量数据DAU 2亿发表:亿+热点事件频发#赵丽颖结婚#王思聪微博抽奖#春晚峰值流量红包飞口播微博当前业务特点微博当前业务特点平台当前技术架构平台当前技术架构移动端PC端OpenApiH5内网核心池内网非核心外网池阿里云服务池端4层7层Feed评论关系用户短链/对象库私信服务层MysqlHBaseRedis(存储)分布式文件存储层中间层CacheServiceMCRedisMotan RPCConfig Server实时消息流队列机Trigger计算服务计数器服务超长列表CoreUnCoreOther推模式推模式/拉模式拉模式 推模式上行写入复杂下行聚合简单 拉模式 上行写入简单 下行聚合复
2、杂海量数据海量数据 挑战DAU:2亿发表:亿+可扩展性能高可用长尾列表解决方案解决方案Mysql分库分表冷热分离一主多从、读写分离内容、索引表拆分索引表拆分:一级索引、二级索引UUIDUUID发号器发号器timeidcseq 分布式UUID生成系统64位整型基本有序递增,可以直接用ID排序多机房分布,去中心化索引库索引库二级索引库(1)UID分库MID分表二级索引库(n)一级索引库(1)Table(yymmdd)Table(yymmdd)Table(yymmdd)Table(yymmdd)Table(yymm)一级索引库(n)Table(yymmdd)Table(yymmdd)Table(yy
3、mmdd)Table(yymmdd)Table(yymm)fi:uid,mid,flagsi:uid,start_date,min_mid,countTable(n)Table(n)Table(n)Table(n)Table(m)Table(n)Table(n)Table(n)Table(n)Table(m)通过二级索引快速定位通过二级索引快速定位一级索引表位置一级索引表位置内容库内容库内容库(1)基于MID分库基于时间分表Table(yymmdd)Table(yymmdd)Table(yymmdd)Table(yymmdd)Table(yymmdd)hash(mid)%n=0内容库(n)Ta
4、ble(yymmdd)Table(yymmdd)Table(yymmdd)Table(yymmdd)Table(yymmdd)hash(mid)%n=n下行读取下行读取 挑战DAU:2亿单接口PV:10亿+高性能高可用解决方案解决方案 双层缓存架构提前规划容量和端口Slave作为HA备份 更新逻辑双写CAS master一致性以Master为准读取顺序:Master-Slave-DBWebM1M2M3S1S2S3扩展性扩展性-瓶颈瓶颈 单端口瓶颈CPU瓶颈带宽瓶颈内存瓶颈如何快速扩容扩展性-解决方案 L1-M-S三层架构 L1成组扩容 L1相比Master、Slave内存更小 L1主要分担带宽
5、、CPU 读写逻辑 多写 CAS master,Set slave、L1 一致性以Master为准 读取:L1-Master-Slave-DBWebL1-1L1-2L1-3L2-1L2-2L2-3M1M2M3S1S2S3计数器存储计数器存储计数器存储计数器存储 早期解决方案MC+MysqlRedis计数器存储计数器存储 流量增长挑战多个key存储,效率低前端请求 计数资源请求近百倍放大总数据百G级,Master+Slave T级日增计数亿+,内存5G+201800901001.rep 100201800901001.cmt 200201800901001.like 1000计数器存储计数器存储
6、 解决方案RedisCounterCounterService计数器计数器-CounterServiceCounterService内存(热数据)SSD(冷数据)Table1Table2Table1Table2DumpK/VK/VK/VK/VK/V201800901001.rep 100201800901001.cmt 200201800901001.like 1000201800901001 100|200|1000|扩展定制计数器:一个K/V存储多个计数,支持预留扩展分多个表,热数据放内存,冷数据滚动到SSD内存降为1/5,节省几百台机器性能能增加3-5倍容量增加20倍多机房架构多机房架构