相关文章推荐
威武的南瓜  ·  浦口区数据局以电子函“小支点”撬动优化营商“ ...·  2 月前    · 
打酱油的椰子  ·  关于非洲、东南亚等地数字科技企业出海需求对接 ...·  2 月前    · 
低调的炒饭  ·  笔记类应用- 知乎·  1 年前    · 
低调的炒饭  ·  求推荐笔记类应用? - 知乎·  1 年前    · 
低调的炒饭  ·  有没有比印象笔记好用的笔记类app? - 知乎·  1 年前    · 
低调的炒饭  ·  三款笔记类应用:随时随地,想记录就记录- 知乎·  1 年前    · 
低调的炒饭  ·  很多人开始弃用印象笔记了,你还在使用印象笔记 ...·  1 年前    · 
小百科  ›  数据库架构设计优化-随机存取分立|努力学习笔记-阿里云开发者社区
笔记类应用 架构设计 阿里 云数据库 大数据
低调的炒饭
1 年前
产品 解决方案 文档与社区 免费试用 定价 云市场 合作伙伴 支持与服务 了解阿里云
备案 控制台 登录/注册
开发者社区
首页
探索云世界
新手上云 云上应用构建 云上数据管理 云上探索人工智能
云计算 弹性计算 无影 存储 网络 倚天
云原生 容器 serverless 中间件 微服务 可观测 消息队列
数据库 关系型数据库 NoSQL数据库 数据仓库 数据管理工具 PolarDB开源 向量数据库

热门

Modelscope模型即服务 弹性计算 云原生 数据库 物联网 云效DevOps 龙蜥操作系统 平头哥 钉钉开放平台
大数据 大数据计算 实时数仓Hologres 实时计算Flink E-MapReduce DataWorks Elasticsearch 机器学习平台PAI 智能搜索推荐
人工智能 机器学习平台PAI 视觉智能开放平台 智能语音交互 自然语言处理 多模态模型 pythonsdk 通用模型
开发与运维 云效DevOps 钉钉宜搭 支持服务 镜像站 码上公益
问产品
动手实践
考认证
TIANCHI大赛
活动广场
任务中心 飞天Club技术沙龙 训练营 话题 开发者评测 乘风者计划 阿里云MVP 直播
下载
镜像站 技术资料 插件
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

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

课程地址: 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

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

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

PolarDB | PostgreSQL 高并发队列处理业务的数据库性能优化实践
在电商业务中可能涉及这样的场景, 由于有上下游关系的存在, 1、用户下单后, 上下游厂商会在自己系统中生成一笔订单记录并反馈给对方, 2、在收到反馈订单后, 本地会先缓存反馈的订单记录队列, 3、然后后台再从缓存取出订单并进行处理. 如果是高并发的处理, 因为大家都按一个顺序获取, 容易产生热点, 可能遇到取出队列遇到锁冲突瓶颈、IO扫描浪费、CPU计算浪费的瓶颈. 以及在清除已处理订单后, 索引版本未及时清理导致的回表版本判断带来的IO浪费和CPU运算浪费瓶颈等. 本文将给出“队列处理业务的数据库性能优化”优化方法和demo演示. 性能提升10到20倍.
 
推荐文章
威武的南瓜  ·  浦口区数据局以电子函“小支点”撬动优化营商“大环境”
2 月前
打酱油的椰子  ·  关于非洲、东南亚等地数字科技企业出海需求对接会的通知
2 月前
低调的炒饭  ·  笔记类应用- 知乎
1 年前
低调的炒饭  ·  求推荐笔记类应用? - 知乎
1 年前
低调的炒饭  ·  有没有比印象笔记好用的笔记类app? - 知乎
1 年前
低调的炒饭  ·  三款笔记类应用:随时随地,想记录就记录- 知乎
1 年前
低调的炒饭  ·  很多人开始弃用印象笔记了,你还在使用印象笔记吗? - 知乎
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号