APP下载

Petri机制控制理论在计费系统应用级容灾中的应用

2011-03-11卜小明

电信科学 2011年7期
关键词:容灾中间件计费

卜小明

(中国电信股份有限公司 北京 100034)

1 引言

全网运营要求电信运营商在其整个经营地域为广大用户提供统一、标准的服务。为了实现这个目标,在业务支撑系统省集中的基础上,中国电信已实现全国两级计费系统的网络化部署,即在中国电信集团总部建设全国级计费系统,并与各省的计费系统互联以支撑全网运营。

由于全国计费结算中心系统对全网漫游计费运营起着重要的协调和引导作用,一旦发生灾难,会直接导致全国性范围的业务阻断、数据丢失、收入损失。考虑到数据安全性和业务连续性要求,中国电信全国计费结算中心在北京和上海设立了异地远程容灾双中心[1,2],采用应用级容灾方案以适应双中心间网络相对低速、低带宽的现状[3]。目前,全国级计费及容灾系统的5个相互关联的业务子系统都使用应用级容灾方案,采用整体切换的策略。

应用级容灾属于最高等级的容灾技术[4],理论上有着最优的RPO和RTO(零数据丢失,恢复时间在分钟级),但全国计费结算中心的切换时间(即由主中心停止运行到容灾中心接管业务的时间)长期在小时级徘徊,基本上等同于数据级容灾的容灾指标,应用级容灾的优势无法充分体现。因此,如何提高双中心容灾切换的速度,实现预期的业务连续性指标,成为摆在中国电信全国计费结算中心面前的迫切问题。

2 现状和问题分析

中国电信全国计费结算中心在北京和上海建立了全国级计费及容灾系统双节点,按照功能划分业务子系统,5个相互关联的业务子系统都采用了应用级容灾方案。双中心容灾切换的复杂性来自以下多个方面。

2.1 支持多种切换场景,不同场景的切换步骤不同

基本切换场景有以下4种。

· 双切双:主、备中心都正常的情况下进行切换演练,将双中心主备角色互换或切换容灾模式 (同步/跟随:同步模式下双中心都完成处理后才进行下一步,跟随模式下主中心完成处理后就继续进行下一步,而不等待备中心)。

·双切单:单中心硬件发生故障、计划停机或主备中心间网络中断,由另一中心(主或备)接管业务独立运行,包括 “双切单”及“双切单换主备”。

·单点切跟随:故障修复后,要以备中心角色、跟随模式启动系统,同时把单点运行的主中心切换为双点运行模式,使备中心开始追赶主中心,也就是处理其故障期间发生的业务。

·跟随切同步:备中心追赶主中心,使得主、备中心数据基本一致后,要把主、备中心同时切换为同步模式,以恢复到正常的双中心同步运行状态。原因很明显,同步模式显然比跟随模式具有更好的RTO指标。

2.2 各业务子系统间存在关联

基于应用级容灾的基本原理,业务子系统的主、备系统同时处理业务的前提是,主、备系统均收到其上游业务子系统(X系统的输入数据由Y系统提供,则称Y为X的上游系统,X为Y的下游系统)主、备系统的下发数据。因此,各业务子系统的容灾模式均受限于其上游系统的容灾运行模式:上游系统处于单点或跟随模式时,下游系统不能是同步模式,否则就会阻塞下游系统主中心的业务处理(主中心系统会一直等待备中心系统处理完成,但备中心业务子系统因为拿不到输入数据,不可能完成相应的业务处理),而必须切换到跟随模式。

在中国电信全国计费结算中心,智能交换平台(下面简称“系统A”)负责其他4个业务子系统的文件上传和下发,系统A的上传模块(A-上传)是其他业务子系统的上游系统,而其下发模块(A-下发)是其他业务子系统的下游系统。其他业务子系统B、C、D、E的上下游关系为:B和C都是E的上游系统,D与B、C、E间没有数据输入输出关系。

2.3 切换过程中命令执行出错或超时的异常处理

容灾切换操作是在不同主机、不同应用平台、不同业务子系统上的一系列操作的集合。有些操作可以并发执行,有些则有严格的先后关系;有些是在局域网内部,有些则需要跨相对低速、高时延的主备中心互联网络;业务子系统可能处于正常状态,也可能已经不正常或由于网络中断而不可访问;有些时候业务子系统瞬时较空闲、响应命令很快,有些时候业务子系统可能正忙、响应命令较慢。

以上所有差异,都可能导致操作命令执行失败或超时。在发生异常的情况下,容灾切换必须能够自适应,即基于当前双中心整体状态选择切换到可能的最优运行状态。4个主要切换场景均涉及多个步骤,容灾切换过程中可能出现的状态组合和路径数量太多,程序逻辑很难覆盖全部场景,这是用传统开发方法所不能解决的问题,也是容灾切换自动控制的技术关键点所在。

