对二级缓存的研究

目录

1、二级缓存业务流程

2、二级缓存面临的问题

3、如何解决这些问题?


1、二级缓存业务流程

一般我们不使用进程缓存,原因如下:
1、进程缓存会导致应用服务成为有状态的服务,这与当前主流,面向无状态的服务设计理念相违背
2、我们的应用程序一般是集群部署,一个应用程序会部署多个实例,如何保证分布式缓存与进程缓存一致性是一个比较复杂的问题
3、一般的应用场景,分布式缓存已经够用,无须再引入进程缓存

但是,在一些特殊的业务场景下,我们还是需要使用进程缓存的
1、如果是一些配置数据、只读数据,这些数据一旦加载到缓存中,就不再进行更新,就不需要关注数据一致的问题
2、在一些极端高并发的业务场景,后台接口负载特别高,可以使用进程缓存,但是要注意,进程缓存与分布式缓存的数据一致性问题,从内存中读取数据的速度
大概是分布式缓存的100倍,具体参考我的另一篇文档:如何量化分布式系统高性能指标?
     
3、有些业务场景对数据一致性要求不高,不要求实时的一致性,业务上允许一定时间范围内的不一致

2、二级缓存面临的问题

         当客户端向后台服务发送一个缓存数据更新的请求的时候,一般会更新该应用实例的缓存与数据库,但是同一个集群中的其他实例无法得到通用,此时缓存的数据是脏数据,这是多级缓存精典的数据不
一致问题。

3、如何解决这些问题?

      为了解决这个问题,我们对业务流程进行稍微调整,以达到数据一致性。当客户端向服务端发送数据修改请求,应用实例向MQ发送一条数据变更消息,集群中所有的实例会订阅这个消息,然后,直接将进程
缓存删除即可,等待下次查询请求的到来,即可再次加载最新的数据。

猜你喜欢

转载自blog.csdn.net/s2008100262/article/details/112857378