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

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

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

课程地址https://developer.aliyun.com/learning/course/369/detail/4394


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


内容介绍:

一、读写分离

二、读写分离目的


一、读写分离

1、在之前章节介绍了提高应用并发度的几个方式,比如说应用层横向扩展、使用应用层缓存,还有就是把大量的同步的操作,或者一些请求访问转成异步的处理。本章节主要介绍数据库层的一些处理能力,在相同资源的情况下如何提高数据库的处理能力,还有提高 IO 的能力。整个应用架构或者互联网应用架构里面最难进行横向扩展的就是数据库。主要是因为在数据库层,所有的数据库实例为了保证数据的 ACID 这几个原则,一定要进行统一的数据存储。最终数据存储会成为数据库的并发的一个平面,所以现在很多数据库技术都会通过其他的方式来降低数据库的访问压力,其中一个手段就是进行读写分离。

2、下面对读写分离这个词进行一个详细的阐述,对数据库的操作主要分为两类,一类是读,读就是 select,可能只是判断条件不一样,最终都是通过 select 这样的命令 sql 语句获取应用所需要的一些数据。另外一类就是和数据库写相关的操作,比如说 insert,比如 delete,或者是 update 这样一系列的操作,都把它归结到写操作上。

3、在数据库的整体设计中,写操作一般并发度都比较低,因为为了数据的一致性,或者叫隔离性考虑,写操作的过程中要对数据进行严格的加锁操作,这样避免应用读到脏数据。一旦锁的级别比较高的时候,就会影响到读的一些操作,甚至可能把数据库读的一些操作悬挂或者阻塞在一边,只有写操作完成以后,读的操作才能进行下去。比如说以一个银行的取款交易或者库存扣减的交易举例,应用对库存表进行更新的时候,比如说某一个商品的库存现在是100,当把他扣减成95的时候,在这个过程中,这条记录是被严格加锁的,其他应用要来读这个库存,就需要等待库存更新的语句执行完。

4、如果读操作和写操作在同一个数据库上执行,他们之间相互是有影响的,写操作会影响到读操作的效率,这样当一个主库有大量的写操作的情况下,读操作的效率就无法提升上去,那整个用户或者应用的整个性能会有严重的问题。所以在大型的互联网应用架构设计中,会通过一系列的技术,将读操作和写操作分离。从下图中可以看到

image.png

可以通过数据库的复制技术,将主库的数据复制到只读库,或者备库。通过应用的分解,只要涉及到读操作的一些应用逻辑,或者一些 sql 请求,都把他转到只读库上去。而只要涉及到写操作的,比如说更新、插入、删除这些数据,应用会把他转发到主库上进行操作。

5、解决只读库和主库之间的数据复制也是需要一些技术的配合,主要是要保证数据的延迟一定要很低,否则在主库上做的一些写入操作,比如更新,如果没有及时的返回到只读库,应用取过去可能就会导致应用逻辑上的错误。现在一些数据库,比如说 mysql,包括阿里云上的rds 数据库,都有很成熟的技术来保障主库可以很快地将变化的数据复制到只读库上去。主要是通过数据库的重做日志,来同步到只读库上。同时,在有些访问并发量特别大的应用场景上,只读库也会有多个,这样主库只需要将变化的数据复制到多个从库上。


二、读写分离目的

1、通过数据库读写分离,可以达到以下目的。第一个就是降低主库压力,提升应用处理速度,因为大量的并发查询访问都被转发到了只读库上,所以主库的压力就会降低很多,因为主库的压力降低带来的好处,就是整个应用的处理速度会加快。过去一个更新操作可能需要500毫秒,由于查询被转移到其他只读库上,他的更新速度可能就会降低到100毫秒。

2、第二,通过只读库可以提升应用的查询速度,以往没有只读库的状况下,所有的请求都要在主库上和更新操作进行符合的或混合的一些操作,会严重影响到查询速度,但有了只读库,只读库的目的就是为查询使用,所以可以大大提升应用的响应速度,尤其是针对查询的,比如说查询库存,这样的操作都会有大大的提升,甚至可以在只读库上进行一些比较复杂的查询,因为它不会影响到主的业务的操作。