针对这些问题,对Petri机制理论在全国计费结算中心应用级容灾切换应用的适用性进行了深入分析。

3 解决方案

3.1 Petri机制理论简介

Petri机制的概念最早是1962年德国学者Carl Adam Petri在其博士论文中提出来的。经过几十年的发展,Petri机制已经发展出了包括着色Petri机制、时间Petri机制、随机Petri机制等在内的多种高级Petri机制,并且逐渐被应用于多个领域的建模、分析和控制[5~7]。其中,荷兰学者Vander Aalst在Petri机制的基础上定义了 Workflow net(简称 WF-net),提出了 5种基本的分支/汇聚类型[8],如图1所示。

其中,需要特别说明的是显式异或分支和隐式异或分支的区别,这两种分支是经典Petri机制所不能表达的。对于显式异或分支,后续哪个变迁得以执行取决于前一个变迁的执行结果;而对于隐式异或分支,前一个变迁完成后,可以自主选择任一个后续变迁执行。在容灾切换的过程中,执行某个操作后可能出现多种可能的结果,此时需要使用显式异或分支;在切换演练过程中,完成一个步骤后,可以选择不同的后续步骤,此时需要使用隐式异或分支。

图1 Petri网5种分支/汇聚类型

针对WF-net的分析和校验,参考文献[9]定义了被称为健壮性(soundness)的性质。健壮性的非形式化定义是:一个WF-net模型在满足以下3个条件时,被称为是健壮的。

· 从初始状态(只在代表开始的库所(place)中有一个令牌(token))开始,在任何情况下,模型都可以运行到结束状态(代表结束的库所中有一个令牌)。

·模型运行到结合状态时,除代表结束的库所外,其他所有库所都为空。

·模型中任何变迁都有被点火的机会。

[9]的研究证明,一个WF-net网N是健壮的,等价于在网N上增加一个从结束库所到开始库所变迁后形成的网同时是安全的、弱活的和一级活的。

可见,使用基于WF-net算法的Petri机制中间件对容灾控制模型进行健壮性校验并通过后,就可以保证在任何情况下都不会出现切换执行到某个步骤而无法继续执行的情况,并且最终必然可以回到初始的正常状态。也就是说,通过校验的Petri控制模型能够覆盖所有可能的容灾切换场景。

3.2 Petri机制应用于容灾切换的可行性分析

Petri网在容灾切换控制方面的适用性分析见表1。

表1 Petri网对容灾切换的适用性分析

4 系统架构设计

4.1 基于Petri网中间件的容灾切换架构

中国电信全国计费中心的容灾切换控制如图2所示,其分两级进行控制,分别为中心一级的计费网管控制和业务系统一级的容灾平台控制。两级控制均通过将对应的Petri网模型运行于Petri网中间件上实现。切换过程中,Petri网中间件实时识别系统状态,更新Petri网模型中库所的令牌分布,并发出切换操作指令(变迁点火)。

Petri网分两级的目的有两个:一是控制Petri模型的复杂度,Petri网模型的复杂度与其中库所数量呈指数级正相关,如果采用一级Petri网模型,模型将变得非常难以理解,也很难对其性质进行分析;二是各个业务系统均采用了相似的容灾仲裁平台,其控制逻辑基本相同,即这部分的模型可以复用。

通过将系统双中心系统状态、操作指令、指令执行结果有机地组织在Web界面中[12],向系统操作人员提供图形化的容灾切换面板,如图3所示。对于普通的系统操作人员来说,无需理解Petri网模型中所包含的复杂控制逻辑。

图2 中国电信全国计费中心容灾切换控制系统架构

图3 图形化的容灾切换面板

4.2 Petri网中间件

容灾切换控制的基础和核心是Petri网中间件,由建模工具、运算引擎、调用远程主机命令集的客户端、前台操作界面、监控界面和管理员界面组成。

Petri建模工具在提供图形化建模功能的基础上,还提供多种Petri网性质自动分析和校验的能力,可帮助模型设计人员检查Petri网模型的正确性。Petri网中间件提供一套完整的Web Service集成接口,包括Petri模型的启停、执行变迁点火、读可点火变迁列表、读库所状态、读指定变迁状态、读变迁日志、读远程调用的业务系统命令集返回的日志等。Petri网中间件使用Java开发,可运行于各种平台,计算资源占用少,对主机性能、数据库空间要求很低。

基于Petri网中间件的开发过程是:调研业务系统的状态和变迁;建立Petri网模型;接口开发和整体联测。与传统开发不同的是,基于Petri网中间件的开发过程没有复杂的代码编写工作,业务逻辑均体现在图形化的Petri网模型中,充分体现了Petri网作为图形工具的优势。

