Go语言
文章平均质量分 61
St4fen.
这个作者很懒,什么都没留下…
展开
-
[GoCache] 缓存击穿
当并发地向同一个节点发起`N`个请求时,如果对数据库的访问没有做任何限制,很可能向数据库也会发起`N`次请求,容易造成缓存击穿和穿透。即使对数据库做了防护,`HTTP`请求也是十分消耗资源的操作,针对相同的`key`,向同一个节点发起多次请求是完全没有必要的。原创 2024-06-03 21:46:07 · 239 阅读 · 0 评论 -
[GoCache] 一致性哈希
假设现在存在 10 个分布式节点,当第一个节点接收到请求时,**随机选择**一个节点,由该节点从数据源获取数据,该节点从数据源获取数据的同时缓存该数据。当第二次接收到同样的`key`时,只有`1/10`的概率选择同一个节点,有`9/10`的概率命中其他节点,这就意味着要再次从数据源获取数据。这样做,一是缓存效率低;二是各个节点上存储着重复数据,浪费了大量的存储空间。原创 2024-06-03 21:44:01 · 419 阅读 · 0 评论 -
[GoCache] 前言
`GoCache` 基本上模仿了 `groupcache` 的实现,总体实现上,还是 `groupcache` 非常接近的。支持特性有:* 单机缓存和基于 `HTTP` 的分布式缓存* 最近最少访问`(Least Recently Used, LRU)`缓存策略* 使用 `Go` 锁机制防止缓存击穿* 使用一致性哈希选择节点,实现负载均衡* 使用 `protobuf` 优化节点间二进制通信原创 2024-06-03 21:35:01 · 323 阅读 · 0 评论