一种有序系统发生软件故障的重演恢复方法技术方案

技术编号:24330809 阅读:68 留言:0更新日期:2020-05-29 19:32
本发明专利技术涉及在Linux操作系统环境下的有序系统发生软件故障的技术领域,具体涉及一种有序系统发生软件故障的重演恢复方法,采用如下步骤:步骤一:针对有序系统中的业务执行流,对输入在各级业务流水线,有序系统对输入进行编号,形成在有序系统内的唯一序号,形成识别各级业务流水线身份的线程序号数据库;步骤二:针对于Linux环境下软件缺陷所引发的进程异常退出,会伴随信号的产生,形成代码缺陷数据库;它克服了有序系统的致命缺陷,大大提升了系统可用性。在有序系统发生由“肇事者”输入触发的软件故障而导致系统崩溃时,可以通过本方案迅速、无损地恢复服务,并可对系统后续运行可能出现的同类故障提供一定的防御功能。

A replay recovery method of software failure in ordered system

【技术实现步骤摘要】
一种有序系统发生软件故障的重演恢复方法
本专利技术涉及在Linux操作系统环境下的有序系统发生软件故障的
,具体涉及一种有序系统发生软件故障的重演恢复方法。
技术介绍
目前在证券期货行业最流行的快速交易系统——多活内存交易系统就是典型的有序系统,利用基于内存而非磁盘数据库进行业务处理以提升处理速度,多活和有序性则用来确保高可用和数据零丢失。多活集群由多个系统实例组成,每个实例接受完全相同的输入序列,进行完全相同的业务逻辑处理并产生完全相同的输出。这使得多活集群具备极高的可用性和故障恢复能力,任一实例发生故障都不会造成业务中断和数据丢失,并且在任何时候都可以通过重演来无损地恢复已发生故障的实例。此处的“无损”是指故障前已发生的业务在重演恢复后仍然有效,相关数据不会丢失,这对金融领域关键业务系统而言至关重要。但这类有序系统存在一个致命问题:一个由特定输入触发的软件故障(例如段错误、浮点异常等),会导致多活集群的全部实例同时崩溃,并且无法通过重演来恢复。这是因为所有实例共用相同的代码逻辑,因此也共有相同的代码缺陷,而有序系统的特点导致系统重演到触发缺陷的输入(称为“肇事者”)时,总是会再次触发缺陷,导致系统崩溃。这是包括多活有序系统在内的所有有序系统的灾难性问题。导致这类软件故障的代码缺陷通常较为常见,尤其是在C/C++语言开发的系统中。虽然可以通过加强测试来尽量避免,但在实际生产环境中仍然时有发生。特别是对开放服务接口的有序系统(比如证券或期货经纪商的交易平台等系统)而言,可能有许多不同的外部厂商或个人开发的异构系统或终端,通过开放接口访问系统提供的服务,在系统测试阶段很难对各家外部系统各种可能的输入进行全面覆盖。如果外部系统的某个输入导致有序系统发生了故障,常规的做法是先尝试重启系统并重演输入序列,发现无法恢复后,立即组织开发人员迅速进行故障定位和紧急修复、升级。恢复服务的周期很长(短则几个小时,长则几天甚至几周都有可能),这对于关键业务系统而言是完全无法接受的。软件缺陷是无法完全避免的,但发生故障后不能迅速恢复是不能接受的。
技术实现思路
本专利技术的目的在于针对现有技术的缺陷和不足,提供一种有序系统发生软件故障的重演恢复方法。本专利技术所述的一种有序系统发生软件故障的重演恢复方法,采用如下步骤:步骤一:针对有序系统中的业务执行流,对输入在各级业务流水线,有序系统对输入进行编号,形成在有序系统内的唯一序号,形成识别各级业务流水线身份的线程序号数据库;步骤二:针对于Linux环境下软件缺陷所引发的进程异常退出,会伴随信号的产生,形成代码缺陷数据库;步骤三:根据步骤二中的利用代码缺陷数据库,针对于不同的异常信号,形成异常信号数据任务表;步骤四:在有序系统中安装有,针对步骤三中的不同的异常信号处理的信号处理函数,形成信号处理函数数据库;步骤五:在有序系统中,设置能够实时刷新的业务线程的当前任务表,当前任务表用来存放每个业务线程当前正在处理的输入信息,输入信息为序号及其他的输入信息;步骤六:当出现步骤三中的异常信号时,步骤四中的信号处理函数数据库中相对应的信号处理函数被调用,获得触发信号的线程序号,线程序号与步骤五中的当前任务表实现查找,如果找到则为触发异常信号的输入,触发异常信号的输入为“肇事者”输入;步骤七:将步骤六中的“肇事者”输入,将其对应的序号信息写入磁盘文件中,该磁盘文件为“肇事者”输入信息记录表;然后再进行信号处理,信号处理完毕,进程继续异常退出;步骤八:针对步骤七中的进程继续异常退出后,实现系统重新启动,从“肇事者”记录文件中载入“肇事者”输入的序号信息,然后开始重演输入序列,系统在入口处检查接收到的输入,如果序号与“肇事者”输入匹配,则立即拦截并向外部系统返回拒绝服务的信息,形成序号过滤识别;步骤九:针对“肇事者”输入被步骤八中的序号过滤识别多次拦截,可设定具有相同特征的“肇事者”输入的拦截次数,形成临界阈值;从而实现对符合“肇事者”特征且到达临界阈值的异常输入实现系统服务拒绝,形成防御机制。进一步地,步骤一中的有序系统是指输入、处理和输出都是确定有序的软件系统;其中,处理是指其内部状态迁移。进一步地,步骤一中的业务执行流为有序系统处理输入相关的线程。本专利技术有益效果为:本专利技术所述的一种有序系统发生软件故障的重演恢复方法,它提出了一种通过抓取“肇事者”输入的特征信息,借助有序系统的重演机制和预设的防御策略来迅速恢复服务的方法,从而能够保证系统在出现问题后,能够快速恢复,保证了系统的正常使用,以及也保护了数据的安全。【附图说明】此处所说明的附图是用来提供对本专利技术的进一步理解,构成本申请的一部分,但并不构成对本专利技术的不当限定,在附图中:图1是本专利技术中的有序系统的典型模型拓扑图;图2是本专利技术中的有序系统的简化模型拓扑图;图3是本专利技术中的有序系统业务处理模块内部的流水线架构拓扑图。【具体实施方式】下面将结合附图以及具体实施例来详细说明本专利技术,其中的示意性实施例以及说明仅用来解释本专利技术,但并不作为对本专利技术的限定。如图1-图3所示,本具体实施方式所述的一种有序系统发生软件故障的重演恢复方法,采用如下步骤:步骤一:针对有序系统中的业务执行流,对输入在各级业务流水线,有序系统对输入进行编号,形成在有序系统内的唯一序号,形成识别各级业务流水线身份的线程序号数据库;步骤二:针对于Linux环境下软件缺陷所引发的进程异常退出,会伴随信号的产生,形成代码缺陷数据库;步骤三:根据步骤二中的利用代码缺陷数据库,针对于不同的异常信号,形成异常信号数据任务表;步骤四:在有序系统中安装有,针对步骤三中的不同的异常信号处理的信号处理函数,形成信号处理函数数据库;步骤五:在有序系统中,设置能够实时刷新的业务线程的当前任务表,当前任务表用来存放每个业务线程当前正在处理的输入信息,输入信息为序号及其他的输入信息;步骤六:当出现步骤三中的异常信号时,步骤四中的信号处理函数数据库中相对应的信号处理函数被调用,获得触发信号的线程序号,线程序号与步骤五中的当前任务表实现查找,如果找到则为触发异常信号的输入,触发异常信号的输入为“肇事者”输入;步骤七:将步骤六中的“肇事者”输入,将其对应的序号信息写入磁盘文件中,该磁盘文件为“肇事者”输入信息记录表;然后再进行信号处理,信号处理完毕,进程继续异常退出;步骤八:针对步骤七中的进程继续异常退出后,实现系统重新启动,从“肇事者”记录文件中载入“肇事者”输入的序号信息,然后开始重演输入序列,系统在入口处检查接收到的输入,如果序号与“肇事者”输入匹配,则立即拦截并向外部系统返回拒绝服务的信息,形成序号过滤识别;步骤九:针对“肇事者”输入被步骤八中的序号过滤识别多次拦截,可设定具有相同特征的“肇事者”输入的拦截次数,形成临界阈值;从而实现对符合“肇事者”本文档来自技高网
...

