- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内存作为统一存储实践——尹伟铭:豆瓣资深研发工程师_IT168文库
内存作为统一存储实践
@尹伟铭
案例:微博系统
● 拉模式的user_timeline
● 查询出关注的人的列表
SELECT id FROM following WHERE follower_id=$UID
● 根据关注的人查询出微博列表
SELECT * FROM weibo WHERE user_id IN $FOLLOWING_LIST
ORDER BY created_at LIMIT 0, 20;
案例:数据更新
● 关注很多人
● 每个被关注的人说话都会引起数据更新
● 收听的队列总是无法稳定
案例:微博系统
● 推模式的user_timeline
● 查询出关注的人的列表
SELECT id FROM following WHERE follower_id=$UID
● 根据关注的人更新收听微博列表
INSERT INTO liestening (user_id, follower_id,
weibo_id, created_at) VALUE($UID, $FOLLOWER_ID,
$WEIBO_ID, $CREATED_AT)
案例:数据更新
● 大V
● 每句话都会引起千万级的数据队列更新
● 更新延时容易导致时序问题
利用缓存
● 如何缓存
● 存储关注的人列表?
● 存储user_timeline ?
利用缓存
● 遇到数据更新
● 数据频繁更新
● 缓存命中率极低
缓存的特点
● 高速交换数据
● 只存储少部分数据
● 数据更新往往采取废弃重读方式
● 随机IO
案例:解决办法
● 存储业务结构在内存中
● uid - [weibo, weibo, ]
● 数据更新
● 寻找需要更新的用户列表
● uid - [$NEW_WEIBO, weibo, weibo, ...]
存储的特点
● 长期的持续化存储
● 数据有具体的更新方式
● 存储结构化数据,如RDBMS
● 连续IO
使用内存
● 速度对比
CPU 1
内存 10
硬盘 1,000
使用内存的优点
● 随机访问速度快
● 扩展方便
● 灵活的数据模型
使用内存的限制
● 空间小
● 无法存储全部数据
● 宕机数据丢失
● 运维难度增加
使用内存作为存储
● 命中率
● 非命中情况要构建完整的业务相关数据结构
● 数据填充
● 避免雪崩
内存数据的更新
● 构建业务相关的数据结构
● 减少对象关系映射
● 在内存中直接进行数据操作
构建二级存储
● 哪些放入内存
● 热数据监控
● 区分缓存和存储
● 应用程序
● 构建内存存储数据结构
文档评论(0)