暂无个人介绍
2022年05月
发起请求-->浏览器/客户端缓存-->边缘缓存/CDN-->反向代理(Nginx)缓存-->远程缓存-->进程内缓存-->数据库缓存。
业务时效性要求 ;缓存粒度设计;缓存淘汰策略;缓存部署方式;Key路由策略。
1)提升缓存命中率 2)序列化方式 3)GC影响 4)缓存协议 5)缓存连接池 6)完善的监控平台。
1)读请求长时间阻塞 2)多个队列分散压力 3)操作复杂需要考虑全面。
可以根据数据项通过hash等路由方式,创建多个队列并行执行来提升系统吞吐量。
采用队列的方式。
队列异步操作同步化。
消费消息异步删除缓存以及订阅Binlog的方式。
因为缓存操作失败,导致的数据不一致称之为”物理失败“。
将异步操作进行串行化。
异步读写请求在并发情况下的操作时序导致的数据不一致,称之为”逻辑失败“。
可以选择write behind cache pattern的方式,只需要更新缓存即可,能够快速的响应。
缺点是很容易造成数据不一致,数据库中的数据不一定的就是最可信的数据。
缓存的存在是为了系统高性能,利用内存的IO读取的高速的特性,来提升系统的性能,提高系统吞吐量,另外,缓存的存在会让一部分读请求不会到达db层,分解了db的压力。
分别是更新缓存数据以及失效数据让下一次读请求重新从db中获取数据后重载入缓存中。
失效:应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放到缓存中。命中:应用程序从cache中取数据,取到后返回。更新:先把数据存到数据库中,成功后,再让缓存失效。
规避数据库的并发操作。
热点key的失效,导致某一时刻大量请求会直接到db层。