首页> 中国专利> 一种分布式高可用、可扩展、可移植的软件架构

一种分布式高可用、可扩展、可移植的软件架构

摘要

本发明涉及一种分布式高可用、可扩展、可移植的软件架构,该软件架构分为上层应用和公共平台,公共平台覆盖在操作系统上以支撑整个业务系统,在上层应用和公共平台之间连接有系统服务接口、任务管理接口和功能交互接口;公共平台中包括有平台管理模块、系统服务模块、任务管理模块和通信代理模块;公共平台还连接有温备份容错机制模块;上层应用中每个任务通过系统服务接口连接系统服务模块、通过任务管理接口连接任务管理模块、通过功能交互接口连接通信代理模块。本发明的软件架构主要用来模块化地开发、运行、管理分布式业务系统,使得上层应用随需构建、系统灵活配置,提供其稳定性、高可用性保障,以及后期的易维护性和易扩展性支持。

著录项

  • 公开/公告号CN106155680A

    专利类型发明专利

  • 公开/公告日2016-11-23

    原文格式PDF

  • 申请/专利权人 上海波汇科技股份有限公司;

    申请/专利号CN201610477065.4

  • 发明设计人 梁西广;刘东;周军;赵长修;赵浩;

    申请日2016-06-27

  • 分类号G06F9/44;

  • 代理机构上海智力专利商标事务所(普通合伙);

  • 代理人周涛

  • 地址 201203 上海市浦东新区张江高科技园区碧波路177号203室

  • 入库时间 2023-06-19 00:56:20

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-08-02

    授权

    授权

  • 2019-06-25

    著录事项变更 IPC(主分类):G06F8/30 变更前: 变更后: 申请日:20160627

    著录事项变更

  • 2016-12-21

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20160627

    实质审查的生效

  • 2016-11-23

    公开

    公开

说明书

技术领域

本发明涉及到计算机软件,具体地说,是涉及到一种通用软件架构,该架构可用于开发、运行、管理分布式高可用可扩展可移植的业务系统。

背景技术

软件危机使得软件工程的研究日益得到重视。起初人们把软件设计的重点放在数据结构和算法的选择上,随着软件系统规模越来越大、越来越复杂,整个系统的结构显得越来越重要,现有的软件工程方法对此显得力不从心。在此背景下人们认识到软件架构的重要性,并认为对软件架构的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。于是,从软件工程衍生出了软件架构,但软件架构的形成同时还借鉴了计算机架构和网络架构中很多宝贵的思想和方法,最近几年软件架构研究已完全独立于软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。

软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。解决好软件的重用、质量和维护问题,是研究软件架构的根本目的。

在软件架构发展过程中,各种架构出现并流行,但多数只是面向特定上层应用场景,解决某些特定问题,有些架构风格之间还是观点相反的。随着软件产业的发展以及上层应用范围的增广,软件规模越来越大,软件部署的分布式需求越来越多,软件的稳定性、可靠性、易维护性和适应性对大型复杂系统来说越来越重要。错综复杂的架构中却未有能同时满足分布式业务系统的稳定性、可靠性、易维护性和适应性需求的较佳方案。

发明内容

本发明的目的在于克服上述现有技术存在的不足,提供一种能满足分布式、高可用、可扩展、可移植等系统需求的一个软件架构。本发明的架构要能够用来模块化地开发、运行、管理分布式业务系统,使得上层应用随需构建、系统灵活配置,提供其稳定性、可靠性保障,以及后期的易维护性和易扩展性支持,并实现对不同底层硬件、操作系统、编译器等透明的可移植性。

为了达到上述发明目的,本发明提供的技术方案如下:

一种分布式高可用、可扩展、可移植的软件架构,其特征在于,该软件架构在纵向上将业务系统分为上层应用和公共平台,所述的公共平台覆盖在操作系统上以支撑整个业务系统,在所述的上层应用和公共平台之间连接有三个接口,该三个接口分别为系统服务接口、任务管理接口和功能交互接口;所述公共平台中包括有平台管理模块、系统服务模块、任务管理模块和通信代理模块,所述系统服务模块、任务管理模块和通信代理模块分别连接平台管理模块;所述的公共平台还连接有温备份容错机制模块,该温备份容错机制模块分别与任务管理模块、通信代理模块和平台管理模块连接;上层应用中包括有多个任务,每个任务通过系统服务接口连接系统服务模块、通过任务管理接口连接任务管理模块、通过功能交互接口连接通信代理模块。

