Enviar búsqueda
Cargar
新浪微博Feed服务架构
•
37 recomendaciones
•
8,127 vistas
XiaoJun Hong
Seguir
在厦门爱特咖啡分享的新浪微博Feed服务架构
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 65
Descargar ahora
Descargar para leer sin conexión
Recomendados
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
Tim Y
微博cache设计谈
微博cache设计谈
Tim Y
Thousands of Threads and Blocking I/O
Thousands of Threads and Blocking I/O
George Cao
新浪微博开放平台Redis实战
新浪微博开放平台Redis实战
mysqlops
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
mumrah
HBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBase
enissoz
Facebook Messages & HBase
Facebook Messages & HBase
强 王
Introduction to Storm
Introduction to Storm
Chandler Huang
Recomendados
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
Tim Y
微博cache设计谈
微博cache设计谈
Tim Y
Thousands of Threads and Blocking I/O
Thousands of Threads and Blocking I/O
George Cao
新浪微博开放平台Redis实战
新浪微博开放平台Redis实战
mysqlops
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
mumrah
HBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBase
enissoz
Facebook Messages & HBase
Facebook Messages & HBase
强 王
Introduction to Storm
Introduction to Storm
Chandler Huang
High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011
Tim Y
Kafka at Peak Performance
Kafka at Peak Performance
Todd Palino
Introduction to Redis
Introduction to Redis
Dvir Volk
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
Taras Matyashovsky
Hive 3 - a new horizon
Hive 3 - a new horizon
Thejas Nair
Power of the Log: LSM & Append Only Data Structures
Power of the Log: LSM & Append Only Data Structures
confluent
Intro to HBase
Intro to HBase
alexbaranau
Big Data in Real-Time at Twitter
Big Data in Real-Time at Twitter
nkallen
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...
HostedbyConfluent
Stability Patterns for Microservices
Stability Patterns for Microservices
pflueras
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
NAVER D2
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
The Hive
A Deep Dive into Kafka Controller
A Deep Dive into Kafka Controller
confluent
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
Saurav Haloi
Introduction to MongoDB
Introduction to MongoDB
Mike Dirolf
Apache BookKeeper: A High Performance and Low Latency Storage Service
Apache BookKeeper: A High Performance and Low Latency Storage Service
Sijie Guo
MongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To Transactions
Mydbops
RocksDB compaction
RocksDB compaction
MIJIN AN
Introduction to memcached
Introduction to memcached
Jurriaan Persyn
LMAX Disruptor as real-life example
LMAX Disruptor as real-life example
Guy Nir
人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析
isnull
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
孙立
Más contenido relacionado
La actualidad más candente
High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011
Tim Y
Kafka at Peak Performance
Kafka at Peak Performance
Todd Palino
Introduction to Redis
Introduction to Redis
Dvir Volk
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
Taras Matyashovsky
Hive 3 - a new horizon
Hive 3 - a new horizon
Thejas Nair
Power of the Log: LSM & Append Only Data Structures
Power of the Log: LSM & Append Only Data Structures
confluent
Intro to HBase
Intro to HBase
alexbaranau
Big Data in Real-Time at Twitter
Big Data in Real-Time at Twitter
nkallen
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...
HostedbyConfluent
Stability Patterns for Microservices
Stability Patterns for Microservices
pflueras
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
NAVER D2
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
The Hive
A Deep Dive into Kafka Controller
A Deep Dive into Kafka Controller
confluent
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
Saurav Haloi
Introduction to MongoDB
Introduction to MongoDB
Mike Dirolf
Apache BookKeeper: A High Performance and Low Latency Storage Service
Apache BookKeeper: A High Performance and Low Latency Storage Service
Sijie Guo
MongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To Transactions
Mydbops
RocksDB compaction
RocksDB compaction
MIJIN AN
Introduction to memcached
Introduction to memcached
Jurriaan Persyn
LMAX Disruptor as real-life example
LMAX Disruptor as real-life example
Guy Nir
La actualidad más candente
(20)
High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011
Kafka at Peak Performance
Kafka at Peak Performance
Introduction to Redis
Introduction to Redis
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
Hive 3 - a new horizon
Hive 3 - a new horizon
Power of the Log: LSM & Append Only Data Structures
Power of the Log: LSM & Append Only Data Structures
Intro to HBase
Intro to HBase
Big Data in Real-Time at Twitter
Big Data in Real-Time at Twitter
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...
Analyzing Petabyte Scale Financial Data with Apache Pinot and Apache Kafka | ...
Stability Patterns for Microservices
Stability Patterns for Microservices
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
A Deep Dive into Kafka Controller
A Deep Dive into Kafka Controller
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
Introduction to MongoDB
Introduction to MongoDB
Apache BookKeeper: A High Performance and Low Latency Storage Service
Apache BookKeeper: A High Performance and Low Latency Storage Service
MongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To Transactions
RocksDB compaction
RocksDB compaction
Introduction to memcached
Introduction to memcached
LMAX Disruptor as real-life example
LMAX Disruptor as real-life example
Destacado
人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析
isnull
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
孙立
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
XiaoJun Hong
Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010
Tim Y
Replication, Durability, and Disaster Recovery
Replication, Durability, and Disaster Recovery
Steven Francia
Java常见问题排查
Java常见问题排查
bluedavy lin
Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言
Feng Yu
13 tips for a highly engaging feed
13 tips for a highly engaging feed
Thierry Schellenbach
美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡
美团点评技术团队
微博架构与平台安全
微博架构与平台安全
Tim Y
分布式Key Value Store漫谈
分布式Key Value Store漫谈
Tim Y
Service Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and Kubernetes
Sreenivas Makam
Etsy Activity Feeds Architecture
Etsy Activity Feeds Architecture
Dan McKinley
Destacado
(13)
人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010
Replication, Durability, and Disaster Recovery
Replication, Durability, and Disaster Recovery
Java常见问题排查
Java常见问题排查
Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言
13 tips for a highly engaging feed
13 tips for a highly engaging feed
美团点评技术沙龙14:美团四层负载均衡
美团点评技术沙龙14:美团四层负载均衡
微博架构与平台安全
微博架构与平台安全
分布式Key Value Store漫谈
分布式Key Value Store漫谈
Service Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and Kubernetes
Etsy Activity Feeds Architecture
Etsy Activity Feeds Architecture
Similar a 新浪微博Feed服务架构
MySQL设计、优化、运维
MySQL设计、优化、运维
Jinrong Ye
Mysql调优
Mysql调优
ken shin
浅谈 My sql 性能调优
浅谈 My sql 性能调优
thinkinlamp
MySQL应用优化实践
MySQL应用优化实践
mysqlops
大型网站架构的发展
大型网站架构的发展
drewz lin
大型网站架构的发展
大型网站架构的发展
Hesey
MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化
Jinrong Ye
架構設計-資料存取的選擇
架構設計-資料存取的選擇
國昭 張
分布式缓存与队列
分布式缓存与队列
XiaoJun Hong
mercury
mercury
moonbingbing
新浪微博平台与安全架构
新浪微博平台与安全架构
n716
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构
Sky Jian
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
锐 张
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
jackbillow
大众点评网的技术变迁之路
大众点评网的技术变迁之路
jeffz
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
Shanda innovation institute
java title
java title
lonegunman
构建可扩展的微博系统
构建可扩展的微博系统
lonegunman
豆瓣网技术架构变迁
豆瓣网技术架构变迁
reinhardx
A
A
lonegunman
Similar a 新浪微博Feed服务架构
(20)
MySQL设计、优化、运维
MySQL设计、优化、运维
Mysql调优
Mysql调优
浅谈 My sql 性能调优
浅谈 My sql 性能调优
MySQL应用优化实践
MySQL应用优化实践
大型网站架构的发展
大型网站架构的发展
大型网站架构的发展
大型网站架构的发展
MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化
架構設計-資料存取的選擇
架構設計-資料存取的選擇
分布式缓存与队列
分布式缓存与队列
mercury
mercury
新浪微博平台与安全架构
新浪微博平台与安全架构
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
大众点评网的技术变迁之路
大众点评网的技术变迁之路
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
java title
java title
构建可扩展的微博系统
构建可扩展的微博系统
豆瓣网技术架构变迁
豆瓣网技术架构变迁
A
A
Más de XiaoJun Hong
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
XiaoJun Hong
新浪微博redis技术演化
新浪微博redis技术演化
XiaoJun Hong
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
XiaoJun Hong
突发事件中重点信息的筛选与分类
突发事件中重点信息的筛选与分类
XiaoJun Hong
大规模数据库存储方案
大规模数据库存储方案
XiaoJun Hong
互联网系统的稳定性保证:微博的实践
互联网系统的稳定性保证:微博的实践
XiaoJun Hong
Más de XiaoJun Hong
(6)
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
新浪微博redis技术演化
新浪微博redis技术演化
Feed服务架构-新浪微博新员工培训议题
Feed服务架构-新浪微博新员工培训议题
突发事件中重点信息的筛选与分类
突发事件中重点信息的筛选与分类
大规模数据库存储方案
大规模数据库存储方案
互联网系统的稳定性保证:微博的实践
互联网系统的稳定性保证:微博的实践
新浪微博Feed服务架构
1.
新浪微博 洪小军 @XiaoJunHong 厦门爱特咖啡 新浪微博Feed服务架构
2.
新浪微博Feed服务架构 • 个人简介 • 洪小军
@XiaoJunHong • 2009年初加入飞信,互联网业务架构 • 2011年初加入新浪微博,平台架构
3.
新浪微博Feed服务架构 • 讨论范围 • 业务层面: •
内容、关系、 • 用户、计数... • 设计层面: • 缓存、数据库、 • 消息系统...
4.
新浪微博Feed服务架构 • 讨论大纲 • 设计原则 •
设计模式 • 缓存设计 • 数据库设计
5.
新浪微博Feed服务架构 • 讨论大纲 Ø 设计原则 • 设计模式 •
缓存设计 • 数据库设计
6.
新浪微博Feed服务架构 • CAP原则
7.
新浪微博Feed服务架构 • Feed设计原则 • 选择可扩展性和高可用性 •
可扩展性:支撑业务的快速增长 • 高可用性:保证系统处于稳定状态 • 妥协一致性 • 最终一致性:消息最终一致
8.
新浪微博Feed服务架构 • 演化方向 –
前期 • 快速搭建并推进上线 Mysql Web
9.
新浪微博Feed服务架构 • 演化方向 –
中期 • 可扩展性 • Scale Up:硬件升级、性能优化 • Scale Out:分布式 • 路线图 • Scale Up -> Scale Out -> Scale Up
10.
新浪微博Feed服务架构 • 演化方向 –
中后期 • 高可用性 • Failover:避免单点故障 • 快速失败策略:避免系统hang住 • 降级策略:保证核心功能可用 • 隔离性:避免依赖影响
11.
新浪微博Feed服务架构 • 讨论大纲 • 设计原则 Ø 设计模式 •
缓存设计 • 数据库设计
12.
新浪微博Feed服务架构 • 推拉模式 –
推模式 • 写入消息 insert into feeds(user_id, author_id, feed_id) select $user_id, follwer_id, $feed_id from followers • 获取消息 select * from feeds where user_id = $user_id user_id author_id feed_id 10001 20001 1111111111 10002 20001 1111111111 10003 20001 1111111111
13.
新浪微博Feed服务架构 • 推拉模式 –
推模式 • 空间换时间:存储容量瓶颈? • 粉丝越多推送量越大:姚晨5000万粉丝怎么推送 • 延迟推送?延迟是否可接受? • 变更通知成本高:加关注、取消关注、删除 Feed? • 系统复杂度变高?
14.
新浪微博Feed服务架构 • 推拉模式 –
拉模式 • 写入消息 insert into feeds(user_id, feed_id) values($user_id, $feed_id) • 获取消息 select * from feeds where user_id in ( select following_id from following) user_id feed_id 10001 1111111111 10002 222222222
15.
新浪微博Feed服务架构 • 推拉模式 –
拉模式 • 时间换空间 • 动态聚合怎么保证响应时间? • 拉取量太大,带宽容易成为瓶颈 • 并行获取?存储靠近计算?
16.
新浪微博Feed服务架构 • 推拉模式对比 推 拉 获取Feed
简单、高效 实时计算量大,与好友数量 相关 发表Feed 推送给所有粉丝 不推送 变更通知 加关注、取消关注、删除 Feed等都需要变更 不需要 好友多、粉丝少 适合 不适合 好友少、粉丝多 不适合 适合 好友多、粉丝多 ? ?
17.
新浪微博Feed服务架构 • 推拉结合? • 边界设置 •
在线状态? • 粉丝数? • ……
18.
新浪微博Feed服务架构 • 微博的实践 –
推拉结合 • 主体采用拉模式 • 存储靠近计算 • 按时间归档热数据 • 网络部署结构优化 • 并行获取 • 高效聚合算法 • …… • 部分高级功能采用推模式
19.
新浪微博Feed服务架构 • 讨论大纲 • 设计原则 •
设计模式 Ø 缓存设计 • 数据库设计
20.
新浪微博Feed服务架构 • 支撑高并发读取 • 每秒对资源百万级的请求 •
需要保证较低的响应时间 • 假设在内存基础上的架构 • memory cache • memory storage
21.
新浪微博Feed服务架构
22.
新浪微博Feed服务架构
23.
新浪微博Feed服务架构 • 集中式缓存 Mysql Web Memcached
24.
新浪微博Feed服务架构 • 问题出现 • Mysql出现性能瓶颈,读取压力过大 •
缓存命中率较低,大量穿透到后端 • 缓存容量成为瓶颈 • Memcached出现慢查询情况 • 单机吞吐量有限,读压力超过可支撑最大限度 • CPU和网络带宽成为瓶颈
25.
新浪微博Feed服务架构 • 压缩存储 • 一定程度减缓容量瓶颈问题 o Protocol
Buffer o Byte Buffer o QuickLz
26.
新浪微博Feed服务架构 • 分布式缓存 Mysql Web MemcachedMemcached ......
27.
新浪微博Feed服务架构 • 问题出现 • 数据库压力持续过大 •
某台缓存机器硬件或网络故障 • 故障期间缓存命中率持续保持在低位水平不见涨 • 单点故障
28.
新浪微博Feed服务架构 • 一致性hash
29.
新浪微博Feed服务架构 • 一致性hash –
加节点
30.
新浪微博Feed服务架构 • 一致性hash –
减节点
31.
新浪微博Feed服务架构 • 一致性hash –
虚拟节点
32.
新浪微博Feed服务架构 • 问题出现 • 数据库瞬间访问量暴增,出现雪崩现象 •
某台缓存机器硬件或网络故障 • 节点故障瞬间穿透到数据库的请求超过可支撑最大负荷 • 单点故障
33.
新浪微博Feed服务架构 • Master /
Slave 策略 Mysql Web Memcached Master Cluster Memcached Slave Cluster
34.
新浪微博Feed服务架构 • Master/Slave可用性和成本的权衡 • 同城IDC互为Master/Slave •
独立IDC Slave使用成本更低的SSD存储
35.
新浪微博Feed服务架构 • 问题出现 • 出现大量的Memcached慢查询 •
缓存服务器带宽成为瓶颈 • 读取量随着业务的发展在快速增长 • 期望有线性扩容的方案
36.
新浪微博Feed服务架构 • Line Cache
Slave node1 node2 node3 Master node1 node2 node3 Line cache node1 node2 node3 Client (get)
37.
新浪微博Feed服务架构 • 问题出现 • 出现大量的Memcached慢查询 •
缓存服务器hang住 • 所有请求延迟N秒
38.
新浪微博Feed服务架构 • 快速失败策略 • 规划资源的SLA值 •
设置合适的超时时间和合理的重试次数 • 满足不了SLA要求自动摘除以达到快速失败目的
39.
新浪微博Feed服务架构 • 打造高可用缓存 –
容量规划 • 请求量 • 命中率 • 预热、防止雪崩 • 带宽 • 网卡、交换机 • 存储容量 • 预估存储大小 • 过期策略、剔除率 • 连接数
40.
新浪微博Feed服务架构 • 打造高可用缓存 –
容量规划 • 每季度至少一次例行性评估 • 重大活动前容量评估 • 系统变更时评估容量 • 监控系统黄色预警 • 日常30%以上冗余
41.
新浪微博Feed服务架构 • 缓存设计小结 • 扩展性 •
集中式 • 分布式 • Line Cache • 可用性 • Failover:一致性hash、master/slave • 快速失败策略 • 容量规划 • 设计上核心功能只要缓存可用系统就基本可用
42.
新浪微博Feed服务架构 • 缓存设计小结 • 核心业务缓存命中率达到99.9%以上 •
核心系统可在一段时间内仅运行于缓存之上 • 容量规划尤其关键
43.
新浪微博Feed服务架构 • 讨论大纲 • 设计原则 •
设计模式 • 缓存设计 Ø 数据库设计
44.
新浪微博Feed服务架构 • 第一版本Feed快速搭建完成并上线 Mysql Web content id
long content varchar 0meline uid long id long
45.
新浪微博Feed服务架构 • 问题出现 • 读请求很慢,大量mysql慢查询和超时情况 •
前端和缓存层面也都做了扩容,但是问题依旧
46.
新浪微博Feed服务架构 • 优化sql语句 • 使用最简单的sql语句 •
避免join、子查询、游标等复杂操作 • 只返回需要的数据 • 合理的使用索引 • 减少随机读,提高性能 • 避免分布式事务 • BASE原则
47.
新浪微博Feed服务架构 • 数据库就只是作为存储 • 在数据库层面没有任何逻辑 •
业务逻辑应该在应用端处理 • 类似的sql语句 • select id from timeline where uid =? • select id,content from content where id in (?)
48.
新浪微博Feed服务架构 • 问题出现 • Mysql读写再次出现瓶颈 •
出现瓶颈时各业务互相影响
49.
新浪微博Feed服务架构 • 垂直拆分 • 按业务拆分到不同的端口和数据库中 content Web timeline
50.
新浪微博Feed服务架构 • 问题出现 • Mysql读成为瓶颈
51.
新浪微博Feed服务架构 • 读写分离 master Web slave Read Replication Write
52.
新浪微博Feed服务架构 • 问题出现 • Mysql读再次成为瓶颈
53.
新浪微博Feed服务架构 • 添加slave节点 master Web Write slave slave Replication Read
54.
新浪微博Feed服务架构 • 问题出现 • Mysql写成为瓶颈
55.
新浪微博Feed服务架构 • 水平拆分 Web master slave master slave master slave
56.
新浪微博Feed服务架构 • 水平拆分 • 分库 •
物理库和逻辑库 • 分表 • Hash分布和时间分布
57.
新浪微博Feed服务架构 • 一些注意事项 • 拆分为足够多的逻辑库 •
方便后续扩容为物理库 • 避免更改字段 • 亿级数据量的库表更改字段会是怎么样? • 节省存储空间 • 选择合适的数据类型,能选tinyint就不选int… • 合理的压缩存储,如pb替换json等
58.
新浪微博Feed服务架构 • 问题出现 • Mysql出现慢查询 •
更多是发生在查看历史发博量非常大的用户 的微博列表的时候
59.
新浪微博Feed服务架构 • 一级索引按月拆分 • 增加二级索引表 0meline
uid long id long 0meline_si uid long stat_date date count int
60.
新浪微博Feed服务架构 • 一级索引按月拆分 • 通过二级索引获取对应月份
• 通过一级索引获取具体数据 0meline_si uid stat_date count 100001 2013-‐08-‐01 2 100001 2013-‐07-‐01 2 100001 2013-‐06-‐01 1 …… …… …… 0meline_1308 uid id 100001 555555 100001 444444 …… …… 0meline_1307 uid id 100001 333333 100001 222222 …… …… 0meline_1306 uid id 100001 111111 …… ……
61.
新浪微博Feed服务架构 • Sharding小结 • 垂直拆分
• 实现简单 • 扩展能力有限,并且强关联的业务不容易再细拆 • 读写分离 • 主要缓解读压力,读节点可扩展 • 存在主从同步问题,最终体现在一致性问题上 • 水平拆分 • 扩展性强,但是需要预先规划好分库分表策略 • 实现相对比较复杂
62.
新浪微博Feed服务架构 • 问题出现 • 为了抗更大的读写压力,采用更多更好的设备 (ssd等),但是每次扩容都需要扩容整个数 据库(包括所有历史数据),服务器成本非常 高
63.
新浪微博Feed服务架构 • 按年归档-冷热数据分离 Web 2012年 master slave slave slave 2011年 master slave slave 2010年 master slave 2009年 master slave slave slave slave slave
64.
新浪微博Feed服务架构 • 数据库发展历程小结 • 扩展性:Scale
Up -‐> Scale Out -‐> Scale Up • 系统设计:简单 -‐> 复杂 -‐> 简单 – 水平扩展:垂直拆分 -‐> 读写分离 -‐> 水平拆分 -‐>冷热分离
65.
谢谢
Descargar ahora