软件设计套路之推拉模式

推、拉是两种常见的数据分发模式。以微博为例:

  • 推:发微博时,遍历所有关注者,写入数据到对应的关注者数据表里。好处是,读取时直接读取数据库即可,即用写入时间换取读取时间。坏处是:
    • 如果微博发生变化,例如被删除,则需要再次进行处理
    • 如果关注者量非常大,写入非常耗时,非常的消耗存储
  • 拉:用户开始刷微博时,从所有关注的人的时间线里,把距离上次看到的微博全部加载出来,这种模式的好处与坏处则推相反。
  • 混合模式,使用一定的策略,混合上述两种模式。

使用这两种模式以及混合模式的系统还有:

  • 朋友圈
  • Linux网络收包时,可以由系统定时去polling,也可以由网卡发中断信号通知内核(前者的坏处是流量负载低时延迟大数据无法近实时被处理,后者的坏处是当流量负载高时,内核会被频繁中断)
  • 当推送系统涉及到写入群公告信息时
  • 订阅中心等诸如此类的应用

更多文章
  • Golang(Go语言)中实现典型的fork调用
  • 软件开发之禅---大事化小,各个击破
  • 程序员的自我修养:链接,装载与库 阅读笔记
  • Redis源码阅读与分析二:双链表
  • Redis源码阅读与分析三:哈希表
  • Redis源码阅读与分析一:sds
  • Golang runtime 源码阅读与分析
  • Golang的一些坑
  • GC 垃圾回收
  • 设计一个路由
  • Go语言性能优化实战
  • 那些年开发的时候踩过的坑
  • (关系型)数据库优化总结
  • 动态规划民科教程
  • Golang 分布式异步任务队列 Machinery 教程