视频 -AliSQL 和读写分离基本原理(二)| 学习笔记

简介: 快速学习视频 -AliSQL 和读写分离基本原理。

开发者学堂课程【企业运维训练营之数据库原理与实践课程 :视频 -AliSQL 和读写分离基本原理(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1201/detail/18284


视频 -AliSQL 和读写分离基本原理


三、读写分离

1、读写分离简介

在少写多读的应用场景下,如果原来的数据库没有设置读写分离,只是一个主实例,在少写多读的应用场景下大量的读操作会造成巨大的读取压力,进而影响到业务。用读写分离这个功能可以是查询的这些请求自动的转换到只读实例上,写请求转化到主实例上,各司其职,实现读写分离的自动分流来减轻主实例的压力。通过这样的设置,会给数据库带来非常大的优势,读写分离会提供统一的读写分离的地址变用,如果不开通读写分离的时候,假如需要配置读和写的操作,会需要在应用程序里面分别配置一个主实例,和每一个只读实例连接地址,这样维护的地址会非常繁杂,容易出错。RDS 读写分离的功能第一个就是会提供一个代理地址,连接这个代理地址之后可对主实例和只读实例进行读写操作,请求是自动转发的,写请求转发到主实例上,读请求转发到只读实例上,降低了维护成本。第二个是原生链路支持可以提高数据库性能,减少维护成本。第三个是可以设置只读实例的权重和阈值,可以符合在多场景下进行使用。第四个可以进行实例健康检查,提升数据库性能的可用性。在设置读写分离的时候,为主持与创建只读实例的时候,建议客户至少创建两个只读实例,避免只读实例的单点故障。

2、只读实例

image.png

(1)高可用实例一般有一个主实例和一个备实例,都是在同一个可用区,同一个 region 下。备实例是针对高可用性这个范畴来讲,当主实例经过一些意外的因素,例如宕机或者是实例卡住,必须要进行 aj 的切换,这个时候备实例会立马切换为主实例,继续为客户提供服务。只读实例可以跟主实例在不同的可用区,只读实例主要承担一些只读请求,业务端可能发来一些 select 查询的请求,发到只读实例上。只读实例也有高可用的架构,也可以有只读实例的备实例,这是只读实例的作用。灾备实例一般要求高可靠或高可用性的客户场景可能在其他地域,比如说原来的主实例和备实例在北京 region,希望在极端的情况下北京 region 的所有数据库无法提供服务的时候,备 region 可以继续提供服务,灾备实例往往建在备 region 里面,灾备实例也可以有自身的主实例和备实例。

(2)在对数据库有少量写请求,但有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,可以创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求,增加应用的吞吐量。

只读实例、备实例和灾备实例三者之间的区别:

•只读实例和主备实例在同一地域,可以在不同可用区;备实例和主实例在同一个地域;灾备实例和主备实例在不同地域。

•只读实例可以根据需要创建最多10个;备实例数量是固定的1~2个,高可用版1个,三节点企业版(原金融版)2个;灾备实例是不同地域的一主一备。

•只读实例创建并设置读权重后就会持续提供服务;备实例和灾备实例在主实例正常运行时都不会提供服务。

3、数据库代理

RDS MySQL 数据库代理又分独享代理和共享代理,是位于数据库服务端和应用服务端之间的网络代理服务,用于代理应用服务端访问数据库时的所有请求,具有高可用、高性能、可运维、简单易用等特点。独享代理还提供自动读写分离、事务拆分、连接池等高级功能。

image.png

数据库代理适用的有以下几个场景,第一个是事物内有大量请求导致主实例负载过高的应用场景,这时候可能需要把一些只读的请求拆分出来;第二个是连接处过多导致主实例负载过高的场景;第三个是短连接为主的业务;第四个是纯只读或隔离需求业务。

(1)数据库代理—事务拆分

•默认情况下,RDS数据库独享代理会将事务内的所有请求都发送到主实例以保障事务的正确性,但是某些框架会将所有请求封装到非自动提交的事务中(通过 set autocommit=0;关闭自动提交),导致主实例负载过大,可以使用事物拆分的功能将事物里面只读的请求发送到只读实例上,来提升性能。但是也有一些要求,第一点显示事物在存储过程或事物块里面用 begin 或 start transaction 标明这是一个显示的事物,这时候是暂时不支持拆分的;第二点是可能某些业务对全局一致性有要求,把事物拆分后将不满足全局一致性,这时候事物拆分是受到限制无法使用的。

•事务拆分功能默认开启,在默认的 Read Committed 隔离级别下,当 RDS 关闭事务自动提交后,仅会在发生写操作时才正式开启事务,正式开启事务前的读请求会通过负载均衡模块分流至只读实例。

image.png

(2)数据库代理—设置连接池

事务级连接池:

事务级连接池主要用于减少直接连接到数据库的业务连接数,以及减少短连接场景下频繁建连带来的负载。开启事物级连接池以后客户端与独享代理之间可能会存在上千个连接,但是代理与数据库后端可能存在几十或几百的连接,主要是客户端与连接池的连接比较多。独享代理本身没有最大连接数的限制,连接数的限制主要是在后端数据库的节点规格决定的,没有开启事物级连接池的时候,每条由客户端发起的连接都会在后端主节点和所有只读节点各创建一个对应的连接。当开启事务级连接池的时候,客户端发送请求的时候会先与独享代理进行建联,连接会去判断是否有可用的连接,如果不存在的话,代理会与数据库会创建一个新的连接,如果存在的话直接从连接池里面拿走并使用,这样会减少频繁建联的过程。

image.png

(3)数据库代理—设置连接池

会话级连接池:

会话级连接池适用于短连接场景。会话级连接池主要用于减少短连接业务频繁建立新连接带来的实例负载。当某客户端连接断开时,系统会判断当前连接是否为闲置连接,如果是闲置连接,系统会将该连接放到代理的连接池中并保留一小段时间。当客户端重新发起新连接时,若连接池中有可用的连接(命中的条件包括 user、clientip 和 dbname等),则可直接使用,从而减少与数据库的建连开销。如果连接池内没有可用的闲置连接,则走正常连接流程,与数据库重新建立新连接。

image.png

会话级连接池不能减少数据库的并发连接处,而是通过降低应用和数据库建立的连接速率来减少 MySQL 的开销,更好地处理业务请求,但是连接池闲置的连接会短暂的占用客户端的连接数,而且会话级连接池不能够解决由于存在大量 MySQL 导致的堆积的问题,这种情况下需要客户首先去解决 MySQL 的问题。基于以上数据库连接池的不同的方式,选择连接池第一点,事物级连接池的应用场景是业务的连接数比较多,可能连接数有上万或者更多,或者使用 Seventies 的服务,连接数会随着业务端服务器的扩容而线性增加,建议使用事物级连接池。如何选择会话级连接池,业务上如果是纯短连接或者短连接占比比较大,业务场景可以考虑使用会话级连接池。还有一种情况是业务的使用多为长连接,且连接数比较少,或者业务本身已经具备较好的连接池,就不建议再使用 RDS 的连接池。

(4)数据库代理—使用 Hint 语法

在执行 SQL 的方式可以在前面加上 Hint 的操作,让 SQL 语句发往不同的数据库节点。

image.png

限制:Hint 语法仅支持读写分离地址,不支持只读地址

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
11月前
|
人工智能 安全 Serverless
AgentRun Sandbox SDK 正式开源!集成 LangChain 等主流框架,一键开启智能体沙箱新体验
AgentRun Sandbox SDK 开源发布,基于Serverless架构提供安全、弹性的智能体运行环境。支持LangChain、AgentScope等主流框架,内置代码解释、浏览器操作等多模态沙箱能力,助力Agentic AI快速落地,让开发更轻盈,云端更安全。
|
消息中间件 Kafka 网络安全
Conduktor连接阿里云Kafka集群
Conduktor是一款商业化的Apache Kafka Connector,可以使用该工具连接Kafka Cluster,方便对集群信息如Topic,Group,Partition,Offset能信息的在线管理的查看,本文主要在Windows10环境下演示该工具的下载以及如果连接阿里云上的Kafka集群。
2511 0
Conduktor连接阿里云Kafka集群
|
编解码 数据挖掘 Windows
Office 2021 for Windows 简体中文 官网下载地址
Microsoft Office 2021 Pro Plus专业增强版包括对Word、Excel、PowerPoint、Outlook、OneNote、Publisher、Access、Teams的更新。
2564 0
|
人工智能 弹性计算 算法
一文解读:阿里云AI基础设施的演进与挑战
一文解读:阿里云AI基础设施的演进与挑战
|
人工智能 定位技术
生成式人工智能认证(GAI认证)没啥用?
生成式人工智能(GAI)正以前所未有的速度改变工作与生活,而GAI认证作为专业能力的“官方认证”,不仅是技能提升的系统路径,更是职业竞争力的有力背书。它涵盖模型开发、提示工程优化及伦理合规等核心内容,由全球教育机构培生集团推出,现已有中文版课程与认证体系。尽管有人质疑其价值,但掌握这一技术或将成为未来职场的关键优势。别让质疑阻挡你的步伐,GAI认证是通往智能化时代的通行证。
|
监控 搜索推荐 数据可视化
数据指标体系搭建方法及经验
在当今数据驱动的商业环境中,构建一个有效的数据指标体系成为了企业成功的关键。数据指标体系是一套精心设计的测量工具,用于评估和指导企业的业务活动。通过这个体系,企业能够转化庞大、复杂的数据为有价值的洞察,从而指导决策,优化运营,增强竞争力。
1262 0
数据指标体系搭建方法及经验
|
机器学习/深度学习 人工智能 自动驾驶
2024.10|AI/大模型在机器人/自动驾驶/智能驾舱领域的最新应用和深度洞察
本文介绍了AI和大模型在机器人、自动驾驶和智能座舱领域的最新应用和技术进展。涵盖多模态大语言模型在机器人控制中的应用、移动机器人(AMRs)的规模化部署、协作机器人的智能与安全性提升、AR/VR技术在机器人培训中的应用、数字孪生技术的优化作用、Rust语言在机器人编程中的崛起,以及大模型在自动驾驶中的核心地位、端到端自动驾驶解决方案、全球自动驾驶的前沿进展、智能座舱的核心技术演变和未来发展趋势。
1624 2
|
Android开发
Android 支持TP触摸唤醒
Android 支持TP触摸唤醒
613 0