承载高并发的缓存技术究竟是什么?
作者 | 金鹏,单位:中国移动智慧家庭运营中心
Labs 导读
缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。那么缓存的运行逻辑是什么,以及缓存有哪些方案,将是本文的介绍重点。
缓存(Cache)是将目标数据存储到一个具备高度可访问性的高速运行层的技术。它旨在快速读取使用率较高的、不经常更新的数据,避免在存取之前的请求重复访问源数据层,产生额外的I/O资源消耗,继而提升业务的并发度。为了提升数据访问的运行速率,缓存数据也要权衡资源容量、数据刷新频率设置过期时间或设置合理的缓存淘汰策略。主流的缓存方案有CDN缓存、浏览器缓存、本地缓存、外部缓存等。
Part 01 CDN缓存
CDN指的是内容分发网络,将资源缓存在CDN节点上,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近去CDN缓存节点上获取内容,降低网络延迟,提高访问速度。运用到此项缓存技术的业务场景有:前端项目中的HTML、CSS、JS等静态文件、物联网中下载固件包、异地多活架构中的资源请求等等。将这些文件部署或缓存在CDN节点上,提升资源访问速度的同时又保证资源访问的稳定性。
Part 02 浏览器缓存
浏览器缓存是指浏览器与后端服务器通过HTTP协议下的请求-响应模式来通信时,第一次向服务器发送请求并拿到结果后,会根据响应报文中的缓存规则来实现缓存。比如HTTP/1.1协议下会根据Cache-Control实现强制缓存规则;会在强制缓存失效下根据请求中的缓存标识决定缓存规则。浏览器会话持也是一种缓存实现,目前主流的技术方案有Cookie机制、Session机制、Token机制等。
Part 03 本地缓存
本地缓存是指将响应数据缓存在服务器的应用进程内存空间里,减少查询持久化层的I/O消耗。优点是数据不需要跨网络传输,读取性能更好,支持的QPS更高;缺点是会占用应用进程的内存空间,故不能进行大数据量的数据存储,而且当所在的应用进程重启时,本地缓存的数据会丢失。在Andlink云平台项目中落地的本地缓存解决方案Caffeine,它的依赖包如下:
Part 04 外部缓存或分布式缓存
与本地缓存相对应的就是外部缓存或分布式缓存,它独立于应用进程部署,并可以设计成集群模式来保证数据读写分离、高性能、高可用。Andlink云平台项目中落地的分布式缓存是基于Spring Boot Cache框架整合Redis集群的方案,该方案可以很好的解决数据丢失、业务并发能力、故障恢复和动态存储扩容等常见业务痛点。结合业务的需求Redis提供了比较全的应对方案,比如单机模式、主从模式、集群模式或哨兵模式,其中哨兵模式可以实现健康检测和自动恢复,是保障高并发业务稳定运作的首选模式。方案的依赖包如下:
当然,主流的缓存技术方案有很多,但总的方向是为了减少底层性能开销、提高业务的高并发能力。目前Andlink云平台支撑着亿级的用户量和千万级的设备请求等,缓存技术在其中扮演着举足轻重的角色。
相关文章
- Jease 2.6发布 Java开源内容框架
- JVM调优总结:反思
- JVM调优总结:调优方法
- JVM调优总结:新一代的垃圾回收算法
- JVM调优总结:典型配置举例
- JVM调优总结:分代垃圾回收详述
- JVM调优总结:垃圾回收面临的问题
- JVM调优总结:基本垃圾回收算法
- JVM调优总结:一些概念
- 用Java GUI编写的画板程序
- Java的动态绑定机制
- jOOQ 2.0.2发布 Java的ORM框架
- Java中带复选框的树的实现和应用
- Java网络编程菜鸟进阶:TCP和套接字入门
- 甲骨文与谷歌专利权之争定于今年三月开审
- Java调用C/C++编写的第三方dll动态链接库
- 集成开发环境 NetBeans IDE 7.1正式版发布
- kangle 2.7.5紧急发布 防hash碰撞攻击
- 东方通技术引领模式为国产软件“争权”
- UML中关联,组合与聚合等关系的辨析