bk-iam-saas icon indicating copy to clipboard operation
bk-iam-saas copied to clipboard

[Backend] 数据库与缓存的数据一致性优化

Open wklken opened this issue 3 years ago • 11 comments

  1. 更新db, 成功
  2. 删除缓存, 失败

此时需要有机制, 能够使得删除缓存成功, 例如消息队列, 重试等等

wklken avatar Dec 22 '21 12:12 wklken

  1. retry
  2. log
  3. 告警sentry

wklken avatar Dec 24 '21 08:12 wklken

retry libs:

  • https://github.com/avast/retry-go

wklken avatar Dec 24 '21 08:12 wklken

github.com/go-redis/redis/v8/options.go 默认支持retry, 但是我们目前没有一个机制, 应对进程被杀等场景的缓存清理

wklken avatar Dec 24 '21 08:12 wklken

需要考虑下如何处理

wklken avatar Dec 27 '21 02:12 wklken

问题: 是否引入队列机制

wklken avatar Feb 09 '22 06:02 wklken

通过队列, 进行补偿

wklken avatar Feb 16 '22 06:02 wklken

cache aside pattern, 补偿时, 整体执行必须足够快

wklken avatar Feb 28 '22 01:02 wklken

新版带了 MQ, 可以基于这个处理

wklken avatar Aug 08 '22 03:08 wklken

删cache -> 自带重试三次 -> 如果还是失败 -> 放入队列

问题: 队列虽然用的是另一个redis, 但是也是有失败的可能的; 如何处理

wklken avatar Aug 08 '22 12:08 wklken

删缓存的一致性机制上线后, 后台cache时间才能拉长

wklken avatar Nov 18 '22 07:11 wklken

https://github.com/TencentBlueKing/bk-iam-saas/issues/1559

整体review下, 看看有没有合适的方式

zhu327 avatar Feb 02 '23 11:02 zhu327