GaussDB技术解读系列之应用无损透明(ALT)

gaussdb,技术,解读,系列,应用,无损,透明,alt · 浏览次数 : 19

小编点评

**ALT技术简介** ALT (Application Lossless Transparent) 是华为云GaussDB数据库提供的一种客户端连接转移方案,用于在数据库故障情况下,将业务连接转移到其他可用节点上。 **ALT架构和运行原理** ALT 组件位于数据库集群中,负责检测集群状态的变化并执行连接迁移操作。当某个节点由于故障无法对外提供服务时,GNS 服务会自动迁移该节点上的会话连接到目标节点上。 **关键能力** * 快速应用通知:ALT 提供一种主动消息通知机制,将数据库状态变化推送给应用程序,以便及时处理数据库故障。 * 异步连接管理:ALT 采用异步连接管理机制,允许应用程序在连接建立过程中进行其他操作。 * 集群容灾切换:ALT 可以快速切换到新的节点上,即使数据库处于故障状态。 **ALT 的优点** * 避免数据库故障时,无法及时获取服务端状态,确保 RTO 缩短。 * 提高连接建立效率。 * 确保集群停机维护时的业务连续性。 * 提供数据库故障时的业务连续性保证。 * 确保集群容灾切换时的快速应用通知。 **ALT 示例** **启用 ALT 的步骤** 1. 将 `enableALT` 参数设置为 `true` 在连接 URL 中。 2. 设置 GNS 监听地址。 **演示** 使用两条连接,分别建立普通连接和启用 ALT 的连接。在 switchover 操作完成后,检查数据库连接是否正常使用。

正文

本文作者 :华为云GaussDB研发高级工程师 藏琦

1.背景

GaussDB作为一款企业级分布式数据库,提供了“同城跨AZ双活、两地三中心、双集群强一致”等极致的高可用容灾能力。当某个数据库节点由于故障无法对外提供服务时,为了继续保证数据库服务的可用性,JDBC驱动会将业务后续的数据库连接请求发送到其它可用节点上。但故障发生后,已经与故障节点建立会话的连接无法自动切换到可用节点上,导致使用这些连接的业务单元发生报错。如果业务单元缺少连接重试或业务一致性校验,可能会引起应用中断,甚至业务数据不一致的问题,造成用户严重的业务损失。

因此,华为云GaussDB数据库提供了一种在数据库故障情况下的客户端连接转移方案 —— ALT(Application Lossness Transparent,应用无损透明)。该方案的原理是,当数据库集群的某个节点由于故障无法对外提供服务,若此时集群内还存在其它可用节点,则将故障节点上的会话连接自动迁移到目标节点上,客户端无需再次发出连接请求,仍然可以继续执行数据库操作。整个过程中,客户端应用程序是无感知的,就像是经历了一次略有延迟的SQL请求处理,极大地提高了数据库服务的可用性。

2.技术架构

我们先来看下ALT的技术架构和运行原理:

cke_157.png

图1 - ALT架构示意图

从上图中可以看到,GaussDB集群引入了一个独立组件GNS(GaussDB Notification Service),用于检测获取数据库各节点的实时状态信息。当应用程序调用JDBC接口首次向集群中的任意节点建立连接时,JDBC驱动会与GNS服务建立集群状态订阅链路。当GNS检测到集群状态发生变化,会通过订阅链路将状态变化事件发送给JDBC驱动,事件处理线程收到任务后,再通过集群连接管理器中保存的引用副本对受到影响的连接进行管理和迁移。

GNS组件采用的是多节点对等多活的部署方式,每个GNS服务都拥有集群的全量状态数据,JDBC驱动只需要与其中任意一个GNS建立订阅服务,就可以管理应用程序在该集群所有节点上的连接。

3.关键能力

在了解了ALT的整体架构和运行原理之后,我们再来看看它具备哪些关键能力,这些能力可以为客户带来什么样的业务价值。

  • 快速应用通知

ALT提供了一种数据库状态变化的主动消息通知机制。JDBC驱动通过GNS服务来订阅业务所用数据库集群的状态,当集群中的节点发生状态变化时,GNS将变化事件推送给JDBC驱动,后者再根据集群的最新状态对目标数据库上的连接进行管理和迁移。

同时,JDBC驱动也向应用程序提供了集群状态变化的回调函数注册接口。应用程序可以针对某些数据库连接,向JDBC驱动注册状态变化的回调函数。当集群状态发生变化时,JDBC驱动会对注册的函数进行调用,通过注册回调函数,可以很方便地在业务侧实现数据库状态变化的邮件通知、告警平台上报等运维管理操作。

  • 连接无感迁移

当检测到GaussDB数据库发生故障或即将进行停机维护时,JDBC驱动的事件处理线程分析每条受影响的连接,确定是否有满足连接要求的其它数据库节点,如果存在,则将连接迁移至可用节点,并且恢复连接的会话状态信息。在主动停机维护场景下,使用者还可以通过参数来配置等待可用节点出现的连接挂起时长,从而提高集群统一维护场景下的服务可用性。

  • 事务断点续传

连接开启ALT后,JDBC驱动和GaussDB服务端都会跟踪记录当前会话的事务状态信息。如果数据库正在处理SQL请求时发生故障,当连接迁移到新节点后,ALT根据记录的事务状态信息将会话恢复至故障前,事务则从中断的位置继续执行,避免了由于数据库故障导致的业务中断和应用层的数据不一致现象。

ALT特性给客户带来的价值可以总结为:

(1)避免数据库故障时,无法及时获取服务端状态而导致RTO过大;

