一种数据处理方法、装置及数据交换服务器和存储介质与流程

文档序号:21626579发布日期:2020-07-29 02:33阅读:168来源:国知局
一种数据处理方法、装置及数据交换服务器和存储介质与流程

本申请涉及计算机技术领域,更具体地说,涉及一种数据处理方法、装置及一种数据交换服务器和一种计算机可读存储介质。



背景技术:

随着信息技术的快速发展,数据中心的建设越来越多,对于数据中心的智慧运营要求也越来越高,数据中心动环监控系统作为智慧运行的基础平台,其性能也越来也重要。

数据中心动环监控系统通常包括:数据获取模块、事件处理模块、告警触发模块、web显示模块、lcd显示模块、集中监控模块等。各模块之间需要进行大量实时的数据交换,才能对底层设备进行实时监控,确保当设备异常时能够及时作出处理。在传统的方案中,一般采用共享内存的方式实现各模块之间的数据交换,因为共享内存是进程间通信效率最高的方式。但是共享内存的方式会导致模块之间耦合性太强,以至于后期维护非常复杂。一旦其中一个模块进行了修改,其余模块也要同步修改;而如果其中一个环节出错,会导致整个系统错误,所有模块都要参与bug调试,明显增加了调试复杂度和维护成本。



技术实现要素:

本申请的目的在于提供一种数据处理方法、装置及一种数据交换服务器和一种计算机可读存储介质,减少了模块之间的耦合性,有利于降低后期维护成本,还可以满足快速数据交换的时间需求。

为实现上述目的,本申请提供了一种数据处理方法,应用于数据交换服务器,所述方法包括:

接收数据生产者发起的数据写入请求,并确定待写入数据对应的数据类型和数据标识号;

根据所述数据类型和所述数据标识号确定对应的目标内存块和目标偏移地址;

判断所述目标内存块是否存在;

如果是,则直接将所述待写入数据写入所述目标内存块的所述目标偏移地址中;

如果否,则在内存中为当前数据生产者创建新的内存块,将新建内存块作为所述目标内存块,所述新建内存块内的存储地址为连续内存地,并执行将所述待写入数据写入所述目标内存块的所述目标偏移地址中的步骤址。

可选的,所述根据所述数据类型和所述数据标识号确定对应的目标内存块和目标偏移地址,包括:

根据所述数据类型调用对应的接口函数;

通过所述接口函数,基于所述数据标识号和每个内存块大小确定对应的目标内存块的块索引和目标偏移地址。

可选的,所述基于所述数据标识号和每个内存块大小确定对应的目标内存块的块索引和目标偏移地址,包括:

确定所述数据标识号对所述内存块大小分别进行整除、取余运算得到的第一数值和第二数值;

将所述第一数值确定为所述目标内存块的块索引,将所述第二数值确定为所述目标偏移地址。

可选的,所述在内存中为当前数据生产者创建新的内存块之后,还包括:

为所述新建内存块创建对应的块索引,并将块索引与所述新建内存块的对应关系存入第一配置文件中。

可选的,将所述待写入数据写入所述目标内存块的所述目标偏移地址中之后,还包括:

将所述待写入数据的数据类型、数据实际写入地址和数据标识号的对应关系存入第二配置文件中。

可选的,还包括:

接收数据消费者发起的数据读取请求,确定目标数据的数据类型和数据标识号;

基于所述第二配置文件,确定所述目标数据的实际写入地址;

通过读取所述实际写入地址,获取所述目标数据并将所述目标数据返回至所述数据读取请求的发起方。

为实现上述目的,本申请提供了一种数据处理装置,应用于数据交换服务器,所述装置包括:

接收模块,用于接收数据生产者发起的数据写入请求,并确定待写入数据对应的数据类型和数据标识号;

确定模块,用于根据所述数据类型和所述数据标识号确定对应的目标内存块和目标偏移地址;

判断模块,用于判断所述目标内存块是否存在;

