关于分布式数据库缓存设计的那点事和实践

news2024/9/23 3:33:49

目录

案例

【题目】

【问题 1】(9 分)

【问题 2】(8 分)

【问题 3】(8 分)

【答案】

【问题 1】答案

【问题 2】解析

【问题 3】解析

相关推荐


案例

        阅读以下关于分布式数据库缓存设计的叙述,在答题纸上回答问题 1 至问题 3。

【题目】

        某企业是为城市高端用户提供高品质蔬菜生鲜服务的初创企业,创业初期为快速开展业务,该企业采用轻量型的开发架构(脚本语言+关系型数据库)研制了一套业务系统。业务开展后受到用户普遍欢迎,用户数和业务数量迅速增长,原有的数据库服务器已不能满足高度并发的业务要求。为此,该企业成立了专门的研发团队来解决该问题。
        张工建议重新开发整个系统, 采用新的服务器和数据架构,解决当前问题的同时为日后的扩展提供支持。但是,李工认为张工的方案开发周期过长,投入过大,当前应该在改动尽量小的前提下解决该问题。李工认为访问量很大的只是部分数据,建议采用缓存工具MemCache 来减轻数据库服务器的压力,这样开发量小,开发周期短,比较适合初创公司,同时将来也可以通过集群进行扩展。然而,刘工又认为李工的方案中存在数据可靠性和一致性问题,在宕机时容易丢失交易数据,建议采用 Redis 来解决问题。在经过充分讨论,该公司最终决定采用刘工的方案。

【问题 1】(9 分)

        在李工和刘工的方案中,均采用分布式数据库缓存技术来解决问题。请说明分布式数据库缓存的基本概念。表 4-1 中对 MemCache 和 Redis 两种工具的优缺点进行了比较,请补充完善表 4-1 中的空(1)~(6)。

表 4-1
MemCacheRedis
数据类型简单 key/value 结构(1)
持久性(2)支持
分布式存储(3)多种方式,主从、Sentinel、Cluster 等
多线程支持支持(4)
内存管理(5)
事物支持(6)有限支持

【问题 2】(8 分)

        刘工认为李工的方案存在数据可靠性和一致性的问题,请说明原因。为避免数据可靠性和一致性的问题,刘工的方案采用 Redis 作为数据库缓存,请说明基本的 Redis 与原有关系数据库的数据同步方案。

【问题 3】(8 分)

        请给出 Redis 分布式存储的 2 种常见方案和 Redis 集群切片的几种常见方式。

【答案】

        本题考查数据库缓存的概念,以及数据库缓存方案的设计过程。

【问题 1】答案

        分布式数据库缓存指的是在高并发环境下,为了减轻数据库压力和提高系统响应时间,在数据库系统和应用系统之间增加的独立缓存系统。

【问题 2】解析

        MemCache 不支持数据持久化操作,所以掉电数据会全部丢失,而且无法直接恢复,这存在可靠性问题;
        MemCache 不支持事务,所以操作过程中可能产生数据的不一致性。

        同步方案:读取数据时,先读取 Redis 中的数据,如果 Redis 没有,则从原数据库中读取,并同步更新 Redis 中的数据。写回时,写入到原数据库中,并同步更新到 Redis 中。

【问题 3】解析

        Redis 分布式存储的常见方案有:
        (1)主从(Master/Slave)模式;
        (2)哨兵(Sentinel)模式;
        (3)集群(Cluster)模式。

        Redis 集群切片的常见方式有:
        (1)客户端实现分片。分区逻辑在客户端实现,采用一致性哈希来决定 Redis 节点。
        (2)中间件实现分片。在应用软件和Redis 中间,例如 Twemproxy、Codis 等,由中间件实现服务到后台 Redis 节点的路由分派。
        (3)客户端服务端协作分片。Redis Cluster 模式,客户端可采用一致性哈希,服务端提供错误节点的重定向服务。

        答案:

        Redis 分布式存储的 2 种常见方案:主从方案、Cluster 方案。
        Redis 集群切片的几种常见方式:
        (1)客户端分片:在客户端通过 key 的 hash 值对应到不同服务器。
        (2)对数据根据 key 散列到不同的 slot 上,不同 slot 对应不同的服务器。

        注:存储方案可以在问题1表格中直接摘抄下来。
        slot(槽位):是一种逻辑上的划分,用于将数据集合(如键值对)根据一定的规则(如哈希函数)分配到不同的存储单元(如服务器)上。每个slot通常对应一个或多个物理或逻辑上的存储节点。

