缓存分区及其透明性的处理方式

简介: 【6月更文挑战第8天】该文探讨了Redis缓存分区的重要性与方法。分区通过在多台服务器上分散缓存,提升可用性、性能和可伸缩性。最后,强调技术的双刃剑特性,需根据实际情况谨慎选用。

简介

分片是最常见的策略,数据根据逻辑分布到各分区。为了处理分区透明性,文章提到了分片、复制、位置和逻辑透明性。

mandala曼德罗符号.png

然而,分区也带来挑战,如数据分区决策、故障处理、查询复杂性和数据一致性。

为应对这些问题,本文提及了布隆过滤器防止缓存穿透,随机过期策略缓解缓存雪崩,以及控制热点key更新以确保数据一致性。

1 如何对redis缓存进行分区?

一般不会在应用程序中执行分区,而是在分布式数据库中做透明化处理。

对缓存进行分区涉及在多台计算机上拆分缓存。

与使用单个缓存服务器相比,此结构具有多个优势,包括:

创建比单个服务器上可以存储的缓存大得多的缓存。跨服务器分发数据,提高可用性。

如果一台服务器发生故障或变得不可访问,则它保存的数据不可用,但仍可以访问其余服务器上的数据。

对于缓存,这并不重要,因为缓存的数据只是数据库中保存的数据的临时副本。无法访问的服务器上的缓存数据可以改为缓存在其他服务器上。

将负载分散到服务器之间,从而提高性能和可伸缩性。
将数据地理定位到靠近访问它的用户的位置,从而减少延迟。

对于缓存,最常见的分区形式是分片。在此策略中,每个分区(或分片)本身就是一个 Redis 缓存。

数据通过使用分片逻辑定向到特定分区,分片逻辑可以使用多种方法来分发数据。

2 处理分区透明性的方式

分片模式提供了有关实现分片的更多信息。

分片透明:

用户不必知道关系数据是如何分片的,它们对数据的操作在全局关系上进行,
    即关系如何分片对用户是透明的。

复制透明:

用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成

位置透明:

用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的。

逻辑透明:

是最低层次的透明性,该透明性提供数据到局部数据库的映像
    即用户不必关心局部DBMs支持哪种数据模型、使用哪种数据操纵语言,
    数据模型和操纵语言的转换是由系统完成的。

数据分布(也称分片)技术,主要用于构建数据索引,是实现“导航”功能的关键技术。

数据分布的本质是,将原数据集划分为多个数据子集,以存储到不同的地方,在一定程度上体现了数据的可用性和可靠性(一个存储节点故障,只影响该存储节点的数据)。

在实际情况下,仅考虑数据分片,其实是无法真正应用到生产环境的。

因为,故障导致数据丢失和不可用是很常见的情况。

因此,在进行分布式数据存储设计时,通常会考虑对数据进行备份,以提高数据的可用性和可靠性,而实现数据备份的关键技术就是“数据复制技术”。

3 数据库分片后也带来一些挑战

分片带来了许多挑战:

数据分区:决定如何跨多个分片对数据进行分区可能是一个挑战,因为它需要在数据接近度和数据均匀分布之间找到平衡以避免某一片太热,其他分片无流量。

故障处理:如果关键节点发生故障并且没有足够的分片来承载负载,如何在不停机的情况下在新节点上获取数据?

查询复杂性:应用程序代码与数据分片逻辑耦合,需要来自多个节点的数据的查询需要重新联接。

数据一致性:确保跨多个分片的数据一致性可能是一个挑战,因为它需要协调跨分片的数据更新。
当同时进行更新时,这可能特别困难,因为可能需要解决不同写入之间的冲突。

弹性可扩展性:随着数据量或查询数量的增加,可能需要向数据库添加其他分片。
这可能是一个复杂的过程,不可避免地会出现停机,需要手动过程在所有分片之间均匀地重新定位数据。

4 小结

常见问题规避

缓存穿透   大量访问redis不存在的key
    布隆过滤器
缓存雪崩  大量key之前存在,但是同时失效了
    增加随机过期策略,不要同时过期
缓存击穿 一些热点key失效了

热点key需要永久有效,如果需要重新设置热点key,只允许一个数据库连接去操作数据库,其他的等待完成后再进行操作

技术大多是一把双刃剑,有优势的时候,通常也意味着有其劣势。

了解这种情况,并在适当的场景使用对应的技术,才能真正的解决问题。

目录
相关文章
|
机器学习/深度学习 存储 算法
基于Actor-Critic(A2C)强化学习的四旋翼无人机飞行控制系统matlab仿真
基于Actor-Critic强化学习的四旋翼无人机飞行控制系统,通过构建策略网络和价值网络学习最优控制策略。MATLAB 2022a仿真结果显示,该方法在复杂环境中表现出色。核心代码包括加载训练好的模型、设置仿真参数、运行仿真并绘制结果图表。仿真操作步骤可参考配套视频。
406 0
|
机器学习/深度学习 人工智能 编解码
深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
【9月更文挑战第2天】深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
 深入探索AI文生语音技术的奥秘:从文本输入到逼真语音输出的全链条语音合成过程解析
|
关系型数据库 MySQL 数据库
入职必会-开发环境搭建20-SQLYog下载和安装
SQLyog 是一款连接数据库的第三方工具,由Webyog公司开发。它是一个易于操作、轻松方便管理数据库的图形化管理工具。SQLyog 提供了快速而简洁的界面,使用户可以在任何地点通过网络有效地管理MySQL数据库。
723 2
|
12月前
|
JSON API 开发者
京东店铺所有商品数据接口(JD.item_search_shop)丨京东API接口指南
JD.item_search_shop 是京东开放平台提供的接口,用于获取店铺所有商品数据。请求方法为 GET,主要参数包括 shopId(必填)、page、pageSize 和 sortType。开发者需先注册并获取 API 密钥,确定目标店铺 ID 后构建请求。响应为 JSON 格式,适用于电商应用、价格比较和市场分析等场景。
1079 0
|
SQL 安全 数据库
Python防止SQL注入攻击的方法
Python防止SQL注入攻击的方法
557 0
|
Ubuntu Java Linux
update-alternatives命令如何使用?
【8月更文挑战第5天】update-alternatives命令如何使用?
1184 5
|
Oracle Java 关系型数据库
各种数据库对应的jar包、驱动类名和URL格式
各种数据库对应的jar包、驱动类名和URL格式
407 0
|
安全 Linux 数据安全/隐私保护
使用 `chage` 命令管理 Linux 用户密码过期策略
`chage` 命令用于管理Linux用户密码过期策略,包括设置密码最长有效期、警告天数、过期宽限期和账户非活动天数。例如,`chage -M 90 username` 设置密码最长有效期为90天,`chage -W 7 username` 设定到期前7天警告。确保具备足够权限(如root)并理解更改影响。此工具有助于增强系统安全和符合安全策略。
|
自然语言处理 运维 监控
产品解读 | 敏捷版云原生PaaS场景
更丰富的云原生应用治理能力让业务快速生长,更丰富的云原生应用治理能力让业务快速生长。
1534 71
产品解读 | 敏捷版云原生PaaS场景