写扩散
用户发消息,气球池,泡泡池等消息池同步写入消息
气球查询走气球池,泡泡查询走泡泡池
相当于数据写入时维护更多的数据池更新多数据源
优点:
- 数据查询简单,主要是写入维护控制逻辑
- 不同的数据池独立可支持定制化查询,推送功能
- 原消息池数据丢失不影响子池数据,气球和泡泡可正常匹配
缺点:
- 空间换时间,浪费存储空间
- 数据实时性差
- 写扩散需要mq等中间件,或者双写引入分布式事务等提高架构复杂度
写扩散适用于写少读多的场景
微信的群聊是写扩散;
读扩散
用户发消息,所有消息存放在同一个池子
查询需要的数据根据条件筛选获取
相当于写入时简单,查询时需要关联表,或者内存排序过滤
优点:
- 数据实时性高
- 读少写多节省存储成本
- 不需要引入其他中间件
缺点:
- 读数据存在热点问题
- 数据读取量大存在慢查询
读扩散适用于写多读少的场景
系统消息通知是读扩散,广播消息,所有人读取符合条件的消息,如注册之后的消息;
本文探讨了两种数据处理策略——写扩散和读扩散。写扩散将数据分散到多个池中,提升查询效率,但可能导致存储空间浪费和实时性下降。而读扩散则在写入简化的同时,可能引发读取热点和慢查询问题。微信的群聊采用写扩散,系统消息通知则使用读扩散。选择策略需根据应用场景的写读比例来决定。
4132

被折叠的 条评论
为什么被折叠?