在本发明的软件架构中,作为一种优化设计方案,该软件架构采用面向任务的方式进行业务逻辑处理,不同任务可分布于不同的宿主机上,任务之间通过公共平台实现相互通信,该相互通信基于Pub/Sub机制,所述公共平台内的通信代理模块负责自动适配最优的通信路径。

在本发明的软件架构中,作为一种优化设计方案,所述系统服务模块针对不同硬件、操作系统和C编译器的数据类型大小、对齐方式、内存结构、编码格式、系统调用名称采用预编译宏统一规范,以便对上层应用中的任务提供一致的、平台无关的系统服务接口,实现程序的可移植性。

在本发明的软件架构中,作为一种优化设计方案,所述上层应用是业务逻辑的载体,由若干功能实体组成,每个功能实体实现业务中的某个功能需求,功能实体是系统可执行的最小单位,可分别运行在不同的宿主机上,功能实体的一次运行即称为一个任务。

在本发明的软件架构中,作为一种优化设计方案,所述公共平台内基于Pub/Sub机制将任务之间的功能交互转化为任务之间的通信,即消息的发布和订阅,将任务提供自己所实现的功能及使用其他任务提供的功能转化为任务提供自产信号和订阅其他任务产生的信号;所述公共平台内设有信号注册表,该信号注册表注册各任务发布的自产信号,以及其他任务对这些信号的订阅关系;所述公共平台内设有信号处理表,持有各任务所订阅的信号与对应的处理函数的映射。

在本发明的软件架构中,作为一种优化设计方案,自动适配最优的通信路径是指通信代理模块根据通信双方所分布的位置不同选取不同的通信路径:若两任务分布在同一线程内则直接进行函数调用;若两任务分布在不同线程但在同一进程内,则采用信号队列通信;若两任务分布在不同线程但在同一宿主机内,则采用共享内存通信;若两任务分布在不同宿主机内,则采用TCP/IP Socket通信。

在本发明的软件架构中,作为一种优化设计方案,所述温备份容错机制模块内增加有用以增强系统硬件和/或软件可用性的冗余备用部件,即系统内每一个任务均可设置备份,一个任务可做若干任务的备份;冗余备用部件自我健康监控,监控系统内进程、线程、队列状态,一旦某一任务的主用侧发生了致命的错误,则将其业务转交其备份承担。

在本发明的软件架构中,作为一种优化设计方案,所述系统服务接口、任务管理接口和功能交互接口实现业务系统的灵活扩展,所述系统服务接口是公共平台向上层应用提供不依赖于底层硬件及操作系统的系统服务的接口,是对通用的各种系统服务的统一封装,通用系统服务包括内存管理、定时器管理、资源管理、队列管理、ID管理;所述任务管理接口是公共平台管理各任务的接口,任务管理包括任务注册、信号注册、信号订阅、信号处理、查询状态、状态通知、任务初始化、任务启动、任务终止、任务退出、任务注销;所述功能交互接口是上层应用的各任务之间因功能交互而进行信号通信的接口,包括信号创建、信号复制、信号发送、信号接收、信号清除。

基于上述技术方案,本发明的分布式高可用可扩展可移植的软件架构具有如下技术优点:

1.本发明的软件架构面向任务、基于Pub/Sub机制,自动适配最优的通信路径,使得分布式业务系统的程序不因任务间同步异步关系而变,不因任务间分合关系及分布的远近而异,不因系统规模的大小而有别。

2.本发明的软件架构通过温备份容错机制,温备份使软件的不同实例运行在不同的硬件(如板卡、芯片)上,但只有主用实例负责全部的信号处理,主用实例的状态一旦发生变化会更新备用实例的状态,保证错误不会播及到备用处理器。容错倒换使系统停止服务的时间达到预定标准,保证系统可向客户提供不间断的业务,在实现软件功能性的同时保持软件的高可用性。

