分布式环境下本地缓存如何及时更新
当一个服务同时部署了多个节点,这样每个节点上都有一份本地缓存的数据
这个时候,如果某个接口发起调用,修改了数据库的数据,如何快速通知到所有节点,让服务修改自己的本地缓存
MQ消息的方式
当数据发生变更的时候,往MQ发一条消息,然后所有节点订阅这一消息,收到消息后更新本地缓存
Redis消息的方式
Redis本身也有消息发布-订阅的模式,可以利用这个机制来进行更新
自己利用Redis写一个简易的注册中心
原理大概是:
0、首先服务内部要写一个更新本地缓存的统一接口
1、每个服务定义一个key,当服务上线后主动向Redis的这个key放入自己的IP
2、服务下线时主动清理Redis中自己的IP
3、当某个接口发生数据变更后,通过获取注册中心里这个服务所有的节点IP, 然后调用相应的接口更新
利用binlog
如果使用的是mysql,那么就可以通过监听binlog,如果发生本地缓存的数据发生变更,就可以主动的调用接口进行更新