CN107066286A - 一种通信系统中具有高扩展性的通用软件架构实现方法 - Google Patents
一种通信系统中具有高扩展性的通用软件架构实现方法 Download PDFInfo
- Publication number
- CN107066286A CN107066286A CN201611245471.4A CN201611245471A CN107066286A CN 107066286 A CN107066286 A CN 107066286A CN 201611245471 A CN201611245471 A CN 201611245471A CN 107066286 A CN107066286 A CN 107066286A
- Authority
- CN
- China
- Prior art keywords
- module
- thread
- message
- entity
- event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种在集群系统软件中具有高扩展性的通用软件架构的快速实现方法,为集群通信系统的开发人员提供了统一的操作系统接口和进行模块化开发的快速集成和移植功能,属于无线通信领域。所述方法是通过建立一个标准化的事件循环工作流,用统一的方式移植和集成其他功能实体模块到框架中,再通过软件启动、模块注册、事件接收、优先队列、消息调度、实体模块处理6个部分建立一个无限事件循环流程来驱动软件运行。
Description
技术领域
本发明属于无线通信领域,尤其涉及集群通信系统设备。
背景技术
数字集群通信是二十世纪末兴起的新型移动通信系统,它除了具备一般通信业务中的点对点呼叫功能外,还能实现点对多点的群组呼叫业务,同时在此基础上,还定义了优先级呼叫、呼叫等待等补充业务。除此之外,数字集群系统还具有呼叫建立快、延迟短、保密性高等特点。基于数字集群通信在技术上的特点和优势,被广泛引用于公安、消防、应急指挥调度等专用通信领域。
数字集群通信系统功能非常庞大和复杂,结合降低实现成本和提高软件扩展性的考虑,设计一个具有高扩展性和快速实现的通用软件架构是非常必要的。
发明内容
本发明所解决的技术问题是:在集群通信系统设计开发中,提出了一种能够具有高扩展性和快速实现的通用软件架构,为在此架构中的开发人员提供了进行模块化实体开发的快速集成和移植功能。
本发明采用的技术方案为:
一种通信系统中具有高扩展性的通用软件架构实现方法,其特征在于,包括以下步骤:
步骤1:启动主线程,根据配置选择应用程序运行的操作系统,声明模块接口,初始化应用程序参数;
步骤2:为主线程和每一个子线程分别建立一个线程驱动上下文,并在每一个线程驱动上下文中定义该线程的线程序号、建立模块队列、建立内部消息优先队列和建立外部消息优先队列;
步骤3:注册外部模块实体的服务通道,并分别给各个服务通道分配一个通道号;
步骤4:为主线程和每一个子线程分别注册应用程序的内部模块实体,并分别将内部模块实体添加到对应的模块队列中;给所有的内部模块实体和所有的外部模块实体分别分配一个模块号,将外部模块实体的模块号和通道号一一对应进行关联;
步骤5:根据模块接口声明分别对主线程和每一个子线程上的内部模块实体进行配置,并在每一个内部模块实体上分别配置内外事件的消息处理程序;
步骤6:启动子线程,分别将每一个子线程返回的系统线程号和线程上下文中定义的线程序号一一对应进行关联;
步骤7:主线程和每一个子线程循环监听外部模块实体和内部模块实体的消息事件,并按优先级分别对应存入该线程的外部消息优先队列和内部消息优先队列中,无消息事件则进入等待状态;所述的消息事件中包括该消息事件的目的模块号;
步骤8:分别按优先级从外部消息优先队列和内部消息优先队列中取出优先级最高的消息事件,根据消息事件的目的模块号将消息事件发送至内部模块实体,内部模块实体进入消息事件处理程序;根据消息事件的处理结果判断是否需要对外发送消息,若是,则进入发送消息事件程序,执行步骤9;否则执行步骤9;
步骤9:查询主线程和每一个子线程中的外部消息优先队列和内部消息优先队列中是否还有未处理的消息事件,若有,则转入步骤8,否则转入步骤7。
其中,步骤8中发送消息事件程序具体为:
生成消息事件,填充目的模块号和线程序号,根据目的模块号判断是外部模块实体还是内部模块实体;
如果是外部模块实体,则根据目的模块号找到关联的通道号和服务通道,通过服务通道发送消息事件到外部模块实体;
如果是内部模块实体,则通过线程序号找到该模块注册的线程,将该消息事件插入到该线程的内部消息优先队列中,根据线程序号关联的系统线程号找到该线程并发送唤醒信号给该线程,通知线程进行消息处理。
与现有技术相比本发明的优点在于:
本发明所述软件架构设计的控制流和事件机制便于集成新的业务模块到系统中,具备高扩展性,同时能够促使开发人员专注于自己的业务逻辑设计,具备实现快速开发业务的能力。
附图说明
图1是本发明多线程运行模式流程图。
图2是本发明软件框架运行模型。
图3是本发明收消息模型。
具体实施方式
下面结合附图1-3,对本发明做进一步详细的说明。
本发明的软件架构具有下列内容:
1、控制流
软件架构的核心特征是处理内外消息的事件驱动,在一个典型的实时或者其他操作系统中,控制流通常体现为进程、任务、线程的概念。事件驱动程序是基于无限事件循环来实现的,其中包含等待行为,在等待行为中,操作系统将阻塞直到等待事件的到来,当等待事件发生时,唤醒处理线程,处理事件并返回等待状态。
本文的软件架构提供了一个标准化的事件循环工作流的实现,可以用统一的方式移植和集成其他功能实体模块到框架中,通用框架提供高扩展性的集成其他实体模块作为一个处理模块、线程或者单独的进程的方法。
2、消息流
软件架构提供了一组运行于单线程或者多线程上的不同模块实体间的消息通信机制,每个模块实体都会被分配一个公共的名字用来注册自己公共名称标识作为命名目的地,在集成的系统程序中,实体模块可以通过命名目的地路由到正确的信息实体。事件循环处理机制可以等待和接收外部模块和内部模块的消息,收到消息后调用模块实体处理程序来完成一个完整的消息流程。
本发明的流程图如图1所示,具体包括以下步骤:
步骤1:启动主线程,根据配置选择应用程序运行的操作系统,声明模块接口,初始化应用程序参数;
步骤2:为主线程和每一个子线程分别建立一个线程驱动上下文,并在每一个线程驱动上下文中定义该线程的线程序号、建立模块队列、建立内部消息优先队列和建立外部消息优先队列;
步骤3:注册外部模块实体的服务通道,并分别给各个服务通道分配一个通道号;
步骤4:为主线程和每一个子线程分别注册应用程序的内部模块实体,并分别将内部模块实体添加到对应的模块队列中;给所有的内部模块实体和所有的外部模块实体分别分配一个模块号,将外部模块实体的模块号和通道号一一对应进行关联;
步骤5:根据模块接口声明分别对主线程和每一个子线程上的内部模块实体进行配置,并在每一个内部模块实体上分别配置内外事件的消息处理程序;
步骤6:启动子线程,分别将每一个子线程返回的系统线程号和线程上下文中定义的线程序号一一对应进行关联;
步骤7:主线程和每一个子线程循环监听外部模块实体和内部模块实体的消息事件,并按优先级分别对应存入该线程的外部消息优先队列和内部消息优先队列中,无消息事件则进入等待状态;所述的消息事件中包括该消息事件的目的模块号;
步骤8:分别按优先级从外部消息优先队列和内部消息优先队列中取出优先级最高的消息事件,根据消息事件的目的模块号将消息事件发送至内部模块实体,内部模块实体进入消息事件处理程序;根据消息事件的处理结果判断是否需要对外发送消息,若是,则进入发送消息事件程序,执行步骤9;否则执行步骤9;
进入发送消息事件程序,具体为:生成消息事件,填充目的模块号和线程序号,根据目的模块号判断是外部模块实体还是内部模块实体;
如果是外部模块实体,则根据目的模块号找到关联的通道号和服务通道,通过服务通道发送消息事件到外部模块实体;
如果是内部模块实体,则通过线程序号找到该模块注册的线程,将该消息事件插入到该线程的内部消息优先队列中,根据线程序号关联的系统线程号找到该线程并发送唤醒信号给该线程,通知线程进行消息处理。
步骤9:查询外部消息优先队列和内部消息优先队列中是否还有未处理的消息事件,若有,则转入步骤8,否则转入步骤7。
如图2所示:多个分离的实体模块运行在线程模式中,包括软件启动、模块注册、无限事件处理循环、消息优先队列、消息调度、实体模块,这6部分构成了一个完整的工作流程框架驱动整个程序的运行。运行过程具体为:首先是启动执行,打开与外部实体的通信机制,注册实体模块,启动无限事件处理循环。事件驱动循环中会收到内外部实体的消息事件,添加到消息优先队列中,消息调度程序根据消息事件的目的地址,选择不同的实体模块来处理该消息事件。最后实体模块对该消息事件进行处理,处理完毕返回软件框架事件处理循环中,接着进入下一事件循环。
如图3所示:消息分为外部消息、内部消息,外部消息通过注册的通道号和模块号关联,然后通过模块号进入内部寻址,内部消息则直接通过模块号寻址,程序收到的外部消息放入外部消息队列,收到的内部消息则放入内部消息队列,然后通过事件处理程序进行程序处理。
综上所述,以上仅为本发明的较佳应用示例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种通信系统中具有高扩展性的通用软件架构实现方法,其特征在于,包括以下步骤:
步骤1:启动主线程,根据配置选择应用程序运行的操作系统,声明模块接口,初始化应用程序参数;
步骤2:为主线程和每一个子线程分别建立一个线程驱动上下文,并在每一个线程驱动上下文中定义该线程的线程序号、建立模块队列、建立内部消息优先队列和建立外部消息优先队列;
步骤3:注册外部模块实体的服务通道,并分别给各个服务通道分配一个通道号;
步骤4:为主线程和每一个子线程分别注册应用程序的内部模块实体,并分别将内部模块实体添加到对应的模块队列中;给所有的内部模块实体和所有的外部模块实体分别分配一个模块号,将外部模块实体的模块号和通道号一一对应进行关联;
步骤5:根据模块接口声明分别对主线程和每一个子线程上的内部模块实体进行配置,并在每一个内部模块实体上分别配置内外事件的消息处理程序;
步骤6:启动子线程,分别将每一个子线程返回的系统线程号和线程上下文中定义的线程序号一一对应进行关联;
步骤7:主线程和每一个子线程循环监听外部模块实体和内部模块实体的消息事件,并按优先级分别对应存入该线程的外部消息优先队列和内部消息优先队列中,无消息事件则进入等待状态;所述的消息事件中包括该消息事件的目的模块号;
步骤8:分别按优先级从外部消息优先队列和内部消息优先队列中取出优先级最高的消息事件,根据消息事件的目的模块号将消息事件发送至内部模块实体,内部模块实体进入消息事件处理程序;根据消息事件的处理结果判断是否需要对外发送消息,若是,则进入发送消息事件程序,执行步骤9;否则执行步骤9;
步骤9:查询主线程和每一个子线程中的外部消息优先队列和内部消息优先队列中是否还有未处理的消息事件,若有,则转入步骤8,否则转入步骤7。
2.根据权利要求1所述的一种通信系统中具有高扩展性的通用软件架构实现方法,其特征在于,步骤8中发送消息事件程序具体为:
生成消息事件,填充目的模块号和线程序号,根据目的模块号判断是外部模块实体还是内部模块实体;
如果是外部模块实体,则根据目的模块号找到关联的通道号和服务通道,通过服务通道发送消息事件到外部模块实体;
如果是内部模块实体,则通过线程序号找到该模块注册的线程,将该消息事件插入到该线程的内部消息优先队列中,根据线程序号关联的系统线程号找到该线程并发送唤醒信号给该线程,通知线程进行消息处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611245471.4A CN107066286B (zh) | 2016-12-29 | 2016-12-29 | 一种通信系统中具有高扩展性的通用软件架构实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611245471.4A CN107066286B (zh) | 2016-12-29 | 2016-12-29 | 一种通信系统中具有高扩展性的通用软件架构实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107066286A true CN107066286A (zh) | 2017-08-18 |
CN107066286B CN107066286B (zh) | 2020-07-24 |
Family
ID=59623280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611245471.4A Active CN107066286B (zh) | 2016-12-29 | 2016-12-29 | 一种通信系统中具有高扩展性的通用软件架构实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107066286B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716710A (zh) * | 2019-08-26 | 2020-01-21 | 许华敏 | 一种雷达信号处理软件架构 |
CN110750241A (zh) * | 2019-08-29 | 2020-02-04 | 天信仪表集团有限公司 | 基于事件驱动架构的体积修正系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001086415A2 (en) * | 2000-05-08 | 2001-11-15 | Transilica, Inc. | Priority in a portable thread environment |
CN101464811A (zh) * | 2008-12-29 | 2009-06-24 | 艾默生网络能源有限公司 | 多任务监控管理系统 |
CN102104487A (zh) * | 2009-12-21 | 2011-06-22 | 上海贝尔股份有限公司 | 一种消息处理方法及其设备 |
US8959530B1 (en) * | 2013-05-07 | 2015-02-17 | Sprint Communications Company L.P. | Messaging middleware processing thread count based events |
CN104834506A (zh) * | 2015-05-15 | 2015-08-12 | 北京北信源软件股份有限公司 | 一种采用多线程处理业务应用的方法 |
-
2016
- 2016-12-29 CN CN201611245471.4A patent/CN107066286B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001086415A2 (en) * | 2000-05-08 | 2001-11-15 | Transilica, Inc. | Priority in a portable thread environment |
CN101464811A (zh) * | 2008-12-29 | 2009-06-24 | 艾默生网络能源有限公司 | 多任务监控管理系统 |
CN102104487A (zh) * | 2009-12-21 | 2011-06-22 | 上海贝尔股份有限公司 | 一种消息处理方法及其设备 |
US8959530B1 (en) * | 2013-05-07 | 2015-02-17 | Sprint Communications Company L.P. | Messaging middleware processing thread count based events |
CN104834506A (zh) * | 2015-05-15 | 2015-08-12 | 北京北信源软件股份有限公司 | 一种采用多线程处理业务应用的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716710A (zh) * | 2019-08-26 | 2020-01-21 | 许华敏 | 一种雷达信号处理软件架构 |
CN110716710B (zh) * | 2019-08-26 | 2023-04-25 | 武汉滨湖电子有限责任公司 | 一种雷达信号处理方法 |
CN110750241A (zh) * | 2019-08-29 | 2020-02-04 | 天信仪表集团有限公司 | 基于事件驱动架构的体积修正系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107066286B (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104170334B (zh) | 一种用于管理网络的控制器的配置托管元件的方法及设备 | |
CN201830301U (zh) | 大型综合性医院应用的服务系统 | |
JPH04167040A (ja) | ネットワーク通信システム | |
WO2021253910A1 (zh) | 语音场景更新方法、装置、终端、服务器和系统 | |
CN105991342B (zh) | 分布式设备的业务处理方法、装置及分布式设备 | |
CN102171665A (zh) | 使用中央dma机制进行数据过滤 | |
CN114363170B (zh) | 容器服务网络配置方法及相关产品 | |
AU2007286155A1 (en) | Distributing services in graph-based computations | |
CN107066286A (zh) | 一种通信系统中具有高扩展性的通用软件架构实现方法 | |
EP3954091A1 (en) | Data handler | |
CN101296168A (zh) | 芯片内部连接表支持策略路由的方法 | |
CN109445954A (zh) | 一种定时任务的执行方法、终端设备及存储介质 | |
CN104867223A (zh) | 一种医院排队叫号系统 | |
CN108234541A (zh) | 一种企业总线平台的服务管理方法及系统 | |
CN109995861A (zh) | 车载系统应用与车载外围器件的中继通信方法及系统 | |
CN108154341A (zh) | 基于数据流和工作流的统一调度平台及工作方法 | |
CN110083460A (zh) | 一种利用事件总线技术的微内核架构的设计方法 | |
WO2012058907A1 (zh) | 基于xml的宽带sip业务触发配置方法及业务触发器 | |
CN111866157B (zh) | 云服务网关及云服务内外请求格式转换方法 | |
CN103731345B (zh) | 一种网络报文处理方法及设备 | |
CN205541048U (zh) | 一种体检排队系统 | |
CN102902574A (zh) | 一种多信息流节点的协同处理方法及装置 | |
CN107220114A (zh) | 基于资源统一调度的分布式资源调度方法 | |
CN104050564B (zh) | 高并发通用支付方法 | |
CN109685646A (zh) | 一种资金服务方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |