Polardb代理介绍

代理位于数据库和应用程序之间的网络代理服务,转发客户端的请求到DB,收到DB回包在转发到客户端,提供多种能力,支持:读写分离、负载均衡、一致性级别、连接池、过载保护功能。对外提供地址:主地址和集群地址、自定义地址

1、连接地址:
https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/connection-address?spm=a2c4g.11186623.0.0.44301b63I2VB5b
在这里插入图片描述
2、读写分离
请求转发逻辑参考:
https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/read-or-write-splitting-2?spm=a2c4g.11186623.0.0.39df2328N1C3y1

3、负载均衡策略:
基于活跃请求数:统计连接地址下每个DB节点的活跃连接数
基于连接数:统计连接地址下每个DB的当前连接数
基于库表:根据请求涉及的Database的DB节点的访问权限
基于权重动态负载
主库是否接受读:开启和RO节点一样,承担读请求
Hint使用(优先级最高,不受事务和一致性约束)

事务拆分:PolarDB MySQL版提供了事务写前读拆分(默认值,即原来的事务拆分功能)和事务全(写前读、写后读)拆分两个级别的事务拆分能力:

事务写前读拆分
Proxy会将事务中第一个写请求前的读请求发送到只读节点,从而减轻主节点的负载。
在这里插入图片描述
全(写前读、写后读)拆分
前读拆分对于事务中写之后的读仍然会路由到主节点,这种情况下负载仍然不太均衡,为彻底解决事务带来的负载均衡问题,PolarDB MySQL版推出事务全拆分能力,可以使得事务中的读操作都路由到只读节点且获得正确的结果。进一步减轻主节点的压力
在这里插入图片描述
开启事务语句回包的时候,track当前session的事务id
proxy通过内部同步事务id,使得属于同一会话的不同后端连接上的事务id保持一致,使得只读上能看到当前事务未提交的数据,
track当前session写lsn
有读请求时,proxy通过比较当前会话lsn和各节点当前已同步的lsn,决定一个读请求能否路由到对应节点
受一致性约束,如果ro的lsn不满足的话,写后读请求路由到主库

4、一致性级别
https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/consistency-levels?spm=a2c4g.11186623.0.0.2ce6518fXE0GbZ
polardb采用基于redo log异步物理复制方式在主库与只读库间做数据同步,主库更新后,相关的更新会apply到只读库

最终一致性:不保证查询结果正确性,性能最好

会话一致性:只能满足一个会话内的请求是一致的,不能保证不同会话间的一致性,当所有读节点都无法满足一致性要求时,会把该读请求路由到主库,

在这里插入图片描述
1、主库执行update返回OK包track写lsn得到session lsn
2、ro节点应用主库的redo log,更新buffer pool 更新lsn得到ro synced lsn(ro节点会每隔2ms推送lsn)
3、比较session lsn和synced lsn,大于session lsn则请求到该ro节点

全局一致性:保证正确性,性能最差
每个读请求到proxy,先去主库探测一下最新LSN位点、作为该请求期望的lsn,作为该请求期望的lsn,当有只读节点的lsn大于期望的lsn,再将请求到该ro节点,那么就能保证该请求能够读到这个请求发起那个时刻已完成的更新,如果在设置的超时时间内没有满足的ro,则路由到主库或者报错

5、连接池
会话级连接池
事务级连接池

会话级连接池
当用户的连接断开的时候,代理会判断当前连接是否是一个idle的连接,如果是idle的话,那么代理会将代理与DB之间的连接保留在连接池中一段时间,如果这时用户新的连接过来的话,就会直接先从连接池里获得(命中条件:用户名,客户端ip,dbname等)如果有的话就直接使用,从而减少与DB的建连开销,如果没有可用的连接的话,则走正常流程,重新与DB建立一个连接,
在这里插入图片描述
话级连接池并不能减少数据库的并发连接数。该优化只能通过降低应用与数据库的建连速率来减少MySQL主线程的开销,从而更好地处理业务请求,但是连接池里空闲的连接会短暂占您的连接数。

