浅谈分布式数据库关键技术研究与应用

2023-09-29 01:28熊紫腾杨立行
江西电力 2023年4期
关键词:分片全局分布式

唐 赫,熊紫腾,刘 松,杨立行

(1.广东佛山供电局,广东 佛山 528000;2.国网江西省电力有限公司供电服务管理中心,江西南昌 330096;3.上海电力大学,上海 200090)

0 引言

现在国内大部分信息系统的数据存储方式是采用“小型机+高端数据库+高端磁盘存储阵列”的集中方式来实现。随着对接的应用系统越来越多,数据源越来越丰富,数据的运算量越来越大,数据库服务器的压力也日益增长,从而引起网速慢、卡顿的现象。针对这一情况,文中介绍“分布式数据库集群系统”,通过对分布式数据库的相关核心技术进行研究分析,重新设计、布置并实现数据库服务器的高性能。分布式数据库集群系统由服务器集群、中间件、分布式系统组成,配置并行计算等多元技术构建的基础型软件,为海量数据的存储、计算、检索和查询提供强劲的支撑和动力。

1 系统原理和技术特点

1.1 分布式数据库概念

分布式数据库的各组信息数据保存在网络的不同节点上,在逻辑上这些节点同属于一个系统,即在逻辑上分布式数据库是一个整体,但在物理上分布式数据库又具有分布性。因此,在逻辑上分布式数据库就称为全局数据库,物理上又有局部数据库的概念。分布式数据库系统由2 部分组成:一是分布式数据库;二是分布式数据库管理系统[1]。分布式数据库管理系统作为分布式数据库的管理软件,专门负责分布式系统中数据的存储、读写、逻辑的一致性和完备性的管理。同时由于数据分布在系统的各个节点,因此在管理机制上还必须统筹协调计算机网络的通信规范、协议、调度和分布管理。

1.2 分布式数据库架构

采集系统分布式数据库采用“主站-子节点”两级部署模式,主站侧系统主要承担数据管理、调度管控、业务应用数据发布、统一接口交互、运行管理监测等任务,子节点主要负责采集设备运维管理、用电消息数据采集、用户计量监测、采集任务的执行、计量异常诊断等营销采集任务,完成指令传送、交互数据共享、业务应用互动、数据传输等服务支撑。系统节点之间采用专用的信道,实现高效、灵活、安全的数据交互体系,支撑业务数据的抽取、任务策略的下发、微网应用的管理、业务需求的收集、采集任务的管控以及核查验证等应用场景。采集系统分布式数据库物理架构运用专用服务器或物理独立的异地数据备份资源,目的是为了实现分域管理、数据共享、高效互通、跨域安全的构想,主站侧系统物理上独立布置,子节点侧系统各自独立分布在全省网络的各节点上,分别为采集系统的各项业务、数据交互提供数据信息支撑,对外交互接口都分别设置了安全隔离带,确保系统安全稳定运行。物理架构如图1所示。

图1 采集系统分布式数据库物理构架图

1.3 分布式数据库各类节点的分工

1)应用类,主要业务内容包括前端框架、微服务框架、部署框架、用能优化管理架、采集运维、计量在线监测、用户负荷监测、控制监测、线损监测、配电监测、用电监测、报表工具、图形工具、接入管理、镜像管理、容器管理、服务管理等。

2)计算类,主要负责采集数据队列、采集缓存数据、异常诊断、批量计算、线损计算、实时计算、负荷计算、数据分析、负荷预测、电量预测等业务。

3)存储类,主要负责缓存库、缓存数据、实时库、实时切面、采集数据、报文数据、采集全量库、标签数据、业务分析库、档案数据、分析数据及管理。

4)通讯类,主要负责设备连接、设备接入、安全认证、数据采集、规约解析、任务执行、通信代理、数据召测等业务。

1.4 分布式数据库的技术指标

1)分布式数据库的整体要求

(1)系统基于分布式结构布置,具有可弹性拓展的能力,某一节点的故障不会影响其它性能。

(2)节点故障恢复的时长应≤2 h。

(3)系统具备容灾、灾备自动切换的能力,系统核心业务不发生停顿中断。

2)分布式数据库的应用要求

(1)系统具有完整的应用服务治理体制。

(2)应用页面弹出的时间≤1s。

