当前位置:首页 > 实用技巧 >

缓存怎么做到高可用(如何提高缓存的利用效率)

来源:原点资讯(www.yd166.com)时间:2024-02-03 00:39:51作者:YD166手机阅读>>

缓存如何做到高可用

使用缓存承担大部分的读压力,可以缓解数据库的查询压力,提升了保证系统稳定性。

分布式高可用方案

分布式缓存高可用方案有三种:

  • 客户端方案,一般称为 Smart Client 。通过指定一些数据分片和数据读写策略,实现缓存高可用。在客户端配置多个缓存节点,通过缓存写入和读取算法策略实现分布式,从而提高缓存的可用性。
  • 中间代理方案,在客户端和缓存节点之间中间层,在性能上会有一定损耗,在代理层,代理层采用内置的高可用方案,帮助提升缓存系统的高可用,比如 Codis 使用 Sentinel 。
  • 服务端方案,依赖组件实现, Memcached 只支持单机版,没有分布式 和 HA 方案,Redis 在 2.4 版本提供了 sentinel 方案可用自动主从切换。
客户端方案

实现方案主要有三种:

  • 缓存分片
  • 主从
  • 多副本

通过分片算法常见的算法有 Hash 分片算法和一致性 Hash 分片算法。

缓存分片

Hash 分片算法:

三个缓存节点组成一个缓存集群,当有新的数据写入时,这个缓存 key 做 crc32 等 Hash 算法生成 Hash 值,得出存入缓存节点的序号。

缓存怎么做到高可用,如何提高缓存的利用效率(1)

算法缺点是,增删节点,如果缓存节点个数变化,这样计算出来的节点会发生变化,从而造成缓存失效。

一致性 Hash

使用一致性 Hash 算法可以很好的解决增删节点 ,导致命中率下降的问题。

缓存怎么做到高可用,如何提高缓存的利用效率(2)

  • 缺点
  1. 缓存节点在环上分布不均匀的问题,造成部分节点压力大。
  2. 一致性 Hash 脏数据问题
脏数据问题

其次,就是一致性Hash算法的脏数据问题。为什么会产生脏数据呢?比方说,在集群中有两个节点A和B,客户端初始写入一个Key为k,值为3的缓存数据到 Cache a中。 这时如果要更新k的值为4,但是缓存A恰好和客户端连接出现了问题,那这次写入请求会写入到 Cache B中。接下来缓存A和客户端的连接恢复,当客户端要获取k的值时,就会获取到存在 Cache a中的脏数据3,而不是 Cache B中的4。

缓存怎么做到高可用,如何提高缓存的利用效率(3)

Memmcacjed 主从

它是一个单 master 单 slave的方案,但它的 master/slave都是可读写的,而且可以相互同步,如果 master坏掉, slave 侦测到连接断了,它会自动 listen而成为 master;而如果 slave 坏掉, master也会侦测到连接断,它就会重新 listen等待新的 slave加入.

Redis 支持主从部署,但是 Memcached 并不支持。主从及机制最大的问题是,当一个 Slave 宕机,有 Master 继续处理,提升了缓存的高可用性。

多副本

主从方式能够解决大部分场景,但是在极端流量情况下,不能承担所有流量, Slave 网卡带宽会是瓶颈。为解决这个问题,可以在 Master / Slave 直接增加一层副本。这样当有读请求时,先从副本中选取一个副本查询, 查询失败,查询 Master/Slave.

缓存怎么做到高可用,如何提高缓存的利用效率(4)

中间代理层方案

客户端能够给解决很多问题,但是不同语言间不通用,比如 Java, C, PHP 各需要一套客户端方案。 十分麻烦。

代理层无状态,主要负责读写请求路由功能,并且内置高可用逻辑。

服务端方案

Redis Sentinel 模式解决了主从 Redis 部署时的高可用问题,可在主节点宕机后自动将从节点提升为主节点。保证整体集群可用性。

缓存怎么做到高可用,如何提高缓存的利用效率(5)

欢迎关注公众号:程序员开发者社区,

栏目热文

缓存操作时应注意的问题(缓存一致性解决方案怎么设置)

缓存操作时应注意的问题(缓存一致性解决方案怎么设置)

数据缓存相关的注意事项:写入时复制(Copy-on-Write):写入时复制是一种策略,当数据需要被修改时,系统会先将原...

2024-02-03 00:20:50查看全文 >>

缓存服务器怎么使用(缓存服务器无法连接怎么解决)

缓存服务器怎么使用(缓存服务器无法连接怎么解决)

一个web缓存坐落于客户端和“原始服务器(origin server)”中间,它保留了所有可见内容的拷贝。NGINX 缓...

2024-02-03 00:45:33查看全文 >>

设置启用缓存(怎样设置才没有缓存)

设置启用缓存(怎样设置才没有缓存)

小伙伴家里的电脑是不是用久了就会提示出缓存不足,小伙伴们很迷糊,我8G内存怎么会缓存不足呢?其实内存和缓存的原理不一样的...

2024-02-03 00:35:42查看全文 >>

指定的缓存区在哪里(怎么找缓存路径)

指定的缓存区在哪里(怎么找缓存路径)

缓冲区的主要目的是进行流量整形,将大量的小规模I/O组织成稳定的少量大规模I/O,从而减少响应次数。换句话说,缓冲区用于...

2024-02-03 00:56:39查看全文 >>

qq情侣空间怎么取消相恋日(qq情侣空间怎么修改恋爱日期)

qq情侣空间怎么取消相恋日(qq情侣空间怎么修改恋爱日期)

鲁法案例【2024】047(图源网络 侵删)案情简介原告张某与被告李某经人介绍后相识,于2020年3月份确立恋爱关系并同...

2024-02-03 00:45:08查看全文 >>

缓存策略怎么用(写入缓存策略打开还是关掉)

缓存策略怎么用(写入缓存策略打开还是关掉)

作者:kevinylzhao,腾讯音乐前端开发工程师浏览器缓存策略对于前端开发同学来说不陌生,大家都有一定的了解,但如果...

2024-02-03 00:36:39查看全文 >>

使用缓存要注意什么(怎么正确处理缓存)

使用缓存要注意什么(怎么正确处理缓存)

阿里妹导读:响应时间长,遇到性能瓶颈时,开发者第一个想到的总是性能优化。《什么技能产品经理不会提,但技术人必须懂?》讲到...

2024-02-03 00:43:32查看全文 >>

配置cache是为了解决什么问题(为什么cache容量不能扩大)

配置cache是为了解决什么问题(为什么cache容量不能扩大)

一、单项选择题1. 我们说"买了一台64位的电脑",是指该电脑()。A.带宽为64位 B.字长为64位 ...

2024-02-03 00:16:14查看全文 >>

写入缓存策略打开还是关掉(笔记本的写入缓存策略要不要打勾)

写入缓存策略打开还是关掉(笔记本的写入缓存策略要不要打勾)

右键点击“计算机”,打开“设备管理”,选择你的SSD打开“属性”。 在写入缓存策略里的这个“关闭设备上的WINDOWS写...

2024-02-03 00:36:34查看全文 >>

dnf使徒特制帽子装扮外观图片(dnf使徒套装)

dnf使徒特制帽子装扮外观图片(dnf使徒套装)

DNF2020年春节使徒宝物自选礼盒中能开出很多奖励,比如使徒特质帽子装扮自选礼盒正是之一。那么那么作为新礼盒,使徒特质...

2024-02-03 00:13:50查看全文 >>

文档排行