事务级连接池
主要用于减少业务的连接数、以及减少短连接场景下频繁新建连接带来的负载、客户端可以与代理建立大量连接、而同时代理到DB只创建少量连接

当用户发送请求时、代理将从连接池中选取符合条件的()连接进行请求到DB、并在当前事务结束后将连接放在连接池
在这里插入图片描述
未开启事务级连接池时,每条由客户端发起的连接都需要在后端主节点和所有只读节点上各创建一个对应的连接。,开启事务级连接池后,当客户端发送请求时,会先与PolarDB代理建连,代理不会马上将其与后端数据库建连,而是先从事务级连接池里查找是否存在可用的连接(判断是否为可用连接的条件:user、dbname和系统变量这3个参数值是否一致)。若不存在,代理会与数据库创建一个新连接;若存在,则从连接池里直接拿出并使用,并在当前事务结束后将该连接放回事务级连接池,方便下个请求继续使用

连接池的选择
1)若业务使用的多为长连接且连接数较少,或者业务本身已具备较好的连接池,那么您可以不使用PolarDB的连接池功能。

2)若业务使用的连接数较多(如连接数需求上万)或使用的是Serverless服务(即连接数会随着业务端服务器的扩容而线性增加),且确认您的业务不涉及上述事务级连接池使用限制的场景,那么您可以选择开启事务级连接池。

3)若业务使用的纯短连接,且业务使用场景中包含上述事务级连接池使用限制的场景,那么您可以考虑开启会话级连接池。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Halcon3D倾斜平面矫正至水平面

前言 在相当多的3d检测中,由于各种因素的干扰,我们所检测的平面通常并不是一个水平面,或者被检测的面不是水平面的情况。尤其是在倾斜面的缺陷检测和平面度检测中,使用被测面与拟合基准面进行计算很难做到准确的定位到缺陷的情况…

全数字化病理,“根深”才能“叶茂”

现代医学之父William Osler曾言:病理学乃医学之本。 作为研究人体疾病发生的原因、发病机制、病理变化以及疾病过程中机体的形态结构、功能代谢变化和病变转归的一门基础医学科学,病理学一直被视为基础医学与临床医学之间的“桥梁学科”,在医…

分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别

分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别 目录 分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别分类效果基本介绍模型描述程序…

Linux文件与进程交互的窥探者lsof

lsof 是一个 Linux 和 UNIX 系统中的实用工具,用于列出系统中打开文件的所有信息。这个名字代表 “List Open Files”,但它也可以显示进程相关的其他信息,如: 打开的文件描述符列表 打开网络连接的列表 被进程使用的信号和内核对…

HarmonyOS实战开发-为应用添加运行时权限

介绍 通过AbilityAccessCtrl动态向用户申请“允许不同设备间的数据交换”的权限,使用设备管理实例获取周边不可信设备列表。 说明: 查询周边不可信设备之前,请确保本设备与周边设备未进行配对。如果已配对,则恢复出厂设置之后重新…

Python中的全栈开发前端与后端的完美融合【第160篇—全栈开发】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python中的全栈开发:前端与后端的完美融合 全栈开发已成为当今软件开发领域中的…

Linux权限提升总结

几个信息收集的项目推荐 运行这几个项目就会在目标主机上收集一些敏感信息供我们参考和使用 一个综合探针:traitor 一个自动化提权:BeRoot(gtfo3bins&lolbas) 使用python2运行beroot.py就可以运行程序,然后就可以收集到系统中的大量信…

景顺长城:《重塑与创造——2024 ai+洞察报告》

近期,景顺长城发布了《重塑与创造——2024 ai洞察报告》,报告深入探讨了人工智能(AI)产业的发展现状、未来趋势以及对各行业的潜在影响。报告认为,AI产业发展是多层次、多浪潮的,目前我们处于第二阶段但未来将持续伴随…