相关推荐

【系统架构设计师】三、数据库系统(事务并发|封锁协议|数据库安全|商业智能|SQL语句)-CSDN博客文章浏览阅读1.2k次,点赞27次,收藏12次。事务是并发控制的前提条件,并发控制就是控制不同的事务并发执行,提高系统效率,但是并发控制中存在下面三个问题:丢失更新:事务1对数据A进行了修改并写回,事务2也对A进行了修改并写回此时事务2写回的数据会覆盖事务1写回的数据,就丢失了事务1对A的更新。即对数据A的更新会被覆盖。不可重复读:事务2读A,而后事务1对数据A进行了修改并写回,此时若事务2再读A,发现数据不对。即一个事务重复读A两次,会发现数据A有误。读脏数据:事务1对数据A进行了修改后,事务2读数据A,而后事务1回滚,数据A恢复了原来的。https://shuaici.blog.csdn.net/article/details/139778680【系统架构设计师】二十二、嵌入式系统架构设计理论与实践③-CSDN博客文章浏览阅读1.2k次,点赞30次,收藏19次。鸿蒙 (HarmonyOS) 整体采用分层的层次化设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统”→“子系统”→“功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。https://shuaici.blog.csdn.net/article/details/140818780

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2094156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络协议】精讲OSI七层模型、TCP/IP四层、五层模型区别!图解超赞超详细!!!

目录 1. OSI与TCP/IP模型的网络协议层次结构差异 1.1 OSI模型的七层结构 1.2 TCP/IP模型的四层结构 1.3 TCP/IP模型的五层结构 2. OSI七层模型和TCP/IP协议模型的区别 2.1 区别总结: 3. 网络协议分层的优点 1. OSI与TCP/IP模型的网络协议层次结构差异 协议分…

拥抱开源拥护国产|暴雨打造最强AI的服务器操作系统!

8月30日,主题为“进化重构赴未来”的2024龙蜥操作系统大会(OpenAnolis Conference)在北京举办。龙蜥社区作为国内领先的开源操作系统根社区,推出的Anolis OS及衍生版装机量已突破800万套,实现了从开源到商业化的良性循环发展。 2024 龙蜥操作…

【惊天BUG】select * from 表 where value = 0;查询结果让大师兄都傻眼了

前言 🍊缘由 线上问题把我坑,一查数据让我蒙 🐣闪亮主角 大家好,我是JavaDog程序狗 今天跟大家分享一个本狗造成的线上事故, 一个简单的SQL查询语句导致的bug 😈你想听的故事 最近狗哥有点飘&#xf…

MCU1.51单片机介绍