写入模块,用于若所述目标内存块存在,则直接将所述待写入数据写入所述目标内存块的所述目标偏移地址中;

创建模块,用于若所述目标内存块不存在,则在内存中为当前数据生产者创建新的内存块,将新建内存块作为所述目标内存块,所述新建内存块内的存储地址为连续内存地址,并执行将所述待写入数据写入所述目标内存块的所述目标偏移地址中的步骤。

可选的,所述确定模块,包括:

函数调用单元,用于根据所述数据类型调用对应的接口函数;

地址确定单元,用于通过所述接口函数,基于所述数据标识号和每个内存块大小确定对应的目标内存块的块索引和目标偏移地址。

为实现上述目的,本申请提供了一种数据交换服务器,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现前述公开的任一种数据处理方法的步骤。

为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述公开的任一种数据处理方法的步骤。

通过以上方案可知,本申请提供的一种数据处理方法,应用于数据交换服务器,所述方法包括:接收数据生产者发起的数据写入请求,并确定待写入数据对应的数据类型和数据标识号;根据所述数据类型和所述数据标识号确定对应的目标内存块和目标偏移地址;判断所述目标内存块是否存在;如果是,则直接将所述待写入数据写入所述目标内存块的所述目标偏移地址中;如果否,则在内存中为当前数据生产者创建新的内存块,将新建内存块作为所述目标内存块,所述新建内存块内的存储地址为连续内存地址,并执行将所述待写入数据写入所述目标内存块的所述目标偏移地址中的步骤。由上可知,本申请利用数据交换服务器实现数据交互,数据生产者可将数据写入交换服务器以供数据消费者读取,使得所有模块只需要与数据交换服务器进行交互,各个模块之间不需要直接进行数据交换,减少了模块之间的耦合性,有利于降低后期维护成本;另外,仅当数据生产者写入数据时为其分配内存块,能够有效避免内存空间的浪费,且每个内存块内的存储地址为连续内存地址,可以满足快速数据交换的时间需求。

本申请还公开了一种数据处理装置及一种数据交换服务器和一种计算机可读存储介质,同样能实现上述技术效果。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例公开的一种数据处理方法的流程图;

图2为本申请实施例公开的一种数据读写过程的流程图;

图3为本申请实施例公开的一种数据处理装置的结构图;

图4为本申请实施例公开的一种数据交换服务器的结构图;

图5为本申请实施例公开的另一种数据交换服务器的结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在现有技术中,一般采用共享内存的方式实现数据中心动环监控系统各模块之间的数据交换,然而这种方式会导致模块之间耦合性太强,以至于后期维护非常复杂。一旦其中一个模块进行了修改,其余模块也要同步修改;而如果其中一个环节出错,会导致整个系统错误,所有模块都要参与bug调试,明显增加了调试复杂度和维护成本。

因此,本申请实施例公开了一种数据处理方法,减少了模块之间的耦合性,有利于降低后期维护成本,还可以满足快速数据交换的时间需求。

图1为本申请实施例公开的一种数据处理方法的流程图,如图1所示,所述数据处理方法应用于数据交换服务器,具体包括:

s101:接收数据生产者发起的数据写入请求,并确定待写入数据对应的数据类型和数据标识号;

在本步骤中,数据交换服务器可以接收数据生产者发起的数据写入请求。数据生产者可以通过udp协议和数据交换服务器通信,通信数据格式可以具体为json格式。通过对数据写入请求进行解析,确定待写入数据对应的数据类型和数据标识号。

需要说明的是,在传统的数组存储中,通常是不同数据类型的变量分配不同的id号。但是在实际应用中,若将同一设备的不同类型变量分配到不同的id字段,会造成数据存储混乱,不利于数据的存取。由此,本申请实施例可以具体采用id映射的方式,对不同数据类型的变量进行统一编址,便于数据的存取。

s102:根据所述数据类型和所述数据标识号确定对应的目标内存块和目标偏移地址;

