分布式缓存系统
文章平均质量分 70
DoinNN
这个作者很懒,什么都没留下…
展开
-
分布式缓存学习笔记(九)—— 缓存生存时间
只有在缓存永不超时的情况下,我们才需要在集群新增节点时进行节点再平衡。如果设置了缓存生存时间 (time to live,TTL),管理员就可以选择不进行节点再平衡,因为老节点上的缓存迟早会因为超时而被删除。本章我们就来讨论缓存生存时间的作用并实现缓存的超时功能。原创 2023-05-22 15:27:22 · 160 阅读 · 0 评论 -
分布式缓存学习笔记(八)—— 节点再平衡
上一章实现了缓存服务集群。当集群的容量逐渐不能满足系统要求时,我们需要对其扩容,扩容的方法是增加新的节点。然而新增节点一开始是空的,而老节点几乎是满的,此时我们就需要节点再平衡,将老节点上的缓存迁移一部分到新节点上。本章将讨论节点再平衡的技术细节并实现节点再平衡的功能。原创 2023-05-22 15:09:40 · 115 阅读 · 0 评论 -
分布式缓存学习笔记(七)—— 分布式缓存(一致性哈希算法)
本章我们将主要讨论分布式缓存的概念,描述缓存集群相对单节点缓存的优势以及如何实现一个缓存集群。原创 2023-05-22 12:37:12 · 1257 阅读 · 0 评论 -
分布式缓存学习笔记(六)—— 异步操作
上一章介绍了 RocksDB 的批量写入技术,以及如何将批量写入技术应用到缓存服务中。只需要改变rocksdbCache 结构体的内部实现,Set 操作就能有40%以上的写入性能提升。那“如果 RocksDB 还支持批量读取,那我们的 Get 操作性能是否也可以得到提升?” 回答是:不行。RocksDB 虽然有一个批量读取 (MultiGet)功能,但是它不能让我们的读取性能得到提升。原创 2023-05-21 08:29:35 · 790 阅读 · 0 评论 -
分布式缓存学习笔记(五)—— 批量写入
上一章介绍了利用pipelining技术在不改变任何服务端实现的情况下提升性能,这样的提升非常有限。本章将要做的是深入 RocksDB 内部,借助它的批量写入功能来给我们的缓存服务 Set 操作提速。原创 2023-05-20 23:54:10 · 383 阅读 · 0 评论 -
分布式缓存学习笔记(四)—— 用pipelining加速性能
我们会在本章介绍 pipelining 技术的原理研究客户端如何通过pipelining 技术来加速自己的吞吐量。原创 2023-05-20 23:22:30 · 71 阅读 · 0 评论 -
分布式缓存学习笔记(三)—— 数据持久化
我们的缓存是inmemory 的,这样的实现存在两个问题,首先是缓存的容量受到内存的限制,其次是一旦服务重启,之前保存的键值对就会全部丢失。这样对于客户来说很不友好,功能上来看也不完备。现在基本上所有的缓存服务都支持数据持久化,也就是说在服务器重启后,缓存的数据不会丢失。为了能做到这一点,我们在本章会用 RocksDB 来重新实现我们的缓存服务。原创 2023-05-19 11:43:15 · 293 阅读 · 1 评论 -
分布式缓存学习笔记(二)——基于TCP的内存缓存服务
受限于HTTP/REST协议的解析,基于HTTP/REST的内存内缓存服务运行的性能非常差,只有 Redis 的四分之一,而 Redis 使用的序列化协议规范正是基于 TCP 的。所以在本章,我们的目标就是要抛开 Go语言自身的HTTP框架,实现一个基于TCP的缓存服务来提升我们的性能。原创 2023-05-19 10:20:15 · 254 阅读 · 0 评论 -
分布式缓存学习笔记(一)——基于HTTP的内存缓存服务
用Go语言写基于HTTP的缓存服务太方便了,只需要一个 map来保存数据,写一个 handler 负责处理请求,然后调用 http.ListenAndServe,最后用go run 运行。一切就是这么简单,你不需要去考虑复杂的并发问题,也不需要自己设计一套网络协议,Go语言的HTTP 服务框架会帮你处理好底层的一切。本章要实现一个简单的内存缓存服务,所有的缓存数据都存储在服务器的内存中。一旦服务器重启,所有的数据都将被清零。我们利用HTTP/REST协议的等方法实现缓存的基本操作。原创 2023-05-18 17:21:47 · 171 阅读 · 0 评论