4.3 Petri网建模

4.3.1 一级Petri网模型

一级Petri网模型实现两类容灾切换控制逻辑:采取整体切换的策略,即所有系统一起切换主备中心;系统间存在状态控制关系,当某个上游业务系统以单点或跟随模式运行时,其下游业务系统也必须切换到跟随模式。生产中可能的状态见表2,可定义出单个业务系统的库所。某个库所中拥有令牌时,则表示这个业务系统处于相应的状态。显然某个时间下只能有一个库所拥有令牌。

表2 生产中可能的状态

进一步分析合理状态组合,即允许从哪个状态迁移到另一状态,即可画出单个业务系统的Petri模型,如图4所示,可以对此模型构造其可达图,如图5所示,并据此对模型的安全性、弱活性和一级活等性质进行分析,以检查模型构建的正确性。

图4 单个业务系统的Petri模型

图5 单个业务系统的可达图

通过分析各业务系统间状态的控制关系,把代表各个业务系统的模型连接起来,构建出如图6所示的计费网管层面Petri网模型并执行性质分析和正确性校验。跨系统的有向弧代表了只有在某个系统处于特定状态时,另一个系统才能执行某个切换指令。

4.3.2 二级Petri网模型

二级Petri网层面实现单个业务系统的容灾切换控制逻辑,表现在以下几个方面。

·双边启动时(无论是同步还是跟随模式),先启动备系统,再启动主系统;先启动容灾仲裁平台,再启动业务系统。关闭则正好相反,先关闭主系统,等待备系统处理完同步消息队列中等待的任务后 (idx清仓),再关闭备系统。

图6 计费网管层面的Petri网模型

·如果主系统发生故障(offline),主备切换完成后,自动启动到单点,不用等待网管切换面板或容灾平台控制台的指令;如果备系统发生故障(offline),也自动切换到单点,切换成单点后,向网管系统主动汇报,由计费网管层面的Petri网调度下游系统切跟随。

·容灾模式切换:业务系统在online或maintenance状态时,容灾仲裁平台的同步/跟随状态可互相切换。当业务系统发生故障时,自动从同步状态切到跟随状态。

·主备切换:maintenance状态下可任意切换主备;北京业务系统offline/上海业务系统maintenance时,可从北京主切换为上海主;上海业务系统offline/北京业务系统maintenance时,可从上海主切换为北京主。

·同步消息队列状态:maintenance状态下只能是队列为空;同步模式下从队列为空→不为空→接近清空(即队列中消息数量≤1);跟随模式下从队列为空→不为空圮接近清空,单点模式下从队列为空→不为空。

基于以上业务系统级的容灾切换控制逻辑,设计各个业务系统和容灾仲裁平台的状态,也就是Petri网模型中库所的设计。

其中,业务应用系统的状态有3种:online、maintenance、offline。online是正常运行态;maintenance是主备切换态,具有应用容灾逻辑的进程都退出,而处于架构层的进程仍在运行中,如共享内存管理进程、网管监控进程等;offline是业务系统整体关闭或发生故障的状态,所有进程均停止运行。容灾仲裁平台的状态包括运行状态(online/offline)、主备状态(主系统/备系统)、仲裁模式(同步/跟随)、单双边状态(单边/双边)。

idx清仓状态代表了从主中心向备中心发送的同步消息队列中消息的数量:已清仓表示主备业务处理是完全一致的,具备立即换主备的条件,此时备系统从时间和业务上都可以无缝接替主系统;接近清仓表示备系统比主系统最多相差1笔交易,若要执行主备切换,需等待备系统继续完成这1笔交易;未清仓只会出现在跟随和单点的情况下,表示备系统比主系统落后多于1笔交易。

两级Petri网模型的关联体现在:计费网管层面Petri网模型中业务系统库所和这个业务系统二级Petri网模型的状态(即业务系统、容灾平台和同步消息队列的状态组合)间的对应关系见表3。

对于代表单个业务系统容灾切换控制逻辑的二级Petri网,基于以上的状态分析可以设计出相应的库所,结合一级Petri网的状态切换要求,可以设计出需要支持的切换指令(即变迁)。模型设计完成后,同样通过Petri网性质分析,对模型的正确性进行自动化的校验,即满足安全性、弱活性、一级活。

表3 两级Petri网模型间的对应关系

上述两级经典Petri网模型设计完成后,转换为Petri中间件所要求的WF-net网,并在Petri中间件的建模工具中执行健壮性校验,即可导入Petri计算引擎以执行容灾切换逻辑控制。

4.3.3 应用效果

