[GoCache] 前言

4 篇文章 0 订阅
3 篇文章 0 订阅

写在前面

这个项目是跟着博主geektutu的7Days系列做的分布式缓存服务。
在此记录一些实现项目过程中的学习收获与思考。

什么是分布式缓存?

分布式缓存 是指将应用系统和缓存组件进行分离的缓存机制。
与其相对的是本地缓存。

本地缓存 是指应用系统中的缓存组件。
其最大的优点是应用和cache是在同一个进程内部,请求缓存非常快速,没有过多的网络开销等,在单应用不需要集群支持的场景下使用本地缓存较合适;但是,它的缺点也是应为缓存跟应用程序耦合,多个应用程序无法共享缓存数据,各应用或集群的各节点都需要维护自己的单独缓存。

分布式缓存的优势和特性有哪些?
  • 共享缓存数据:缓存服务和应用程序是隔离开的,多个应用系统之间可以直接共享缓存数据。
  • 高性能:磁盘I/O速度非常慢,面对高并发高可用的场景往往成为性能瓶颈,缓存将高速内存作为存储介质,数据以key-value形式存储,访问速度非常快。
  • 动态扩展性:可以动态增加或减少节点应对变化的数据访问负载,可拓展性强,并最大程度提高资源利用率。
为什么要使用分布式缓存?
  • 读取速度得到提升。
  • 系统扩展能力得到大幅增强。我们可以通过加缓存,来让系统的承载能力提升。
  • 总成本下降,单台缓存即可承担原来的多台DB的请求量,大大节省了机器成本。
项目背景

设计一个分布式缓存系统,需要考虑资源控制、淘汰策略、并发、分布式节点通信等各个方面的问题。而且,针对不同的应用场景,还需要在不同的特性之间权衡,例如,是否需要支持缓存更新?还是假定缓存在淘汰之前是不允许改变的?不同的权衡对应着不同的实现。

GoCache 基本上模仿了 groupcache 的实现,总体实现上,还是 groupcache 非常接近的。支持特性有:

  • 单机缓存和基于 HTTP 的分布式缓存
  • 最近最少访问(Least Recently Used, LRU)缓存策略
  • 使用 Go 锁机制防止缓存击穿
  • 使用一致性哈希选择节点,实现负载均衡
  • 使用 protobuf 优化节点间二进制通信
  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值