异步更新:消息队列
多级缓存的架构,主要是用来解决时效性不高
的数据,比如一些商品的基本信息,如果发生了变更,假设在5分钟之后再更新到页面中,供用户观察到,也是ok的;
时效性要求不高的数据,那么我们采取的是异步更新缓存
的策略;
时效性要求很高的数据,比如库存,采取的是数据库+缓存双写
的技术方案,也解决了双写的一致性
的问题
缓存数据生产服务,监听一个消息队列,然后数据源服务(商品信息管理服务)发生了数据变更之后,就将数据变更的消息推送到消息队列中
缓存数据生产服务可以去消费到这个数据变更的消息,然后根据消息的指示提取一些参数,然后调用对应的数据源服务的接口,拉去数据,这个时候一般是从mysql库中拉去的
消息队列是什么东西?采取的就是kafka
消息队列:kafka
kafka
比较简单易用,很方便,生产者+消费者的场景,kafka或者activemq都okkafka
底层基于zookeeper集群
,所以先搭建zookeeper集群,再搭建kafka集群zookeeper
后面还要通过分布式锁
解决缓存的分布式并发更新
的问题zookeeper + kafka
的集群,都是三节点
zookeeper集群搭建
- 将
zookeeper-3.4.5.tar.gz
拷贝到/usr/local目录下, - 进行解压缩:
tar -zxvf zookeeper-3.4.5.tar.gz
。 - 对zookeeper目录进行重命名:
mv zookeeper-3.4.5 zk
- 配置zookeeper相关的环境变量
vi ~/.bashrc
export ZOOKEEPER_HOME=/usr/local/zk
export PATH=$ZOOKEEPER_HOME/bin
source ~/.bashrc