1.首页为什么用nginx部署?
- 首页的并发量高,且有些许的变动
- tomcat部署可能不是一个很好地选择
- 所以使用nginx+lua+redis进行预热缓存
2.实现步骤(首页广告)
- 后台数据通过后台管理系统对mysql中的首页内容(广告等)进行维护。
- 定义广告内容,表中设计了 position 位置字段 ,标识广告图片的显示位置。
- 将首页页面部署到nginx中。
- 通过lua脚本对广告指定位置数据进行
一级缓存
,lua脚本会根据位置信息到mysql中查询到数据并放入redis。 - 在通过lua脚本读取到广告数据,先去nginx本地缓存中查(
二级缓存
),没有的话再去redis中查询,将查到的信息放入本地缓存10分钟。 - 页面通过Vue钩子函数ajax请求 调用读取广告的lua脚本展示数据。
3.数据库改变,如何保证实时预热操作?
- 技术:canal,rabbitMQ
- 步骤:
- 安装canal,进行配置
- 配置mq,监听广告表
- 拿到改变后的数据,取position的值通过对应mq发送消息
- business模块监听这个消息队列,拿到position的值,通过restTemplate发送请求,调用lua脚本进行预热缓存
- 具体操作:和day06差不多