3.本发明的软件架构通过系统服务、任务管理、功能交互三个接口支持系统模块化地开发,使得上层应用可以随需构建,随需扩展,随需替换,系统规模及结构可以灵活配置。极大地提高系统可扩展性,使开发人员可以专注于业务系统核心业务逻辑,简化了业务系统的开发和维护工作。

4.本发明的软件架构通过对底层的屏蔽封装,使得程序不依赖于运行环境,可兼容各种主流硬件、操作系统和C编译器,保证了软件的可移植性。

5. 本发明的软件架构中具体上层应用方式和规则具有灵活多变,可持续发展的特点,但公共平台的基本结构却具有相对稳定、有序扩充的特点,未来多数的变化将是新任务及配置数据的增加,而公共平台极少更改,由此保证高质量高效率地响应新的业务需求。

附图说明

图1是本发明一种分布式高可用可扩展可移植的软件架构的系统结构示意图。

图2是本发明的软件架构的通信代理逻辑结构示意图。

图3是本发明的软件架构的温备份容错逻辑结构示意图。

具体实施方式

下面我们结合附图和具体的实施例来对本发明的分布式高可用可扩展可移植的软件架构作进一步的详细说明,以求更为清楚明白地理解其工作原理和具体实施方式,但不能以此来限制本发明的保护范围。

如图1所示,本发明的软件架构在纵向上将业务系统分为上层应用101、公共平台102两层。这里的公共平台102覆盖在操作系统103之上,起到支撑整个业务系统的作用。在上层应用101与公共平台102之间设有三个接口,该三个接口分别为系统服务接口104、任务管理接口105和功能交互接口106。三个接口连接在上层应用101和公共平台102之间,将公共平台102的各种服务透明地以不依赖于具体操作系统、不依赖于任务所处位置关系的方式提供给上层应用101。公共平台102提供各种服务的同时,通过温备份容错机制模块107保证业务系统的高可用性。上述三个接口类似于一个三孔电源插座,公共平台102就类似于一个插排,符合三个接口标准的任务即可插到公共平台102的插座之上,由此使得上层应用101可灵活扩展。

上层应用101是业务逻辑的载体,由若干功能实体组成,每个功能实体实现业务中的某个功能需求,功能实体是系统可执行的最小单位,可分别运行在不同的宿主机上,功能实体的一次运行即称为一个任务。每个任务通过上述系统服务接口104、任务管理接口105和功能交互接口106接入到公共平台102。其中,任务可以通过系统服务接口104获得公共平台102的系统服务模块113所提供的各种基础服务,以实现任务的业务功能。

上述公共平台102中包括有平台管理模块、系统服务模块113、任务管理模块108和通信代理模块112,所述系统服务模块113、任务管理模块108和通信代理模块112分别连接平台管理模块114。上层应用101中包括有多个任务,每个任务通过系统服务接口104连接系统服务模块113、通过任务管理接口105连接任务管理模块108、通过功能交互接口106连接通信代理模块112。

公共平台102的任务管理模块108通过任务管理接口105对组成上层应用的各任务进行管理;任务之间通过功能交互接口106进行各任务之间透明地进行交互通信、功能协作,具体的通信过程由公共平台102的通信代理模块112负责。

上述任务管理模块108负责任务的注册、信号的注册、信号的订阅、任务的初始化、任务的启动、以及信号处理的调用、任务的停止、任务的退出,任务的注册将任务注册到任务注册表109,任务注册表109持有各任务的注册信息,任务注册信息包括各任务所属的功能实体、所在的线程、进程、IP、Port等。信号的注册将任务自产信号注册到信号注册表110,信号的订阅是到信号注册表110里订阅其他任务所注册了的信号,将这种订阅关系添加至信号注册表110里,同时将任务所订阅的信号与对应的处理函数的映射关系保存到信号处理表111里,信号处理的调用即是根据所收到的订阅信号,到信号处理表111里信息查找到相应的处理函数并调用该处理函数。

