一种用于电力系统中支持跨语言调用的微服务集成架构的制作方法

文档序号:23711800发布日期:2021-01-23 21:15阅读:154来源:国知局
一种用于电力系统中支持跨语言调用的微服务集成架构的制作方法

[0001]
本发明涉及电力设备控制软件技术领域,特别涉及一种用于电力系统中支持跨语言调用的微服务集成架构。


背景技术:

[0002]
电力系统软件中后台实现多为c/c++,现在java语言开发的项目也已经在项目中不断的得到应用,由于后台服务的功能出现了功能模块的组合,模块的开发团队选用不同的开发语言,会出现遗留系统统一接入改造的问题。为了满足这一需求,需要设计异构服务的统一集成接入方案。
[0003]
电力系统软件中后台实现多为c/c++,现在java语言开发的项目也已经在项目中不断的得到应用,由于后台服务的功能出现了功能模块的组合,模块的开发团队选用不同的开发语言,会出现遗留系统统一接入改造的问题。为了满足这一需求,需要设计异构服务的统一集成接入方案。
[0004]
当前主流异构服务集成方案主要是基于rest的集成和基于rpc的集成,但是考虑到电力系统的生产大区和保护大区中因为安全规范的原因不允许使用http协议,所以基于rest的集成方案不能选择,而当前基于rpc的微服务框架对语言限制较多,如dubbo,springcloud等限定了开发语言是java。


技术实现要素:

