# Go项目推荐:分布式缓存

分布式缓存(Go)这个项目在 23年就在星球里发布了。

如今,对这个项目做了第二版优化。

对代码讲解,面试问题,和简历写法,都做了补充和完善。

本项目今天在知识星球里正式发布:

image

# 什么是缓存

缓存是将高频访问的数据暂存到内存中,是加速数据访问的存储,降低延迟,提高吞吐率的利器。

# 为什么要实现缓存系统

因缓存的使用相关需求,通过牺牲一部分服务器内存,减少对磁盘或者数据库资源进行直接读写,可换取更快响应速度。

尤其是处理高并发的场景,负责存储经常访问的数据,通过设计合理的缓存机制提高资源的访问效率。

由于服务器的内存是有限的,我们不能把所有数据都存放在内存中,因此需要一种机制来决定当使用内存超过一定标准时,应该删除哪些数据,这就涉及到缓存淘汰策略的选择。

# 在什么地方加缓存

距离用户越近,缓存能够发挥的效果越好。

缓存的顺序:用户请求->HTTP缓存->CDN缓存->代理服务器缓存->进程内缓存->分布式缓存->数据库

根据 缓存的存储方式 和 应用的耦合度,缓存可以分为 本地缓存(Local Cache) 和 分布式缓存(Distributed Cache)。

本地缓存更注重 访问速度,而分布式缓存则关注 数据一致性和扩展性。

# 分布式缓存(Distributed Cache)

分布式缓存是一种 独立部署的缓存服务,与应用进程分离,多个应用实例共享同一份缓存数据,典型实现包括 Redis、Memcached、etcd。

优势

1、支持大规模存储:

  • 缓存数据分布在多个服务器上,不受单机内存限制,可扩展存储空间。
  • 例如:Redis Cluster 支持横向扩展,通过分片技术存储 TB 级数据。

2、数据一致性更高:

  • 由于所有应用节点共享同一份缓存数据,不同服务器间的缓存一致性更容易保证。
  • 例如:所有服务器都访问 Redis,数据变更时只需更新 Redis 即可同步到所有应用实例。

3、高可用性:

  • Redis Sentinel 或 主从复制 方案可提供 缓存高可用性,即使某个缓存节点宕机,仍可快速切换到备用节点,避免单点故障。
  • 持久化机制(AOF/RDB) 使 Redis 在服务器重启后仍能恢复数据,保证缓存数据不会丢失。

4、适用于分布式系统:

  • 现代应用通常采用 多实例部署(如 Kubernetes 微服务架构),本地缓存难以满足数据共享需求,而 分布式缓存天然适用于多实例环境。

# 项目专栏精讲

项目代码开源在Github上:https://github.com/youngyangyang04/KamaCache-Go

image

欢迎star、fork

该项目的专栏是知识星球录友专享的。

项目专栏依然是将 「简历写法」给大家列出来了,大家学完就可以参考这个来写简历:

image

做完该项目,面试中大概率会有哪些面试问题,以及如何回答,也列出好了:

image

专栏中的项目面试题都掌握的话,这个项目在面试中基本没问题。

项目架构:

image

本项目主要模块:缓存组、缓存淘汰与实现、缓存并发、分布式算法之一致性哈希、缓存对外服务化 都做了详细的讲解:

image

image

image

image

# 获取本项目专栏

本文档仅为星球内部专享,大家可以加入知识星球里获取,在星球置顶一:

加入星球后可以获取全部项目文档和八股资料!。

这里给出10元代金券,领代金券加入,代码随想录知识星球支持三天内(72h)可以全额退款。

加入知识星球后,记得加如下微信,发动付款截图,拉你到星球交流群:

@2021-2024 代码随想录 版权所有 粤ICP备19156078号