《Serverless数据库技术研究报告》——二、 Serverless数据库关键技术及应用场景——(一)Serverless数据库关键技术(1) https://developer.aliyun.com/article/1223727?groupCode=polardbforpg
2、高可用
云上环境中,多个用户的数据库实例部署在一台物理机上,并通过资源隔离保证其相互间不受影响。在Serverless场景下,统一物理机上运行的数据库实例可能都需要资源扩容,此时有可能遇到物理机资源无法满足所有扩容请求的场景。如果选择预留足够多的资源以应对每一个数据库实例可能的扩容请求,这与Serverless的成本初衷背道而驰。因此,当本地资源不足时,我们需要将计算节点实例迁移到资源充足的物理机上部署。当实例发生跨设备迁移时,将产生两个连带问题,即迁移时间长和用户业务中断受损。为解决上述问题,云原生Serverless数据库需要具备高效的高可用能力。高可用能力可以总结为以下四部分:云原生数据库系统自动切换能力、RO节点预热状态的快速切换能力、用户链接保持与事务保持能力。
(1)自动切换能力
当前业界的云原生数据库一写多读架构中,主节点的切换、旧RO(Read Only,只读)节点链接到新主节点一般都需要外部模块进行决策与下发任务。该模块可能需要下发主节点停止任务、更新该模块必要拓扑信息、升级选定RO节点。这是一个耗时的任务流,并且有外部模块元信息和数据库集群不一致的风险。因此云原生数据库内核需要在数据库集群发生切主或者RW(读写)节点崩溃时,某个RO节点自动竞争成为新主,其余RO快速自动链接到新主节点。当前
业界主要有两种解决方案,一是集群各个节点通过一致性协议,如Paxos、Raft选出一个新主的去中心化解决方案;二是利用云原生数据库中心化共享存储的分布式锁解决方案,如PolarDB Voting Disk Service解决方案。两种方案的核心都是集群节点通过某种协商机制,实现集群主节点的自我维护。
(2)热备节点:全局预热系统
在拥有集群主节点自我维护能力以后,进一步地,用户希望备RO节点选主成为新主以后,能快速完成RO至RW角色切换。云原生数据库引入了热备节点的角色。热备节点是一个资源弱化版的RO节点,同时也是一个更接近主节点、随时准备接班的灾备节点。相比普通的只读节点,它保留有限的读服务,预留更多的CPU、内存资源去优化切换速度。有了热备节点的全局预热系统加持,云原生数据库Serverless可以更快地完成切换,进一步降低用户业务的受损时间。
(3)链接保持
在缩短了切主时间以后,数据库系统快速恢复了服务能力,可以开始执行新的事务。但在切换过程中需要保持用户会话不中断,否则用户将明显感知到实例迁移而发生应用连接闪断、新建连接短暂失败、存量事务回滚等问题。因此,Serverless还需要解决在跨机迁移过程中的链接中断问题。
对于迁移时的空闲链接,可以引入中间件Proxy,利用Proxy的链接技术保证用户链接不中断。Proxy作为流量入口,是当前云原生数据库的基础组件,负责云原生数据库一写多读的负载均衡,接管理、高可用、安全防护。对于预期内的跨机迁移场景,首先管控组件会通知云原生数据库Proxy节点。Proxy节点收到通知后, 开始进入高可用模式, 在此模式下,新的建立链接请求被接受后, 会开始被阻塞并等待后续释放通知;已经建立的链接, 代理会阻塞新请求的发送。当代理探测到新的节点已经恢复并且加入到代理之中后,代理会和新节点建立链接, 并同步环境变量 (如字符集、用户变量、模式等信息)。随后, 所有被阻塞的前端链接会被放行, 请求会继而发送到后端数据库。
(4)无损事务续传
Proxy的链接保持技术只能处理切换时没有事务执行的空闲链接。对于切换瞬间正在执行的事务,一方面Proxy无法从数据库内核中找回原有事务的上下文,另一方面新主会将未提交的悬挂事务回滚,释放这些事务持有的锁。因此在这种场景下,链接保持就会失效。数据库内核还需要提供无损事务续传能力以解决这一缺陷,例如阿里云PolarProxy+PolarDB内核事务续传解决方案。在Proxy连接保持的基础上,对于切换时正在执行的事务,内核在切换以后会维护事务一段时间。在此段时间内,Proxy利用保存的用户连接信息与内核沟通,将事务恢复到切换时SQL语句的执行状态。如下图所示,用户如果在执行事务1的更新语句时,发生了RW节点切换,Proxy会在内核切换完成后,在内核找到事务1的信息并重新执行更新语句。在用户视角,整个主备切换过程中,应用程序只感知到一条更新语句变成了慢SQL,但不会接收到连接报错或事务报错,后续应用层就不需要显式执行连接重连和事务重试,事务续传技术彻底解决了用户的感知问题。
集群自动切换+热备+无损事务续传的跨机迁移解决方案为用户
管控侧提供了更高的自由度,使更高效的资源管理方案成为可能。
《Serverless数据库技术研究报告》——二、 Serverless数据库关键技术及应用场景——(一)Serverless数据库关键技术(3) https://developer.aliyun.com/article/1223658?groupCode=polardbforpg