(3)数据访问响应时间≤3s。

(4)系统升级过程中不能发生业务中断。

3)分布式数据库的计算、存储要求

(1)可满足采集全量数据的存储需求。

(2)具备各项业务实时计算、大规模、大批量数据计算的能力。

(3)能及时、实时地满足各类采集业务的统计、分析、计算。

4)分布式数据库的通信能力

(1)能满足数据按需采集需求。

(2)能实现分钟级的实时数据采集能力。

(3)具有命令优先级动态调控的功能。

(4)在信道及设备正常的情况下,业务指令交互响应时间≤3 s。

(5)具备支持全量终端并发上报报文,可快速解析的能力。

5)数据信息交互的需求

(1)可完成异构数据的批量同步,能满足不同系统间数据申请。

(2)交互数据的实时发布延时≤5 s。

(3)外部系统数据交互的响应延迟≤5 s。

1.5 分布式数据库的基本特点

分布式数据库所具备的四个基础特点:

1)物理上具有分布性:分布式数据库的信息数据是保存在系统网络的多个节点上的,而不是存储在一个站点上。

2)逻辑具有整体性:虽然分布式数据库系统数据信息分布在系统网络的各个节点上,但在逻辑上,它们均由分布式数据库管理系统实施统一协调管理,被全局所有用户共享,在系统逻辑上是一个统一的整体。

3)站点具备的自治性:每一个节点上的信息数据均可由当地本土的局部数据库管理系统进行自治协调管理和问题自治处理,达到各节点的自应用。

4)节点间协同协作性:虽然各个站点都具有高度的自治能力,但又能相互配合,形成一个整体。

1.6 分布式数据库的独特特点

1)数据的独立性:分布式数据库系统中存储的数据具有逻辑独立性、物理独立性,还有数据的分布透明性的特点。

2)自治与集中相统一的结合机制:系统中每个节点上的信息均可供该节点所有用户共享,业务流程上由本地数据库管理系统进行管理;具有全局权限的用户可在全系统范围内共享所有节点的数据,全局的数据共享由系统集中的控制流程进行统一控制[2]。

3)增大数据的冗余度:要实现分布式数据库系统的可靠性、可用性和系统性能的提高,可通过扩大数据冗余度来实现。可采用在多个节点上保存数据副本的方式来保证可靠性的提高,即使系统的某一节点发生故障,系统可以不受影响继续正常工作;同时系统会自动将最近的数据副本作为备份继续完成操作,这样既减少通信频次,又确保了整个系统的性能。

4)事务管理的分布性:事务管理的分布特点也同时包括事务的执行与事务的管理两方面的分布性。系统将一个全局的事务进行分解,将任务分解成多个子任务,分配给各节点执行。同理,事务诸如隔离性、原子性、持久性、一致性、包括事务的恢复等其它特性,也同样具有分布性的特点。

2 分布式数据库关键技术

2.1 分布式集群数据的一致性和高可靠性技术

分布式集群数据的一致性是指数据节点分组间的数据一致性。数据一致性可采用数据的复制技术来完成,主要有三种方式:

1)同步模式。将主数据节点的数据可用性设置为最高级别,当网络系统故障,或备用数据库不能使用时,系统会自动挂起主节点数据,以确保主数据节点和备用数据节点之间高度一致。在这种情况下,日志管理流程就自动将日志记录从主数据节点发送到其备份数据库保存,在没有收到数据发送成功的消息之前,主数据库的事务就不会提交。当主数据节点发生故障时,由于所有需要上交的事务都已经从主数据库同步到备用数据库,所以根本就不会发生数据丢失情况。

2)纯异步模式。在主数据节点的日常、正常操作过程中,无需对数据是否已经同步到备用数据节点进行确认,就直接执行本地操作,因此主数据库的性能根本不受该种操作的影响。即使备用数据库发生故障也不会引起主数据库挂起;当备用数据库恢复可用的时候,主、备数据节点将继续同步数据。在一些应用场景中,如对于大批量数据更新的事务,因为只有采用这种异步的方式,才能完成较好的大数据量长事务支持,不会因为从节点的复制而影响主节点后续写事务的执行。

