CN112835873A - 电网调控异构***服务化访问方法、***、设备及介质 - Google Patents
电网调控异构***服务化访问方法、***、设备及介质 Download PDFInfo
- Publication number
- CN112835873A CN112835873A CN202110218604.3A CN202110218604A CN112835873A CN 112835873 A CN112835873 A CN 112835873A CN 202110218604 A CN202110218604 A CN 202110218604A CN 112835873 A CN112835873 A CN 112835873A
- Authority
- CN
- China
- Prior art keywords
- heterogeneous system
- system service
- data table
- virtual data
- result
- 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.)
- Pending
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/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于异构***服务调用领域,公开了一种电网调控异构***服务化访问方法、***、设备及介质,包括获取并根据异构***服务访问请求,得到虚拟数据表查询请求,根据虚拟数据表查询请求,得到待查询虚拟数据表表名及输入参数;根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文并发送至待访问异构***服务;其中,异构***服务请求报文用于触发待访问异构***服务生成异构***服务调用结果并发送;接收异构***服务调用结果并存储,得到待查询虚拟数据表的查询结果。将异构***服务的调用简化为访问本地数据库的虚拟数据表的方式,学习成本和实施成本都非常低,仅需根据需要访问的异构***服务维护虚拟数据表信息即可。
Description
技术领域
本发明属于异构***服务调用领域,涉及一种电网调控异构***服务化访问方法、***、设备及介质。
背景技术
现有电网调控中心基于不同的功能需求,并综合考虑实时性及安全性等因素,往往采用多套不同的***分别提供不同的业务能力。随着计算机通信技术的快速发展,为了增强业务***的功能集成和扩展能力,业务***中各类消息总线和服务框架产品已得到了广泛应用。异构***中采用不同的服务框架和消息通信中间件,譬如主网调度控制***、配网调度控制***、电量***等,导致不同异构***之间形成了一定的信息交互壁垒。随着跨业务信息交互需求的加剧,不同消息总线和服务框架产品之间的转换,限制了异构***间信息与服务共享的能力。
目前,在实现电网调控异构***间服务调用方面,一般使用跨***的服务代理或者是构建ESB企业总线等技术方案。
但是,采用服务代理的方式,要求***间使用相同的技术框架,例如:都使用同一种服务总线框架,这样才能将本地的服务请求转发到其他***中,同时,还必须对异构***中服务接口信息进行定制化的开发,服务调用成本和维护成本较高。此外,采用ESB方式构建企业服务总线的软硬件成本和维护成本更加的巨大,需要构建独立的ESB服务体系架构,***间需要采用第三方的协议如SOAP协议将自己的服务注册发布到ESB中,服务共享的学习成本和维护成本很高。
发明内容
本发明的目的在于克服上述现有技术中,现有电网调控异构***间服务调用成本和维护成本均较高的缺点,提供一种电网调控异构***服务化访问方法、***、设备及介质。
为达到上述目的,本发明采用以下技术方案予以实现:
本发明第一方面,一种电网调控异构***服务化访问方法,包括以下步骤:
获取并根据异构***服务访问请求,得到虚拟数据表查询请求,根据虚拟数据表查询请求,得到待查询虚拟数据表表名及输入参数;
根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文并发送至待访问异构***服务;其中,异构***服务请求报文用于触发待访问异构***服务生成异构***服务调用结果并发送;
接收异构***服务调用结果并存储,得到待查询虚拟数据表的查询结果。
本发明电网调控异构***服务化访问方法进一步的改进在于:
所述根据异构***服务访问请求,得到虚拟数据表查询请求的具体方法为:
根据异构***服务访问请求确定待访问异构***服务,在虚拟数据库中查询待访问异构***服务对应的虚拟数据表,确定待查询虚拟数据表,得到虚拟数据表查询请求。
还包括:构建虚拟数据库,具体包括以下步骤:
将异构***中的各异构***服务均按照下述方式构建虚拟数据表:根据异构***服务的功能类型、服务名称以及功能名称,构建虚拟数据表的表名;根据异构***服务的输入参数数据类型和输出参数数据类型,构建虚拟数据表的域名;
将得到的所有虚拟数据表存储在预设的数据库,得到虚拟数据库。
所述根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文并发送至待访问异构***服务的具体方法为:
解析待查询虚拟数据表的表名,得到待调用异构***服务的功能类型、服务名称及功能名称;
根据服务名称获取待调用异构***服务预设的IP地址和端口;
根据功能名称获取待调用异构***服务预设的请求报文组装方法,根据请求报文组装方法组装待查询虚拟数据表的输入参数,得到异构***服务请求报文;
基于待调用异构***服务的IP地址和端口,将异构***服务请求报文发送至待访问异构***服务。
还包括:获取待查询虚拟数据表的返回结果域清单;从异构***服务调用结果内抽取返回结果域清单中各返回结果域对应的域值,并按照返回结果域清单中各返回结果域的顺序进行域值重组,得到并根据重组结果,更新异构***服务调用结果。
所述从异构***服务调用结果内抽取返回结果域清单中各返回结果域对应的域值,并按照返回结果域清单中各返回结果域的顺序进行域值重组的具体方法为:根据返回结果域清单中各返回结果域的顺序,以及各返回结果域的域数据类型,构建数据类型模板;根据数据类型模板,按照异构***服务调用结果中域值起始位置和各返回结果域对应的域值在异构***服务调用结果中的偏移量,从异构***服务调用结果中抽取各返回结果域对应的域值并写入内存。
所述接收异构***服务调用结果并存储的具体方法为:根据待访问异构***,通过一致性哈希算法在总内存区域中确定异构***服务调用结果的子内存区域;接收异构***服务调用结果,确定异构***服务调用结果需要分配的子内存块数量,通过改进Buddy伙伴算法,基于预设的全局位图在子内存区域中确定异构***服务调用结果的子内存块;将接收异构***服务调用结果存储在子内存块中的内存切片中。
本发明第二方面,一种电网调控异构***服务化访问***,包括:
获取模块,用于获取并根据异构***服务访问请求,得到虚拟数据表查询请求,根据虚拟数据表查询请求,得到待查询虚拟数据表表名及输入参数;
请求模块,用于根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文,并发送至待访问异构***服务;其中,异构***服务请求报文用于触发待访问异构***服务生成异构***服务调用结果并发送;
接收模块,用于接收异构***服务调用结果并存储,得到待查询虚拟数据表的查询结果。
本发明第三方面,一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述电网调控异构***服务化访问方法的步骤。
本发明第四方面,一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述电网调控异构***服务化访问方法的步骤。
与现有技术相比,本发明具有以下有益效果:
本发明电网调控异构***服务化访问方法,将异构***服务访问请求转换为虚拟数据表查询请求,通过对虚拟数据表的查询实现异构***服务访问,实现异构***中信息数据和应用服务在本地***的访问和调用,以数据库服务的方式将异构***服务提供给本地***使用,即将异构***服务调用简化为访问本地数据库的方式,基于本地***现有的数据库查询接口,仅需根据需要访问的异构***服务维护虚拟数据表信息即可,学习成本和实施成本都非常低,极大的降低了异构***间服务调用成本和维护成本,降低接入异构***信息数据所需的改造或适应性研发成本,并且,增强信息数据的获取种类和获取方式,有效的拓展了本地***的可用数据范围,增强了业务信息数据的共享能力。
附图说明
图1为本发明的电网调控异构***服务化访问方法流程框图;
图2为本发明的虚拟数据库服务代理的虚拟数据表查询流程图;
图3为本发明的基于数据类型模板的内存数据块快速生成解析策略示意图;
图4为本发明的基于一致性哈希算法的子内存区域生成策略示意图;
图5为本发明的基于改进Buddy伙伴算法的内存管理策略示意图;
图6为本发明的一实施例的虚拟数据表的表格样式示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面结合附图对本发明做进一步详细描述:
参见图1,本发明一实施例中,提供一种电网调控异构***服务化访问方法,将异构***服务访问转换为对虚拟数据表的查询访问,采用了以访问虚拟数据表信息的查询方式,通过虚拟数据服务代理将远方异构***中的异构***服务映射到本地***中,将异构***服务访问简化为利用本地数据库访问接口访问本地数据表的方式,实现异构***中应用服务和数据信息的访问,学习成本和实施成本都非常低,仅需根据需要访问的异构***服务维护虚拟数据表信息即可。具体的,该电网调控异构***服务化访问方法包括以下步骤。
S1:获取并根据异构***服务访问请求,得到虚拟数据表查询请求,根据虚拟数据表查询请求,得到待查询虚拟数据表表名及输入参数。
具体的,基于实际的业务需要,构建异构***服务访问请求,根据异构***服务访问请求确定待访问异构***服务。同时,在本地***中预设虚拟数据库,其内设置与各异构***的各异构***服务一一对应的若干虚拟数据表,进而,在虚拟数据库中查询待访问异构***服务对应的虚拟数据表,确定待查询虚拟数据表,得到虚拟数据表查询请求。
具体的,虚拟数据库通过如下方式构建:
S101:将异构***中的各异构***服务均按照下述方式构建虚拟数据表:
根据异构***服务的功能类型、服务名称以及功能名称,构建虚拟数据表的表名;根据异构***服务的输入参数数据类型和输出参数数据类型,构建虚拟数据表的域名。
具体的,虚拟数据表作为本地***的统一查询目标载体,对外表现为一个标准的数据表形式。其中,表名包含了特定的含义,具体格式可以采用如下方式:
TypeName_ServName_FuncName
其中,TypeName表示虚拟数据表功能类型名,作为标识区分不同数据类型或应用类型的虚拟数据表,如TypeName=“rtdata”表示为访问实时库数据服务,如TypeName=“tra”表示为访问调用异构***数据访问服务。ServName表示异构***中异构***服务名称,作为在异构***中所调用的数据服务或应用功能的名称,同一个异构***服务名称在异构***中仅允许发布一个。FuncName表示异构***中异构***服务下所提供功能的功能名称,一个异构***服务下可以提供多个功能。
虚拟数据表域名作为异构***服务功能向虚拟数据表的映射,起到了异构***服务参数的定义作用,域名的命名规则如下:
输入/输出参数标识_域名
其中,输入/输出参数标识为in_和out_,其中,in_表示输入参数值域,表示调用异构***服务时的输入参数,out_表示输出参数值域,表示调用异构***服务时的返回结果。
根据上述表名和表域的设计结果,形成虚拟数据表的数据库实体表格生成SQL(Structured Query Language,结构化查询语言)语句,同时,对应生成该虚拟数据表的表信息和域信息的描述记录,此处可不需要实际创建该虚拟数据表在数据库中的数据实体,只需要将表信息和域信息的描述记录存储到指定的信息表中,通过读取后能够获悉虚拟数据表的具体属性即可。
S102:将得到的所有虚拟数据表存储在预设的数据库,得到虚拟数据库。
具体的,首先在本地***中新建一个数据库,然后将所有虚拟数据表存储在预设的数据库,得到包含所有虚拟数据表的虚拟数据库,并且,虚拟数据库可以支持一般数据库的常见功能,比如读写、管理以及访问等。
进而根据待访问异构***服务,在虚拟数据库中查询待访问异构***服务对应的虚拟数据表,确定待查询虚拟数据表,并且,在确定待查询虚拟数据表后,按照本地***中数据库访问的习惯,将需要访问的异构***服务的输入参数作为虚拟数据表查询的关键字域值输入,获取待查询虚拟数据表表名及输入参数,得到虚拟数据表查询请求。其中,关键字域可以参考数据库表格查询的过程,例如select id,name,sex,age from user whereid>100and id<200,表示对user表格进行查询,那么查询条件id就是虚拟数据表查询的关键字域。
该部分是本地***访问远方异构***的入口,可以通过设计统一访问接口实现,实现获取待查询虚拟数据表表名及输入参数,并能够指定异构***的标识名“DomainName”,通过标识名称可以获取到异构***的代理服务所在地址;同时,统一访问接口也能够将虚拟数据表查询结果发送异构***服务访问请求者。
S2:根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文,将异构***服务请求报文发送至待访问异构***,其中,异构***服务请求报文用于触发待访问异构***生成异构***服务调用结果并发送。
其中,根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文,将异构***服务请求报文发送至待访问异构***的具体方法为:
S201:解析待查询虚拟数据表的表名,得到待调用异构***服务的功能类型、服务名称及功能名称。具体的,对待查询虚拟数据表的表名进行分解,拆分成为TypeName、ServName和FuncName,待查询虚拟数据表对应待调用异构***服务,进而得到待调用异构***服务的功能类型、服务名称及功能名称。
S202:根据服务名称获取待调用异构***服务的IP地址和端口。具体的,根据注册的功能类型查找该功能类型下,指定服务名称对应的服务是否存在,如果服务存在,则读取该服务预设的IP地址和端口。
S203:据功能名称获取待调用异构***服务预设的请求报文组装方法,根据请求报文组装方法组装待查询虚拟数据表的输入参数,得到异构***服务请求报文,至此完成将虚拟数据表查询请求转换为异构***服务请求报文。
S204:基于待调用异构***服务的IP地址和端口,将异构***服务请求报文发送至待访问异构***服务。
基于异构***服务请求报文,实现待访问异构***服务的调用,待访问异构***服务响应于异构***服务请求报文,异构***服务完成服务访问请求,按照待访问异构***服务的输出参数返回数据,生成异构***服务调用结果,并将该异构***服务调用结果发送至本地***。
该部分步骤可以通过在本地***中设计虚拟数据库服务代理实现,可以将虚拟数据库服务代理作为异构***服务访问请求的中转,虚拟数据库服务代理接入异构***中,可以直接访问异构***中的数据或调用应用功能,也可以调用按业务数据处理要求自定义的服务,实现生成异构***服务请求报文并发送至待访问异构***服务,且异构***服务调用结果也可以直接发送给虚拟数据库服务代理。同时,每一个异构***的异构***服务均在本地***被映射为一个虚拟数据表,很多的虚拟数据表构成了虚拟数据库,对这些虚拟数据表的读写、管理以及访问均可由虚拟数据库服务代理来实现。
具体的,参见图2,虚拟数据库服务代理的虚拟数据表查询流程,虚拟数据库服务代理进行服务请求接收,这里指的是虚拟数据表查询请求,包括待查询虚拟数据表表名及输入参数,解析虚拟数据表查询请求,判断待调用异构***服务是否正常,当待调用异构***服务正常时,继续进行下一步;否则,生成服务失败结果返回。当确认待调用异构***服务正常后,转换服务请求,即根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文,然后发送异构***服务请求报文至待访问异构***服务,同时,监控待访问异构***服务是否正常被触发执行,当待访问异构***服务正常被触发执行时,将生成的异构***服务调用结果返回虚拟数据库服务代理;否则,生成服务失败结果返回。
S3:接收异构***服务调用结果并存储,得到待查询虚拟数据表的查询结果。
具体的,通过上述步骤的实施,得到了异构***服务调用结果,以异构***服务调用结果作为虚拟数据表的查询结果,实现将异构***服务访问请求转换为对虚拟数据表的查询。
综上所述,本发明电网调控异构***服务化访问方法,将异构***服务访问请求转换为虚拟数据表查询请求,通过对虚拟数据表的查询实现异构***服务访问,实现异构***中信息数据和应用服务在本地***的访问和调用,以数据库服务的方式将异构***服务提供给本地***使用,即将异构***服务调用简化为访问本地数据库的方式,基于本地***现有的数据库查询接口,仅需根据需要访问的异构***服务维护虚拟数据表信息即可,学习成本和实施成本都非常低,极大的降低了异构***间服务调用成本和维护成本,降低接入异构***信息数据所需的改造或适应性研发成本,并且,增强信息数据的获取种类和获取方式,有效的拓展了本地***的可用数据范围,增强了业务信息数据的共享能力。
本发明再一实施例中,提供一种电网调控异构***服务化访问方法,除包括上述实施例中提供的电网调控异构***服务化访问方法中的全部内容外,还至少包括以下步骤:S4:获取待查询虚拟数据表的返回结果域清单;从异构***服务调用结果内抽取返回结果域清单中各返回结果域对应的域值,并按照返回结果域清单中各返回结果域的顺序进行域值重组,得到并根据重组结果,更新异构***服务调用结果。
具体的,获取待查询虚拟数据表的返回结果域清单,这个返回结果域清单由查询者进行提供,可以按照实际的业务需求确定。比如上述的user表,user表一共有20个域,但是本次查询只需要其中的4个域id,name,sex及age,返回结果域清单就是这4个返回结果域按照顺序排列的清单,同时,这4个返回结果域的名称需要告知远方的虚拟数据表查询服务,则查询后返回的结果,就是按照这4个返回结果域的域值的数据类型进行结果内存块的组装。
具体的,异构***服务根据异构***服务请求报文执行服务请求后,按照服务调用接口的输出参数返回异构***服务调用结果,接着进行异构***服务调用结果的抽取和重新组装。
考虑对虚拟数据库的请求或查询,可能会涉及到大量的交互信息。由于业务应用可以像访问表格一样,任意指定查询返回的表域范围和表域顺序,因此无法通过静态定义的方式对查询结果内存块进行快速的赋值,只能按记录和域值长度顺序写入内存,解析时也只能按照相同的方式逐个记录的逐个域值解析,当查询的结果数量较大时,结果内存块的写入和读取性能偏低,对整体性能会产生影响。为解决这一问题,本实施例中,参见图3,提供了基于数据类型模板的内存数据块快速生成解析策略,通过数据类型模板的方式来进行异构***服务调用结果的抽取和重新组装,进而快速的为查询结果内存块赋值。
具体的,在接收到虚拟数据表查询请求后,提交查询请求的同时,获取待查询虚拟数据表的返回结果域清单,这个返回结果域清单可以与虚拟数据表查询请求集成,也可以独自获取。然后,根据返回结果域清单查找对应的各返回结果域的属性信息,根据返回结果域清单中各返回结果域的顺序和数据类型,形成按指定字节对齐的数据类型模板。
在获取到异构***服务调用结果后,按照数据类型模板中的域值起始位置和每个返回结果域对应的域值在异构***服务调用结果中的偏移量大小,从异构***服务调用结果中抽取各返回结果域对应的域值并写入内存,即可按返回结果域清单形成结果记录内存块,结果记录内存块返回到业务应用后,业务应用可直接通过预先定义的结构体对结果记录内存块数据进行读取和解析,提高了数据转换效率。这里预先定义的结构体是指,在进行编写程序时,程序编写者可以知道自己需要查询的域,即返回结果域,以及这些返回结果域的类型,那么就可以预先写好一个结构体定义,通过结构体定义直接按照记录去解析结果记录内存块中的数据,得到待查询虚拟数据表的查询结果。
此外,发明人考虑到,在使用统一的虚拟数据表访问方式时,降低了业务对数据的访问难度,但是在面向广域范围的业务查询时,往往需要进行查询任务分解后查询多个调度***或业务***,将查询结果形成结果全集后返回。在这个过程中,由于一方面需要对虚拟数据表查询请求进行转换,另一方面需要对异构***间的虚拟数据表访问结果进行抽取和组装,因此需要频繁的进行内存操作。但是,常规操作***默认的内存分配、回收策略在内存处理的性能方面存在一定的问题,当请求负载较大的时候可能会出现内存分配异常导致的功能稳定性问题。
因此,本发明再一实施例中,提供一种接收异构***服务调用结果并存储的具体方法,为了支持高速数据内存的并发访问和管理,采用事先申请内存的方式,并通过数据内存分区索引算法对内存进行分区、分片管理,有效提高了虚拟数据库对于广域业务查询效率,在虚拟数据库的内存管理方面,设计了底层的无锁内存分配算法,加速内存分配、回收的速度,保证整体异构***服务访问的时效性。具体包括:根据待访问异构***,通过一致性哈希算法在总内存区域中确定异构***服务调用结果的子内存区域;接收异构***服务调用结果,确定异构***服务调用结果需要分配的子内存块数量,通过改进Buddy伙伴算法,基于预设的全局位图在子内存区域中确定异构***服务调用结果的子内存块;将接收异构***服务调用结果存储在子内存块中的内存切片中。
具体的,将存储数据的过程分为几个步骤:首先,预先申请一个大块的完整的内存;其次,基于一致性哈希算法将大的内存块根据区域划分成多个子内存区域,以适应业务查询的并发执行效率;然后,对于每个子内存区域所对应的子内存块,进一步将子内存块进行切片,采用基于改进Buddy伙伴算法的内存管理策略将切片管理起来,提高内存的申请、释放以及对于内存碎片的合并和管理的性能。至此,完成了基于电网调控分区特性的内存快速申请、释放功能,为后续的内存数据快速生成提供了技术基础。
参见图4,基于一致性哈希算法的子内存区域生成策略,首先,划分环形哈希地址空间,将整个哈希值空间组织成一个具有232次方个数据块编号的虚拟圆环,以现有电网调控***为例,将现有电网调控***中的“调控区域标识”作为哈希值进行哈希,以哈希值作为预先申请的内存数据块索引,这样可以保证相同区域业务***中的信息数据尽可能的放在同一个子内存区域中,子内存区域的大小可以根据业务***数据规模进行预估;当有新增的调控区域或业务***时,只需要在哈希空间中增加新的子内存区域即可。基于一致性哈希算法的子内存区域生成策略从业务角度分解了广域电网调控信息的数据查询需求,将信息查询需求按照区域划分成为多个子内存区域的查询请求,提高了业务查询的并行执行效率。
参见图5,基于改进Buddy伙伴算法的内存管理策略,在按照“调控区域标识”生成的哈希值定位了该区域所在的子内存区域后,可以进一步对该区域的查询请求进行分解,可以按照查询请求类型、业务***标识或是数据服务种类等对子内存区域进行进一步的划分,通过对该区域的子内存区域进行并发的存取操作来实现。由于电力调度***是分层、分区的结构,一个跨异构***的服务请求,可能会涉及到多套***的服务或一套***内的多个服务,而内存管理作为一个公用的技术手段,应能够支持大并发的内存申请,而常规的内存申请、释放是需要对***内存进行加锁操作的,在根据不同的***或功能将大内存块切分为子内存区域后,根据注册的服务,预先进行子内存区域的划分,并形成子内存块的定位信息,例如实时数据服务、历史数据服务、告警数据服务等,以这些服务功能为目标进行子内存块划分后,例如当接收到实时数据服务请求后,直接到实时数据服务范围的子内存块中进行内存块申请。
由于考虑并发处理时,对于子内存块的锁操作的耗时高于***级原子操作,设计了页面位图标记的方法,根据***存储空间的大小设置内存页面的大小,例如每个页面大小设置为4K,则按照每一个内存页面4K的大小,1个整型值为32bit,作为一个内存切片,即1个切片长度为32*4K=128K。内存区为每一块子内存块设置了一个全局的位图,其中,当所属位对应的数据页面被分配,则标记为1,若没有被分配,则标记为0,这样通过对标记位设置数值的原子操作来回避频繁加解锁的操作,在进行内存分配的时候结合置数操作达到无锁分配目标。
本实施例中,以现有Buddy伙伴算法为基础进行改进,通过将现有Buddy伙伴算法中,内存块分配所使用的链表索引方式改进为基于全局位图标记的无锁索引方式,得到了改进Buddy伙伴算法。
具体的,按照Buddy伙伴算法规则,生成空闲子内存块索引清单,根据需要分配的子内存块数量,查找对应的空闲内存索引,例如需要申请22个子内存块,则直接查找对应k=2的空闲索引,每个空闲索引对应着N个内存切片,整数值的位操作可以直接得到连续的子内存块位置,内存释放时,直接将索引位置0即可,此处改进了原有Buddy伙伴算法在拆分和合并涉及到较多的链表和加解锁操作,降低了原有算法在内存索引和定位上的开销。
具体的,***在临界区申请内存的平均消耗为:
L=CAVG×T+OAVG×T (2)
其中,假设共加锁n次,其中m次发生了Cache Miss,那么第i次发生Cache Miss(缓存未命中)时的***消耗为CCM(i),内存查找第i次命中时的消耗为CC(i),那么平均***在临界区的平均消耗由公示(1)得出为CAVG,OAVG为单条任务指令执行时所需的平均耗时。当同时有T个线程并发进行内存操作时,***总消耗负载L可由公式(2)计算得出。在进行并发处理时,如果使用锁作为同步方式,由于同一时刻只有一个线程能够处于临界区进行操作。而采用***置数类的原子操作,在CAVG上要比加锁操作快将近2倍,而对于普通任务执行上,由于当前设计的方法可以不用加锁,因此T=1,在并发线程数量较大时,消耗明显低于加锁方式的损耗。
本发明再一实施例中,以通过在主网调控***中调用异构配网调控***中的文件监视服务为例,说明本发明电网调控异构***服务化访问方法。
首先,确定需要调用的是配网调控***中文件服务“fileserv”下的获取监视路径功能“GetDirectory”;其次,根据虚拟数据表名命名规则,在主网调控***中创建或查找虚拟数据表“tra_fileserv_getdirectory”,并根据文件服务“fileserv”的输入参数和输出参数创建虚拟数据表的域信息,得到的虚拟数据表的表格样式参见图6所示。再次,根据虚拟数据表访问要求,将输入参数,例如in_nodename填写为根目录“/”,in_typename不填写,即不进行文件名过滤,设置目标***为配网调控***后,提交查询请求;最后,根据返回的异构***服务调用结果,按照out_directorylist的数据类型和数据长度进行解析,得到虚拟数据表的查询结果。
下述为本发明的装置实施例,可以用于执行本发明方法实施例。对于装置实施例中未纰漏的细节,请参照本发明方法实施例。
本发明再一个实施例中,提供一种电网调控异构***服务化访问***,能够用于实现上述实施例中的电网调控异构***服务化访问***方法,具体的,该电网调控异构***服务化访问***包括获取模块、请求模块以及接收模块。
其中,获取模块用于获取并根据异构***服务访问请求,得到虚拟数据表查询请求,根据虚拟数据表查询请求,得到待查询虚拟数据表表名及输入参数;请求模块用于根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文,并发送至待访问异构***服务;其中,异构***服务请求报文用于触发待访问异构***服务生成异构***服务调用结果并发送;接收模块用于接收异构***服务调用结果并存储,得到待查询虚拟数据表的查询结果。
本发明再一个实施例中,提供了一种终端设备,该终端设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(Central ProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor、DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于面向调控云应用的数据建模方法的操作,包括以下步骤:获取并根据异构***服务访问请求,得到虚拟数据表查询请求,根据虚拟数据表查询请求,得到待查询虚拟数据表表名及输入参数;根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文并发送至待访问异构***服务;其中,异构***服务请求报文用于触发待访问异构***服务生成异构***服务调用结果并发送;接收异构***服务调用结果并存储,得到待查询虚拟数据表的查询结果。
本发明再一个实施例中,本发明还提供了一种存储介质,具体为计算机可读存储介质(Memory),所述计算机可读存储介质是终端设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括终端设备中的内置存储介质,当然也可以包括终端设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作***。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。
可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实现上述实施例中有关面向调控云应用的数据建模方法的相应步骤;计算机可读存储介质中的一条或一条以上指令由处理器加载并执行如下步骤:获取并根据异构***服务访问请求,得到虚拟数据表查询请求,根据虚拟数据表查询请求,得到待查询虚拟数据表表名及输入参数;根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文并发送至待访问异构***服务;其中,异构***服务请求报文用于触发待访问异构***服务生成异构***服务调用结果并发送;接收异构***服务调用结果并存储,得到待查询虚拟数据表的查询结果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种电网调控异构***服务化访问方法,其特征在于,包括以下步骤:
获取并根据异构***服务访问请求,得到虚拟数据表查询请求,根据虚拟数据表查询请求,得到待查询虚拟数据表表名及输入参数;
根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文并发送至待访问异构***服务;其中,异构***服务请求报文用于触发待访问异构***服务生成异构***服务调用结果并发送;
接收异构***服务调用结果并存储,得到待查询虚拟数据表的查询结果。
2.根据权利要求1所述的电网调控异构***服务化访问方法,其特征在于,所述根据异构***服务访问请求,得到虚拟数据表查询请求的具体方法为:
根据异构***服务访问请求确定待访问异构***服务,在虚拟数据库中查询待访问异构***服务对应的虚拟数据表,确定待查询虚拟数据表,得到虚拟数据表查询请求。
3.根据权利要求2所述的电网调控异构***服务化访问方法,其特征在于,还包括:构建虚拟数据库,具体包括以下步骤:
将异构***中的各异构***服务均按照下述方式构建虚拟数据表:根据异构***服务的功能类型、服务名称以及功能名称,构建虚拟数据表的表名;根据异构***服务的输入参数数据类型和输出参数数据类型,构建虚拟数据表的域名;
将得到的所有虚拟数据表存储在预设的数据库,得到虚拟数据库。
4.根据权利要求1所述的电网调控异构***服务化访问方法,其特征在于,所述根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文并发送至待访问异构***服务的具体方法为:
解析待查询虚拟数据表的表名,得到待调用异构***服务的功能类型、服务名称及功能名称;
根据服务名称获取待调用异构***服务预设的IP地址和端口;
根据功能名称获取待调用异构***服务预设的请求报文组装方法,根据请求报文组装方法组装待查询虚拟数据表的输入参数,得到异构***服务请求报文;
基于待调用异构***服务的IP地址和端口,将异构***服务请求报文发送至待访问异构***服务。
5.根据权利要求1所述的电网调控异构***服务化访问方法,其特征在于,还包括:
获取待查询虚拟数据表的返回结果域清单;从异构***服务调用结果内抽取返回结果域清单中各返回结果域对应的域值,并按照返回结果域清单中各返回结果域的顺序进行域值重组,得到并根据重组结果,更新异构***服务调用结果。
6.根据权利要求5所述的电网调控异构***服务化访问方法,其特征在于,所述从异构***服务调用结果内抽取返回结果域清单中各返回结果域对应的域值,并按照返回结果域清单中各返回结果域的顺序进行域值重组的具体方法为:
根据返回结果域清单中各返回结果域的顺序,以及各返回结果域的域数据类型,构建数据类型模板;根据数据类型模板,按照异构***服务调用结果中域值起始位置和各返回结果域对应的域值在异构***服务调用结果中的偏移量,从异构***服务调用结果中抽取各返回结果域对应的域值并写入内存。
7.根据权利要求1所述的电网调控异构***服务化访问方法,其特征在于,所述接收异构***服务调用结果并存储的具体方法为:
根据待访问异构***,通过一致性哈希算法在总内存区域中确定异构***服务调用结果的子内存区域;接收异构***服务调用结果,确定异构***服务调用结果需要分配的子内存块数量,通过改进Buddy伙伴算法,基于预设的全局位图在子内存区域中确定异构***服务调用结果的子内存块;将接收异构***服务调用结果存储在子内存块中的内存切片中。
8.一种电网调控异构***服务化访问***,其特征在于,包括:
获取模块,用于获取并根据异构***服务访问请求,得到虚拟数据表查询请求,根据虚拟数据表查询请求,得到待查询虚拟数据表表名及输入参数;
请求模块,用于根据待查询虚拟数据表表名及输入参数,生成异构***服务请求报文,并发送至待访问异构***服务;其中,异构***服务请求报文用于触发待访问异构***服务生成异构***服务调用结果并发送;
接收模块,用于接收异构***服务调用结果并存储,得到待查询虚拟数据表的查询结果。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述电网调控异构***服务化访问方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述电网调控异构***服务化访问方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110218604.3A CN112835873A (zh) | 2021-02-26 | 2021-02-26 | 电网调控异构***服务化访问方法、***、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110218604.3A CN112835873A (zh) | 2021-02-26 | 2021-02-26 | 电网调控异构***服务化访问方法、***、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112835873A true CN112835873A (zh) | 2021-05-25 |
Family
ID=75933937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110218604.3A Pending CN112835873A (zh) | 2021-02-26 | 2021-02-26 | 电网调控异构***服务化访问方法、***、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835873A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377800A (zh) * | 2021-06-08 | 2021-09-10 | 国网电子商务有限公司 | 一种数据安全共享方法及装置 |
-
2021
- 2021-02-26 CN CN202110218604.3A patent/CN112835873A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377800A (zh) * | 2021-06-08 | 2021-09-10 | 国网电子商务有限公司 | 一种数据安全共享方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106294190B (zh) | 一种存储空间管理方法及装置 | |
WO2017167171A1 (zh) | 一种数据操作方法,服务器及存储*** | |
CN107273522B (zh) | 面向多应用的数据存储***和数据调用方法 | |
US20180285167A1 (en) | Database management system providing local balancing within individual cluster node | |
US11451629B2 (en) | Distributed metadata management method for distributed file system | |
US10158709B1 (en) | Identifying data store requests for asynchronous processing | |
CN106570113B (zh) | 一种海量矢量切片数据云存储方法及*** | |
CN102054000A (zh) | 数据查询方法、装置及*** | |
US20130198230A1 (en) | Information processing apparatus, distributed processing system, and distributed processing method | |
CN107704475B (zh) | 多层分布式非结构化数据存储方法、查询方法及装置 | |
CN111752945B (zh) | 一种基于容器和层次模型的时序数据库数据交互方法和*** | |
JP2022543306A (ja) | ブロックチェーンデータ処理の方法、装置、機器及び可読記憶媒体 | |
CN110888878A (zh) | 一种面向业务的主数据管理方法及*** | |
CN110659283A (zh) | 数据标签处理方法、装置、计算机设备及存储介质 | |
US20220342888A1 (en) | Object tagging | |
CN110457307B (zh) | 元数据管理***、用户集群创建方法、装置、设备和介质 | |
CN112835873A (zh) | 电网调控异构***服务化访问方法、***、设备及介质 | |
Zhou et al. | Sfmapreduce: An optimized mapreduce framework for small files | |
CN110825732A (zh) | 数据查询方法、装置、计算机设备和可读存储介质 | |
CN112486996B (zh) | 面向对象的内存数据存储*** | |
US11947490B2 (en) | Index generation and use with indeterminate ingestion patterns | |
CN113986545A (zh) | 用户与角色关联方法及装置 | |
CN113901018A (zh) | 一种待迁移文件识别方法、装置、计算机设备及存储介质 | |
CN113868267A (zh) | 注入时序数据的方法、查询时序数据的方法及数据库*** | |
Parthasarathy et al. | InterAct: Virtual sharing for interactive client-server applications |
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 |