一、计数服务
计数服务是针对某个动作在不同维度行为次数的统计或者累加,计数服务需要满足计数的准确性,并且在满足准确性的同时,要注意其性能。
二、计数服务的实现
计数服务分为 非精准计数和精准计数
- 非精准计数:点赞量、浏览量
- 精准计数:我收藏的、我购买的、我发布的
针对不同要求的业务场景,计数服务需要采取不同的方式实现
1. 精准计数
- 查询 —— 读缓存
- 修改 —— 先写数据库,然后删缓存
2. 模糊计数
读写都以 Cache 为主,批量更新数据库
批量更新操作:
(1)异步线程 —— 异步线程定时将 Redis 中数据更新到数据库
(2)缓冲池 —— 设置一个缓冲池,缓冲池满,写入数据库中
这样就算是丢失,也只是丢失一段时间的数据或者是buffer大小的数据,不会造成多大影响。
三、高可用设计
模糊查询 : 写请求高并发
精准查询 : 读多写少
DB 层 —— 数据库读写分离,防止流量暴增
Cache 层 —— 高可用设计,Redis 集群