(2)加速JDBC指定节点类型(targetServerType)的连接建立;

(3)集群停机维护时的业务连续性保证;

(4)数据库故障时的业务连续性保证;

(5)集群容灾切换时的快速应用通知。

4.ALT特性演示

JDBC开启ALT方式

样例:URL=jdbc:opengauss://host1:port1,host2:port2,host3:port3/database?enableALT=true&gns=gns_host1:gns_port1, gns_host2:gns_port2

当应用程序使用JDBC驱动访问GaussDB数据库时,只需要在连接URL中添加配置项enableALT和GNS监听地址即可开启ALT服务。ALT服务的最小订阅粒度是连接级别的,JDBC驱动支持向同一集群同时建立ALT连接和普通连接。

演示场景:

GaussDB集中式集群进行switchover操作时,观察使用ALT连接的SQL请求执行情况。

演示步骤:

应用程序与数据库主节点分别建立普通JDBC连接和启用ALT特性的连接,使用两条连接同时执行下述SQL命令,观察集群完成switchover后,数据库连接是否可以正常使用。

1.客户端发送SQL请求:查看当前访问的数据库实例信息

SQL> show listen_addresses;

2.客户端发送SQL请求:创建和使用数据库对象

SQL> create table alt_test_switchover(mes text);

SQL> insert into alt_test_switchover values('message before switchover');

<-- 集群操作:switchover -->

3.客户端发送SQL请求:使用数据库对象

SQL> insert into alt_test_switchover values('message after switchover');

SQL> select mes from alt_test_switchover;

4.客户端发送SQL请求:查看当前访问的数据库实例信息

SQL> show listen_addresses;

对比结果:

(1)普通JDBC连接:集群进行switchover后,数据库连接断开,应用程序无法再使用该连接发送SQL请求。

cke_158.png

图2 – 普通JDBC连接日志

(2)启用ALT特性的连接:集群进行switchover后,数据库连接自动迁移到新的主节点上,应用程序可以继续使用该连接发送SQL请求。

cke_159.png

图3 – ALT连接日志

GaussDB作为一款企业级分布式数据库,具备五高两易(高可用、高安全、高性能、高弹性、高智能,易部署、易迁移)的核心优势。在满足金融核心业务的可靠性要求方面,GaussDB与工行联创推出了国内首个双集群强一致方案,实现集群级故障完全隔离RPO=0,而全新的应用无损透明方案,又做到了系统故障应用无感知,真正实现了业务7*24小时不中断,为企业带来更极致的高可用体验。

点击关注,第一时间了解华为云新鲜技术~

与GaussDB技术解读系列之应用无损透明(ALT)相似的内容:

GaussDB技术解读系列之应用无损透明(ALT)

当数据库集群的某个节点由于故障无法对外提供服务,若此时集群内还存在其它可用节点,则将故障节点上的会话连接自动迁移到目标节点上,客户端无需再次发出连接请求,仍然可以继续执行数据库操作。

GaussDB技术解读系列之SQL Audit,面向应用开发的SQL审核工具

开发者的技术能力良莠不齐,DBA对数据库知识的局限性导致烂SQL无处不在,而且随着数据库的不断变更或演进,一些好的SQL也可能逐步变成需要优化的烂SQL, 我们要时刻不断地找寻它们的踪迹。

GaussDB技术解读系列:高级压缩之OLTP表压缩

第14届中国数据库技术大会(DTCC2023)上,华为云数据库GaussDB首席架构师冯柯对华为云GaussDB数据库的高级压缩技术进行了详细的解读。

GaussDB技术解读系列:高安全之密态等值

第14届中国数据库技术大会的GaussDB“五高两易”核心技术,给世界一个更优选择专场,华为GaussDB首席安全架构师郭亮详细解读了GaussDB的高安全之密态等值技术。

GaussDB技术解读系列丨运维自动驾驶探索

在第14届中国数据库技术大会(DTCC2023)上,华为云数据库运维研发总监李东详细解读了GaussDB运维系统自动驾驶探索和实践。

GaussDB技术解读丨高级压缩

对于GaussDB来说,在今天引入数据压缩,究竟能够给客户带来什么不一样的价值,是过去一段时间我们一直在思考的问题。

GaussDB技术解读:应用无损透明(ALT)

在第14届中国数据库技术大会上,华为云数据库技术专家徐宜良分享了《GaussDB高可用之应用无损透明》主题演讲,介绍了华为云GaussDB高可用方面的最新成果。

GaussDB技术解读丨数据库迁移创新实践

GaussDB的迁移场景越来越多,也越来越复杂,所以我们会不断地进行探索和创新,让我们的方案更完善,迁移过程更平滑。

技术解读数据库如何实现“多租户”?

本文分享自华为云社区《【GaussTech速递】技术解读之GaussDB多租技术》,作者:GaussDB数据库。 数据库多租技术介绍 随着云计算时代的到来,多租户的概念也逐渐广为人知。“多租户”使得租户之间可以共享物理资源,能够帮助用户节约硬件成本和运维成本,提高资源利用效率。同时,在实现的过程中,

GaussDB(DWS)云原生数仓技术解析

摘要:本文主要介绍GaussDB(DWS)云原生数仓架构、产品能力,帮助开发者快速了解GaussDB(DWS)云原生数仓相关信息与能力。 本文分享自华为云社区《直播回顾 | GaussDB(DWS)云原生数仓技术解析》,作者:胡辣汤。 在本期《GaussDB(DWS)云原生数仓技术解析》的主题直播中