dedicated cache与colocated cache的区别是什么?colocated cache如何工作?
缓存部署形态相关问题解答
术语定义说明
你提到的两类缓存的定义是行业普遍认可的通用分类,不属于标准化机构发布的强制规范,但业界实践中基本都遵循这个划分逻辑:
- 专用缓存(dedicated cache):独立部署在专属服务器/集群上,和业务服务的运行资源完全隔离,缓存进程只处理缓存读写、过期、持久化等缓存专属逻辑,不承载任何业务代码,我们常用的独立部署Redis、Memcached集群都属于这类。
- 同置缓存(colocated cache):和业务服务进程部署在同一台物理机/虚拟机中,共享主机的CPU、内存、网络资源,常见的实现包括嵌入业务进程的内存缓存、和业务服务同节点部署的独立缓存进程两种。
这类术语属于架构部署层面的实践分类,不是特定技术产品,所以公开的专属词条资料较少,一般只会在架构实战分享、技术方案设计类内容中提到。
同置缓存的访问逻辑
同置缓存的访问规则没有强制要求,业内常见两种使用模式:
- 本地独占模式:业务服务只会读写当前主机上的同置缓存,不会跨节点查询缓存数据,也不会做跨节点的数据同步,适合存储对一致性要求不高、允许不同节点缓存数据存在差异的热点数据,比如静态页面片段、非实时的统计指标、通用业务配置等。这种模式完全没有跨网络开销,缺点是缓存总容量受单节点内存上限限制,相同热点数据会在多个节点重复存储,内存利用率较低。
- 分布式集群模式:所有节点上的同置缓存会组成统一的分布式缓存集群,按照分片规则划分数据存储范围,业务服务请求时会先计算分片对应的节点,可能访问本地缓存也可能跨节点访问其他主机上的缓存。这种模式的缓存总容量是所有节点缓存内存之和,扩展性更强,只是跨节点查询时会产生一次内网网络开销。
缓存亲和性路由的可行性
你提到的路由方案完全可落地,是业内非常成熟的同置缓存优化手段,一般称为缓存亲和性路由:
具体实现逻辑是在入口网关层按照请求携带的分片键(比如用户ID、商品ID、地域标识等)做哈希路由,把请求直接转发到对应缓存分片所在的业务节点,业务节点直接读取本地的同置缓存即可获取数据,完全不需要跨节点调用缓存,也不需要额外的独立缓存集群,能够大幅降低请求链路的延迟。
使用该方案需要注意两个常见问题:一是业务节点扩缩容时要配套做缓存数据的平滑迁移,避免大量缓存击穿影响业务;二是要提前做好热点分片的流量规避策略,避免单个节点承载的流量过高导致服务不可用。
内容的提问来源于stack exchange,提问作者Dipen
相关产品推荐
相关产品推荐

