一个记录听课时长的接口,目前每个用户每分钟访问一次,统计了下每天访问量很大,虽然没有到达瓶颈,想着如何优化下。 可以允许一分钟内的不实时,一天一百万不到的请求,但是有些逻辑。 1 、任务寸数据库,定时器抓任务处理。 2 、使用消息队列,拉模式。
1
awalkingman 2022-02-16 19:21:34 +08:00
每次用户请求先记录到 redis ,另起一个定时任务异步批量落库。
|
2
p2pCoder 2022-02-16 19:29:41 +08:00
每一个用户的一次观看的一分钟请求来了之后,更新对应 count ,以及时间戳写入到 kv 数据库,同时发送一个延时队列消息,一定时间后触发,如果延时消息到达后,当前 kv 里面的时间戳和当前时间戳大于一定阈值,就删除对应的 kv 里面的信息,写入到 rdms
查询的时候,就查询用此次观看的 id 先去查 kv ,查不到再查询数据库 如果要想实现总听课时长的话,可以把上面的逻辑设计为两份,然后在相加,在重新设计下缓存 |
3
LLaMA2 2022-02-17 09:33:53 +08:00
我又想到了如何作弊了,哈哈哈
|
4
Kinnice 2022-02-17 10:07:20 +08:00 via Android
ws 连接,记录开始时间和 ws 断开时间。
|