一个架构师的缓存修炼之路
“Nginx+业务逻辑层+数据库+缓存层+消息队列,这种模型几乎能适配绝大部分的业务场景。
01 本地缓存
1. 页面级缓存
"foobar" scope="session">
some jsp content
2. 对象缓存
3. 刷新策略
2018年,我和我的小伙伴自研了配置中心,为了让客户端以最快的速度读取配置, 本地缓存使用了 Guava,整体架构如下图所示:
客户端启动定时任务,从配置中心拉取数据。 当配置中心有数据变化时,主动推送给客户端。这里我并没有使用websocket,而是使用了 RocketMQ Remoting 通讯框架。
pull 模式必不可少 增量推送大同小异
1、数据格式非常精简,只返回给前端必要的数据,部分数据通过数组的方式返回 2、使用 websocket,进入页面后推送全量数据,数据发生变化推送增量数据
[{
"playId":"2399",
"guestTeamName":"小牛",
"hostTeamName":"湖人",
"europe":"123"
}]
[["2399","小牛","湖人","123"]]
select id from blogs limit 0,10
select id from blogs where id in (noHitId1, noHitId2)
本地缓存:性能极高,for 循环即可 memcached:使用 mget 命令 Redis:若缓存对象结构简单,使用 mget 、hmget命令;若结构复杂,可以考虑使用 pipleline,lua脚本模式
选择该技术的经典书籍,理解基础概念 建立该技术的知识脉络 知行合一,在生产环境中实践或者自己造轮子 不断复盘,思考是否有更优的方案
评论