本申请实施例中,数据交换服务器对外采用统一的接口设计,各进程或设备可采用统一的接口对服务器进行读写操作。在数据交换服务器接收到数据写入请求之后,可以根据数据类型和数据标识号确定目标内存块以及目标偏移地址,以便将待写入数据写入目标内存块的目标偏移地址中。

在一种具体的实施方式中,上述根据数据类型和数据标识号确定目标内存块以及目标偏移地址的过程可以具体包括:根据数据类型调用对应的接口函数;通过接口函数,基于数据标识号和每个内存块大小确定对应的目标内存块的块索引和目标偏移地址。例如,可利用数据标识号对内存块大小进行整除运算,得到第一数值,即目标内存块的块索引;利用数据标识号对内存块大小进行取余运算,得到第二数值,即目标偏移地址。

s103:判断所述目标内存块是否存在;如果是,则进入步骤s104;如果否,则进入步骤s105;

可以理解的是,在根据数据类型和数据标识号确定对应的目标内存块和目标偏移地址之后,将判断目标内存块是否存在。

s104:将所述待写入数据写入所述目标内存块的所述目标偏移地址中;

s105:在内存中为当前数据生产者创建新的内存块,将新建内存块作为所述目标内存块,所述新建内存块内的存储地址为连续内存地址,并在新建后执行步骤s104。

若目标内存块存在,则可以直接执行将待写入数据写入目标内存块的目标偏移地址中的步骤;若目标内存块不存在,则首先在内存中创建新的内存块,将新建内存块作为目标内存块,进而执行将待写入数据写入目标内存块的目标偏移地址中的步骤。

在一种可行的实施方式中,本申请实施例在为当前数据生产者创建新的内存块之后,可以进一步为新建内存块创建对应的块索引,并将块索引与新建内存块的对应关系存入第一配置文件中。在后续输入块索引之后数据交换服务器能够基于第一配置文件自动转换成对应的内存块,实现数据存取;并且可以基于块索引在第一配置文件中查找是否存在对应的目标内存块。

作为一种优选的实施方式,本申请实施例在将待写入数据写入目标内存块的目标偏移地址中之后,还可以将待写入数据的数据类型、数据实际写入地址和数据标识号的对应关系存入第二配置文件中。在后续数据查询时,通过第二配置文件即可确定目标数据的实际写入地址。

具体地,数据交换服务器还可以接收数据消费者发起的数据读取请求,通过解析数据读取请求,可得到目标数据的数据类型和数据标识号。通过查询第二配置文件,即可确定目标数据的实际写入地址。进而可读取实际写入地址,以获取目标数据,并将目标数据返回至数据读取请求的发起方,实现数据的读取。

需要说明的是,数据交换服务器关键的技术指标为数据查询速度。在所有查询方式中,最直接快速的为数组地址和id对应的直接索引方式。但是如果每个数据id对应一个数组地址,会造成极大的内存浪费。对于动环监控来说,每一类设备都会定义一组id来对应其数据。例如ups设备,若为每个ups设备分配100个内存地址,最多可监控10台ups设备,最终需要分配id1-1000的内存地址。但是在具体实施中用户可能只接入了一台ups,导致存在900个内存地址浪费。

鉴于动环监控系统的上述特点,本申请实施例不再直接根据设备的最大接入量分配内存,而是具体根据实际接入的需要进行数据写入的设备分配内存,并采用模块化的离散存储方式实现快速检索。例如,若系统中只接入了一台ups设备,当其进行数据写入时,只需要实时为其分配一个内存块。每个内存块的大小可以在实施过程中自行定义。另外,内存块内的存储地址为连续内存地址,能够提高块内存取效率。

