数据库架构设计优化-读写分离|学习笔记

简介: 数据库架构设计优化-读写分离

开发者学堂课程【企业级互联网分布式系统应用架构学习数据库架构设计优化-读写分离】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/503/detail/6746


数据库架构设计优化-读写分离

我们在上章节提到了提高应用并发度的几个方式,例如应用层横向扩展,使用应用层缓存,同步转异步的一些操作。本章节我们介绍的是数据库处理能力及提高io能力。

众所周知,在整个互联网架构里,最难进行横向扩展的是数据库,主要是因为在数据库层所有数据库实例为了保证数据的 ACID 原则,它要进行统一的数据存储。最终的数据存储会成为数据库并发的瓶颈,所以现在很多数据库技术通过其他方式来降低一些访问压力。

其中一个手段是读写分离,即,对数据库的操作主要分为两类,一类是读:select,可能只是为了判断条件,最终都是通过 select 这个命令来获取它应用所需要的一些数据。

另外一类是写:insert,delete,update。在数据库的整体设计中,写操作一般并发度都比较低,因为为了数据的一致性和隔离性考虑,写操作的过程中要对数据严格的加锁操作,为了避免应用读到锁数据。当所的级别比较高时,就会影响到读的操作,甚至可能把数据库中的读操作悬挂或堵塞在一边,只有写的操作完成后,读的操作才能进行下去。例如库存扣减的交易,当应用表对库存进行更新时,若某一个商品的库存是100,当我们把它扣减成95时,在这个过程中,这条记录是被严格加锁的,其他应用来读取这个库存,需要等待库存更新。

所以我们可以看出,读操作和写操作在同一个数据上执行,他们相互之间是影响的,写操作会影响到堵车做的效率,当一个主库有大量的写操作的情况下,读操作的效率就无法提升,所以用户处理应用的整个性能就会有问题。所以在大型的互联网架构设计中,我们会通过一系列的技术将读操作和写操作进行分离。

图片1.png

如上图,我们可以看出据库的复制技术将主库的数据复制到只读库或备库的数据库中,通过应用的分解,只要涉及到读操作的一些应用逻辑都把它转到读库中去,只要涉及到写操作,如刚刚所提及到的更新,删除这些数据应用就会把它转发到主库上进行操作。

解决只读库和主库之间数据的复制需要一些技术的配合,主要保证数据的延时一定要低,否则在主库上做的一些写入操作,如更新,若没有及时的反馈到只读库,应用取过去就会导致应用逻辑上的一些错误。在这现在的一些数据库,如阿里云都有一些很成熟的技术,来保证主库可以快速的将数据复制到只读库中,主要是通过数据库的同做日志来同步到只读库上。

同时在一些访问并发度很大的应用场景中,只读库也会有多个,所以图库需要将变化的数据复制到多个存库中。通过数据库的读写分离,我们可以达到几个目的:

一是降低主库压力,提升应用处理速度;大量的并发查询访问都被转移到只读库上,所以主库的压力会降低,带来的好处是应用处理的速度会加快。例如过去的一个更新操作需要500毫秒,由于查询被转移到其他只读库上,他的更新速度可能会降低到100毫秒。

二是通过只读库提升应用查询速度。在以前没有只读库的情况下,所有的请求都需要在主库和更新操作进行混合的操作,会严重影响到查询的速度。有了只读库,其目的是为了查询使用,可以大大提升应用的响应速度,尤其是查询,例如,查询库存这样的操作都会有大大的提升。

甚至我们可以在只读库上进行一些比较复杂的查询,因为它不会影响到主的业务操作。所以读写分离也为一些场景进行业务分析的应用提供一些帮助。

这个架构也有一定的限制,三是适于能接受数据同步时有一定数据延迟的应用。

例如库存的场景,若我们一定限制的库存不能超慢,超慢指的是当库存中有100个商品,这样的场景在一定程度下不能用读写分离,当它允许超慢,读写分离是最佳的应用架构思路。

从阿里云场景视角,我们可以将只读库和主库分离这样的技术配置工作降低到最低,在阿里云的控制界面上有一个界面,若需要只读实例,

图片2.png

我们可以直接点击按钮进行只读实例的购买,后续的只读库和主库之间的数据同步工作,都已在底层完成,对应用非常简单,也降低了一些工作。

此章节我们学习了用只读库降低数据库的压力,同时提升并发度,使得应用的反应速度大大提升,为一些业务分析场景提供帮助。

相关文章
|
1月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
4月前
|
人工智能 自然语言处理 开发工具
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
本文介绍统一多模态 Transformer(UMT)在跨模态表示学习中的应用与优化,涵盖模型架构、实现细节与实验效果,探讨其在图文检索、图像生成等任务中的卓越性能。
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
|
4月前
|
算法 物联网 定位技术
蓝牙室内定位技术解决方案:核心技术架构与优化实践
本文探讨了蓝牙iBeacon与Lora结合的室内定位技术,分析其在复杂室内环境中的优势与挑战。通过三层架构实现高精度定位,并提出硬件、算法与部署优化方向,助力智慧仓储、医疗等场景智能化升级。
291 0
蓝牙室内定位技术解决方案:核心技术架构与优化实践
|
5月前
|
关系型数据库 MySQL 数据库连接
Django数据库配置避坑指南:从初始化到生产环境的实战优化
本文介绍了Django数据库配置与初始化实战,涵盖MySQL等主流数据库的配置方法及常见问题处理。内容包括数据库连接设置、驱动安装、配置检查、数据表生成、初始数据导入导出,并提供真实项目部署场景的操作步骤与示例代码,适用于开发、测试及生产环境搭建。
243 1
|
1月前
|
机器学习/深度学习 数据可视化 网络架构
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
PINNs训练难因多目标优化易失衡。通过设计硬约束网络架构,将初始与边界条件内嵌于模型输出,可自动满足约束,仅需优化方程残差,简化训练过程,提升稳定性与精度,适用于气候、生物医学等高要求仿真场景。
287 4
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
|
1月前
|
运维 Prometheus 监控
别再“亡羊补牢”了!——聊聊如何优化企业的IT运维监控架构
别再“亡羊补牢”了!——聊聊如何优化企业的IT运维监控架构
105 8
|
1月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
183 6
|
1月前
|
缓存 运维 监控
Redis 7.0 高性能缓存架构设计与优化
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Redis 7.0高性能缓存架构,探索函数化编程、多层缓存、集群优化与分片消息系统,用代码在二进制星河中谱写极客诗篇。
|
3月前
|
机器学习/深度学习 存储 人工智能
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南
本文将深入分析这两种编码架构的技术原理、数学基础、实现流程以及各自的优势与局限性,并探讨混合架构的应用策略。
286 10
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南