软件系统功能自恢复的软件架构方法及其系统
技术领域
[0001] 本
发明涉及计算机软件,特别涉及软件系统功能自恢复的软件架构方法。
背景技术
[0002] 软件系统架构设计是软件系统开发流程中极为重要的一环。目前,常用的软件系统架构设计方法主要解决的是软件解耦问题。解决软件解耦问题有两个好处,一是可以实现协同开发,提高开发效率;二是可以实现模
块单独测试,有助于提高模块成熟度,进而缩短开发、测试周期,提升产品开发效率。
[0003] 常见的软件架构设计方法主要有两类,一类是所有软件系统的代码都在一个工程中,数据结构、逻辑结构及软件交互界面等所有代码都交织在一起。软件开发过程中,工程师通常根据功能进行模块划分,从而实现并行开发。但是由于所有的代码都耦合在一起,任何一处的代码改动都有可能引起意想不到的问题,从而导致软件的
稳定性较差。对于大型软件或者大规模的开发团队,开发效率低、软件稳定性差等问题尤为突出,对于工程师来说这无疑是一种灾难。另外一种软件耦合的设计方法是根据业务的不同,在创建工程时将软件系统划分为一个主工程和若干个子工程,各子工程为主工程服务,且各子工程之间有依赖和耦合关系。该方案只是从物理结构上对软件系统进行分割,在软件系统进行调试时仍然需要所有子工程均开发完毕,且各子工程无法单独编译。软件开发、功能调试效率仍然比较低。
[0004] 另一类软件架构设计方法为基于
插件的架构设计。通常情况下,该种架构设计方法将软件系统划分为宿主程序、插件程序和程序调度模块等几个部分。宿主程序通过调度模块调取相应的插件程序,从而实现软件系统的功能。该架构方式能够解除程序主体和业务模块的耦合,使应用程序可以灵活的拆分成多个业务模块,业务模块彼此之间无任何耦合及依赖关系,从真正意义上实现了软件系统全解耦。
[0005] 上述软件系统架构设计方法解决的主要问题是协同开发,提高开发和调试效率,没有考虑软件系统在出现软件问题或运行
硬件设备故障后的自恢复能
力。
发明内容
[0006] 本发明的目的是提供一种软件系统功能自恢复的软件架构方法,能够解决上述问题,提高软件系统的稳定性,减少软件系统故障时间。
[0007] 本发明的上述技术目的是通过以下技术方案得以实现的:
[0008] 一种软件系统功能自恢复的软件架构方法,包括有以下步骤:
[0010] 通过用户权限在
工作台登录并启动对应的主软件系统;
[0011] 根据用户权限匹配获取对应的子系统功能列表,并返回给工作台的主软件系统;
[0012] 解析子系统功能列表,得到子软件系统对应需要加载的程序模块;
[0013] 子软件系统将运行时的设置参数、中间数据以及状态信息上传至
数据库服务器进行存储;
[0014] 主软件系统实时对自身运行状态信息及其对应的工作台运行状态信息进行监测,并且分析判断影响正常运行的原因,将对应原因量化后返回至数据库服务器;
[0015] 数据库服务器在工作台故障时判断异常原因,根据异常原因重启故障工作台或将故障工作台用户的子系统功能列表分配至其他工作台并更新以完成自恢复。
[0016] 作为优选,数据库服务器判断需要重启进行自恢复具体为:
[0017] 登录出现故障的工作台确认是否需要更换工作台重启主软件系统;若能登录并重启则无需更换工作台,直接登录原工作台重启对应的主软件系统,并根据数据库服务器存储的数据对加载的子系统功能列表进行更新;
[0018] 若无法重启需要更换新的工作台,则先通过数据库服务器判断是否存在闲置工作台,存在时,在该闲置工作台通过异常的用户权限登录并启动主软件系统;
[0019] 若不存在闲置的工作台,则根据预设的规则,将发生异常的工作台用户的子系统功能列表追加到设定的各工作台上相应的子系统功能列表中,并对追加后的工作台进行子系统功能列表更新。
[0020] 作为优选,对不存在闲置工作台时包括有两种自恢复方式具体为:
[0021] 1)将工作台故障后的用户权限下的子软件系统全部的子系统功能列表追加至
选定的工作台配置的功能列表中,并在设定的时间重启更新对应的子软件系统;
[0022] 2)将工作台故障后的子软件系统根据子系统功能列表进行拆分,并将拆分后的各子软件系统分配至不同的工作台的主
系统软件,在设定的时间重启更新对应的子软件系统。
[0023] 一种软件系统功能自恢复的软件架构系统,包括有:
[0024] 工作台集群,由若干工作台组成以用于供各用户登录及运行操作;
[0025] 主软件系统,运行于各工作台,以供用户登录启动;
[0026] 子软件系统,独立实现对应程序功能以在主软件系统中加载运行;
[0027] 服务器集群,用于各类数据的存储及通过程序调度实现子软件系统的程序加载;
[0028] 子软件系统加载运行时将设置参数、中间数据及状态信息上传至服务器集群;主软件系统对运行的状态进行监测,并在将监测到影响正常运行的原因量化后返回至服务器集群;服务器集群在工作台故障时根据异常原因判断是否需要重启,并通过自恢复对需要重启的用户权限对应的子软件进行重新分配及更新。
[0029] 作为优选,所述服务器集群包括有数据库服务器及程序模块服务器,所述数据库服务器对主软件系统及子软件系统进行数据的分析处理;所述程序模块服务器包括有对子软件系统各功能进行独立加载运行的程序模块及对需要加载运行的程序进行调度的程序调度模块。
[0030] 综上所述,本发明具有以下有益效果:
[0031] 通过本设计方法设计的软件系统,在保证传统全解耦软件架构设计的所有优点的前提下,重点解决了软件系统或运行平台故障后的自恢复问题。在软件系统自身运行过程中出现故障时,可分析故障原因,若确认可以通过重启软件系统恢复软件功能时,可通过服务器向故障软件系统运行工作台发出重启软件系统的命令;当通过重启软件系统恢复软件功能或者工作台硬件设备出现问题时,则需要按照既定的规则将故障子系统软件功能重新分配到其他工作台,并重启相应工作台软件系统。本设计方法提高了软件系统的稳定性,同时减少了软件系统的故障时间。
附图说明
[0033] 图2为本发明的流程示意图;
[0034] 图3为故障处理方案一原理图;
[0035] 图4为故障处理方案二原理图。
具体实施方式
[0036] 以下结合附图对本发明作进一步详细说明。
[0037] 根据一个或多个
实施例,公开了一种软件系统自恢复的软件构架系统,如图1所示,包括有主软件系统、子软件系统、工作台集群及数据库服务器和程序模块服务器。整体进行运行的软件系统包括主软件系统及子软件系统。
[0038] 主软件系统是软件系统运行的主体软件,主软件系统作为载体加载单个或多个子软件系统,使子软件系统能够独立或协同运行。主软件系统为软件系统运行的载体,本身不具备实现软件系统功能的能力,仅仅提供用户登录界面及加载子软件系统的功能。
[0039] 子软件系统是根据软件系统的业务进行划分得到的可以独立实现某一部分功能的
软件模块,所有子软件系统均可以被加载到主软件系统中独立运行,所有子软件系统协同实现软件系统的完整功能。子软件系统是实现软件系统功能的主体。
[0040] 数据库服务器和程序模块服务器形成服务器集群。数据服务器对主软件系统及子软件系统进行数据的存储及分析,程序模块服务器包括有程序调度模块和程序模块,程序模块是具体实现子软件系统功能的软件程序集合,将所有业务逻辑尽可能进行细化、抽象,然后将软件程序打包成插件供子软件系统调用。将软件程序打包成插件的主要目的是实现代码复用,具有相同功能的不同的子软件系统可以加载同一个插件,在协同开发时可避免重复工作,提高开发效率。
[0041] 还包括有用于根据用户权限对用户登录使用的主软件系统配置的子软件系统类型及个数的配置模块。配置模块用于权限管理,决定当前登录用户在软件系统中拥有的功能。配置数据存储在数据库服务器中,通过用户权限从数据库服务器中获取相应的配置数据,下发给
请求的用户。
[0042] 软件系统还包括配置模块以及各子软件系统的若干程序模块形成完整的运行系统。
[0043] 根据一个或多个实施例,公开的软件系统功能自恢复的软件架构方法,如图1及图2所示,包括软件系统的启动、运行及故障处理。
[0044] 包括有以下步骤:
[0045] 启动服务器集群;
[0046] 通过用户权限在工作台启动并登录对应的主软件系统;
[0047] 根据用户权限匹配获取对应的子系统功能列表,并返回给工作台的主软件系统;
[0048] 解析子系统功能列表,得到子软件系统对应需要加载的程序模块;
[0049] 子软件系统将运行时的设置参数、中间数据以及状态信息上传至数据库服务器进行存储;
[0050] 主软件系统实时对自身运行状态信息及其对应的工作台运行状态信息进行监测,并且分析判断影响正常运行的原因,将对应原因量化后返回至数据库服务器;
[0051] 数据库服务器在工作台故障时判断异常原因,根据异常原因重启故障工作台或将故障工作台用户的子系统功能列表分配至其他工作台并更新以完成自恢复。
[0052] 具体地,启动流程包括有以下步骤:
[0053] 步骤1:启动服务器集群;
[0054] 步骤2:用户在集群工作台启动主软件系统并通过用户权限登录系统,用户权限可为唯一识别的用户名和密码,此时主软件系统不具备当前登录账户的任何功能。
[0055] 步骤3:加载子软件系统。首先,主软件系统根据登录的用户名(user_id)与数据库服务器中提前配置好的软件系统功能编号(extend_id)进行匹配,获取到相应的子系统功能列表(function_list),并将功能列表function_list作为该用户的请求返回值返回给该工作台的主软件系统。
[0056] 步骤4:加载程序模块。工作台主程序对请求得到的功能列表function_list进行解析,得到该子软件系统需要加载的程序模块。此时,主软件系统向程序服务器请求加载软件程序,在所有程序模块加载完成之后,该工作台登录的用户才能使用其权限下的软件系统功能。
[0057] 步骤3中,功能列表function_list包含一个或多个子系统功能列表。相应的,步骤4中解析出一个或多个软件子系统功能。
[0058] 集群中所有登录的工作台主软件系统具有相同的软件界面,针对加载的不同子系统,软件系统界面的菜单栏增加相应的选项,其后二级菜单、多级菜单和交互方式均由程序模块决定。
[0059] 具体的,运行过程及故障处理包括有以下步骤:
[0060] 软件系统在运行过程中,子软件系统会定时将系统设置参数、能够
支撑系统运行的状态参数、关键中间数据、工作台硬件设备状态信息等上传到数据库服务器中进行存储,确保系统在任何历史状态都能启动,并且启动后能继续之前的状态持续工作。软件系统对故障处理可分为两种方式:人工处理方式和基于数据分析的软件系统自恢复处理方式,具体描述如下:
[0061] 人工处理方式:用户根据故障情况确认是软件系统自身导致的软件系统问题,此时可以手动重启故障软件系统,并可以选择基于某一时刻的历史数据重启;若是由工作台硬件导致的运行异常,用户可选择集群中运行状态良好的工作台重新运行;或者向数据库服务器管理员提出请求,要求将账户功能配置到其他正在运行的主软件系统中。数据库服务器管理员需要手动
修改配置文件,将故障台位的功能列表添加到其他正常运行的系统功能列表中,并发送更新功能列表的命令到相应的工作台中。
[0062] 基于数据分析的软件系统自恢复处理方式:建立软件系统和工作台专家
知识库,作为判断软件系统或者工作台是否正常运行的依据。在运行过程中不断监测自身运行状态信息和其运行的工作台运行状态信息,如通过监测
指定软件模块的输入输出数据、监测程序执行时间、采集工作台
主板温度信息、CPU占用率的数值,通过分析判断影响软件系统正常运行的原因,并将该原因量化后返回给数据库服务器。数据库服务器根据异常原因判断若需要重新启动主软件系统,则可以提示管理员需要重启相应台位的主软件系统;若需要更换工作台,服务器需要先判断目前是否有空闲工作台,若有,则可在该工作台启动软件系统,并设置自动登录到故障用户。若没有,则按照预先设置的规则,将故障台位用户的功能列表追加到相应用户的功能列表中,并通知该台位对应更新功能列表。通过该方式实现软件系统自恢复。
[0063] 对没有闲置的工作台时,对故障后的软件系统的功能自恢复具体包括有两种方式,自恢复方案一如附图3中所示,在工作台故障后,将工作台2
中子软件系统功能追加到其他工作台功能配置文件列表,如工作台1软件功能列表,并通知工作台1软件系统在合适的时间重启并更新工作台1软件系统,完成软件系统功能自恢复;自恢复方案二如附图4中所示,工作台2软件系统故障后,将原运行于工作2的软件系统进行拆分,如将子软件系统2拆分为子软件系统2-1和子软件系统2-2,并将拆分后的子软件系统分别配置到不同工作台台位,分别通知个工作台在设定的合适时机重新启动软件系统并加载新的配置文件,使之前故障台位的软件系统功能能够在拆分后实现既有功能,从而实现软件系统的功能自恢复。
[0064] 本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本
说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的
权利要求范围内都受到
专利法的保护。