【技术保护点】
1.一种有序系统发生软件故障的重演恢复方法,其特征在于:采用如下步骤:/n步骤一:针对有序系统中的业务执行流,对输入在各级业务流水线,有序系统对输入进行编号,形成在有序系统内的唯一序号,形成识别各级业务流水线身份的线程序号数据库;/n步骤二:针对于Linux环境下软件缺陷所引发的进程异常退出,会伴随信号的产生,形成代码缺陷数据库;/n步骤三:根据步骤二中的利用代码缺陷数据库,针对于不同的异常信号,形成异常信号数据任务表;/n步骤四:在有序系统中安装有,针对步骤三中的不同的异常信号处理的信号处理函数,形成信号处理函数数据库;/n步骤五:在有序系统中,设置能够实时刷新的业务线程的当前任务表,当前任务表用来存放每个业务线程当前正在处理的输入信息,输入信息为序号及其他的输入信息;/n步骤六:当出现步骤三中的异常信号时,步骤四中的信号处理函数数据库中相对应的信号处理函数被调用,获得触发信号的线程序号,线程序号与步骤五中的当前任务表实现查找,如果找到则为触发异常信号的输入,触发异常信号的输入为“肇事者”输入;/n步骤七:将步骤六中的“肇事者”输入,将其对应的序号信息写入磁盘文件中,该磁盘文件为“肇事者”输入信息记录表;然后再进行信号处理,信号处理完毕,进程继续异常退出;/n步骤八:针对步骤七中的进程继续异常退出后,实现系统重新启动,从“肇事者”记录文件中载入“肇事者”输入的序号信息,然后开始重演输入序列,系统在入口处检查接收到的输入,如果序号与“肇事者”输入匹配,则立即拦截并向外部系统返回拒绝服务的信息,形成序号过滤识别;/n步骤九:针对“肇事者”输入被步骤八中的序号过滤识别多次拦截,可设定具有相同特征的“肇事者”输入的拦截次数,形成临界阈值;从而实现对符合“肇事者”特征且到达临界阈值的异常输入实现系统服务拒绝,形成防御机制。/n...

