公司缓存设计:
1....数据要求有一定的实时性,故加了一组消息队列,在其他业务对数据产生变更时,发送mq消息,展示端门户收到mq消息后,主动刷新
第一次产生问题:
经常有一些缓存的时间存活很长,或者当缓存失效后,直接查询数据库...把mq产生的消息放到了变更的事务之外,同时门户在收到消息后加了20秒的等待时间,到期后刷新缓存
第三次问题:
数据库有更新语句造成数据库报警,但是查询后发现更新频率并不高,同时问题出现在缓存刷新的地方...解决方案:
第二次将缓存提出来放到了事务之外,但是当某一次事务提交后,产线消息,在消费消息刷新缓存时,有一个更新操作,更新操作和之前的事务操作的是同一张表,造成表锁,等待时长过长,造成报错
具体的业务场景...:
某一种杂志的网络版整期发布,一个整期中包含多个文章,整期发布除了变更整期的状态,还行处理整期下的文章状态,同时门户的缓存主要针对的是文章,即整期发布后刷新门户的文章缓存
整期发布时一个比较大的事务,