通过以上方案可知,本申请提供的一种数据处理方法,应用于数据交换服务器,所述方法包括:接收数据生产者发起的数据写入请求,并确定待写入数据对应的数据类型和数据标识号;根据所述数据类型和所述数据标识号确定对应的目标内存块和目标偏移地址;判断所述目标内存块是否存在;如果是,则直接将所述待写入数据写入所述目标内存块的所述目标偏移地址中;如果否,则在内存中为当前数据生产者创建新的内存块,将新建内存块作为所述目标内存块,所述新建内存块内的存储地址为连续内存地址,并执行将所述待写入数据写入所述目标内存块的所述目标偏移地址中的步骤。由上可知,本申请利用数据交换服务器实现数据交互,数据生产者可将数据写入交换服务器以供数据消费者读取,使得所有模块只需要与数据交换服务器进行交互,各个模块之间不需要直接进行数据交换,减少了模块之间的耦合性,有利于降低后期维护成本;另外,仅当数据生产者写入数据时为其分配内存块,能够有效避免内存空间的浪费,且每个内存块内的存储地址为连续内存地址,可以满足快速数据交换的时间需求。

下面通过具体实施场景对本申请提供的数据处理方法进行详细介绍。本申请实施例利用数据交换服务器,使得各模块之间不需要直接进行数据交换,所有模块只需要与数据交换服务器进行交互。数据的生产单元,即数据获取模块,只负责将获取到的数据写入数据交换服务器;数据的消费单元,即其他使用数据的模块,只需要向数据交换服务器查询数据。数据可以由统一的id进行编码,利用id唯一标定一个变量,变量可以支持实数、字符串、列表等常见数据类型,通过id号就可以实现数据的定位。

为了既满足快速的通信,又满足跨系统的信息交换,本申请具体可以采用udpsocket进行通信,这种通信方式的优点是通信速度快,可实现同一台计算机上的进程间通信,也可以实现通过网络连接起来的不同计算机上的进程间通信。

本申请实施例中,采用模块化离散存储方式实现快速检索。每个数据模块的大小可以自行定义,例如可以定义每个模块大小是100,如果客户系统中只接了一台ups,则只需要一个存储块。服务器能够自动将id和对应的内存块对应起来,并实现存取数据接口。例如系统接入了id号1-80和id号10000-10050的数据,在传统方案中,若想实现数组查询,就必须定义1-10050个连续的内存块,但实际其实只利用了其中的一小部分。在本申请实施例中,每个内存块大小为100,从而只需要分配1-100和10000-10100两个内存块,占用内存为200个地址空间。与传统数组相比,通常可以降低70%-80%的空间。而采用内存块间离散、块内连续的存储方式,也能满足快速数据交换的时间需求。

需要说明的是,本申请实施例中数据交换服务器对外采用统一的接口设计,各进程采用统一的接口函数对服务器进行读写操作,提供了一种方便的数据交换方式,有效降低了进程间通信的复杂度。并且通过id映射的方式实现了不同类型变量的统一编址,在实际的id存储模块中只记录了变量的类型和数据实际存储地址,数据则通过实际的动态分配内存进行存储,避免了为同一设备不同类型的变量分配不同的id字段时可能造成的混乱问题,便于实际的数据交换。

图2为本申请实施例提供的一种数据读写过程的流程图,如图2所示,数据交换服务器预先建立udp数据通道,监听udp端口。当接收到数据读写请求之后,对该请求进行解析,得到数据类型和数据id号以及请求类型,判断当前请求为数据读取请求还是数据写入请求,并根据数据类型调用各自对应的接口函数,接口函数根据数据id号计算内存块索引和块内数据偏移,具体地,可将数据id号与内存块大小的整除运算结果确定为内存块索引,将数据id号与内存块大小的取余运算结果确定为块内数据偏移。通过遍历内存块列表,查看目标内存块是否存在,如果目标内存块存在,则可访问该偏移地址写入数据或读取数据,并通过udp协议返回数据写入成功的提示信息或数据结果。如果目标内存块不存在,且当前请求为数据写入请求,则在内存新建一个内存块,并在新建后执行数据写入过程;若当前请求为数据读取请求,则返回数据读取失败的提示信息。