【技术特征摘要】
1.一种有序系统发生软件故障的重演恢复方法,其特征在于:采用如下步骤:
步骤一:针对有序系统中的业务执行流,对输入在各级业务流水线,有序系统对输入进行编号,形成在有序系统内的唯一序号,形成识别各级业务流水线身份的线程序号数据库;
步骤二:针对于Linux环境下软件缺陷所引发的进程异常退出,会伴随信号的产生,形成代码缺陷数据库;
步骤三:根据步骤二中的利用代码缺陷数据库,针对于不同的异常信号,形成异常信号数据任务表;
步骤四:在有序系统中安装有,针对步骤三中的不同的异常信号处理的信号处理函数,形成信号处理函数数据库;
步骤五:在有序系统中,设置能够实时刷新的业务线程的当前任务表,当前任务表用来存放每个业务线程当前正在处理的输入信息,输入信息为序号及其他的输入信息;
步骤六:当出现步骤三中的异常信号时,步骤四中的信号处理函数数据库中相对应的信号处理函数被调用,获得触发信号的线程序号,线程序号与步骤五中的当前任务表实现查找,如果找到则为触发异常信号的输入,触发异常信号的输入为“肇事者”输入;
步骤七:将步骤六...

【专利技术属性】
技术研发人员:唐兴余杨植群苏龙柯学巫禄芳
申请(专利权)人:深圳证券通信有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1