多级缓存以及热点监测
整体架构
请求先经过nignix或者gateway进行路由转发到无状态的服务器上,然后local cache, 分布式cache, db三层架构,双层缓存。
注意local cache的TTL需要大于 redis的TTL, 因为数据一致性的问题,当然这种情况不一定可以保障数据的实时一致性,但是可以保障TTL的最终一致性得到保障。
缓存查询不存在问题在多层架构下得到了放大,如何去解决这个问题?本质上还是缓存穿透问题,boomfilter
和传统分布式缓存一样还是还是采用标准的写db, 删缓存。
但是多机器之间的一致性可以利用mq模拟ringbus实现MESI协议来实现一致性的保障
利用客户端操作,以及利用etcd进行一些注册和配置中心的管理
热点key带来的影响
通过etcd推送:链路长,资源节省
通过长连接: 时间短,资源占用多
事件驱动通知:callback,让用户决定如何处理,限流还是扩容之类的,还是短时间不过期。