3)半同步模式。半同步模式也为主数据节点提供了较高级别的保护。相比同步模式,若备用数据节点不能用时,主数据库也不挂起,而是降级为最大性能模式运行。主数据节点仍将继续运行,但主数据库和备用数据库之间就可能出现数据不一致的现象。在备用数据节点可用的情况下,主数据节点的运行状态为同步模式。

2.2 分布式数据库弹性计算技术

分布式数据库的自动分库、分表就是数据的分片。分布式数据库的最为显著的特征就是数据的分片。在分布式数据库中,全局数据库的逻辑分割而产生各节点的各个局部数据库通过逻辑组合而成全局数据库,各节点的局部数据库。存放在分布式数据库中的单位就是存放数据的逻辑片段。数据分片的总体逻辑如图2所示。

图2 数据分片的总体逻辑

1)基于表的水平拆分策略

水平分片主要解决的问题是单表中数据量增加产生的压力。水平切分的作用,就是将一个数据表按照约定的规则,将数据分散到不同表或者数据库里。水平切分不会破坏数据表之间的关系,不仅可以将有关系的数据表放在同一个库里,既不会对应用端的业务需求产生影响,也能从根本上分解大数据量的难题。水平分片路由算法主要对关键字段通过Hash/Range/List等各种拆分方式,从设计上应支持用户可自定义的拆分算法。

2)基于字段的垂直拆分策略

垂直拆分类似于把表按模块划分到不同数据库。垂直分片把全局关系的属性集分成若干子集,形成几个垂直片段。在垂直划分时,每一个分片都是原始关系中所有数据列的一个子集合。全局关系屏蔽了数据的物理分布,提供了数据分布的又一个透明性。

3)基于E-R模型的分片策略

传统的数据拆分方式都是基于表格的,每张表数据都按照拆分规则被独立的拆分到各数据节点上。基于E-R 模型的分片策略针对的是拆分表存在E-R关联的。将一组有关联关系的表分组进行存放。每个Table Group 由主表和子表组成。子表的存储依赖于主表,在物理上紧密相连。

4)基于全局表的分片策略

全局表通常是系统的字典表,指那些变动不频繁、数据规模小、却又与很多业务表有关联关系的表。针对这一类表的分片策略主要包括全局表的插入、更新操作会在各个数据节点上执行,通过事务来保障数据的一致;全局表的查询只从一个数据节点读取;全局表可以跟任意表做表连接操作。

2.3 同步复制的影响

业务连续性,是指分布式数据库的使用者,能否一直访问和操作数据库,当在数据节点主备切换的时候,会不会影响到分布式数据库的业务连续性。由于主备上存储了冗余的数据,数据库性能和只有一份数据相比较,所以主数据库所负担业务压力的能力会受到一些影响。

1)数据一致性与业务连续性(见图3)

同步方式是唯一不通过数据补偿即能保证数据一致性的手段,即在主节点突然完全不可用时,同步方式能保证数据不丢失。

异步方式因为数据复制存在可能延迟无法在上述场景保证数据不丢失,所以为提升数据一致性需进行数据补偿,补偿数据时需要一定的时间。因此异步方式在业务连续性和数据一致性之间存在取舍。

2)数据一致性与数据库性能(见图4)

图4 数据一致性与数据库性能的关系

同步方式会有相对较大的数据库性能损失,换来的是主备数据完全一致,不会产生数据丢失。

半同步的方式,会用一部分的数据库性能损失换取主备数据较小的差异,使最坏情况下丢失的数据在一定范围内。

纯异步方式中,拥有最好的性能,但会产生较大的主备数据差异,存在丢失数据过多的风险。

2.4 分布式任务引擎关键技术

分布式任务引擎是建立在硬件资源层之上,能不间断的响应用户发出的任务,再根据当前集群中所有节点的压力,按逻辑分配任务,并能够对任务的处理状态进行实时的追踪,保障任务执行的高可靠和最终一致。分布式任务引擎主要包括分布式应用协调服务、任务引擎调度节点、任务引擎执行节点[3]。

2.5 高可靠故障检测与处理技术

节点故障的种类分为:数据库故障、操作系统故障、硬件故障、高可靠软件的故障所引起的节点异常、或失去响应。高可用组件在检测到故障时,如不能在主节点上自动恢复服务,则自动将系统切换到备机上,避免单点故障。

2.6 高可靠-节点切换时数据一致性保障

