CN113296751A - 一种基于json-rpc实现跨语言通讯的方法及*** - Google Patents

一种基于json-rpc实现跨语言通讯的方法及*** Download PDF

Info

Publication number
CN113296751A
CN113296751A CN202110533242.7A CN202110533242A CN113296751A CN 113296751 A CN113296751 A CN 113296751A CN 202110533242 A CN202110533242 A CN 202110533242A CN 113296751 A CN113296751 A CN 113296751A
Authority
CN
China
Prior art keywords
server
parameter configuration
value
client acquisition
acquisition end
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
Application number
CN202110533242.7A
Other languages
English (en)
Other versions
CN113296751B (zh
Inventor
王辰
沙一川
马德超
季惠英
王纪立
薛驰
宋超
郭东升
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NARI Group Corp
Nari Technology Co Ltd
NARI Nanjing Control System Co Ltd
Original Assignee
NARI Group Corp
Nari Technology Co Ltd
NARI Nanjing Control System Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NARI Group Corp, Nari Technology Co Ltd, NARI Nanjing Control System Co Ltd filed Critical NARI Group Corp
Priority to CN202110533242.7A priority Critical patent/CN113296751B/zh
Publication of CN113296751A publication Critical patent/CN113296751A/zh
Application granted granted Critical
Publication of CN113296751B publication Critical patent/CN113296751B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提出了一种基于JSON‑RPC实现跨语言通讯的方法及***,包括客户采集端遵从jsonrpc协议,向服务端发送调用方法请求以及上传上一请求周期服务器下发的参数配置的md5值至服务端;服务器根据客户采集端的调用方法请求,从数据库中获取最新参数配置,返回给客户采集端;客户采集端根据获取到的最新参数配置来执行采集任务;本发明给出了go语言与java跨语言之间相互通信的一种方式,两种语言通过json‑rpc通信协议进行心跳通信,而不用考虑跨语言通信的实现以及代码兼容性。

Description

一种基于JSON-RPC实现跨语言通讯的方法及***
技术领域
本发明属于电力***调度自动化领域,具体涉及一种基于JSON-RPC实现跨语言通讯的方法及***。
背景技术
在搭建电力***智能运维平台过程中,采集端和服务端之间的通信通常需要一种心跳机制,但采集端和服务端通常不是采用同一种编程语言进行开发的,因此需要心跳机制可以解决跨语言通信的问题。现在业界普遍使用的是RPC以及RESTful架构。RPC 主要是基于TCP/IP协议的,而RESTful架构主要是基于HTTP协议的;HTTP协议是在传输层协议TCP之上的,所以一般来说,RPC的效率更好。以Spring Cloud为代表所支持的RESTful架构,优势在于能够穿透防火墙,使用方便,语言无关;使用各种开发语言实现的***基本上都可以接受RESTful架构的请求。但性能和带宽占用上有劣势,并且在实际现场环境使用中,对HTTP协议存在较多限制,这种情况下只能转向RPC协议或者更底层的TCP协议。
发明内容
发明目的:为解决电力***智能运维平台客户采集端和服务端之间的跨语言通信问题,本发明提出了一种基于JSON-RPC实现跨语言通讯的方法及***,用于实现客户采集端每隔一段时间从服务端获取要采集的配置参数,客户采集端根据获取到的配置参数来执行采集任务这一过程的通讯,服务端和客户采集端不用因编程语言不同而无法进行通讯做相关适配的代码开发。
技术方案:一种基于JSON-RPC实现跨语言通讯的方法,包括:
客户采集端遵从jsonrpc协议,向服务端发送调用方法请求以及上传上一请求周期服务器下发的参数配置的md5值至服务端;
服务器根据客户采集端的调用方法请求,从数据库中获取最新参数配置,返回给客户采集端;
客户采集端根据获取到的最新参数配置来执行采集任务。
进一步的,所述客户采集端和服务端的开发语言不同。
进一步的,所述的从数据库中获取最新参数配置,返回给客户采集端,具体包括以下步骤:
服务器将客户采集端上传的参数配置的md5值与从数据库中最新获取的参数配置的md5值进行对比,若两者一致,则服务端返回给客户采集端空值;若两者不一致,则服务端更新要采集的参数配置返回给客户采集端。
进一步的,服务器使用jsonrpc4j提供的方法,创建一个JsonRpcServer对象,等待客户采集端的调用方法请求。
进一步的,所述客户采集端采用以下通讯格式向服务端发送调用方法请求以及上传上一请求周期服务器下发的参数配置的md5值至服务端;
method:**********;
params:{system:xxxxxx,host:xxx,md5:xxxxxx}
式中,method代表要调用的服务端的方法名,params为传递的参数,system代表所属***,host代表主机名,md5代表上一请求周期服务端返回的md5值;
服务端获取客户采集端上传的消息,根据system、host以及md5值从数据库获取最新参数配置信息;
服务端根据method的值调用相应的方法,并采用以下信息格式返回给客户采集端:
MD5:本次计算的MD5hash值;
Timestamp:时间戳;
Properties:需要采集的参数名或空值。
本发明还公开了一种基于JSON-RPC实现跨语言通讯的***,包括客户采集端和服务端;
所述客户采集端,用于遵从jsonrpc协议,向服务端发送调用方法请求以及上传上一请求周期服务器下发的参数配置的md5值至服务端,以及根据当前请求周期服务器下发的最新参数配置来执行采集任务;
所述服务器,用于根据客户采集端的调用方法请求,从数据库中获取最新参数配置,返回给客户采集端。
进一步的,所述客户采集端采用以下通讯格式向服务端发送调用方法请求以及上传上一请求周期服务器下发的参数配置的md5值至服务端;
method:**********;
params:{system:xxxxxx,host:xxx,md5:xxxxxx}
式中,method代表要调用的服务端的方法名,params为传递的参数,system代表所属***,host代表主机名,md5代表上一请求周期服务端返回的md5值。
进一步的,所述服务端根据system、host以及md5值从数据库获取最新参数配置信息。
进一步的,所述服务端根据method的值调用相应的方法,并采用以下信息格式返回给客户采集端:
MD5:本次计算的MD5hash值;
Timestamp:时间戳;
Properties:需要采集的参数名或空值。
进一步的,所述服务器根据客户采集端上传的参数配置的md5值与从数据库中最新获取的参数配置的md5值进行对比,若两者一致,则服务端返回给客户采集端空值;若两者不一致,则服务端更新要采集的参数配置返回给客户采集端。
有益效果:本发明与现有技术相比,具有以下优点:
(1)本发明客户采集端使用GO语言开发,可以便捷的在各个服务器上编译安装,服务端使用Java开发,Java使用广泛,可以便于业务功能扩展以及人员交接管理;两种语言通过JSON-RPC通信,由于GO语言内置JSON-RPC使用库,而Java也有便捷的 jsonrpc4j库使用,具有学习成本低的优点;
(2)通过采用本发明的跨语言的通信方式,适用场景多,例如:客户端可以实时发送心跳信号给服务端,服务端可实时检测客户端的运行状态,实现对客户端启停的实时监控;
(3)采用本发明的通讯方式,无需对通信过程进行额外代码开发,无需考虑跨语言代码兼容的方式,可以让开发人员将更多精力放在业务方法实现上。
具体实施方式
现结合实施例进一步阐述本发明的技术方案。
在使用go语言客户端,Java语言服务端的场景下,本实施例提出了一种基于JSON-RPC实现跨语言通讯的方法,该方法给出了通用的传输格式,以及通用的数据校验,基于该传输格式以及数据校验,用户只需要关注传输数据本身,不再需要考虑异构语言下数据类型的差异、传输数据的一致性等等问题,具体包括以下步骤:
使用GO语言开发客户采集端,客户采集端使用jsonrpc库,并遵从jsonrpc协议,定期远程调用服务端提供的方法,来获取最新参数配置;客户采集端调用服务端方法时,会上传上一次服务端下发的参数配置的md5值作为参数传给服务端,供服务端进行对比,等待服务端返回最新要采集的参数配置。
使用Java语言开发服务端,服务端使用jsonrpc4j提供的方法,创建一个JsonRpcServer对象,封装对外提供服务的通信过程,可以接收来自任何跨语言客户采集端的连接,服务端创建JsonRpcServer对象后,占用一个端口,进行监听,等待客户采集端的请求,服务端接收到客户采集端调用方法的请求后,通过请求参数从数据库中获取最新参数配置返回给客户采集端;
客户采集端调用服务端方法时,会上传上一次服务端下发的参数配置的md5值,服务端接收到客户采集端上传的参数配置的md5值后,与最新获取的参数配置产生的md5 值进行对比,若md5值不变,则说明参数配置没有改变,客户采集端不用更新采集的参数配置,服务端返回给客户采集端空值;若md5值不一致,则说明服务端要求客户采集端更新要采集的参数配置,服务端更新要采集的参数配置返回给客户采集端。
至此完成服务端和客户采集端之间的通信,服务端和客户采集端都没有因编程语言不同而做相关适配的代码开发。
在上述过程中,服务端和客户采集端传输的数据和返回的数据的数据格式都是嵌套在jsonrpc协议规定的通信格式中。客户采集端在远程调用服务端的方法时,采用以下通讯格式:
{
"method":"getMonitorParamsByhost",
"params":"{system:CH3-D5000,host:dev3,md5:xxxxxx}",
"id":0
}
式中,method代表要调用的服务端的方法名,params为传递的参数,id默认为0;system代表所属***,host代表主机名,md5代表上请求周期服务端返回的MD5hash 字符串。
服务端获取客户采集端上传的消息,根据system、host以及md5值从数据库获取该客户端的最新参数配置信息。服务端接收到客户采集端传递的消息,根据method的值调用相应的方法,并将返回信息嵌套在result中,该result是一个JSON串。服务端返回给客户端的信息格式如下:
MD5:本次计算的MD5hash值;
Timestamp:时间戳;
Properties:需要采集的参数名;
只有客户采集端发过来的md5值和本次计算的md5值不同,才返回需要采集的参数名,否则返回空。

Claims (10)

1.一种基于JSON-RPC实现跨语言通讯的方法,其特征在于:包括:
客户采集端遵从jsonrpc协议,向服务端发送调用方法请求以及上传上一请求周期服务器下发的参数配置的md5值至服务端;
服务器根据客户采集端的调用方法请求,从数据库中获取最新参数配置,返回给客户采集端;
客户采集端根据获取到的最新参数配置来执行采集任务。
2.根据权利要求1所述的一种基于JSON-RPC实现跨语言通讯的方法,其特征在于:所述客户采集端和服务端的开发语言不同。
3.根据权利要求1所述的一种基于JSON-RPC实现跨语言通讯的方法,其特征在于:所述的从数据库中获取最新参数配置,返回给客户采集端,具体包括以下步骤:
服务器将客户采集端上传的参数配置的md5值与从数据库中最新获取的参数配置的md5值进行对比,若两者一致,则服务端返回给客户采集端空值;若两者不一致,则服务端更新要采集的参数配置返回给客户采集端。
4.根据权利要求1所述的一种基于JSON-RPC实现跨语言通讯的方法,其特征在于:服务器使用jsonrpc4j提供的方法,创建一个JsonRpcServer对象,等待客户采集端的调用方法请求。
5.根据权利要求1所述的一种基于JSON-RPC实现跨语言通讯的方法,其特征在于:所述客户采集端采用以下通讯格式向服务端发送调用方法请求以及上传上一请求周期服务器下发的参数配置的md5值至服务端;
method:**********;
params:{system:xxxxxx,host:xxx,md5:xxxxxx}
式中,method代表要调用的服务端的方法名,params为传递的参数,system代表所属***,host代表主机名,md5代表上一请求周期服务端返回的md5值;
服务端获取客户采集端上传的消息,根据system、host以及md5值从数据库获取最新参数配置信息;
服务端根据method的值调用相应的方法,并采用以下信息格式返回给客户采集端:
MD5:本次计算的MD5hash值;
Timestamp:时间戳;
Properties:需要采集的参数名或空值。
6.一种基于JSON-RPC实现跨语言通讯的***,其特征在于:包括客户采集端和服务端;
所述客户采集端,用于遵从jsonrpc协议,向服务端发送调用方法请求以及上传上一请求周期服务器下发的参数配置的md5值至服务端,以及根据当前请求周期服务器下发的最新参数配置来执行采集任务;
所述服务器,用于根据客户采集端的调用方法请求,从数据库中获取最新参数配置,返回给客户采集端。
7.根据权利要求6所述的一种基于JSON-RPC实现跨语言通讯的***,其特征在于:所述客户采集端采用以下通讯格式向服务端发送调用方法请求以及上传上一请求周期服务器下发的参数配置的md5值至服务端;
method:**********;
params:{system:xxxxxx,host:xxx,md5:xxxxxx}
式中,method代表要调用的服务端的方法名,params为传递的参数,system代表所属***,host代表主机名,md5代表上一请求周期服务端返回的md5值。
8.根据权利要求7所述的一种基于JSON-RPC实现跨语言通讯的***,其特征在于:所述服务端根据system、host以及md5值从数据库获取最新参数配置信息。
9.根据权利要求8所述的一种基于JSON-RPC实现跨语言通讯的***,其特征在于:所述服务端根据method的值调用相应的方法,并采用以下信息格式返回给客户采集端:
MD5:本次计算的MD5hash值;
Timestamp:时间戳;
Properties:需要采集的参数名或空值。
10.根据权利要求9所述的一种基于JSON-RPC实现跨语言通讯的***,其特征在于:所述服务器根据客户采集端上传的参数配置的md5值与从数据库中最新获取的参数配置的md5值进行对比,若两者一致,则服务端返回给客户采集端空值;若两者不一致,则服务端更新要采集的参数配置返回给客户采集端。
CN202110533242.7A 2021-05-17 2021-05-17 一种基于json-rpc实现跨语言通讯的方法及*** Active CN113296751B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110533242.7A CN113296751B (zh) 2021-05-17 2021-05-17 一种基于json-rpc实现跨语言通讯的方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110533242.7A CN113296751B (zh) 2021-05-17 2021-05-17 一种基于json-rpc实现跨语言通讯的方法及***

Publications (2)

Publication Number Publication Date
CN113296751A true CN113296751A (zh) 2021-08-24
CN113296751B CN113296751B (zh) 2023-09-29

Family

ID=77322361

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110533242.7A Active CN113296751B (zh) 2021-05-17 2021-05-17 一种基于json-rpc实现跨语言通讯的方法及***

Country Status (1)

Country Link
CN (1) CN113296751B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117270833A (zh) * 2023-11-21 2023-12-22 支付宝(杭州)信息技术有限公司 服务调用及发布方法、介质和计算机设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107493286A (zh) * 2017-08-23 2017-12-19 杭州安恒信息技术有限公司 一种基于安全鉴权的rpc远程过程调用方法
CN112256246A (zh) * 2020-09-18 2021-01-22 许继集团有限公司 一种用于电力***中支持跨语言调用的微服务集成架构

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107493286A (zh) * 2017-08-23 2017-12-19 杭州安恒信息技术有限公司 一种基于安全鉴权的rpc远程过程调用方法
CN112256246A (zh) * 2020-09-18 2021-01-22 许继集团有限公司 一种用于电力***中支持跨语言调用的微服务集成架构

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117270833A (zh) * 2023-11-21 2023-12-22 支付宝(杭州)信息技术有限公司 服务调用及发布方法、介质和计算机设备
CN117270833B (zh) * 2023-11-21 2024-04-26 支付宝(杭州)信息技术有限公司 服务调用及发布方法、介质和计算机设备

Also Published As

Publication number Publication date
CN113296751B (zh) 2023-09-29

Similar Documents

Publication Publication Date Title
KR20220083851A (ko) 사물 인터넷 시스템에서 데이터를 전송하는 방법 및 장치, 게이트웨이 디바이스와 이의 저장 매체
CN111031034A (zh) 多协议融合边缘计算网关
JP4403112B2 (ja) ホームネットワーク汎用ミドルウェアブリッジ(umb)システム
CN113542365B (zh) 基于多场景应用的端边物联网平台架构
CN114567620B (zh) 一种基于mqtt协议的数字模型与物理设备匹配的***及方法
CN111142487A (zh) 一种基于opc ua统一架构协议的设备数据采集***
CN102150381A (zh) 统一设备管理方法和***
CN115515169B (zh) 一种工业数据采集网关的数据转发方法
CN114666682A (zh) 多传感器物联网资源自适应部署管控中间件
CN112542888A (zh) 一种实现配用电智能设备即插即用的方法
EP3734936A1 (en) List-based redundancy control in crowd-based iot
CN113296751A (zh) 一种基于json-rpc实现跨语言通讯的方法及***
CN114363399B (zh) 边缘网关的控制方法及***
CN116346948A (zh) 一种基于微服务的多协议规约转换方法及***
CN115242292A (zh) 一种软件定义边缘网关的应用框架和传输控制方法
CN113364838B (zh) 一种基于mqtt的设备自组网方法及***
CN114900558B (zh) 一种通用的设备管理协议控制方法及装置
CN116319729A (zh) 机器人控制方法、装置、服务器、***及存储介质
CN114844882A (zh) 一种基于mqtt的通用文件上传方法
KR101302133B1 (ko) 전력 제어 장치, lrwpan-이더넷 브리지 및 전력 센서 노드의 전력 제어 방법
CN114172821A (zh) 服务状态的同步方法、装置及服务器
CN113848834A (zh) 一种基于边云协同的车间设备接入***及方法
WO2022119554A1 (en) Mechanism for integrating non-standard related data sources into communication network
JP2002544730A (ja) ネットワークエレメントを電気通信システムに接続する方法
Ferrari et al. Turning old into new: Adding LoRaWAN connectivity to PLC in brownfield installations

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