上述通信代理模块112负责任务之间的通信,根据通信双方任务所分布的位置不同选取不同的通信路径,其具体实施方式如图2所示,图2是本发明的软件架构的通信代理逻辑结构示意图。如果两个任务分布在同一线程内,则直接从信号处理表201找到目标任务的信号处理函数进行函数调用202,具有同步、速度快的特点,由于这是一种紧耦合方式,故本发明的软件架构中制订了相应函数可重入规范,每个任务的功能交互接口函数均需提供可重入保证;后述的其他情境均为松耦合,如果两个任务分布在不同线程但在同一进程内,则将信号添加到目标任务所在线程持有的信号队列203,并通过事件通知该线程其信号队列里有信号加入,线程在收到事件通知后到所持有的信号队列里按FIFO依次取信号,并到信号处理表201里查出所对应的处理函数进行信号处理函数调用202;如果两个任务分布在不同进程但在同一宿主机内,则将信号通过共享内存204通信机制发送给目标任务所在进程,并通过信号量机制通知该线程共享内存里有信号写入,进程在收到共享内存通知后到所共享内存204里取出信号,添加至目标任务所在线程的信号队列203,进行上述线程内处理;如果两个任务分布在不同宿主机内,则将信号编码(标号为205)成消息后通过TCP/IPSocket网络通信机制发送给目标任务所在宿主机上的目标进程,目标进程通过TCP SocketReceiver 206收到将收到的消息解码(标号为207)成信号,信号添加至目标任务所在线程的信号队列203,进行上述线程内处理。

图3是本发明的软件架构的温备份容错逻辑结构示意图。如图中所示,任务2(标号为301)处于主用状态,任务2`(标号为302)是任务2(标号为301)的备份,处于备用状态。在本具体实施例中,任务1(标号为303)有信号发往任务2(标号为301),任务n(标号为304)有订阅接收来自任务2(标号为301)的信号。状态同步305负责在任务2(标号为301)的状态发生变化时将状态更新同步到备用侧的任务2`(标号为302)。系统管理306负责管理相关任务的主、备状态,负责在主备环境中管理错误检测和执行恢复进程,具体地说,系统管理306会根据任务2(标号为301)上报的错误检测信息进行分析处理,当任务2(标号为301)工作异常时,由系统管理306控制其自动倒换,即下达倒换命令给主备倒换307实现将任务2(标号为301)降为备用,其功能包括垃圾清理、任务重启恢复、作为备用侧,将任务2`(标号为302)升为主用,接替任务2(标号为301)的工作。同时系统管理306将任务2(标号为301)和任务2`(标号为302)主备状态的交换更新到任务注册表和新号注册表里,以便及时通知其他相关对象,例如任务1(标号为303)、任务n(标号为304),至此完成主备倒换,任务1(标号为303)的信号改为发往任务2`(标号为302),任务n(标号为304)改为订阅接收来自任务2`(标号为302)的信号。另外,系统管理306还可以接收来自用户的手动倒换命令进行主备倒换。

在本发明的软件架构中,在所述的公共平台内通过系统服务、任务管理、功能交互三个接口实现业务系统的灵活易扩展。所述系统服务接口是公共平台向上层应用提供不依赖于底层硬件及操作系统的系统服务的接口,是对通用的各种系统服务的统一封装,通用系统服务包括内存管理、定时器管理、资源管理、队列管理、ID管理;所述任务管理接口是公共平台管理各任务的接口,任务管理包括任务注册、信号注册、信号订阅、信号处理、查询状态、状态通知、任务初始化、任务启动、任务终止、任务退出、任务注销;所述功能交互接口是上层应用的各任务之间因功能交互而进行信号通信的接口,包括信号创建、信号复制、信号发送、信号接收和信号清除。

在本发明的软件架构中,在所述的公共平台内系统服务针对不同硬件、操作系统和C编译器的数据类型大小、对齐方式、内存结构、编码格式、系统调用名称等差异来采用预编译宏进行统一规范,即具体地说,采用条件编译的不同分支处理不同的硬件、操作系统和C编译器,但采用统一的宏名称,以便对上层应用中的任务提供一致的、平台无关的系统服务接口,从而实现程序的可移植性。

本发明分布式高可用可扩展可移植的软件架构主要用来模块化地开发、运行、管理分布式业务系统,使得上层应用随需构建、系统灵活配置,提供其稳定性、高可用性保障,以及后期的易维护性和易扩展性支持,并实现对不同底层硬件、操作系统、编译器等透明的可移植性。因而,本发明的软件架构很适合有分布式高可用可扩展可移植的软件需求的研发团队使用,为软件设计开发者建立一个可高度重用的架构方案。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号