当服务使用关系型数据库已经达到性能瓶颈的时候我们应该怎么办,数据库已经分片了,也分库分表了,索引什么也都极致了(一般不可能)但是还是扛不住高流量。有点经验的同学都会说:“加缓存,上redis or 直接应用内存(缓存)“。
redis ,guava cache , canal mysql kafka 。
后台更新table a 表,更新后canal监听binlog 通过队列消息推送给应用端,应用端拿到消息后 刷新redis ,
且同时再发送消息给一个内存队列(异步防止这个流程太长),且同时存储内存的时候,将key 存入tableB 中(后续进行对数,防止数据不一致的问题)
分页拉去数据库数据,更新进内存和缓存中去。
https://time.geekbang.org/column/article/150881
https://time.geekbang.org/column/article/8640