将数据库日志通过块复制技术在infiniband高速网络环境下或共享存储设备同步到备机,当主备有延迟时发生切换,可直接执行二进制日志到备库。可防止因主机无法访问,造成数据不一致的情况发生。

2.7 分布式数据库的访问流程

若要实现全局访问,需按照全局数据模式使用全局访问语句对一个或多个节点的数据库并行进行访问。进行全局访问通常要经过以下步骤:

1)首先进行任务分解,将全局任务分解为若干个逻辑子任务,其中的每一个子任务又对应其中一个节点局部数据库中的数据,分解后的子任务同样是执行全局语查询句执行的。

2)若全局任务执行语句与局部数据库的语句不一致,并还要将其每一个逻辑的子任务都转换为对应的局部数据库的本地语句,并发送到相应的节点局部数据库去执行。

3)各节点的子访问情况回送并合成为最终的访问结果。各个访问分解都具有相应的系统性能,为了达到最优的系统性能,还应加上对应的访问优化器进行辅助,查询过程如图5所示。

图5 分布式数据库查询流程

通过查询分解程序选定出的执行计划,需要说明访问哪一些节点的局部数据库,怎样组合中间查询结果,通过哪个站点完成全局处理等,最后再启动操作查询计划等。

2.8 分布式数据库集群的实施

分布式数据库集群系统包含前置中间件、应用客户端、单节点HA、集群监控管理、后置中间件等五个基本组件,其中前四个组件(前置中间件、应用客户端、单节点组HA、集群监控管理)在本阶段需要开发和实施,最后一个组件(后置中间件)进行方案设计和原型验证[4]。总体架构如图6所示。

图6 分布式数据库的技术架构

3 安全灾备设计

3.1 分布式数据库的安全防护

分布式数据库的安全防护根据《国家电网公司用电信息采集系统信息安全防护优化方案》(修订版),对用电消息采集各项业务的子域和数据信息交互服务功能都有不同安全级别的防护安全设计。分布式数据库的防护安全方面,采集系统与各业务应用系统的数据交互都利用采集系统本身具备的防护安全设施进行安全防护,但重点是对新增加的诸如新能源、微网、充电站等新交互接口进行重点防护,在主站侧用电消息采集系统需新建安全认证服务,采集终端的安全防护方面,安装了终端“设备指纹”认证模块,模块具有采集终端安全在线监测功能,具有严格防范未授权设备接入的功能特点;在数据防护安全方面,通过对数据进行分类管理、分级存储,确保数据的脱敏、共享、监测以及访问权限控制。分布式数据库的安全防护如图7所示。

图7 分布式数据库的安全防护图

3.2 分布式数据库的灾备设计

分布式数据库需统一规划部署灾备中心的机房、数据服务器、应用服务器、交互接口服务器、网络以及其它各类软硬件资源。将各项业务信息、数据进行分级存储、分类管理,做到全量数据异地备份,实现关键数据的跨地区多地备份,做到一个系统一个方案,做好容灾系统建设,构建完善、可靠的容灾、灾备切换方案,达到终端的不离线、服务不间断、业务不中断、访问流畅和数据共享不间断的环境。

4 结语

分布式数据集群系统的特点就是性能优异、吞吐率高,解决了数据库水平扩展的问题,架构随业务增长需要灵活扩展;系统各部分性能均衡,不存在明显的性能瓶颈;具有较好的性价比,底层数据库节点支持开源数据库,使得数据库采购成本大幅下降,系统结构体系稳定性良好。系统中的关键点需尽量减少,这样可以避免单点失效而影响系统功能。确保系统良好的容错机制和系统的稳定性、数据一致性和良好的可扩展性,更加方便地完成数据存储和计算功能的扩展。业务架构和数据库架构解耦,可灵活定义用户特定的数据访问接口。访问节点隔离数据源,便于用户特定的访问安全和数据安全控制,具有可靠的安全性。

猜你喜欢
分片全局分布式
上下分片與詞的時空佈局
Cahn-Hilliard-Brinkman系统的全局吸引子
量子Navier-Stokes方程弱解的全局存在性
分片光滑边值问题的再生核方法
CDN存量MP4视频播放优化方法
基于模糊二分查找的帧分片算法设计与实现
落子山东,意在全局
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
基于DDS的分布式三维协同仿真研究