CN110909057A - 一种数值水池虚拟试验数据中间件的工作方法 - Google Patents
一种数值水池虚拟试验数据中间件的工作方法 Download PDFInfo
- Publication number
- CN110909057A CN110909057A CN201911154837.0A CN201911154837A CN110909057A CN 110909057 A CN110909057 A CN 110909057A CN 201911154837 A CN201911154837 A CN 201911154837A CN 110909057 A CN110909057 A CN 110909057A
- Authority
- CN
- China
- Prior art keywords
- module
- task
- middleware
- result
- file
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种数值水池虚拟试验数据中间件的设计方法。数值水池虚拟试验应用***(200)通过API模块(112)和通信模块(113)与主中间件(120)的通信模块(122)双向传输信号,通信模块(122)通过任务处理模块(124)与数值水池虚拟试验底层分布式NoSQL数据库(300)双向传输信号。由于数值水池虚拟试验的数据包括数值型数据、字符串、数组和图像等各种异构数据,而且属于大规模数据,用户对数据的安全和并发任务处理要求比较高;因此需要在底层配置分布式NoSQL数据库集群模式,满足对多用户、多任务的高并发需求。
Description
技术领域
本发明属于中间件的技术领域;具体涉及一种数值水池虚拟试验数据中间件的工作方法。
背景技术
随着Web技术的日益发展,各个网站的访问量和数据量都与日俱增,数值型数据、字符串、数组、图像等等各种异构数据的出现,使得传统的关系型数据库面临着巨大的挑战,严重限制了信息共享和数据交换的便捷性。与此同时,人们对信息的需求要求也越来越高,大规模数据和大量任务的并发执行要求越来越突出。现有的单一的数据库已经满足不了原来的需求,分布式的数据库应运而生。
当前,应用程序最常见的是通过JDBC或ODBC,及其扩展和发展如OLEDB、ADO以及ADO.NET等接口方式连接数据库,实现对数据库中的数据进行增删改查等操作。起初,应用程序所连接的数据库多是单实例,此时应用程序的会话所有的数据操作都通过这一个单实例进行。随着技术架构的变更,由单一的简单直接的方式访问,难以满足人们对高并发、大规模数据的管理,人们将应用程序连接到在集群架设的分布式数据库。应用程序会与分布式数据库的每一个实例建立连接。目前,常见的应用程序在发起一个操作时只会使用分布式数据库中的一个实例完成增删改查等操作。对于低访问请求的***,应用程序每次请求处理的数据量都很小,这种方式足以应对,但是当应用程序存在大量高并发的任务请求时,需要存取和处理的数据量非常大,这种方式会消耗大量的时间,应用***的响应时间过长,使得应用***难以满足高可用性。
对于服务端来说,目前现有的分布式数据访问数据库中间件还存在一个中心化比较严重的问题,即数据库采用单个中心化的组件;这样当中间集群出现故障的时候,中间件宕机会直接影响整个网站,导致网站不可用,影响范围较大。
发明内容
由于数值水池虚拟试验的数据包括数值型数据、字符串、数组和图像等各种异构数据,而且属于大规模数据,用户对数据的安全和并发任务处理要求比较高;因此需要在底层配置分布式NoSQL数据库集群模式,满足对多用户、多任务的高并发需求。
本发明通过以下技术方案实现:
一种数值水池虚拟试验数据中间件,所述中间件包括中间件模块M、两个CMD管理平台模块140和多个Client模块110,所述中间件模块M包括主中间件120和从中间件130,所述主中间件120与从中间件130相连接,所述主中间件120与多个Client模块110相连接,每个所述Client模块110均与数值水池虚拟试验应用***200相连接,所述主中间件120与一个CMD管理平台模块140相连接,所述从中间件130与另一个CMD管理平台模块140相连接,所述主中间件120和从中间件130均与数值水池虚拟试验底层分布式NoSQL数据库300相连接。
进一步的,所述Client模块110包括配置模块Ⅲ111、应用程序编程接口API模块112和通信模块Ⅲ113,所述应用程序编程接口API模块112与数值水池虚拟试验应用***200双向传输信号,所述应用程序编程接口API模块112与通信模块Ⅲ113双向传输信号,所述通信模块Ⅲ113与通讯模块Ⅰ122双向传输信号,
所述主中间件模块120包括配置模块Ⅰ121、通讯模块Ⅰ122、心跳检测模块Ⅰ123、任务处理模块Ⅰ124和CMD管理平台处理模块Ⅰ125,所述通讯模块Ⅰ122与任务处理模块Ⅰ124双向传输信号,所述任务处理模块Ⅰ124与数值水池虚拟试验底层分布式NoSQL数据库300双向传输信号,所述心跳检测模块Ⅰ123与心跳检测模块Ⅱ133双向传输信号,所述CMD管理平台处理模块Ⅰ125与CMD管理平台通讯模块141双向传输信号,
所述从中间件模块130包括配置模块Ⅱ131、通讯模块Ⅱ132、心跳检测模块Ⅱ133、任务处理模块Ⅱ134和CMD管理平台处理模块Ⅱ135,所述通讯模块Ⅱ132与任务处理模块Ⅱ134双向传输信号,所述任务处理模块Ⅱ134与数值水池虚拟试验底层分布式NoSQL数据库300双向传输信号,所述CMD管理平台处理模块Ⅱ135与CMD管理平台通讯模块141双向传输信号。
进一步的,所述应用程序编程接口API模块112包括结果队列1121、应用程序编程接口API1122和任务队列1123,所述的所述应用程序编程接口API1122从数值水池虚拟试验应用***200调用应用程序编程接口API,并将结果返回数值水池虚拟试验应用***200,
所述通信模块Ⅲ113包括文件接收模块Ⅲ1131、结果接收模块1132、文件发送模块1133和任务发送模块Ⅲ1134,
所述应用程序编程接口API1122通过文件发送模块Ⅲ1133发送文件,所述应用程序编程接口API1122通过任务发送模块Ⅲ1134发送任务,所述结果接收模块1132接收的结果存入结果队列1121,所述结果接收模块1132接收结果返回模块Ⅰ1222的结果,所述文件接收模块Ⅲ1131接收文件发送模块Ⅰ1224的导出文件。
进一步的,所述通讯模块Ⅰ122包括任务接收模块Ⅰ1221、结果返回模块Ⅰ1222、文件接收模块Ⅰ1223和文件发送模块Ⅰ1224,所述任务处理模块Ⅰ124包括任务队列Ⅰ1241、任务监测线程Ⅰ1242、任务执行线程池Ⅰ1243和底层数据库实现模块Ⅰ1244,
所述任务接收模块Ⅰ1221收到任务后存入任务队列Ⅰ1241,所述任务队列Ⅰ1241取出任务后发送到任务监测线程Ⅰ1242,所述任务监测线程Ⅰ1242将任务调度到任务执行线程池Ⅰ1243,所述任务执行线程池Ⅰ1243将返回结果传输至结果返回模块Ⅰ1222,
所述任务执行线程池Ⅰ1243将任务调用至底层数据库实现模块Ⅰ1244,所述底层数据库实现模块Ⅰ1244访问数值水池虚拟试验底层分布式NoSQL数据库300,
所述文件接收模块Ⅰ1223将文件发送模块1133导入文件生成本地文件导入任务执行线程池Ⅰ1243,所述任务执行线程池Ⅰ1243将返回导出文件提供文件发送模块Ⅰ1224导出文件至文件接收模块Ⅲ1131;
所述CMD处理模块125包括命令执行模块1251和命令返回模块1252,所述命令执行模块1251接收任务发送模块Ⅳ1411的命令,所述命令执行模块1251向命令返回模块1252传输执行结果,所述命令返回模块1252向结果接收模块Ⅳ1412返回执行结果;
所述心跳检测模块Ⅱ134包括心跳探测模块Ⅱ1331和心跳监听模块Ⅱ1332,所述心跳探测模块Ⅱ1331向心跳监听模块Ⅰ1232发送心跳探测包,
所述心跳检测模块Ⅰ123包括心跳探测模块Ⅰ1231和心跳监听模块Ⅰ1232,所述心跳监听模块Ⅰ1232向心跳探测模块Ⅱ1331发送响应。
进一步的,所述CMD管理平台通讯模块141包括任务发送模块Ⅳ1411和结果接收模块Ⅳ1412,所述任务发送模块Ⅳ1411发送命令到CMD管理平台处理模块Ⅰ125的命令执行模块1251,所述结果接收模块Ⅳ1412接收命令返回模块1252的返回执行结果,所述结果接收模块Ⅳ1412输出结果至CMD管理平台142,所述CMD管理平台142生成命令传输至任务发送模块Ⅳ1411,所述CMD管理平台142接收用户输入的输入命令,所述CMD管理平台142将返回结果输入至用户界面。
利用上述一种数值水池虚拟试验数据中间件的工作方法,所述方法包括以下步骤:
步骤1:用户调用应用程序编程接口API模块112,Client模块110生成具体的数值水池虚拟试验数据管理任务;
步骤2:检测步骤1的任务是否为特殊任务,当是特殊任务时缓存在任务队列1241中,当检测不是特殊任务时任务结果标志位为未完成;
步骤3:通过任务发送模块1134给主中间件模块发送任务,主中间件收到任务后检查结果标志位为未完成,
步骤4:主中间件在工作时同时进行容错;
步骤5:主中间件模块120在发现有空闲执行线程并且任务队列不空时从任务队列中取出任务分配到空闲执行线程,调用底层数据库实现模块1244完成该任务并获取执行结果;
步骤6:将步骤5获取的执行结果封装后通过结果发送线程返回该任务的执行结果,,Client模块110收到返回的结果后将任务的结果标志位为已完成;
步骤7:将步骤6中的标志位为已完成的任务结果,再次向下层每个中间件模块发送任务;
步骤8:从中间件模块130收到任务后检查结果标志位,当任务的结果标志位为已完成则从任务队列中找到该任务进行删除,
步骤9:当主中间件收到任务后检查结果标志位为完成,则接受,同时返回客户端。
进一步的,所述步骤4进行容错的方法包括以下步骤:
步骤4.1:启动中间件时会同时启动心跳监听线程;
步骤4.2:从中间件模块130每隔一段时间向主中间件模块120发送心跳探测包,检测是否为主中间件120;
步骤4.3:当检测为主中间件120时则响应从中间件模块130的心跳探测包;
步骤4.4:当从中间件模块130发出的心跳探测包没有收到主中间件120的响应时,从中间件模块130认为主中间件模块120出现故障,依照配置文件中设定的顺序,第一个从中间件模块替换成为新的主中间件模块,其余的从中间件模块向新的主中间件模块发送心跳探测包,检测是否为主中间件;
步骤4.5:当从中间件模块发出的心跳探测包没有收到主中间件的响应时,依次替换第二个至最后一个从中间件为主中间件,则响应从中间件模块130的心跳探测包,直至没有从中间件可替换成为新的主中间件模块,则结束程序。
本发明的有益效果是:
1、本发明的底层可以配置NoSQL数据库集群模式,从而能够管理数值型数据、字符串、数组、图像等各种异构数据。
2、本发明支持多用户、高并发任务处理,该中间件***可以在底层配置分布式数据库,使数据分布到不同的数据库中,实现数据的并发读写,提高执行效率,减少了应用***的响应时间,大大提高了应用***数据处理能力。
3、本发明提供数据负载平衡机制,实现对大规模数据的平衡管理,中间件的负载统计模块汇总底层数据节点的状态信息,及时调整高负载数据节点和低负载数据节点之间的数据平衡,包括基于变更主从备份的负载平衡策略和基于数据迁移的负载平衡策略。
4、本发明支持对底层数据节点的扩展性,在运行过程中增加数据节点,中间件将自动重新规划数据布局,将一部分数据备份迁移至新添加的数据节点中,调度各个数据节点完成拷贝和主从备份。
5、本发明实现用户数据的自动解析和采集,即提供审计监测功能,实时审计和监测用户对数值水池虚拟试验数据的各种操作,对Client模块发送的任务进行统计分析以及对用户通过CMD模块对中间件进行操作的指令统计。
6、本发明提供***容错,包括中间件容错和对底层数据节点的容错,本中间件提供主备中间件模式,能实时将主中间件内的信息备份到后备中间件,当主中间件发生故障时自动切换到备份中间件,保证中间件***的连续可用性;对于底层数据节点,在其失效后,该中间件会自动重新为其中的数据块主备份指定新的拥有者,并在添加新数据节点后,调度各个数据节点将相应数据块拷贝至新添加的数据节点中。
附图说明
图1是本发明的结构示意图;
图2是本发明的Client模块***结构图;
图3是本发明的中间件模块***结构图;
图4是本发明的CMD模块***结构图;
图5是本发明的任务执行功能流程图;
图6是本发明的容错功能流程图。
具体实施方式
下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种数值水池虚拟试验数据中间件,所述中间件包括中间件模块M、两个CMD管理平台模块140和多个Client模块110,所述中间件模块M包括主中间件120和从中间件130,所述主中间件120与从中间件130相连接,所述主中间件120与多个Client模块110相连接,每个所述Client模块110均与数值水池虚拟试验应用***200相连接,所述主中间件120与一个CMD管理平台模块140相连接,所述从中间件130与另一个CMD管理平台模块140相连接,所述主中间件120和从中间件130均与数值水池虚拟试验底层分布式NoSQL数据库300相连接。
进一步的,所述Client模块110包括配置模块Ⅲ111、应用程序编程接口API模块112和通信模块Ⅲ113,所述应用程序编程接口API模块112与数值水池虚拟试验应用***200双向传输信号,所述应用程序编程接口API模块112与通信模块Ⅲ113双向传输信号,所述通信模块Ⅲ113与通讯模块Ⅰ122双向传输信号,
所述主中间件模块120包括配置模块Ⅰ121、通讯模块Ⅰ122、心跳检测模块Ⅰ123、任务处理模块Ⅰ124和CMD管理平台处理模块Ⅰ125,所述通讯模块Ⅰ122与任务处理模块Ⅰ124双向传输信号,所述任务处理模块Ⅰ124与数值水池虚拟试验底层分布式NoSQL数据库300双向传输信号,所述心跳检测模块Ⅰ123与心跳检测模块Ⅱ133双向传输信号,所述CMD管理平台处理模块Ⅰ125与CMD管理平台通讯模块141双向传输信号,
所述从中间件模块130包括配置模块Ⅱ131、通讯模块Ⅱ132、心跳检测模块Ⅱ133、任务处理模块Ⅱ134和CMD管理平台处理模块Ⅱ135,所述通讯模块Ⅱ132与任务处理模块Ⅱ134双向传输信号,所述任务处理模块Ⅱ134与数值水池虚拟试验底层分布式NoSQL数据库300双向传输信号,所述CMD管理平台处理模块Ⅱ135与CMD管理平台通讯模块141双向传输信号。
如图1所示,数值水池虚拟试验数据中间件技术100体系结构由三个主要模块组成:Client模块110、中间件模块M、CMD模块140,其中中间件模块分两种,主中间件模块120和从中间件模块130。正常情况下,主中间件模块120是负责执行Client模块110发送的任务的中间件模块,同时响应从中间件模块130的心跳检测,只有当主中间件模块120发生宕机时,从中间件模块才将按照配置文件中设定的顺序依次接替主中间件模块执行任务,确保整体***完整运行。
整个中间件***提供对数值水池虚拟试验数据的任务执行、容错和审计功能,均由以上模块协作完成。
进一步的,所述应用程序编程接口API模块112包括结果队列1121、应用程序编程接口API1122和任务队列1123,所述的所述应用程序编程接口API1122从数值水池虚拟试验应用***200调用应用程序编程接口API,并将结果返回数值水池虚拟试验应用***200,
所述通信模块Ⅲ113包括文件接收模块Ⅲ1131、结果接收模块1132、文件发送模块1133和任务发送模块Ⅲ1134,
所述应用程序编程接口API1122通过文件发送模块Ⅲ1133发送文件,所述应用程序编程接口API1122通过任务发送模块Ⅲ1134发送任务,所述结果接收模块1132接收的结果存入结果队列1121,所述结果接收模块1132接收结果返回模块Ⅰ1222的结果,所述文件接收模块Ⅲ1131接收文件发送模块Ⅰ1224的导出文件。
如图2所示,Client模块110具体由3个子模块组成,分别为配置模块111、应用程序编程接口API模块112、通信模块Ⅲ113。
配置模块111通过读取配置文件进行中间件***的初始化参数设定,如IP地址设置、端口地址设置以及执行线程数目设置等,其余模块启动参数通过调用配置模块111提供的接口获取。
应用程序编程接口API模块112负责向上层的数值水池虚拟试验用户平台提供应用程序编程接口API接口和返回查询结果,提供了如查询、***、更新、删除等接口。在应用程序编程接口API模块112中主要维护的结构是基于List<Task>实现的任务队列与基于Hashtable<Long,Document>实现的结果表。
当应用程序编程接口API模块112中的接口被调用时,首先生成关于该操作的具体任务,每个任务具有唯一的任务号,以及任务相关的数据库,数据集合,任务参数等,应用程序编程接口API模块112通过通信模块Ⅲ113发送任务序列化后的信息给中间件模块120,中间件模块120通过任务信息的反序列化还原对应的任务加入任务队列Ⅰ1241。因为***特性,对于***、更新这类的特殊任务,应用程序编程接口API模块112在生成具体任务后会先将任务缓存到任务队列1123,确保任务不丢失。之后应用程序编程接口API模块112进入结果等待状态,当发现结果接收模块1132将完整的任务结果放入结果表后,应用程序编程接口API模块112根据任务号取出结果返回给上层数值水池虚拟试验的用户。对于特殊类型的任务,还需要删除任务队列1123中对应的任务。
在任务队列1123中缓存来自数值水池虚拟试验数据管理的特殊任务,提供了强大的容错能力,当中间件模块M全部宕机,这类任务未成功发送时或者任务发送后,中间件模块M全部宕机没有来得及执行这些任务时,这种缓存机制就可以在中间件模块恢复后再次发送任务队列中1123的任务,从而实现重要任务不丢失的特性。
通信模块Ⅲ113中有基于Hashtable<String,Clientservice>实现的与底层中间件的TCP连接,当有来自数值水池虚拟试验数据管理的任务被发送时,发送给Hash表中的所有连接,当有任务完成时同样发送给Hash表中的所有连接以同步主中间件模块120和从中间件模块130之间的任务队列。当有中间件模块宕机时,从该结构中找到对应IP的连接将其删除。通信模块Ⅲ113实现了与中间件模块120的双向通信,包括向中间件模块120发送消息与接收中间件模块120发送的消息。通信模块Ⅲ113有四个子模块:任务发送模块Ⅲ1134、结果接收模块1132、文件发送模块1133与文件接收模块Ⅲ1131。
其中维护的主要结构为IP地址与Socket套接字的对应关系为:
1)任务发送模块Ⅲ1134通过Client模块110向中间件模块120的单向TCP长连接发送Client模块110中应用程序编程接口API模块112生成的任务序列化后的信息,中间件模块120通过反序列化生成任务,再将生成的任务加入任务队列Ⅰ1241,等待任务处理模块124的调度与处理。
2)结果接收模块1132通过中间件模块120向Client模块110的单向TCP长连接,接收任务处理模块124执行任务获得的执行结果,在中间件模块120生成结果后序列化,将序列化信息发送给Client模块110,在结果接收模块1132中反序列化后根据结果完整标志位确定是否完整,如果结果不完整则在临时结果存储表中暂存,等待后续结果的到来;当收到完整结果后通知应用程序编程接口API模块112取出相应结果返回给数值水池虚拟试验的用户。结果接收线程中维护着基于Hashtable<Long,Document>实现的临时结果存放结构,用于组合过大的经过分片后发送的结果,当收到完整结果后放入应用程序编程接口API模块112中的结果表中。
3)文件发送模块1133是专门为应用程序编程接口API模块112中导入文件设计的模块,因为在数值水池虚拟试验数据管理中文件任务的频率较低,因此当任务处理模块遇到导入文件任务时,在接收到中间件模块120发送文件的指令后,向中间件模块120发起建立TCP连接请求,将本地的文件发送给中间件模块120。中间件模块120的文件接收模块Ⅰ1223会在本地生成文件从而实现导入文件。
4)文件接收模块Ⅲ1131是专门向应用程序编程接口API模块112中导出文件设计的模块,因为文件任务的频率较低,因此当任务处理模块124遇到导出文件任务时,文件接收模块Ⅲ1131接收中间件发送的文件在本地生成需要导出的文件从而实现导出文件。
总体来说,Client模块110中应用程序编程接口API模块112被数值水池虚拟试验平台的应用程序调用生成任务后,从通信模块Ⅲ113的任务发送模块1133发送给中间件模块120。之后应用程序编程接口API模块112进入等待结果状态。通信模块Ⅲ113的结果接收模块1132一直在接受中间件模块120结果返回模块Ⅰ1222发送的内容,同时根据收到的任务是否完整进行暂存、拼接等操作,当收到完整结果时将结果存入结果表,最终返回给数值水池虚拟试验平台的用户或应用程序。应用程序编程接口API模块112取出结果,任务完成。而文件的发送与接收则是为特殊应用程序编程接口API存在的专门模块,由于任务类型出现并不频繁所以采用临时TCP连接的策略,而任务接收模块Ⅰ1221与结果返回模块Ⅰ1222都是通过TCP长连接实现的。
进一步的,所述通讯模块Ⅰ122包括任务接收模块Ⅰ1221、结果返回模块Ⅰ1222、文件接收模块Ⅰ1223和文件发送模块Ⅰ1224,所述任务处理模块Ⅰ124包括任务队列Ⅰ1241、任务监测线程Ⅰ1242、任务执行线程池Ⅰ1243和底层数据库实现模块Ⅰ1244,
所述任务接收模块Ⅰ1221收到任务后存入任务队列Ⅰ1241,所述任务队列Ⅰ1241取出任务后发送到任务监测线程Ⅰ1242,所述任务监测线程Ⅰ1242将任务调度到任务执行线程池Ⅰ1243,所述任务执行线程池Ⅰ1243将返回结果传输至结果返回模块Ⅰ1222,
所述任务执行线程池Ⅰ1243将任务调用至底层数据库实现模块Ⅰ1244,所述底层数据库实现模块Ⅰ1244访问数值水池虚拟试验底层分布式NoSQL数据库300,
所述文件接收模块Ⅰ1223将文件发送模块1133导入文件生成本地文件导入任务执行线程池Ⅰ1243,所述任务执行线程池Ⅰ1243将返回导出文件提供文件发送模块Ⅰ1224导出文件至文件接收模块Ⅲ1131;
所述CMD处理模块125包括命令执行模块1251和命令返回模块1252,所述命令执行模块1251接收任务发送模块Ⅳ1411的命令,所述命令执行模块1251向命令返回模块1252传输执行结果,所述命令返回模块1252向结果接收模块Ⅳ1412返回执行结果;
所述心跳检测模块Ⅱ134包括心跳探测模块Ⅱ1331和心跳监听模块Ⅱ1332,所述心跳探测模块Ⅱ1331向心跳监听模块Ⅰ1232发送心跳探测包,
所述心跳检测模块Ⅰ123包括心跳探测模块Ⅰ1231和心跳监听模块Ⅰ1232,所述心跳监听模块Ⅰ1232向心跳探测模块Ⅱ1331发送响应。
如图3所示,中间件模块M包括主中间件模块120和从中间件模块130,主/从中间件模块均由5个子模块组成,分别为配置模块、通信模块、任务处理模块、CMD处理模块以及心跳检测模块。中间件模块M位于Client模块110与数值水池虚拟试验底层分布式NoSQL数据库300之间,接收到Client模块110发送的任务后访问数值水池虚拟试验底层分布式NoSQL数据库300完成具体任务获得结果返回给Client模块110。
主中间件模块120是负责执行Client模块110发送的任务的中间件模块,同时响应从中间件模块130的心跳检测。从中间件模块130,又称备份中间件模块,与Client模块110发送的任务同步作业,当主中间件模块120发生宕机时,按照配置文件中设定的顺序依次接替主中间件模块执行任务,确保整体数值水池虚拟试验数据中间件***完整运行。
主中间件模块120和从中间件模块130的5个子模块相同,但是为了便于阐述,此处用不同的模块编号区分它们。
以主中间件模块120的运行为例,配置模块121通过读取配置文件进行中间件***的初始化参数设定,如IP地址设置、端口地址设置以及执行线程数目设置等。其余模块启动参数通过调用配置模块121提供的接口获取。
通信模块122分为两类,发送类与接收类。其中发送类有结果返回线程,文件发送线程,采用JAVA中的Socket实现;接收类有任务接收线程与文件接收线程,采用JAVA中的Server Socket实现。通信模块122实现了与Client模块110的双向通信,包括向Client模块110发送消息与接收Client模块110发送的消息。通信模块122有四个子模块:任务接收模块Ⅰ1221、结果返回模块Ⅰ1222、文件发模块1223与文件接收模块1224。
1)任务接收模块Ⅰ1221通过Client模块110向中间件模块的单向TCP长连接接收Client模块110序列化后的任务,通过反序列化在中间件模块120生成任务,再将生成的任务加入任务队列Ⅰ1241,等待任务处理模块124的调度与处理。
2)结果返回模块Ⅰ1222通过中间件模块向Client模块110的单向TCP长连接发送任务处理模块124执行任务获得的执行结果,在中间件模块120生成结果后序列化,将序列化信息发送给Client模块110,Client模块110处理后返回给用户。
3)文件接收模块Ⅰ1223是专门向应用程序编程接口API中导入文件设计的模块,因为数值水池虚拟试验数据管理中文件任务的频率较低,因此当任务处理模块124遇到导入文件任务时,通过文件发送模块1224通知Client模块110可以发送文件,并通过文件接收模块Ⅰ1223在本地生成需要导入的文件,之后将本地文件导入数值水池虚拟试验底层分布式NoSQL数据库300从而实现导入文件。
4)文件发送模块1224是专门为应用程序编程接口API中导出文件设计的模块,因为数值水池虚拟试验数据管理中文件任务的频率较低,因此当任务处理模块124遇到导出文件任务时,向Client模块110发起建立TCP连接请求将数值水池虚拟试验底层分布式NoSQL数据库300导出到本地的文件发送给Client模块110。Client模块110的文件接收模块Ⅲ1131会在本地生成文件从而实现导出文件。通信模块122中的结果返回模块Ⅰ1222提供了send(String message)(参数:message序列化后的结果)接口用于向Client模块110与CMD模块140发送任务结果。当任务在任务执行线程池1243中被执行后获得结果后,将结果封装序列化,调用send(String message)(参数:message序列化后的结果)函数返回任务结果;CMD模块140获得执行命令的结果后也是通过调用结果发送线程的send(String message)(参数:message序列化后的结果)接口返回命令执行结果。通信模块122中的任务接收模块Ⅰ1221提供了Receive Thread(Socket socket,Int type)(参数:socket连接套接字;type连接类型)接口用于生产任务接收线程,时刻接收Client模块110发送的数值水池虚拟试验数据管理的任务信息。当收到任务时,通过反序列化生产任务,通过任务结果标志位判断如果是未完成任务则调用add Task(Task task)接口将任务存放入任务队列Ⅰ1241,如果是已完成任务则调用deltask(Task task)函数删除任务队列Ⅰ1241中相应的任务。
总体来说,Client模块110发送的数值水池虚拟试验数据管理的任务从通信模块122的任务接收模块Ⅰ1221进入中间件模块120,任务接收模块Ⅰ1221完成反序列化生成任务后将任务存入任务队列Ⅰ1241,等待任务处理模块124的调度与处理。任务处理模块124执行任务的结果则要交由结果返回模块Ⅰ1222发送回Client模块110。而文件的发送与接收则是为特殊应用程序编程接口API存在的专门模块,由于任务类型出现并不频繁所以采用临时TCP连接的策略,而任务接收模块Ⅰ1221与结果返回模块Ⅰ1222都是通过TCP长连接实现的。
任务处理模块124的作用在于调度任务队列Ⅰ1241中的任务以及任务的执行,任务处理模块124有3个子模块:任务检测模块包括任务队列Ⅰ1241和任务检测线程1242、任务执行模块主要结构为任务执行线程池1243和底层数据库实现模块1244。其中维护的主要结构有基于LinkedBlockingQueue<Task>实现的多线程安全队列和基于ExecutorService实现的任务执行线程池。
基于LinkedBlockingQueue<Task>实现的多线程安全的任务队列是通信模块121与任务执行模块124交互的重要媒介。通信模块122中的任务接收模块Ⅰ1221在收到序列化的任务信息后反序列化生成任务后,调用addTask(Tasktask)(参数:task待添加的任务)接口将任务放入任务队列Ⅰ1241。任务执行模块124中的任务检测模块通过调用getTaskQueueSize()接口获取任务队列长度,当发现任务队列长度大于零并且任务执行线程池1243中有空闲线程时调用getTask()接口获取当前位于任务队列Ⅰ1241队首的任务。从中间件模块130的通信模块132中的任务接收模块1321再收到任务同步信息后,反序列化生成任务,调用delTask(Task task)(参数:task待删除的任务)接口删除任务队列1341中相应的任务,完成中间件模块间的信息同步。
1)任务检测模块时刻关注任务队列Ⅰ1241和任务执行线程池1243的状态,当发现任务执行线程池1243中有空闲线程以及任务队列不为空时,及时进行任务调度,取出任务队列Ⅰ1241中队首的任务放入任务执行线程池1243中空闲线程里执行。
2)任务执行模块维护着基于ExecutorService实现的任务执行线程池1243,中间件模块120中的所有任务在该模块中通过任务类中的函数名称调用相应的外部分布式数值水池虚拟试验底层分布式NoSQL数据库300的接口执行任务,执行结束后通过通信模块122的结果返回模块Ⅰ1222返回执行结果。
3)底层数据库实现模块1244是基于数值水池虚拟试验底层分布式NoSQL数据库300提供的各种应用程序编程接口API接口实现的模块,包括数据查询、***、更新、删除等操作,通过该模块实现访问数值水池虚拟试验底层分布式NoSQL数据库300执行任务。
任务检测模块从任务队列Ⅰ1241中取出任务,交给任务执行模块中的任务执行线程池1243,通过底层数据库实现模块1244访问外部分布式数值水池虚拟试验底层分布式NoSQL数据库300完成任务。任务队列Ⅰ1241是通信模块122与任务处理模块124通信的结构,通信模块122中的任务接收模块1224向其中存入任务,任务处理模块124中的任务检测模块从里面取出任务。底层数据库实现模块1244是中间件模块120与外部分布式数值水池虚拟试验底层分布式NoSQL数据库300通信的接口。
任务执行模块在任务执行结束后,将获得的结果分装为结果类在进行序列化,调用通信模块122中的结果返回模块Ⅰ1222提供的send(String message)(参数:message序列化后的结果)接口向Client模块110发送数值水池虚拟试验数据管理的结果信息。同样的CMD模块140获得的执行命令结果也是通过调用结果返回模块Ⅰ1222提供的send(Stringmessage)(参数:message序列化后的结果)接口向外部CMD模块140返回命令执行结果。
CMD处理模块125是专为外部CMD模块140存在的子模块,负责执行各种外部CMD模块140发送来的审计命令以及管理中间件的命令,给数值水池虚拟试验数据管理者提供远程管理中间件模块的途径。当用户通过外部CMD模块140请求连接时,首先进行身份验证,如果用户存在则允许建连接,并赋予该用户应有的权限;如果用户不存在则拒绝连接,当用户在外部CMD模块140输入指令后,指令由外部CMD模块140的任务发送模块1411发送给CMD处理模块125执行,该指令符合用户权限,CMD处理模块125会将执行结果返回给外部CMD模块140展示给用户;如果指令与用户权限不符,则拒绝执行并提示用户权限不足,CMD模块140是中间件模块120审计功能的重要展示模块,一部分需要访问数据库的命令需要通过任务执行模块进行。
CMD处理模块125中的身份验证机制是通过调用任务执行模块提供的validate(String name,String password)(参数:name用户名;password密码)接口与外部分布式数值水池虚拟试验底层分布式NoSQL数据库300中存储的信息进行比较进行的,如果在数据库中匹配到相应项,则返回数据库中存储的权限值;否则认为用户不存在,拒绝连接。CMD处理模块125执行具体命令是通过调用任务执行模块提供的runCommand(String command,intrank)(参数:command命令;rank权限)接口完成的,获得执行结果后再返回给外部CMD模块140。
心跳检测模块123的作用在于实现中间件模块的容错功能,当主中间件模块120宕机时从中间件模块130可以接替主中间件模块120继续执行任务。中间件的容错功能与Client模块110中的特殊任务缓存机制一起构成了整体数值水池虚拟试验数据中间件***的容错功能。心跳检测模块123由心跳探测模块1231与心跳监听模块1232组成。心跳检测模块123启动时,启动心跳监听线程中的Server Socket监听其他中间件的心跳探测包,并用Hash Table记录IP地址与Socket套接字的对应关系,从中间件模块130启动心跳检测线程与主中间件的心跳监听线程建立连接。其中维护的主要结构为IP地址与Socket套接字的对应关系。
1)心跳监听模块1232在中间件模块120启动时启动,只有主中间件模块120的心跳监听模块处于活跃状态,才接受从中间件模块130的连接请求。连接建立后,心跳监听模块1232收到从中间件模块130发送的心跳探测包时及时发出响应包。从中间件模块130通过是否接收到响应包来确定主中间件模块120的存活状态。
2)心跳探测模块1231仅存在于从中间件模块130中,当与主中间件模块120的心跳监听模块1232建立连接后,每隔固定时间向主中间件模块120发送心跳探测包。主中间件模块120收到心跳探测包后及时发送响应。从中间件模块130以是否及时收到心跳响应判断主中间件的存活状态,当未及时收到心跳响应时认为主中间件模块120宕机,读取配置文件中从中间件IP地址顺序,依次成为新的主中间件模块。这里以从中间件模块130替换为主中间件模块为例,改变从中间件模块130状态标志位,通知其他模块从中间件模块130转变为主中间件模块。其他不需要成为主中间件模块的从中间件模块开始向新的主中间件模块130发送心跳探测包并等待响应。
心跳检测模块使得整体数值水池虚拟试验数据中间件***的容错性大大提升,可以保证只要存在一个中间件模块那么Client模块110就能通过该中间件模块执行任务。同时,还可以通过CMD模块140添加新的从中间件模块,恢复出现问题的中间件模块,确保整体数值水池虚拟试验数据中间件***稳定运行。各个中间件模块间的任务同步通过Client模块110与每个中间件模块的通信进行,当产生任务时和完成任务时,Client模块110及时通知各个中间件模块,因此在发送主中间件模块替换时,可以确保任务队列中的任务被完整执行,从而确保已经发送到中间件模块的任务不发生丢失。
进一步的,所述CMD管理平台通讯模块141包括任务发送模块Ⅳ1411和结果接收模块Ⅳ1412,所述任务发送模块Ⅳ1411发送命令到CMD管理平台处理模块Ⅰ125的命令执行模块1251,所述结果接收模块Ⅳ1412接收命令返回模块1252的返回执行结果,所述结果接收模块Ⅳ1412输出结果至CMD管理平台142,所述CMD管理平台142生成命令传输至任务发送模块Ⅳ1411,所述CMD管理平台142接收用户输入的输入命令,所述CMD管理平台142将返回结果输入至用户界面。
如图4所示,CMD模块140为管理控制中间件模块的辅助模块,可通过其对中间件模块进行控制,同时查看中间件模块的状态以及审计结果。包括CMD 142和CMD通信模块141。CMD 142作为命令行,可以读取用户输入,获取来自用户的数据库审计命令,然后通过CMD通信模块141传输给中间件,获得执行结果,然后输出,使用户可见。CMD模块140可远程访问控制中间件,使用用户密码登录,可进行的操作受到权限限制。
整个中间件***提供对数值水池虚拟试验数据的任务执行、容错和审计功能,均由Client模块110、中间件模块M和CMD模块140协作完成。
利用上述一种数值水池虚拟试验数据中间件的工作方法,所述方法包括以下步骤:
步骤1:用户调用应用程序编程接口API模块112,Client模块110生成具体的数值水池虚拟试验数据管理任务;
步骤2:检测步骤1的任务是否为特殊任务,当是特殊任务时缓存在任务队列1241中,当检测不是特殊任务时任务结果标志位为未完成;
步骤3:通过任务发送模块1134给主中间件模块发送任务,主中间件收到任务后检查结果标志位为未完成,
步骤4:主中间件在工作时同时进行容错;
步骤5:主中间件模块120在发现有空闲执行线程并且任务队列不空时从任务队列中取出任务分配到空闲执行线程,调用底层数据库实现模块1244完成该任务并获取执行结果;
步骤6:将步骤5获取的执行结果封装后通过结果发送线程返回该任务的执行结果,,Client模块110收到返回的结果后将任务的结果标志位为已完成;
步骤7:将步骤6中的标志位为已完成的任务结果,再次向下层每个中间件模块发送任务;
步骤8:从中间件模块130收到任务后检查结果标志位,当任务的结果标志位为已完成则从任务队列中找到该任务进行删除,
步骤9:当主中间件收到任务后检查结果标志位为完成,则接受,同时返回客户端。
如图5所示,数值水池虚拟试验数据管理任务执行功能的整个过程,Client模块110初始化时会提前与每个中间件模块提前建立好TCP长连接。当用户调用应用程序编程接口API后,Client模块110生成具体的数值水池虚拟试验数据管理任务,此时任务结果标志位为未完成,通过任务发送模块Ⅲ1134给每个中间件模块发送任务,包括一个主中间件模块120和多个从中间件模块。中间件模块120收到任务后检查结果标志位,此时任务的结果标志位为未完成,因此中间件模块120将任务加入任务队列Ⅰ1241。主中间件模块120在发现有空闲执行线程并且任务队列不空时从任务队列中取出任务分配到空闲执行线程,调用底层数据库实现模块1244完成该任务。将任务结果封装后通过结果发送线程返回该任务的执行结果,Client模块110收到返回的结果后将任务的结果标志位置为已完成,再次向下层每个中间件模块发送任务,此时主中间件做完该任务后已将任务删除,不做任何操作;从中间件模块130收到任务后检查记过标志位,此时任务的结果标志位为已完成,因此从中间件在任务队列中找到该任务进行删除。以上一个任务的执行以及任务在多个中间件模块之间的同步就完成了。
CMD模块140与中间件模块建立连接后通过身份认证机制获取相应权限,如果身份认证发生错误则中间件模块会拒绝CMD模块140的连接。成功登陆之后,在CMD模块140界面输入指令,指令经提前建立的TCP长连接发送给中间件模块。中间件模块在收到任务后调用相应函数获得执行结果返回给CMD模块140。CMD模块140对得到的结果进行整理展示。其中CMD模块140支持的命令为审计命令与中间件模块控制命令。
进一步的,所述步骤4进行容错的方法包括以下步骤:
步骤4.1:启动中间件时会同时启动心跳监听线程;
步骤4.2:从中间件模块130每隔一段时间向主中间件模块120发送心跳探测包,检测是否为主中间件120;
步骤4.3:当检测为主中间件120时则响应从中间件模块130的心跳探测包;
步骤4.4:当从中间件模块130发出的心跳探测包没有收到主中间件120的响应时,从中间件模块130认为主中间件模块120出现故障,依照配置文件中设定的顺序,第一个从中间件模块替换成为新的主中间件模块,其余的从中间件模块向新的主中间件模块发送心跳探测包,检测是否为主中间件;
步骤4.5:当从中间件模块发出的心跳探测包没有收到主中间件的响应时,依次替换第二个至最后一个从中间件为主中间件,则响应从中间件模块130的心跳探测包,直至没有从中间件可替换成为新的主中间件模块,则结束程序。
如图6所示,数值水池虚拟试验数据中间件技术提供容错功能的整个过程,当每个中间件模块启动时都会启动心跳监听线程,从中间件模块130会启动心跳探测线程,每隔一段时间向主中间件模块120发送心跳探测包,主中间件模块120收到心跳探测包后作出响应,以此表示主中间件模块120的存活状态。当某个时刻从中间件模块发出的心跳探测包没有收到响应时,从中间件模块认为主中间件模块120出现故障,依照配置文件中设定的顺序,第一个从中间件模块成为新的主中间件模块。这里以从中间件模块130替换为主中间件模块为例,从中间件模块130成为新的主中间件模块,开始执行任务队列1341中未完成的任务,其余从中间件模块向新的主中间件模块发起心跳检测。
Claims (7)
1.一种数值水池虚拟试验数据中间件,其特征在于,所述中间件包括中间件模块M、两个CMD管理平台模块(140)和多个Client模块(110),所述中间件模块M包括主中间件(120)和从中间件(130),所述主中间件(120)与从中间件(130)相连接,所述主中间件(120)与多个Client模块(110)相连接,每个所述Client模块(110)均与数值水池虚拟试验应用***(200)相连接,所述主中间件(120)与一个CMD管理平台模块(140)相连接,所述从中间件(130)与另一个CMD管理平台模块(140)相连接,所述主中间件(120)和从中间件(130)均与数值水池虚拟试验底层分布式NoSQL数据库(300)相连接。
2.根据权利要求1所述数值水池虚拟试验数据中间件,其特征在于,所述Client模块(110)包括配置模块Ⅲ(111)、应用程序编程接口API模块(112)和通信模块Ⅲ(113),所述应用程序编程接口API模块(112)与数值水池虚拟试验应用***(200)双向传输信号,所述应用程序编程接口API模块(112)与通信模块Ⅲ(113)双向传输信号,所述通信模块Ⅲ(113)与通讯模块Ⅰ(122)双向传输信号,
所述主中间件模块(120)包括配置模块Ⅰ(121)、通讯模块Ⅰ(122)、心跳检测模块Ⅰ(123)、任务处理模块Ⅰ(124)和CMD管理平台处理模块Ⅰ(125),所述通讯模块Ⅰ(122)与任务处理模块Ⅰ(124)双向传输信号,所述任务处理模块Ⅰ(124)与数值水池虚拟试验底层分布式NoSQL数据库(300)双向传输信号,所述心跳检测模块Ⅰ(123)与心跳检测模块Ⅱ(133)双向传输信号,所述CMD管理平台处理模块Ⅰ(125)与CMD管理平台通讯模块(141)双向传输信号,
所述从中间件模块(130)包括配置模块Ⅱ(131)、通讯模块Ⅱ(132)、心跳检测模块Ⅱ(133)、任务处理模块Ⅱ(134)和CMD管理平台处理模块Ⅱ(135),所述通讯模块Ⅱ(132)与任务处理模块Ⅱ(134)双向传输信号,所述任务处理模块Ⅱ(134)与数值水池虚拟试验底层分布式NoSQL数据库(300)双向传输信号,所述CMD管理平台处理模块Ⅱ(135)与CMD管理平台通讯模块(141)双向传输信号。
3.根据权利要求2所述数值水池虚拟试验数据中间件,其特征在于,所述应用程序编程接口API模块(112)包括结果队列(1121)、应用程序编程接口API(1122)和任务队列(1123),所述的所述应用程序编程接口API(1122)从数值水池虚拟试验应用***(200)调用应用程序编程接口API,并将结果返回数值水池虚拟试验应用***(200),
所述通信模块Ⅲ(113)包括文件接收模块Ⅲ(1131)、结果接收模块(1132)、文件发送模块(1133)和任务发送模块Ⅲ(1134),
所述应用程序编程接口API(1122)通过文件发送模块Ⅲ(1133)发送文件,所述应用程序编程接口API(1122)通过任务发送模块Ⅲ(1134)发送任务,所述结果接收模块(1132)接收的结果存入结果队列(1121),所述结果接收模块(1132)接收结果返回模块Ⅰ(1222)的结果,所述文件接收模块Ⅲ(1131)接收文件发送模块Ⅰ(1224)的导出文件。
4.根据权利要求1所述数值水池虚拟试验数据中间件,其特征在于,所述通讯模块Ⅰ(122)包括任务接收模块Ⅰ(1221)、结果返回模块Ⅰ(1222)、文件接收模块Ⅰ(1223)和文件发送模块Ⅰ(1224),所述任务处理模块Ⅰ(124)包括任务队列Ⅰ(1241)、任务监测线程Ⅰ(1242)、任务执行线程池Ⅰ(1243)和底层数据库实现模块Ⅰ(1244),
所述任务接收模块Ⅰ(1221)收到任务后存入任务队列Ⅰ(1241),所述任务队列Ⅰ(1241)取出任务后发送到任务监测线程Ⅰ(1242),所述任务监测线程Ⅰ(1242)将任务调度到任务执行线程池Ⅰ(1243),所述任务执行线程池Ⅰ(1243)将返回结果传输至结果返回模块Ⅰ(1222),
所述任务执行线程池Ⅰ(1243)将任务调用至底层数据库实现模块Ⅰ(1244),所述底层数据库实现模块Ⅰ(1244)访问数值水池虚拟试验底层分布式NoSQL数据库(300),
所述文件接收模块Ⅰ(1223)将文件发送模块(1133)导入文件生成本地文件导入任务执行线程池Ⅰ(1243),所述任务执行线程池Ⅰ(1243)将返回导出文件提供文件发送模块Ⅰ(1224)导出文件至文件接收模块Ⅲ(1131);
所述CMD处理模块(125)包括命令执行模块(1251)和命令返回模块(1252),所述命令执行模块(1251)接收任务发送模块Ⅳ(1411)的命令,所述命令执行模块(1251)向命令返回模块(1252)传输执行结果,所述命令返回模块(1252)向结果接收模块Ⅳ(1412)返回执行结果;
所述心跳检测模块Ⅱ(134)包括心跳探测模块Ⅱ(1331)和心跳监听模块Ⅱ(1332),所述心跳探测模块Ⅱ(1331)向心跳监听模块Ⅰ(1232)发送心跳探测包,
所述心跳检测模块Ⅰ(123)包括心跳探测模块Ⅰ(1231)和心跳监听模块Ⅰ(1232),所述心跳监听模块Ⅰ(1232)向心跳探测模块Ⅱ(1331)发送响应。
5.根据权利要求1所述数值水池虚拟试验数据中间件,其特征在于,所述CMD管理平台通讯模块(141)包括任务发送模块Ⅳ(1411)和结果接收模块Ⅳ(1412),所述任务发送模块Ⅳ(1411)发送命令到CMD管理平台处理模块Ⅰ(125)的命令执行模块(1251),所述结果接收模块Ⅳ(1412)接收命令返回模块(1252)的返回执行结果,所述结果接收模块Ⅳ(1412)输出结果至CMD管理平台(142),所述CMD管理平台(142)生成命令传输至任务发送模块Ⅳ(1411),所述CMD管理平台(142)接收用户输入的输入命令,所述CMD管理平台(142)将返回结果输入至用户界面。
6.利用权利要求1所述的一种数值水池虚拟试验数据中间件的工作方法,其特征在于,所述方法包括以下步骤:
步骤1:用户调用应用程序编程接口API模块(112),Client模块(110)生成具体的数值水池虚拟试验数据管理任务;
步骤2:检测步骤1的任务是否为特殊任务,当是特殊任务时缓存在任务队列(1241)中,当检测不是特殊任务时任务结果标志位为未完成;
步骤3:通过任务发送模块(1134)给主中间件模块发送任务,主中间件收到任务后检查结果标志位为未完成,
步骤4:主中间件在工作时同时进行容错;
步骤5:主中间件模块(120)在发现有空闲执行线程并且任务队列不空时从任务队列中取出任务分配到空闲执行线程,调用底层数据库实现模块(1244)完成该任务并获取执行结果;
步骤6:将步骤5获取的执行结果封装后通过结果发送线程返回该任务的执行结果,,Client模块(110)收到返回的结果后将任务的结果标志位为已完成;
步骤7:将步骤6中的标志位为已完成的任务结果,再次向下层每个中间件模块发送任务;
步骤8:从中间件模块130收到任务后检查结果标志位,当任务的结果标志位为已完成则从任务队列中找到该任务进行删除,
步骤9:当主中间件收到任务后检查结果标志位为完成,则接受,同时返回客户端。
7.根据权利要求6所述的一种数值水池虚拟试验数据中间件的工作方法,其特征在于,所述步骤4进行容错的方法包括以下步骤:
步骤4.1:启动中间件时会同时启动心跳监听线程;
步骤4.2:从中间件模块(130)每隔一段时间向主中间件模块(120)发送心跳探测包,检测是否为主中间件(120);
步骤4.3:当检测为主中间件(120)时则响应从中间件模块(130)的心跳探测包;
步骤4.4:当从中间件模块(130)发出的心跳探测包没有收到主中间件(120)的响应时,从中间件模块(130)认为主中间件模块(120)出现故障,依照配置文件中设定的顺序,第一个从中间件模块替换成为新的主中间件模块,其余的从中间件模块向新的主中间件模块发送心跳探测包,检测是否为主中间件;
步骤4.5:当从中间件模块发出的心跳探测包没有收到主中间件的响应时,依次替换第二个至最后一个从中间件为主中间件,则响应从中间件模块(130)的心跳探测包,直至没有从中间件可替换成为新的主中间件模块,则结束程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911154837.0A CN110909057B (zh) | 2019-11-22 | 2019-11-22 | 一种数值水池虚拟试验数据中间件***及其工作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911154837.0A CN110909057B (zh) | 2019-11-22 | 2019-11-22 | 一种数值水池虚拟试验数据中间件***及其工作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110909057A true CN110909057A (zh) | 2020-03-24 |
CN110909057B CN110909057B (zh) | 2023-06-16 |
Family
ID=69818781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911154837.0A Active CN110909057B (zh) | 2019-11-22 | 2019-11-22 | 一种数值水池虚拟试验数据中间件***及其工作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110909057B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472810A (zh) * | 2021-07-22 | 2021-10-01 | 广东昆仑信息科技有限公司 | 一种基于tcp/ip协议socket通信的方法及*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172161A1 (en) * | 2004-01-20 | 2005-08-04 | International Business Machines Corporation | Managing failover of J2EE compliant middleware in a high availability system |
CN101741614A (zh) * | 2009-11-20 | 2010-06-16 | 中国地质调查局发展研究中心 | 对等式结点管理器及对等式结点管理方法 |
CN103500120A (zh) * | 2013-09-17 | 2014-01-08 | 北京思特奇信息技术股份有限公司 | 基于多线程异步双写的分布式缓存高可用处理方法及*** |
CN105205175A (zh) * | 2015-10-15 | 2015-12-30 | 北京农信互联科技有限公司 | 分布式数据库集群的数据操作方法及*** |
CN105224637A (zh) * | 2015-09-24 | 2016-01-06 | 珠海许继芝电网自动化有限公司 | 一种基于PostgreSQL数据库的主备/集群应用的综合性方法 |
CN106549796A (zh) * | 2016-09-27 | 2017-03-29 | 努比亚技术有限公司 | 一种固件空间下载的资源控制方法及主节点 |
US10447807B1 (en) * | 2017-09-21 | 2019-10-15 | Sprint Communications Company L.P. | Dynamic middleware source selection for optimizing data retrieval from network nodes |
-
2019
- 2019-11-22 CN CN201911154837.0A patent/CN110909057B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172161A1 (en) * | 2004-01-20 | 2005-08-04 | International Business Machines Corporation | Managing failover of J2EE compliant middleware in a high availability system |
CN101741614A (zh) * | 2009-11-20 | 2010-06-16 | 中国地质调查局发展研究中心 | 对等式结点管理器及对等式结点管理方法 |
CN103500120A (zh) * | 2013-09-17 | 2014-01-08 | 北京思特奇信息技术股份有限公司 | 基于多线程异步双写的分布式缓存高可用处理方法及*** |
CN105224637A (zh) * | 2015-09-24 | 2016-01-06 | 珠海许继芝电网自动化有限公司 | 一种基于PostgreSQL数据库的主备/集群应用的综合性方法 |
CN105205175A (zh) * | 2015-10-15 | 2015-12-30 | 北京农信互联科技有限公司 | 分布式数据库集群的数据操作方法及*** |
CN106549796A (zh) * | 2016-09-27 | 2017-03-29 | 努比亚技术有限公司 | 一种固件空间下载的资源控制方法及主节点 |
US10447807B1 (en) * | 2017-09-21 | 2019-10-15 | Sprint Communications Company L.P. | Dynamic middleware source selection for optimizing data retrieval from network nodes |
Non-Patent Citations (1)
Title |
---|
黄震,李德文,黄文君,韦珂,金建祥: "《大规模工业控制***网络中间件设计》", 《计算机工程》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472810A (zh) * | 2021-07-22 | 2021-10-01 | 广东昆仑信息科技有限公司 | 一种基于tcp/ip协议socket通信的方法及*** |
CN113472810B (zh) * | 2021-07-22 | 2023-05-02 | 广东昆仑信息科技有限公司 | 一种基于tcp/ip协议socket通信的方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN110909057B (zh) | 2023-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10891267B2 (en) | Versioning of database partition maps | |
CN110083662B (zh) | 一种基于平台***的双活架构建设方法 | |
CN112214338A (zh) | 一种基于微服务灵活部署的物联网云平台 | |
CN109788055B (zh) | 一种基于微服务架构的服务治理***及其方法 | |
CN103905537A (zh) | 分布式环境下管理工业实时数据存储的*** | |
CN113821268B (zh) | 一种与OpenStack Neutron融合的Kubernetes网络插件方法 | |
CN101945056A (zh) | 基于策略的jms中间件群的***和/或方法 | |
JP2015537307A (ja) | コンポーネント指向ハイブリッドクラウドオペレーティングシステムのアーキテクチャ及びその通信方法 | |
CN102164184A (zh) | 云计算网络中计算机实体的接入和管理方法及云计算网络 | |
WO2021190360A1 (zh) | 汽车诊断云平台中的虚拟化资源调度***、方法 | |
CN102594861A (zh) | 一种多服务器负载均衡的云存储*** | |
CN104965850A (zh) | 一种基于开源技术的数据库高可用实现方法 | |
CN110113406B (zh) | 基于分布式的计算服务集群*** | |
JPH08137795A (ja) | データ独立型コンピュータシステムにおけるデータアクセス権管理方式 | |
CN113742033A (zh) | 一种kubernetes集群联邦***及其实现方法 | |
CN101980207A (zh) | 一种数据库访问的实现方法和*** | |
CN114448983A (zh) | 基于ZooKeeper的分布式数据交换方法 | |
CN104573428B (zh) | 一种提高服务器集群资源有效性的方法及*** | |
CN111541599B (zh) | 基于数据总线的集群软件***及方法 | |
CN115695139A (zh) | 一种基于分布式鲁棒增强微服务***架构的方法 | |
US20090100082A1 (en) | Replication and mapping mechanism for recreating memory durations | |
CN110909057A (zh) | 一种数值水池虚拟试验数据中间件的工作方法 | |
CN101789963A (zh) | 数据同步*** | |
CN102055779A (zh) | 生成高可用性组的方法、设备及*** | |
JP3611610B2 (ja) | データ独立型コンピュータシステムにおける機器接続定義の自動生成方式 |
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 |