[0005]
本发明实施例的目的是提供一种用于电力系统中支持跨语言调用的微服务集成架构,通过设置中间件,实现了对本支持语言种类的扩展,极大地摆脱了微服务系统中异构语言的限制,可以让多种不同语言实现服务接入统一注册中心,实现了所有服务采用同一中间件接口语言,在整个微服务项目中只要统一接口语言文件,即可实现异构服务间的任意调用,使服务间轻耦合,且采用rpc调用比restful的效率大幅提高,更加适合电力系统领域。
[0006]
为解决上述技术问题,本发明实施例提供了一种用于电力系统中支持跨语言调用的微服务集成架构,包括:注册中心、服务提供者、服务消费者以及中间件;
[0007]
所述注册中心用于实现异构所述服务提供者的注册和所述服务消费者的服务发现,并通过读取所述注册中心的数据监视服务的运行状态;
[0008]
所述服务提供者和所述服务消费者为实现具体业务功能的模块或服务单元,所述服务提供者和所述服务消费者均可通过异构语言实现;
[0009]
所述中间件用于实现基于rpc的跨语言调用,在实现过程中所述中间件文件中定义的接口一致,所述服务提供者根据接口文件中的方法进行实现,所述服务消费者按照所述接口文件中的方法进行调用,以扩展异构语言微服务集成系统支持的语言种类。
[0010]
进一步地,所述中间件选用ice或thrift。
[0011]
进一步地,所述注册中心选用consul、zookeeper、redis、nocas中的任意一种。
[0012]
进一步地,所述异构服务调用时的序列化方式为json。
[0013]
进一步地,所述服务提供者侧和/或所述服务消费者侧可以采用java或c++语言。
[0014]
本发明实施例的上述技术方案具有如下有益的技术效果:
[0015]
通过设置中间件,实现了对本支持语言种类的扩展,极大地摆脱了微服务系统中异构语言的限制,可以让多种不同语言实现服务接入统一注册中心,实现了所有服务采用同一中间件接口语言,在整个微服务项目中只要统一接口语言文件,即可实现异构服务间的任意调用,使服务间轻耦合,且采用rpc调用比restful的效率大幅提高,更加适合电力系统领域。
附图说明
[0016]
图1是现有技术中微服务典型rpc调用的系统架构图;
[0017]
图2是微服务典型异构服务调用的系统架构图;
[0018]
图3是本发明实施例提供的用于电力系统中支持跨语言调用的微服务集成架构的系统架构图。
具体实施方式
[0019]
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0020]
图3是本发明实施例提供的用于电力系统中支持跨语言调用的微服务集成架构的系统架构图。
[0021]
请参照图3,本发明实施例提供了一种用于电力系统中支持跨语言调用的微服务集成架构,包括:注册中心、服务提供者、服务消费者以及中间件。注册中心用于实现异构服务提供者的注册和服务消费者的服务发现,并通过读取注册中心的数据监视服务的运行状态;服务提供者和服务消费者为实现具体业务功能的模块或服务单元,服务提供者和服务消费者均可通过异构语言实现;中间件用于实现基于rpc的跨语言调用,在实现过程中中间件文件中定义的接口一致,服务提供者根据接口文件中的方法进行实现,服务消费者按照接口文件中的方法进行调用,以扩展异构语言微服务集成系统支持的语言种类。
[0022]
上述用于电力系统中支持跨语言调用的微服务集成架构技术方案通过设置中间件,实现了对本支持语言种类的扩展,极大地摆脱了微服务系统中异构语言的限制,可以让多种不同语言实现服务接入统一注册中心,实现了所有服务采用同一中间件接口语言,在整个微服务项目中只要统一接口语言文件,即可实现异构服务间的任意调用,使服务间轻耦合,且采用rpc调用比restful的效率大幅提高,更加适合电力系统领域。
[0023]
本技术方案中,与图1中典型的rpc调用相比,多了中间件部分,中间件可以直接扩展本技术方案支持的语言种类,理论上只要中间件能够支持的语言都能接入到本方案中,极大的摆脱了微服务系统中异构语言的限制;与图2典型的异构服务接入相比,采用rpc调用效率比restful大幅提高,并且更加适应电力系统领域,因为restful通常采用http协议,而电力系统的生产和保护大区中不允许http协议的存在。
[0024]
其中,rpc(remote procedure call protocol)是远程过程调用协议,通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议,rpc协议假定某些传输协议的存在,为通信程序之间携带信息数据。prc采用客户机/服务器模式,请求程序就是一个客户机,而服务提供程序就是一个服务器。客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的达到为止。当一个调用信息到达,服务器获得进程参数、计算结果、发送答复信息,然后等待下一个调用信息;最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
[0025]
具体的,中间件选用ice或thrift。
[0026]
其中,ice是一种面向对象的中间件平台,意味着ice为构建面向对象的客户-服务器应用提供了工具和api和库支持。ice应用适合在异种环境使用,客户和服务器可以用不同的编程语言编写,也可以运行在不同的操作系统和机器架构上,并可用多种网络技术进行通信。
[0027]
可选的,注册中心选用consul、zookeeper、redis、nocas中的任意一种。注册中心的限制比较小,只要能够实现注册和发现即可实现本技术方案。
[0028]
具体的,异构服务调用时的序列化方式为json格式。在具体实施过程中,为了保证异构语言之间的序列化和反序列化,会优先考虑使用在restful中常用的json格式作为序列化的标准,json格式作为当前常用的轻量级数据交换格式,显著特点是数据比较小,在可读性和可扩展性上都有优势。在追求高效的环境下,有利于提高速度。
[0029]
可选的,服务提供者侧和/或服务消费者侧可以采用java或c++语言。
[0030]
在本发明实施例的具体实施方式中,本方案的验证性典型实现方式的注册中心选用consul,中间件选择ice。服务侧和客户端侧分别采用java和c++,测试效果符合预期,可以完成c++和java服务的相互调用。
[0031]
此外,服务端和客户端不限制c++和java两种语言类型,其他语言也可以接入。
[0032]
具体的,可以将中间件的接口抽象成一个接口,在因为中间件的服务端做处理时,单一接口的处理会相对简单直接,在服务端处理结束时,可根据需要转成对应的目标类型。此外,也可将中间件的接口语言api设计为多个,以便于为用户提供更丰富、更具体的场景应用。
[0033]
进一步地,客户端需要引入服务端实现的接口的文件,用来支持客户端调用时的参考和说明。
[0034]
此外,服务端元数据存入注册中心的数据包含ice的位置信息和服务信息,如ice服务端地址、端口、服务名、方法名、运行态、调试态等。服务端元数据存入的位置和类型可以作修改,只要保证服务端注册和客户端发现约定一致即可。
[0035]
本申请的技术方案包括:调用基于rpc实现、支持异构服务接入、异构服务间调用时序列化方式为json、支持分布式部署、可以让多种不同语言实现服务接入同一注册中心等,所有服务都实现同一中间件接口语言,整个微服务项目中只需统一接口语言文件,就能实现异构服务间的任意调用,使服务间轻耦合。本申请技术方案主要解决两个技术问题,一是异构服务的注册和发现问题,二是异构服务的调用问题;其中,注册和发现需要采用独立的注册中心,通过读取注册中心的数据来监视服务的运行状态;基于rpc的跨语言调用,通过借助中间件来完成。一般来说,ice可以满足本申请技术方案的功能和要求。
[0036]
本发明实施例旨在保护一种用于电力系统中支持跨语言调用的微服务集成架构,包括:注册中心、服务提供者、服务消费者以及中间件;注册中心用于实现异构服务提供者的注册和服务消费者的服务发现,并通过读取注册中心的数据监视服务的运行状态;服务提供者和服务消费者为实现具体业务功能的模块或服务单元,服务提供者和服务消费者均可通过异构语言实现;中间件用于实现基于rpc的跨语言调用,在实现过程中中间件文件中定义的接口一致,服务提供者根据接口文件中的方法进行实现,服务消费者按照接口文件中的方法进行调用,以扩展异构语言微服务集成系统支持的语言种类。上述技术方案具备如下效果:
[0037]
通过设置中间件,实现了对本支持语言种类的扩展,极大地摆脱了微服务系统中异构语言的限制,可以让多种不同语言实现服务接入统一注册中心,实现了所有服务采用同一中间件接口语言,在整个微服务项目中只要统一接口语言文件,即可实现异构服务间的任意调用,使服务间轻耦合,且采用rpc调用比restful的效率大幅提高,更加适合电力系统领域。
[0038]
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1