在现实的应用中,数据中心监控几乎每个项目都有新的设备加入,此时就涉及到针对程序的修改。传统方案在添加设备时,所有系统模块都会同步修改,造成了极大的人工成本。一旦系统调试过程中有问题,查找起来也非常复杂。

本申请能够解决数据中心监控中长期存在的维护困难问题,将数据获取模块和其他模块分离,其他模块只需通过配置文件即可得知系统中存在哪些数据,进而根据数据id查询数据。当系统中新添加数据之后,无需修改程序,只需要在配置文件中添加对应数据的id号即可,所有模块均可通过此方式实现数据的添加。因此,本申请实施例可以显著减少工作量,并且由于避免修改程序关键代码,减少了出错的概率。

下面对本申请实施例提供的一种数据处理装置进行介绍,下文描述的一种数据处理装置与上文描述的一种数据处理方法可以相互参照。

图3为本申请实施例提供的一种数据处理装置的结构图,如图3所示,所述数据处理装置应用于数据交换服务器,具体可以包括:

接收模块201,用于接收数据生产者发起的数据写入请求,并确定待写入数据对应的数据类型和数据标识号;

确定模块202,用于根据所述数据类型和所述数据标识号确定对应的目标内存块和目标偏移地址;

判断模块203,用于判断所述目标内存块是否存在;

写入模块204,用于若所述目标内存块存在,则直接将所述待写入数据写入所述目标内存块的所述目标偏移地址中;

创建模块205,用于若所述目标内存块不存在,则在内存中为当前数据生产者创建新的内存块,将新建内存块作为所述目标内存块,所述新建内存块内的存储地址为连续内存地址,并执行将所述待写入数据写入所述目标内存块的所述目标偏移地址中的步骤。

关于上述模块201至204的具体实施过程可参考前述实施例公开的相应内容,在此不再进行赘述。

在上述实施例的基础上,作为一种优选实施方式,所述确定模块,可以具体包括:

函数调用单元,用于根据所述数据类型调用对应的接口函数;

地址确定单元,用于通过所述接口函数,基于所述数据标识号和每个内存块大小确定对应的目标内存块的块索引和目标偏移地址。

本申请还提供了一种数据交换服务器,图4为本申请实施例提供的一种数据交换服务器的结构图,如图4所示,包括:

存储器100,用于存储计算机程序;

处理器200,用于执行所述计算机程序时可以实现前述任一实施例所提供的步骤。

具体的,存储器100包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。处理器200在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,为数据交换服务器提供计算和控制能力,执行所述存储器100中保存的计算机程序时,可以实现前述任一实施例所提供的数据处理方法的步骤。

在上述实施例的基础上,作为优选实施方式,参见图5所示,所述数据交换服务器还包括:

输入接口300,与处理器200相连,用于获取外部导入的计算机程序、参数和指令,经处理器200控制保存至存储器100中。该输入接口300可以与输入装置相连,接收用户手动输入的参数或指令。该输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是键盘、触控板或鼠标等。

显示单元400,与处理器200相连,用于显示处理器200处理的数据以及用于显示可视化的用户界面。该显示单元400可以为led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。

网络端口500,与处理器200相连,用于与外部各终端设备进行通信连接。该通信连接所采用的通信技术可以为有线通信技术或无线通信技术,如移动高清链接技术(mhl)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术等。

图5仅示出了具有组件100-500的数据交换服务器,本领域技术人员可以理解的是,图5示出的结构并不构成对数据交换服务器的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

本申请还提供了一种计算机可读存储介质,该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述任一实施例所提供的数据处理方法的步骤。

本申请利用数据交换服务器实现数据交互,数据生产者可将数据写入交换服务器以供数据消费者读取,使得所有模块只需要与数据交换服务器进行交互,各个模块之间不需要直接进行数据交换,减少了模块之间的耦合性,有利于降低后期维护成本;另外,仅当数据生产者写入数据时为其分配内存块,能够有效避免内存空间的浪费,且每个内存块内的存储地址为连续内存地址,可以满足快速数据交换的时间需求。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1