基于Petri网中间件的容灾切换控制系统上线之前,在计费系统应用级容灾切换演练中,5个业务系统分别由各自建设厂商的运维人员操作,操作团队超过10人。由电信运维人员按照实现拟定的操作指令表逐一通知各厂商人员执行操作,并人工协调各系统间的控制关系。双切双和双切单的切换时间均超过2 h,单切双的恢复过程过于复杂,不得不采用人工恢复数据库的方式完成。

基于Petri网中间件的容灾切换控制系统上线后,中国电信于2010年11月组织了切换演练。实现由一位电信运维人员在容灾切换面板上操控正常换主备、模拟故障、故障恢复等多个切换场景。整体双切双演练的总体切换时间已达到电信行业内最短的26 min,其中包括业务应用进程启停所需的20 min,双切单换主备在30 min左右完成,单切双恢复到跟随、跟随恢复到同步,扣除备系统追赶的时间,操作过程分别在10 min左右。

通过比较,可以看到基于Petri网的容灾切换控制有效实现了自动化,使得容灾切换从需要众多厂商参与的复杂工作,转变为电信运维人员的一种日常操作。在降低系统运维工作量的同时,实现了应用级容灾的预期指标,显著提高了中国电信全国计费中心的业务连续性,达到国内电信行业领先水平。

5 结束语

中国电信全国计费结算中心应用级容灾的难点来自于3个方面:存在多个应用系统,且相互间存在复杂的数据交互关系;需要实现多个容灾场景,不同场景切换步骤不同;每个切换步骤都可能出现异常,容灾切换需要能够实现自适应并切换到最优运行状态。

首次将Petri网理论和Petri中间件引入到中国电信行业的信息化建设中,充分利用Petri网基于实时状态进行控制的特点,解决了应用级容灾场景众多、切换步骤复杂、容易出现异常等问题。

系统架构方面,应用级容灾切换控制系统采用计费中心和业务系统两级架构,采用两级Petri中间件控制,在有效表现复杂的双中心切换控制逻辑的同时,降低了单个模型的复杂程度,并可实现在多个业务系统间的复用。对Petri网模型进行自动化的分析和校验后,可以确保容灾切换控制系统中控制逻辑的正确性,由于控制逻辑非常复杂,通过人工方式检查和测试保证这一点是基本没有可行性的。

应用级容灾切换控制系统上线后,极大地提高了容灾切换的自动化程度,将原来超过2 h的容灾切换时间压缩到几十分钟,业务连续性指标达到国内电信行业领先水平。

基于实时状态的系统并发控制是各行业应用的普遍要求。对电信行业信息化来说,其应用范围也绝对不仅仅限于容灾切换。为了充分发挥其应用价值,一方面需要研究在其他领域应用Petri网的可行性,如数据一致性、错单回收等;另一方面需要扩展Petri网的应用范围,从全国计费结算中心向中国电信各省公司进行推广。

参考文献

1 King R P,Halim N,Garcia Moina H,et al.Management of remote backup copy for disaster recovery.ACM Transactions on Database Systems,1991,16(2):338~368

2 Choy M H,Leong H V,Wong M H.Disasterrecovery techniques for database system.Communication of the ACM,2000,43(11):272~280

3 孙洁等.一种基于Internet的异地容灾系统的设计和实现.计算机应用研究,2007,24(7):171~179

4 容灾备份标准之国际Share78标准.http://storage.chinabyte.com/372/9080372.shtml,2009

5 林闯.计算机网络和计算机系统的性能评价(第1版).北京:清华大学出版社,2001

6 林闯.随机Petri网和系统性能评价(第2版).北京:清华大学出版社,2005

7 袁崇义.Petri原理和应用(第1版).北京:电子工业出版社,2005

8 Vander Aalst W M P.The application of petri nets to workflow management.The Journal of Circuits Systems and Computers,1998,8(1):21~66

9 Vander Aalst W M P.Verification of workflow nets.Application and Theory of Petri Nets 1997,1997(1248):407~426

10 Vander Aalst W M P.Putting Petri nets to work in industry.Computers in Industry,1994,25(1):45~54

11 Fehling R.A concept of hierarchical Petri nets with building blocks.In:The 12th International Conference on Application and Theory of Petri Nets,1991

12 贾钊等.一种基于Web管理的异地容灾系统.计算机应用研究,2009,26(4):1389~1397

猜你喜欢

容灾中间件计费
5G网络独立组网中融合计费方案的研究
基于云计算和微服务架构的高速公路计费系统
生活中的分段计费
RFID中间件技术及其应用研究
基于Android 平台的OSGi 架构中间件的研究与应用
关于建筑企业容灾备份系统方案的探讨
基于中兴软交换的电力通信网络容灾系统建设
基于数据容灾技术在企业信息系统中的应用研究
爱立信HDBSC容灾方案的研究
基于AM3354的电动汽车充电监控计费系统电表通信的实现