1.单片机(MCU 全称 Mirco Controller Unit 意为微小控制器的集合) 相当于一台迷你电脑(集成了很多硬件) 2.作用 传感(采集信息),处理(CPU Central Processing Unit 中央处理器&am…

智能的瓶颈在于事物表征的弥散与聚合性(弥聚性)

动态“弥散与聚合性”(弥聚性)是智能系统面临的一个重要挑战。这个概念涉及如何在处理信息时平衡广度和深度,以及如何有效地表征和组织知识。 (1)弥散性 弥散性指的是信息或知识的分散性和多样性。智能系统需要处理来自…

非对称RAID破解SSD异构存储难题

上一篇文章(Kioxia的NVMe RAID卸载有何亮点?)介绍了NVMe RAID卸载方案内容。本文我们结合一篇学术论文,学习一下新的非对称RAID架构~ 随着大数据时代的到来,全闪存阵列(All-Flash Arrays, AFAs&…

校园一卡通|基于SprinBoot+vue的校园一卡通系统(源码+数据库+文档)

校园一卡通系统 基于SprinBootvue的校园一卡通系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员功能实现 学生功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍…

linux驱动 -- PWM配置和SysFs操作方法

1:PWM介绍 PWM的定义为:可调节脉冲调节器,换句话来说就是一个总周期不变,占空比可调节的方波。 2:PWM的总周期和占空比、有效点平 方波:在信号领域一般分为数字信号和模拟信号,数字信号就两种状态&#…

UML类图中的依赖,继承,和实现关系

依赖关系 依赖关系是一种使用关系,它是对象之间耦合度最弱的一种关系。在代码中,某个类通过局部变量,方法的参数或者对静态方法的调用来访问另外一个类的方法。 依赖关系通过带箭头的虚线表示,箭头从使用类指向被依赖的类 继承关…

中仕公考怎么样?函授大专可以考公吗?

函授大专学历,作为成人高等教育的一种形式,是被认证的,所以在绝大多数情况下,持有函授大专学历的个人符合公务员及事业单位岗位的报考资格。只有招聘公告中明确要求考生必须持有全日制或统招学历时,才不符合条件。 在…

【STM32开发指南】STM32最小系统板详解

【前言】 在单片机项目开发中,STM32系列微控制器因其高性能、低功耗和丰富的外设资源而备受青睐。其中,STM32最小系统板作为STMicroelectronics STM32系列微控制器的基础硬件平台,不仅简化了硬件设计,还极大地促进了软件开发的便…

用ChatGPT提升论文质量:改进语法、用词和行文的有效方法

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 在学术写作中,语法、用词和行文的质量直接影响论文的可读性和学术价值。今天我们将介绍如何利用ChatGPT优化论文的语法结构、改进用词精准度以及提升行文流畅性。帮助写作者…

多线程篇(锁相关类- StampedLock(改进的读写锁)(JDK8新增))(持续更新迭代)

目录 一、前言 二、StampedLock提供的三种读写模式的锁分别如下 写锁writeLock 悲观读锁 readLock 乐观读锁 tryOptimisticRead 三、StampedLock支持这三种锁在一定条件下进行相互转换 四、案例介绍 五、知识小结 一、前言 StampedLock 是并发包里面 JDK8 版本新增的一…

线性代数 第二讲 矩阵_逆矩阵_伴随矩阵_分块矩阵_初等矩阵_矩阵的秩

矩阵 文章目录 矩阵1.矩阵的定义2.矩阵的运算法则3.特殊矩阵3.1 伴随矩阵3.2 可逆矩阵3.2.1 定义3.2.2 可逆矩阵的一些定理3.2.3 可逆矩阵公式与转置矩阵公式3.2.4 求逆矩阵 3.3 分块矩阵3.3.1 分块矩阵的运算3.3.2 分块矩阵的初等行变换(超纲内容但要了解&#xff…

YOLOv9输出模型每一层的耗时和GFLOPs

在做一些比较实验中,如何更精确的查看和对比我们的改进模块时候有效,是否有提升,特别是在模型轻量化时,这时候我们就可以打印改进模型每一层的耗时和GFLOPS来比较不同模块的占用量。在YOLOv9中,打印模型每一层的耗时和…

食堂线上预约点餐系统小程序的设计

管理员账户功能包括:系统首页,个人中心,学生管理,菜品分类管理,菜品管理,关于我们管理,意见反馈,系统管理 微信端账号功能包括:系统首页,菜品,购…

TPH-YOLOv5:基于Transformer预测头的改进YOLOv5,用于无人机捕获场景的目标检测

摘要 提出了TPH-YOLOv5。在YOLOv5的基础上,增加了一个预测头来检测不同尺度的目标。然后用Transformer Prediction Heads(TPH)代替原有的预测头,探索自注意机制的预测潜力。还集成了卷积块注意力模型(CBAM)…

2D 智慧水务厂:引领水资源数字化管理

图扑 2D 智慧水务厂通过数字监控和数据分析,实现高效水资源管理与优化,显著提升运营效率。

【开发心得】筑梦上海:项目风云录(2)

特别声明 这个长篇终于开了头,工作的节奏也不能耽搁,暂时也不知道何时才能收尾。人生漫漫,即使没有雷军们的成功,但是也有自己的一些小确幸。 特别声明一下,虽然这个长篇是基于真实经历,但其中有些内容纯…

Python优化算法22——自适应变异麻雀搜索优化算法(AMSSA)

科研里面优化算法都用的多,尤其是各种动物园里面的智能仿生优化算法,但是目前都是MATLAB的代码多,python几乎没有什么包,这次把优化算法系列的代码都从底层手写开始。 需要看以前的优化算法文章可以参考:Python优化算…