3、读写分离,在有些场景下也为业务分析人员或者业务分析的一些应用,提供一些帮助。这个架构也有一些限制,他主要是用于能够接受数据同步有一定延迟的应用。比如说查库存场景,如果一定限制的库存不能超卖,所谓超卖就是库存里面有100个商品,就只能卖100个。这样的一些场景可能在一定程度下就不能使用读写分离,但如果他允许超卖,读写分离是最佳的一个场景,或是最佳的一个应用架构设计思路。从阿里云产品视角可以将只读库和主库的分离技术配置工作降到最低,在阿里云的控制界面上,rds 数据库有一个界面,如果需要一个只读实例,可以直接点击一个按钮来进行只读实例的购买。

image.png

后续的只读库和主库数据同步的工作都在底层完成,这对应用非常简单,也降低了运维的一些工作。

4、本章节学习到通过只读库来降低数据库的压力,同时提升并发度,使得应用的访问速度大大提升,而且为一些业务分析的场景提供帮助。

相关文章
|
2月前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
58 8
|
5天前
|
自然语言处理 JavaScript Java
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS架构介绍
HarmonyOS采用分层架构设计,从下至上分为内核层、系统服务层、框架层和应用层。内核层支持多内核设计与硬件驱动;系统服务层提供核心能力和服务;框架层支持多语言开发;应用层包括系统及第三方应用,支持跨设备调度,确保一致的用户体验。
119 81
|
24天前
|
弹性计算 运维 监控
阿里云云服务诊断工具:合作伙伴架构师的深度洞察与优化建议
作为阿里云的合作伙伴架构师,我深入体验了其云服务诊断工具,该工具通过实时监控与历史趋势分析,自动化检查并提供详细的诊断报告,极大提升了运维效率和系统稳定性,特别在处理ECS实例资源不可用等问题时表现突出。此外,它支持预防性维护,帮助识别潜在问题,减少业务中断。尽管如此,仍建议增强诊断效能、扩大云产品覆盖范围、提供自定义诊断选项、加强教育与培训资源、集成第三方工具,以进一步提升用户体验。
665 243
|
17天前
|
机器学习/深度学习 算法 数据可视化
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
本文探讨了在量化交易中结合时序特征和静态特征的混合建模方法。通过整合堆叠稀疏降噪自编码器(SSDA)和基于LSTM的自编码器(LSTM-AE),构建了一个能够全面捕捉市场动态特性的交易系统。SSDA通过降噪技术提取股票数据的鲁棒表示,LSTM-AE则专注于捕捉市场的时序依赖关系。系统采用A2C算法进行强化学习,通过多维度的奖励计算机制,实现了在可接受的风险水平下最大化收益的目标。实验结果显示,该系统在不同波动特征的股票上表现出差异化的适应能力,特别是在存在明确市场趋势的情况下,决策准确性较高。
55 5
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
|
2天前
|
存储 弹性计算 架构师
老板点赞!技术人如何用架构优化打赢降本增效战?
大家好,我是小米,一个喜欢分享技术的小架构师。通过亲身经历,我将介绍如何通过架构优化帮助公司降本增效。两年前,我加入一家初创公司,面对成本高企的问题,通过弹性伸缩、微服务化和数据治理等手段,成功降低了40%的技术成本,提升了60%的系统响应速度。希望我的经验能给你启发!关注我的微信公众号“软件求生”,获取更多技术干货。
14 5
|
28天前
|
存储 机器学习/深度学习 人工智能
【AI系统】计算图优化架构
本文介绍了推理引擎转换中的图优化模块,涵盖算子融合、布局转换、算子替换及内存优化等技术,旨在提升模型推理效率。计算图优化技术通过减少计算冗余、提高计算效率和减少内存占用,显著改善模型在资源受限设备上的运行表现。文中详细探讨了离线优化模块面临的挑战及解决方案,包括结构冗余、精度冗余、算法冗余和读写冗余的处理方法。此外,文章还介绍了ONNX Runtime的图优化机制及其在实际应用中的实现,展示了如何通过图优化提高模型推理性能的具体示例。
55 4
【AI系统】计算图优化架构
|
17天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
45 11
|
18天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
57 3
|
2月前
|
监控
SMoA: 基于稀疏混合架构的大语言模型协同优化框架
通过引入稀疏化和角色多样性,SMoA为大语言模型多代理系统的发展开辟了新的方向。
54 6
SMoA: 基于稀疏混合架构的大语言模型协同优化框架
|
2月前
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。