CN113778786B - 一种监控中间件 - Google Patents
一种监控中间件 Download PDFInfo
- Publication number
- CN113778786B CN113778786B CN202110906127.XA CN202110906127A CN113778786B CN 113778786 B CN113778786 B CN 113778786B CN 202110906127 A CN202110906127 A CN 202110906127A CN 113778786 B CN113778786 B CN 113778786B
- Authority
- CN
- China
- Prior art keywords
- client
- data
- queue
- server
- middleware
- 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.)
- Active
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 45
- 238000004891 communication Methods 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims abstract description 23
- 238000013515 script Methods 0.000 claims description 34
- 238000004519 manufacturing process Methods 0.000 claims description 25
- 238000004422 calculation algorithm Methods 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 4
- 238000003491 array Methods 0.000 claims description 3
- 238000000926 separation method Methods 0.000 claims 1
- 238000012423 maintenance Methods 0.000 abstract description 19
- 238000000034 method Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000006978 adaptation Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种监控中间件,包括:通讯层,用于基于socket和RPC建立C/S服务,所述中间件可作为客户端或服务端;缓存层,用于通过循环队列存储固定数据格式的数据;业务层,用于通过动态编译加载采集业务,并将采集的数据处理成所述固定数据格式的数据。本发明实施例满足可横向扩展的要求,适配多变的运维业务的消息格式。
Description
技术领域
本发明涉及IT运维监控领域,特别涉及一种监控中间件。
背景技术
随着企业核心业务发展与创新,IT系统在企业内部的重要性日益突出,对监控软件的要求也日趋严格。体现在:
监控内容复杂。不同企业的IT运维部门,要针对各自的日常生产需求,有不同的业务监控及其指标。大部分企业的运维系统建设是从网络监控出发,包括网络、服务器、虚拟机、数据库、业务系统等类型的监控内容。不同版本的服务器、操作系统、数据库等,又对应着不同的监控方式。面对复杂多变的业务,运维人员需要不断变更监控内容。而现有监控中间件扩展性不高,或者需要针对不同接口进行监控逻辑改造和开发,需要投入较大的人力资源。
监控数据量大。以一个中小型券商为例,就操作系统而言,企业内至少有1K+个操作系统,每个操作系统有近60个关注的指标,以5分钟平均数据来算,每日仅操作系统的数据量就达到1728+万个,这还不包含服务器、数据库、业务系统等其他监控内容。从行业经验来看,若有1K+个监控对象,包含相关的400+个监控数据,每日监控的数据量达到20+G。
监控数据有效性。运维部门对监控软件提供的数据要求实时、准确且有效。数据延迟更新或不更新,可能会给运维人员工作造成误判,不能及时发现存在异常的数据,影响运维工作的开展。
监控内容跨网段。运维部门出于安全性策略,对企业的系统资源分散部署,构建“灾备环境”、“两地三中心”等模式。监控软件的跨网段通讯,能够将多个孤岛的系统,实现一体化运维。
运维软件的优劣,取决于系统的核心监控组件是否强大。这对核心中间件的可扩展性、稳定性、实效性和网络融合性提出了要求。
监控中间件需要满足可横向扩展的要求,适配多变的运维业务的消息格式。
监控中间件需要满足稳定性和实效性。在连续传输数据量大时,能够抗住大数据和高并发对监控中间件来带的影响。保持消息通讯队列畅通,避免数据延迟甚至系统崩溃。
监控中间件需要满足跨网段通讯,破除孤岛式通讯和管理,把企业内互联的监控对象,统一监控。
目前的监控软件大多数都是使用市面上开源的消息中间件作为消息通讯与数据传输,主要是解决高并发来带的系统稳定和数据传输问题,在可扩展性和跨网段通讯没有很好的效果。不能同时解决以上提及的可扩展性、稳定性、实效性和网络互通的问题。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种监控中间件,能够实现数据从采集、处理、格式化、传输(或跨网段传输)、缓存、转发,进行了各阶段的平衡性适配,从而保证了整个系统的高效、稳定运行。
根据本发明实施例的监控中间件,包括:通讯层,用于基于socket和RPC建立C/S服务,所述中间件可作为客户端或服务端;缓存层,用于通过循环队列存储固定数据格式的数据;业务层,用于通过动态编译加载采集业务,并将采集的数据处理成所述固定数据格式的数据。
根据本发明实施例的监控中间件,至少具有如下有益效果:
本发明实施例的监控中间件使用sokcet长连接进行双向通信;在内存数据存储上使用固定大小的循环队列;使用动态编译的方式加载可变的采集业务,相对于传统采集使用http服务,采用数据库存储数据并且以硬编码方式增加采集逻辑方案,具有以下优势:
(1)成熟的socket长连接技术保证双端连接的稳定,即使在断网情况下亦能恢复连接并且保证数据持续上供;
(2)采集数据的高频写入与读取,要求稳定的数组结构形成高速的缓存,在写入与读取的同时相对于在数据库进行写盘与读盘,性能和效率更高;
(3)采用动态编译的模式,将复杂多变的采集业务限定在如何给处理成固定的数据格式,而这复杂多变可针对不用行业客户进行定制开发,动态发布,提高需求响应速度与客户满意度。
根据本发明的一些实施例,所述中间件包括第一中间件和第二中间件,所述第一中间件作为客户端,所述第二中间件作为服务端;所述客户端启动时配置有参数,所述参数包括服务端ID、服务端IP和服务端端口;所述客户端与所述服务端建立连接,所述客户端创建两条队列,包括第一生产队列和第一消费队列;所述服务端与所述客户端建立连接,以所述客户端的客户端ID和客户端IP为主键创建两条队列,包括第二生产队列和第二消费队列;所述服务端与所述客户端通讯时,由所述服务端发送至所述客户端的消息指令,根据客户端ID寻找到所述第二消费队列并进入所述第二消费队列进行消费;所述客户端接收到所述服务端发送的消息指令,存入所述第一生产队列,若所述客户端存在下级客户端,则所述消息指令存入所述第一消费队列并将其转发至所述下级客户端,若不存在下级客户端,则将所述消息指令存入所述第一消费队列并处理消费后返回。
根据本发明的一些实施例,所述下级客户端作为客户端与所述客户端作为服务端进行连接。
根据本发明的一些实施例,当所述客户端连接所述服务端成功,所述客户端开启四个线程:接收消息线程,用于按序处理接收的指令消息,将所述指令消息存入第一生产队列;处理接收消息线程,用于处理所述第一生产队列中的所述指令消息,处理的结果存入所述缓存层或从所述缓存层取数据进行数据交换并把结果存入所述第一消费队列;发送消息线程,用于按序处理,从所述第一生产队列获取消息指令发送至对端;协调线程,用于检查其他线程活动情况,包括检查接收消息的队列和发送消息的队列是否已满,若队列已满则清空;检查socket连接状态,若socket连接已断开,则清空所有队列,并尝试每隔一段时间重连一次。
根据本发明的一些实施例,所述通讯层包括加密解密模块,用于将客户端或服务端发送的数据进行加密或解密;所述加密包括将原文转换成字节数组,将所述字节数组的每一位与密钥进行按位异或操作,得到密文;所述解密包括将密文转换为字节数组,将所述字节数组的每一位与所述密钥进行按位异或操作,得到原文。
根据本发明的一些实施例,所述缓存层采用树状结构存储,预设根节点ID,各节点通过特定字符区分不同层级,各节点ID唯一且所述节点ID根据哈希算法生成唯一的整数作为指标数据进行存储。
根据本发明的一些实施例,所述指标数据包括指标历史数据,根据数据类型分为数值型和字符型,分别存储于两个字节数组中;第一字节数组,存储数值型指标数据,所述数值型指标数据包括指标时间、索引ID、上一条记录位置和指标值;第二字节数组,存储字符型指标数据,所述字符型指标数据包括指标时间、索引ID、上一条记录位置和数据标记;所述数值型指标数据和所述字符型指标数据长度固定,且所述字节数组循环覆盖。
根据本发明的一些实施例,所述业务层包括若干可执行脚本,所述业务层对所述可执行脚本进行动态编译,生成实例化对象;所述实例化对象可为所述中间件赋能,使用RPC远程调用,采用callback模式。
根据本发明的一些实施例,所述可执行脚本以队列形式存储;每一个所述可执行脚本作为一个任务,所述任务的字段包括cron表达式、脚本下次执行时间、脚本及脚本属性;所述业务层用于根据设定的cron表达式,计算出脚本下次执行时间,并通过线程轮询的方式,判断当前时刻是否超过脚本下次执行时间,若当前时刻>=脚本下次执行时间,则执行脚本。
根据本发明的一些实施例,所述脚本用于将采集的数据,根据不同数据来源解析不同的数据格式,将所述采集的数据转换成固定的数据格式;所述数据来源包括:通过通用标准协议采集的原始数据、使用RPA技术采集业务应用的界面数据以及使用三方提供的数据接口获取的数据包。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的监控中间件的结构示意框图。
图2为本发明实施例的服务端发送信息至客户端的时序图。
图3为本发明实施例的客户端发送信息至服务端的时序图。
图4为本发明实施例的协调队列工作流程图。
图5为本发明实施例的服务端和各客户端通讯连接示意图。
图6为存在多个网络隔离环境的业务网结构示意图。
图7为本发明实施例的作为业务网与办公网的中转的客户端部署示意图。
图8为本发明实施例的业务层动态编译逻辑示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个及两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
本发明目的在于满足IT运维监控领域关于数据量大从而引发的数据时效性、系统稳定性、业务拓展性的需求。本发明实施例的中间件从通讯层、缓存层、业务层进行功能设计。在本发明中实施例,数据从采集、处理、格式化、传输(或跨网段传输)、缓存、转发,进行了各阶段的平衡性适配,从而保证了整个系统的高效、稳定运行。
参照图1,本发明实施例的系统分为通讯层、缓存层和业务层。
1、通讯层
通讯层基于socket和RPC(Remote Procedure Call,远程过程调用),建立C/S服务,客户端与服务端通过一条socket长连接+自定义数据报文进行双向通信。客户端与服务端、客户端与客户端之间的功能调用采用RPC。
当客户端连接服务端成功时,开启四个线程:
1)接收消息线程
按序处理,接收指令消息存入生产队列。
2)处理接收消息线程
处理生产队列内指令消息,消息的类型分为setVal(存值,格式为setVal{'id':索引,'val':值})、getVal(取值,格式为:getVal索引);消息处理的结果存值进缓存层或者从缓存层取数据,进行数据交换,并把结果存入消费队列。
3)发送消息线程
按序处理,从生产队列获取消息发送到对端。
4)协调线程
参照图4,该线程用于检查其他线程活动情况,相当于守护线程。它的工作逻辑是,先后检查接收消息队列和发送消息队列是否已满,若消息队列已满(队列上限10万条),则清空消息队列。下一步,检查socket连接状态,若socket连接已断开,则清空所有消息队列,并尝试每隔5秒重连一次;若socket连接未断开,工作结束。
当服务端连接客户端时,同样开启上述四个线程。
服务端持有各个客户端的两种队列:生产队列用于暂存新增的指令;消费队列用于暂存待消耗的指令。比如:每个客户端有2条队列,有5个客户端连接到服务端,则服务端就有5*2=10条队列。
参照图2,服务端发送消息至客户端时,接收线程接收指令消息存入生产队列,处理线程处理生产队列内的指令消息,把结果存入消费队列,发送线程从消费队列获取消息发送至客户端。
参照图3,客户端发送消息至服务端时,接收线程接收指令消息存入生产队列,处理线程处理生产队列内的指令消息,把结果存入消费队列,发送线程从消费队列获取消息发送至服务端。
在一些实施例中,每条数据会进行简单的异或算法加密,并打包成TLD通信包(即标记Tag,长度Length,数据Data)发送。
异或算法逻辑:异或(xor)是一个数学运算符。它应用于逻辑运算。假设固定密钥为key(1字节),加密过程为:将原文转换成字节数组,将字节数组的每一位与key进行按位异或操作,得到的最终结果即为密文;解密过程为:将密文转换为字节数组,将字节数组的每一位与相同的key进行按位异或操作,即可得到原文。
TLD通信包:[(byte)0xf0+data.length+data]Tag用于标记下一条指令的开始。
基于socket和rpc两种通讯模式,本发明实施例可实现在两个无法直接联网的环境跨网络通讯,从而达到网络互动进行信息通讯、数据采集的目的。具体实现逻辑如下:
1)中间件的本身可当作是服务端启动,亦可当作客户端启动。启动时带上参数有:自定义ID、服务端IP、服务端端口。
2)当客户端A连接成功服务端A时,本身创建两条队列:生产/消费队列;
3)服务端A成功与客户端A建立连接时,会以客户端ID+客户端IP为主键创建两条队列:生产/消费队列;
4)客户端B可将客户端A当作服务端,启动时带上参数:客户端A的ID、客户端A的IP、客户端A的端口。
5)如图5所示,由服务端A发出到某客户端ID消息指令,根据ID寻找并且进入其消费队列进行消费;客户端B收到服务端发送过来的消息指令,存入其生产队列,若本身存在还有下级客户端,则将该指令存入其消费队列,将其转发到下级客户端;客户端C收到客户端B发送过来的消息指令,存入其生产队列,若本身无存在下级客户端,则将该指令存入其消费队列,将其处理消费并且原路返回。
基于以上逻辑,在存在多个网络隔离的业务网环境中,本发明实施例可以以中间转发的模式,将两个隔离的网络进行数据通讯达到,网络互通目的。
如图6所示,业务网1与业务网2是隔离的,业务网1与办公网是联通的,应用服务是安装在办公网,如果需要采集业务网2的设备数据,那么就需要在办公网与业务网中间,配置一台可达办公网络与业务网2的服务器,在其部署一个客户端作为中转,从而达到采集目的。搭建好后的部署图如图7所示。
2、缓存层
(1)缓存采用树状结构存储,根节点ID固定为"root",各节点通过'/'字符区分不同层级,节点ID唯一且通过哈希算法形成唯一整数存储。
(2)指标数据默认缓存到"root/perf"节点下,指标历史数据根据数据类型分为数值型和字符型,分别存储于两个字节数组中。
a.数值型指标数据单元长度固定为24字节,包含指标时间(长整型,占8字节)、索引ID(整型,占4字节)、上一条记录位置(整型,占4字节)和指标值(长整型,占8字节),如下表1所示;
表1数值型指标数据单元
由于监控采集的数值指标相对较少,该数组设定为20M条数据,即20*1024*1024*24=503316480byte,且该数组循环覆盖。
b.字符型指标数据单元长度为19+N(N为指标值字节数)字节,包含指标时间(长整型,占8字节)、索引ID(整型,占4字节)、上一条记录位置(整型,占4字节)、数据标记(固定,字节型,占1字节)、数据长度(短整型,占2字节)和指标值(字节数组,变长),如下表2所示。
表2字符型指标数据单元
由于监控采集的字符指标相对较多且长度不定,该数组设定为128MB大小数据,且该数组循环覆盖。
3、业务层
参照图8,本发明实施例的业务层采用了动态编译的原理,支持Java。通过Java内置的编译器(rt.jar)实现代码源文件动态编译,生成“.class”文件,利用反射将".class"文件实例化为对象。
下一步,直接根据某一个具体的类来取得Class类的实例化对象。
每一个可执行的脚本都称之为一个任务,系统将所有的任务以队列形式存储。任务的主要字段有cron表达式、脚本下次执行时间、脚本及脚本属性。根据设定的cron表达式,计算出脚本下次执行时间。通过线程轮询的方式,判断当前时刻是否超过脚本下次执行时间,若当前时刻>=脚本下次执行时间,则执行脚本。
本实施例采用动态编译的模式,将复杂多变的采集业务限定在如何给处理成固定的数据格式,而这复杂多变可针对不用行业客户进行定制开发,动态发布,提高需求响应速度与客户满意度。主动采集的数据来源大致有三种:1、用通用标准协议如ssh、snmp、jdbc、http、syslog等协议采集的原始数据;2、使用RPA(自动流程化机器人)技术采集业务应用的界面数据;3、使用三方提供的数据接口获取的数据包。每种数据都有不同的数据格式。脚本可针对不同数据来源,针对性的解析不同的数据格式,转换成固定的,系统可认的数据格式:
[Protocol].[Type].[Group].[Indicator].[Instance] |
如:SNMP.windows.disk.diskUsed.C,代表“C盘的磁盘已用空间”指标,格式化的数据是以key-value传入缓存层,其value就是该指标的对应的值,比如“C盘的磁盘已用空间为500M”,那么其vaule值为500。
脚本的动态编译因为在中间件,即服务端或者是客户端进行,编译后实例化的对象可为中间件赋能,使用RPC远程调用,采用callbak模式,即处理结果作为参数传递给回调行数进行处理。具体逻辑是,服务端调用客户端某一方法,发下去的请求,请求头带上自增id+方法名称,同时开启一条阻塞线程,等待1分钟,1分钟内响应结果则在结果上加上原本的自增id+方法名称+结果返回;若超时,则在结果上加上原本的自增id+方法名称+NULL返回。
本发明实施例中使用的逻辑使用sokcet长连接进行双向通信;在内存数据存储上使用固定大小的循环队列;使用动态编译的方式加载可变的采集业务,相对于传统采集使用http服务,采用数据库存储数据并且以硬编码方式增加采集逻辑方案,具有以下优势:
(1)成熟的socket长连接技术保证双端连接的稳定,即使在断网情况下亦能恢复连接并且保证数据持续上供;
(2)采集数据的高频写入与读取,要求稳定的数组结构形成高速的缓存,在写入与读取的同时相对于在数据库进行写盘与读盘,性能和效率更高;
(3)采用动态编译的模式,将复杂多变的采集业务限定在如何给处理成固定的数据格式,而这复杂多变可针对不用行业客户进行定制开发,动态发布,提高需求响应速度与客户满意度。
本发明的主要目的是为了在IT运维行业提供一种稳定、准确且快速有效的监控中间件。在日常运维中,监控系统是运维人员不可或缺的工具,可靠的运维系统可以极大的提高运维人员的工作效率,保证了IT运维服务的正常运转。而监控系统的可靠性取决于核心监控中间件,本发明可以保障运维系统的消息传输、数据存储、业务拓展的能力,确保监控系统真正的7x24小时不间断运行,稳定有效。
尽管本文描述了具体实施方案,但是本领域中的普通技术人员将认识到,许多其它修改或另选的实施方案同样处于本公开的范围内。例如,结合特定设备或组件描述的功能和/或处理能力中的任一项可以由任何其它设备或部件来执行。另外,虽然已根据本公开的实施方案描述了各种例示性具体实施和架构,但是本领域中的普通技术人员将认识到,对本文所述的例示性具体实施和架构的许多其它修改也处于本公开的范围内。
上文参考根据示例性实施方案所述的系统、方法、系统和/或计算机程序产品的框图和流程图描述了本公开的某些方面。应当理解,框图和流程图中的一个或多个块以及框图和流程图中的块的组合可分别通过执行计算机可执行程序指令来实现。同样,根据一些实施方案,框图和流程图中的一些块可能无需按示出的顺序执行,或者可以无需全部执行。另外,超出框图和流程图中的块所示的那些部件和/或操作以外的附加部件和/或操作可存在于某些实施方案中。
因此,框图和流程图中的块支持用于执行指定功能的装置的组合、用于执行指定功能的元件或步骤的组合以及用于执行指定功能的程序指令装置。还应当理解,框图和流程图中的每个块以及框图和流程图中的块的组合可以由执行特定功能、元件或步骤的专用硬件计算机系统或者专用硬件和计算机指令的组合来实现。
本文所述的程序模块、应用程序等可包括一个或多个软件组件,包括例如软件对象、方法、数据结构等。每个此类软件组件可包括计算机可执行指令,所述计算机可执行指令响应于执行而使本文所述的功能的至少一部分(例如,本文所述的例示性方法的一种或多种操作)被执行。
软件组件可存储为文件或其它数据存储构造。具有相似类型或相关功能的软件组件可一起存储在诸如特定的目录、文件夹或库中。软件组件可为静态的(例如,预设的或固定的)或动态的(例如,在执行时创建或修改的)。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (9)
1.一种监控中间件,其特征在于,包括:
通讯层,用于基于socket和RPC建立C/S服务,所述中间件可作为客户端或服务端;
缓存层,用于通过循环队列存储固定数据格式的数据;
业务层,用于通过动态编译加载采集业务,并将采集的数据处理成所述固定数据格式的数据;
所述中间件包括第一中间件和第二中间件,所述第一中间件作为客户端,所述第二中间件作为服务端;
所述客户端启动时配置有参数,所述参数包括服务端ID、服务端IP和服务端端口;
所述客户端与所述服务端建立连接,所述客户端创建两条队列,包括第一生产队列和第一消费队列;
所述服务端与所述客户端建立连接,以所述客户端的客户端ID和客户端IP为主键创建两条队列,包括第二生产队列和第二消费队列;
所述服务端与所述客户端通讯时,
由所述服务端发送至所述客户端的消息指令,根据客户端ID寻找到所述第二消费队列并进入所述第二消费队列进行消费;
所述客户端接收到所述服务端发送的消息指令,存入所述第一生产队列,若所述客户端存在下级客户端,则所述消息指令存入所述第一消费队列并将其转发至所述下级客户端,若不存在下级客户端,则将所述消息指令存入所述第一消费队列并处理消费后返回。
2.根据权利要求1所述的监控中间件,其特征在于,所述下级客户端作为客户端与所述客户端作为服务端进行连接。
3.根据权利要求1所述的监控中间件,其特征在于,当所述客户端连接所述服务端成功,所述客户端开启四个线程:
接收消息线程,用于按序处理接收的指令消息,将所述指令消息存入第一生产队列;
处理接收消息线程,用于处理所述第一生产队列中的所述指令消息,处理的结果存入所述缓存层或从所述缓存层取数据进行数据交换并把结果存入所述第一消费队列;
发送消息线程,用于按序处理,从所述第一生产队列获取消息指令发送至对端;
协调线程,用于检查其他线程活动情况,包括检查接收消息的队列和发送消息的队列是否已满,若队列已满则清空;检查socket连接状态,若socket连接已断开,则清空所有队列,并尝试每隔一段时间重连一次。
4.根据权利要求1所述的监控中间件,其特征在于,所述通讯层包括加密解密模块,用于将客户端或服务端发送的数据进行加密或解密;
所述加密包括将原文转换成字节数组,将所述字节数组的每一位与密钥进行按位异或操作,得到密文;
所述解密包括将密文转换为字节数组,将所述字节数组的每一位与所述密钥进行按位异或操作,得到原文。
5.根据权利要求1所述的监控中间件,其特征在于,所述缓存层采用树状结构存储,预设根节点ID,各节点通过分隔字符区分不同层级,各节点ID唯一且所述节点ID根据哈希算法生成唯一的整数作为指标数据进行存储。
6.根据权利要求5所述的监控中间件,其特征在于,所述指标数据包括指标历史数据,根据数据类型分为数值型和字符型,分别存储于两个字节数组中;
第一字节数组,存储数值型指标数据,所述数值型指标数据包括指标时间、索引ID、上一条记录位置和指标值;
第二字节数组,存储字符型指标数据,所述字符型指标数据包括指标时间、索引ID、上一条记录位置和数据标记;
所述数值型指标数据和所述字符型指标数据长度固定,且所述字节数组循环覆盖。
7.根据权利要求1所述的监控中间件,其特征在于,所述业务层包括若干可执行脚本,所述业务层对所述可执行脚本进行动态编译,生成实例化对象;
所述实例化对象可为所述中间件赋能,使用RPC远程调用,采用callback模式。
8.根据权利要求7所述的监控中间件,其特征在于,所述可执行脚本以队列形式存储;每一个所述可执行脚本作为一个任务,所述任务的字段包括cron表达式、脚本下次执行时间、脚本及脚本属性;
所述业务层用于根据设定的cron表达式,计算出脚本下次执行时间,并通过线程轮询的方式,判断当前时刻是否超过脚本下次执行时间,若当前时刻>=脚本下次执行时间,则执行脚本。
9.根据权利要求7所述的监控中间件,其特征在于,所述脚本用于将采集的数据,根据不同数据来源解析不同的数据格式,将所述采集的数据转换成固定的数据格式;
所述数据来源包括:通过通用标准协议采集的原始数据、使用RPA技术采集业务应用的界面数据以及使用三方提供的数据接口获取的数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110906127.XA CN113778786B (zh) | 2021-08-09 | 2021-08-09 | 一种监控中间件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110906127.XA CN113778786B (zh) | 2021-08-09 | 2021-08-09 | 一种监控中间件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113778786A CN113778786A (zh) | 2021-12-10 |
CN113778786B true CN113778786B (zh) | 2023-11-14 |
Family
ID=78837154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110906127.XA Active CN113778786B (zh) | 2021-08-09 | 2021-08-09 | 一种监控中间件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113778786B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997024879A1 (en) * | 1995-12-28 | 1997-07-10 | Tele-Communications, Inc. | Methods and systems for client or customer-site transaction processing in a distributed database system |
US8271996B1 (en) * | 2008-09-29 | 2012-09-18 | Emc Corporation | Event queues |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN105472042A (zh) * | 2016-01-15 | 2016-04-06 | 中煤电气有限公司 | Web端控制的消息中间件系统及其数据传送方法 |
CN106648940A (zh) * | 2017-03-13 | 2017-05-10 | 北京百悟科技有限公司 | 远程过程调用方法及装置 |
CN111756811A (zh) * | 2020-05-29 | 2020-10-09 | 苏州浪潮智能科技有限公司 | 一种分布式系统的主动推送的方法、系统、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11252119B2 (en) * | 2018-06-04 | 2022-02-15 | Salesforce.Com, Inc. | Message logging using two-stage message logging mechanisms |
-
2021
- 2021-08-09 CN CN202110906127.XA patent/CN113778786B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997024879A1 (en) * | 1995-12-28 | 1997-07-10 | Tele-Communications, Inc. | Methods and systems for client or customer-site transaction processing in a distributed database system |
US8271996B1 (en) * | 2008-09-29 | 2012-09-18 | Emc Corporation | Event queues |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN105472042A (zh) * | 2016-01-15 | 2016-04-06 | 中煤电气有限公司 | Web端控制的消息中间件系统及其数据传送方法 |
CN106648940A (zh) * | 2017-03-13 | 2017-05-10 | 北京百悟科技有限公司 | 远程过程调用方法及装置 |
CN111756811A (zh) * | 2020-05-29 | 2020-10-09 | 苏州浪潮智能科技有限公司 | 一种分布式系统的主动推送的方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113778786A (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111787073B (zh) | 一种统一服务的限流熔断平台及其方法 | |
US11615082B1 (en) | Using a data store and message queue to ingest data for a data intake and query system | |
JP3837291B2 (ja) | アプリケーション独立形メッセージングシステム | |
CN104199957B (zh) | 一种Redis通用代理的实现方法 | |
EP2051183B1 (en) | Query processing system and method for database with encrypted column by query encryption transformation | |
US20070124437A1 (en) | Method and system for real-time collection of log data from distributed network components | |
US10341509B2 (en) | Client device state collection and network-based processing solution | |
WO2017181872A1 (zh) | 数据处理系统以及方法 | |
CN111754216A (zh) | 一种支付链路自动切换方法 | |
US11966797B2 (en) | Indexing data at a data intake and query system based on a node capacity threshold | |
CN112118174B (zh) | 软件定义数据网关 | |
JP2014528126A (ja) | 複数のターゲットへのマルチソースプッシュ通知の分配 | |
US12019634B1 (en) | Reassigning a processing node from downloading to searching a data group | |
US20070255823A1 (en) | Method for low-overhead message tracking in a distributed messaging system | |
Ying et al. | Distributed operator placement and data caching in large-scale sensor networks | |
US7788330B2 (en) | System and method for processing data associated with a transmission in a data communication system | |
CN113127732A (zh) | 业务数据的获取方法、装置、计算机设备和存储介质 | |
CN111464612A (zh) | 一种恶劣环境下提供稳定计算服务的方法 | |
US8832255B2 (en) | Using status inquiry and status response messages to exchange management information | |
US20090234904A1 (en) | System and method for dynamic extension of aggregation engine | |
US8077699B2 (en) | Independent message stores and message transport agents | |
CN113778786B (zh) | 一种监控中间件 | |
CN112667586B (zh) | 一种基于流处理的数据同步的方法、系统、设备及介质 | |
US8005923B2 (en) | System and method of obfuscating queue management | |
CN111756836A (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 |