没有合适的资源?快使用搜索试试~ 我知道了~
首页拉模式设计:信息流系统中的高效解决方案
拉模式设计:信息流系统中的高效解决方案
需积分: 0 0 下载量 65 浏览量
更新于2024-08-05
收藏 406KB PDF 举报
在本篇关于信息流设计的文章中,主要讨论的是如何在拉模式下构建一个通用的信息流系统。拉模式与传统的推模式相比,提供了一种更为高效和可扩展的解决方案。在推模式中,信息流是基于用户订阅(粉丝收件箱)来生成的,这可能导致延迟、存储成本高以及扩展性差的问题,特别是对于拥有大量粉丝的大V用户。 拉模式的核心理念是用户主动获取他们关注的人的最新信息,而不是等待信息被推送。在拉模式下,系统仅需保存用户的发件箱,即用户关注的其他用户的动态数据。当用户A想要查看信息流时,会直接查询所有关注者的发件箱并聚合数据,从而生成个性化的内容。这种模式显著减少了存储负担,因为只需保存每个用户的发件箱内容,而不是每一条推送记录的大量副本。例如,谢娜在推模式下的1.2亿粉丝意味着她每发布一条微博都需要复制多份,而在拉模式下,只需存储她自己的发件箱。 此外,拉模式提高了功能扩展性。当平台需要添加新功能,比如用户分组,只需要针对特定组别查询其成员的发件箱,而不是对整个用户群进行更新。这样使得系统更易于管理和维护,尤其在处理复杂的数据组织时,比如用户兴趣小组或专题讨论组的动态信息流。 总结起来,拉模式通过改变信息获取方式,消除了推送延迟,降低了存储成本,提升了系统的可扩展性和灵活性。这对于处理大规模用户信息流系统,尤其是对大V用户的需求,是一个理想的解决方案。通过采用拉模式,信息流服务能够更好地满足用户需求,同时保持良好的性能和效率。
资源详情
资源推荐
40-信息流设计(⼆):通⽤信息流系统的拉模式要如何做?40-信息流设计(⼆):通⽤信息流系统的拉模式要如何做?
你好,我是唐扬。
在前⼀节课中,我带你了解了如何⽤推模式来实现信息流系统,从中你应该了解到了推模式存在的问题,⽐
如它在⾯对需要⽀撑很⼤粉丝数量的场景时,会出现消息推送延迟、存储成本⾼、⽅案可扩展性差等问题。
虽然我们也会有⼀些应对的措施,⽐如说选择插⼊性能更⾼的数据库存储引擎来提升数据写⼊速度,降低数
据推送延迟;定期删除冷数据以减⼩存储成本等等,但是由于微博⼤V⽤⼾粉丝量巨⼤,如果我们使⽤推模
式实现信息流系统,那么只能缓解这些⽤⼾的微博推送延迟问题,没有办法彻底解决。
这个时候你可能会问了:那么有没有⼀种⽅案可以⼀劳永逸地解决这个问题呢?当然有了,你不妨试试⽤拉
模式来实现微博信息流系统。那么具体要怎么做呢?
如何使⽤拉模式设计信息流系统如何使⽤拉模式设计信息流系统
所谓拉模式,就是指⽤⼾主动拉取他关注的所有⼈的微博,将这些微博按照发布时间的倒序进⾏排序和聚合
之后,⽣成信息流数据的⽅法。
按照这个思路实现微博信息流系统的时候你会发现:⽤⼾的收件箱不再有⽤,因为信息流数据不再出⾃收件
箱,⽽是出⾃发件箱。发件箱⾥是⽤⼾关注的所有⼈数据的聚合。因此⽤⼾在发微博的时候就只需要写⼊⾃
⼰的发件箱,⽽不再需要推送给粉丝的收件箱了,这样在获取信息流的时候,就要查询发件箱的数据了。
这个逻辑我还⽤SQL的形式直观地表达出来,⽅便你理解。假设⽤⼾A关注了⽤⼾B、C、D,那么当⽤⼾B发
送⼀条微博的时候,他会执⾏这样的操作:
当⽤⼾A想要获取他的信息流的时候,就要聚合B、C、D三个⽤⼾收件箱的内容了:
你看,拉模式的实现思想并不复杂,并且相⽐推模式来说,它有⼏点明显的优势。你看,拉模式的实现思想并不复杂,并且相⽐推模式来说,它有⼏点明显的优势。
⾸先,拉模式彻底解决了推送延迟的问题,⼤V发微博的时候不再需要推送到粉丝的收件箱,⾃然就不存在
延迟的问题了。
其次,存储成本⼤⼤降低了。在推模式下,谢娜的粉丝有1.2亿,那么谢娜发送⼀条微博就要被复制1.2亿
条,写⼊到存储系统中。在拉模式下只保留了发件箱,微博数据不再需要复制,成本也就随之降低了。
最后,功能扩展性更好了。⽐如,微博增加了分组的功能,⽽你想把关注的A和B分成⼀个单独的组,那么A
和B发布的微博就形成了⼀个新的信息流,这个信息流要如何实现呢?很简单,你只需要查询这个分组下所
有⽤⼾(也就是A和B),然后查询这些⽤⼾的发件箱,再把发件箱中的数据,按照时间倒序重新排序聚合
insertintooutbox(userId,feedId,create_time)values("B",$feedId,$current_time);//写⼊B的发件箱
selectfeedIdfromoutboxwhereuserIdin(selectuserIdfromfollowerwherefanId="A")orderbycreate_timedesc
下载后可阅读完整内容,剩余5页未读,立即下载
KateZeng
- 粉丝: 24
- 资源: 330
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 十种常见电感线圈电感量计算公式详解
- 军用车辆:CAN总线的集成与优势
- CAN总线在汽车智能换档系统中的作用与实现
- CAN总线数据超载问题及解决策略
- 汽车车身系统CAN总线设计与应用
- SAP企业需求深度剖析:财务会计与供应链的关键流程与改进策略
- CAN总线在发动机电控系统中的通信设计实践
- Spring与iBATIS整合:快速开发与比较分析
- CAN总线驱动的整车管理系统硬件设计详解
- CAN总线通讯智能节点设计与实现
- DSP实现电动汽车CAN总线通讯技术
- CAN协议网关设计:自动位速率检测与互连
- Xcode免证书调试iPad程序开发指南
- 分布式数据库查询优化算法探讨
- Win7安装VC++6.0完全指南:解决兼容性与Office冲突
- MFC实现学生信息管理系统:登录与数据库操作
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功