1.计算节点高可用
计算节点是整个分布式数据库的核心模块,计算节点的异常将导致整个系统的瘫痪。这就需要完善的机制保障计算节点的高可用性。
一个分布式数据库系统中包括多个计算节点,它们分别接收业务的SQL请求,并跟数据节点集群建链。计算节点是无状态节点,不持久化存储任何信息,事务快照和元数据信息均从其他模块实时获取,这就可以实现在一个计算节点发生异常时,其他节点无缝接管。任何一个分布式数据库系统,不管业务量的大小,都至少配备两个以上的计算节点,多个计算节点之间互为主备。
计算节点接收到应用的SQL请求后,根据数据存储规则和SQL请求涉及到的数据节点,向全局事务管理器请求事务后向相关数据节点下发SQL请求。计算节点通过全局事务管理器中同一个事务在各数据库节点上的完成情况,统一管理分布式事务,在有数据库节点失败时向其他相关数据库节点发起回滚操作,以保证分布式事务一致性。
计算节点通过多个无节点状态节点部署,实现了该模块的高可用性,不会因单个模块发生异常,影响系统的整体可用,业务能正常发送SQL请求和接收SQL返回结果。
计算节点通过以下方法实现高可用性:
(1)单个计算节点部署监控模块,监控模块实时与计算节点建立心跳消息,在发现计算节点异常时,主动重启计算节点。
(2)计算节点发生异常并重启失败时,管理节点通知其他计算节点接管异常节点的事务信息。对未完全提交的分布式事务,向未提交的数据节点发起回滚操作,确保数据的一致性。
2.数据节点高可用
一个分布式数据库系统中可以包含多个数据节点集群,每个数据节点集群由多个数据节点组成。每个数据节点集群分别存储着一个应用的数据,集群内数据按照切分规则存储在各个数据安全组上。一个数据安全组是一个存储单元,包括主备数据库。数据节点存储应用的数据,并提供数据查询、更新管理等重要功能,数据节点集群的高可用在分布式数据库系统中至关重要,某个数据安全组发生异常,可能直接导致应用服务异常。存储的数据受到损坏无法恢复时,将直接导致核心数据丢失,业务无法恢复,给银行等系统造成无法挽回的损失。
分布式数据库系统在数据节点上部署数据代理模块,负责数据节点的配置更改、复制变更、状态监控、统计上报等。数据代理模块实时监控本节点上的数据库运行情况,并和管理节点建立链接,实时向管理节点上报监控信息,并在本节点数据库运行出现异常时,根据错误类型主动对数据库进行重启或切换到备机数据库,并通知计算节点把SQL请求下发到正常的数据节点上,是应用无感知的进行切换,提高数据节点的自身高可用性。
每个数据节点集群中的数据安全组内主备之间通过数据同步实现数据备份。每个数据安全组有一个主数据库多个备数据库组成,主和备之间是1对多的关系,数据库组内进行数据实时同步,主和备之间保证数据一致性,在备库上数据未同步成功时,主机上的事务无法提交成功,备机数据库数据和主机数据一致,服务也和主机一样正常提供。在此基础上,可以方便的实现数据库的读写分离来提高系统的读写性能。主和备之间是完全可以替代运行,在主机发生异常时,自动切换到备机上提供服务,并建立新的主备数据同步关系。
数据安全组之间数据可以根据分发键Hash存储也可以复制方式存储,对于复制方式存储的数据,相当于进行了多组备份,不会因为每个数据安全组异常导致数据丢失。
综上所述,数据节点集群通过数据库单节点、数据安全组内和数据安全组间的多重机制保障了数据节点集群的高可用性。银行也已在多个应用中实施,如每个应用中一个集群有四个数据安全组,重要数据和系统数据以复制方式存储在多个数据安全组,每个组间进行同步复制。银行应用对数据安全性要求高,组内数据同步采取了一主多备的同步方式,在某个节点发生异常时,另外两个节点完全可以正常对外提供服务,并尽可能的对异常节点进行恢复,重新作为备节点接入系统。
3.全局事务管理节点高可用
全局事务管理节点属于系统运行态的重要网元,没有它将无法进行分布式事务的处理,因此在设计时,全局事务管理器采用多活模式。全局事务管理器逻辑架构图如下:
消息分发模块:负责将收到的外部请求消息根据集群ID转发至相应的消息处理模块。
消息执行模块:负责处理收到的外部请求消息,并进行全局事务ID的维护,同时将内存信息同步至备机模块, 当前激活的全局事务ID集仅创建和释放时需要同步。
数据持久化模块:后台定时将激活的全局事务ID集持久化。如果消息执行模块发生异常,会将大于已持久化的全局事务ID集的所有分布式事务回退,以此保证数据强一致性。
本系统运行态相关的网元施行多活,消息执行模块部署2个及以上节点,其中一个为主消息执行模块,其余为备消息执行模块。不论主节点还是备节点,刚上电启动之时它们都以未定角色运行,并试图与对方建链,建链成功之后就发起主备切换握手。主备切换协议握手成功之后,主节点以活跃模式运行,而备节点则以非活跃模式运行。当心跳链路创建成功后,备是从来都不会发起主备切换握手协议的,这是基于如下强制性策略:
无论何时,当主节点和备节点都正常运行时,永远都是以配置文件中指定的角色来决定主备角色。换句话说,只要主节点存活着,备节点都会自动让位。主节点和备节点间数据实时同步,当主节点全局事务信息更新时发送小时,同步到备节点,备节点接收到同步消息,更新本地的内存数据是持久化数据。
消息执行模块主要流程包括:全局事务ID申请和释放流程,消息执行模块主机宕机重启流程,主备都宕机重启流程,数据持久化。
为了防止系统异常,消息执行模块会定时将激活的全局事务ID集和集群信息全量持久化到本地文件中,并以增量方式实时存储全局事务ID集的变化信息。同时管理模块在做定时备份时,也会从消息执行模块请求全局事务ID集的全量和增量持久化文件。
4.管理节点高可用
管理节点主要负责数据重分布的管理、数据备份与恢复等集群管理流程调度。管理节点包括计算节点管理器(ProxyManager)、元数据管理器(MetaDataServer)、数据库集群管理器和管理控制台(OMM)。计算节点管理器、集群管理器、管理控制台、元数据管理器和数据控制模块均采用成熟的双机冷备机制保证系统的高可用性。
管理节点间数据通过DRBD进行数据实时同步。当将数据写入主节点本地文件系统时,数据还将会被发送到网络中备节点上,以相同的形式记录在一个文件系统中。主节点与备节点的数据可以保证实时同步。当主节点系统出现故障时,备节点上还会保留有一份相同的数据。
实时监控主节点的运行状态,当确认主节点系统异常时,启动备节点,备节点和分布式数据其他相关模块建链提供服务。
最后修改时间:2024-09-27 11:05:50
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