企业案例:金蝶云星空集成钉钉,帆软BI

正文:在数字化转型的大潮中,众多企业开始探索并实践高效的数据流转与集成,以提升内部管理效率和决策质量。本文将以某企业为例,详细介绍如何通过将钉钉审批流程的数据实时同步至金蝶云星空,并进一步在帆软报表平台上实…

缺省参数

缺省参数 缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实 参则采用该形参的缺省值&#xff0c;否则使用指定的实参。 void Func(int a 0) {cout<<a<<endl; } int main() {Func(); // 没有传…

力扣刷题Days31-2.两数相关(js)

1&#xff0c;题目 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;…

基于ssm的企业销售人员培训系统(java项目+文档+源码)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的企业销售人员培训系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 企业销售人员培训系统主要…

ios应用内支付

用uniapp开发iOS应用内支付 准备前端代码服务器端处理如果iOS支付遇到问题实在解决不了&#xff0c;可以联系我帮忙解决&#xff0c;前端后端都可以解决&#xff08;添加的时候一定要备注咨询iOS支付问题&#xff09; 准备前端代码 获取支付通道 (uni.getProvider) uni.getPr…

idea端口占用

报错&#xff1a;Verify the connector‘s configuration, identify and stop any process that‘s listening on port XXXX 翻译&#xff1a; 原因&#xff1a; 解决&#xff1a; 一、重启大法 二、手动关闭 启动spring项目是控制台报错&#xff0c;详细信息如下&#xff…

跨境独立站pandabuy cssbuy 跨境Micro微店商品详情

跨境独立站运用微店详情API接口&#xff1a;实现高效运营与营销新突破 在全球化日益加速的今天&#xff0c;跨境独立站成为越来越多商家拓展海外市场、提升品牌影响力的关键平台。为了更好地满足用户需求&#xff0c;提升用户体验&#xff0c;跨境独立站需要不断引入先进的技术…

PostgreSQL的学习心得和知识总结(一百三十五)|深入理解PostgreSQL数据库之查找 PostgreSQL C 代码中的内存泄漏

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

前端学习<三>CSS进阶——03-网页设计和开发中,那些困扰大神的关于字体的知识

前言 我周围的码农当中&#xff0c;有很多是技术大神&#xff0c;却常常被字体这种简单的东西所困扰。 这篇文章&#xff0c;我们来讲一讲关于字体的常识。这些常识所涉及到的问题&#xff0c;有很强的可操作性&#xff0c;都是在实际业务中真实遇到的&#xff0c;都是需要开…

Xinstall带你解锁新姿势:网页直接拉起iOS应用!

在移动互联网时代&#xff0c;用户体验至关重要。对于iOS用户来说&#xff0c;能够在使用网页时直接拉起对应的应用&#xff0c;无疑会大大提升操作便利性和效率。然而&#xff0c;要实现这一功能&#xff0c;往往需要繁琐的开发流程和高昂的维护成本。这时&#xff0c;一个名为…

【JavaWeb】Day31.SpringBootWeb请求响应——分层解耦(二)

3.IOC&DI 3.1 IOC&DI入门 完成Controller层、Service层、Dao层的代码解耦 思路&#xff1a; 1. 删除Controller层、Service层中new对象的代码 2. Service层及Dao层的实现类&#xff0c;交给IOC容器管理 3. 为Controller及Service注入运行时依赖的对象 Controller程序…

服务注册与发现

服务注册与发现 传统单体架构与分布式架构 单体架构的不足&#xff1a; 所有的服务都集中在一个应用中&#xff0c;一个服务出错&#xff0c;可能导致整个系统宕机随着用户越来越多&#xff0c;程序承受的并发越来越高&#xff0c;单体应用的并发能力有限。数据库瓶颈&#x…