CN113329046A - 数据传输方法、***以及存储介质 - Google Patents

数据传输方法、***以及存储介质 Download PDF

Info

Publication number
CN113329046A
CN113329046A CN202010131331.4A CN202010131331A CN113329046A CN 113329046 A CN113329046 A CN 113329046A CN 202010131331 A CN202010131331 A CN 202010131331A CN 113329046 A CN113329046 A CN 113329046A
Authority
CN
China
Prior art keywords
application
message
service
information
tcp connection
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
Application number
CN202010131331.4A
Other languages
English (en)
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.)
Gree Electric Appliances Inc of Zhuhai
Zhuhai Lianyun Technology Co Ltd
Original Assignee
Gree Electric Appliances Inc of Zhuhai
Zhuhai Lianyun Technology 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 Gree Electric Appliances Inc of Zhuhai, Zhuhai Lianyun Technology Co Ltd filed Critical Gree Electric Appliances Inc of Zhuhai
Priority to CN202010131331.4A priority Critical patent/CN113329046A/zh
Publication of CN113329046A publication Critical patent/CN113329046A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/26Special purpose or proprietary protocols or architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

本公开了一种数据传输方法、***以及存储介质,其中的方法包括:第一应用和第二应用之间建立TCP连接;第一应用和/或第二应用通过TCP连接传输数据消息;其中,第一应用和/或第二应用根据预设的通信协议对数据进行封装并进行二进制序列化,生成包含有二进制消息内容的数据消息。本公开的方法、***以及存储介质,可以使数据报文体积更小并实现高效的二进制数据传输,能够提升数据的传输效率,降低对***资源的消耗,并且支持在使用不同开发语言实现的应用之间进行的数据传输。

Description

数据传输方法、***以及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据传输方法、***以及存储介质。
背景技术
计算机的应用可以使用多种开发语言实现,应用之间通常会有数据的交互和传输。目前,应用之间的数据传输通常采用基于Http协议的数据交互的方式,由于Http协议属于应用层协议,在基于Http协议进行数据传输时,传输的数据包含无用的内容,例如,基于Http协议的请求中包含较多的无用内容,协议转换层数较多,使***性能消耗较高,耗时比较严重;并且,基Http协议进行的数据传输是一种无状态请求-应答的方式,每次请求都会传输大量重复的内容信息。因此,基于Http协议进行数据传输的传输效率较低。
发明内容
有鉴于此,本发明要解决的一个技术问题是提供一种数据传输方法、***以及存储介质,能够在应用之间使用TCP连接进行二进制数据传输。
根据本公开的一个方面,提供一种数据传输方法,包括:第一应用和第二应用之间建立TCP连接;所述第一应用和/或所述第二应用通过所述TCP连接传输数据消息;其中,所述第一应用和/或所述第二应用根据预设的通信协议对数据进行封装并进行二进制序列化,生成包含有二进制消息内容的所述数据消息。
可选地,所述数据消息包括:请求消息和响应消息;所述第一应用和/或所述第二应用通过所述TCP连接传输数据消息包括:所述第一应用通过所述TCP连接向所述第二应用发送所述请求消息;所述第二应用通过所述TCP连接向所述第一应用发送与所述请求消息相对应的所述响应消息。
可选地,所述第一应用通过所述TCP连接向所述第二应用发送请求消息包括:所述第一应用根据所述通信协议的报文格式对请求信息进行封装处理并进行二进制序列化,生成所述请求消息;所述第一应用通过所述TCP连接发送所述请求消息。
可选地,所述第二应用通过所述TCP连接向所述第一应用发送与所述请求消息相对应的响应消息包括:所述第二应用根据所述通信协议对所述请求消息进行解析处理并进行二进制反序列化,获取所述请求信息;所述第二应用获得与所述请求信息相对应的响应信息,根据所述报文格式对所述响应信息进行封装处理并进行二进制序列化,生成所述响应消息;所述第二应用通过所述TCP连接发送所述响应消息。
可选地,所述报文格式包括:消息边界、请求消息结构体和响应消息结构体;其中,通过所述请求消息结构体和所述响应消息结构体携带二进制消息内容。
可选地,所述第二应用为服务器端,用于提供应用服务,所述第一应用为客户端;所述方法还包括:所述第二应用向注册治理中心服务注册自身的IP和端口信息;所述第一应用从所述注册治理中心服务获取所述IP和端口信息,基于所述IP和端口信息与所述第二应用建立所述TCP连接。
可选地,所述注册治理中心服务使用K-V键值对存储所述IP和端口信息;其中,所述K-V键值对的Key值为所述应用服务信息,所述K-V键值对的Value值用于存储所述IP和端口信息。
可选地,所述客户端包括:RPC客户端;所述服务器端包括:RPC服务器端。
可选地,所述第一应用和所述第二应用周期性地向所述注册治理中心服务发送心跳消息;应用管理服务基于所述心跳消息判断所述第一应用和/或所述第二应用是否出现异常,如果是,则对所述第一应用和/或所述第二应用运行的版本进行控制处理。
可选地,所述对所述第一应用和/或所述第二应用运行的版本进行控制处理包括:所述应用管理服务从所述注册治理中心服务获取与所述第一应用和/或所述第二应用相对应的版本信息;所述应用管理服务基于所述版本信息,控制所述第一应用和/或所述第二应用回滚到上一个稳定的版本并运行;其中,所述第一应用和所述第二应用向所述注册治理中心服务注册各自的版本信息。
可选地,所述注册治理中心服务根据所述心跳消息获得所述第二应用的运行状态信息,基于所述运行状态信息将处于正常运行状态的所述第二应用的IP和端口信息提供给所述第一应用。
可选地,失效服务清理服务基于预设的时间间隔,周期性地对处于失效状态的所述第二应用进行清理处理。
可选地,所述第一应用和所述第二应用部署在一个容器内,并且,分别与所述第一应用和所述第二应用相对应的开发语言的类型不相同。
可选地,所述第一应用和所述第二应用通过网关与所述容器外的其他应用进行数据传输;其中,所述网关通过Http协议与所述其他应用进行通信。
根据本公开的另一方面,提供一种数据传输***,包括:第一应用和第二应用;所述第一应用和所述第二应用之间建立TCP连接,所述第一应用和/或所述第二应用通过所述TCP连接传输数据消息;其中,所述第一应用和/或所述第二应用根据预设的通信协议对数据进行封装并进行二进制序列化,生成包含有二进制消息内容的所述数据消息。
可选地,所述数据消息包括:请求消息和响应消息;所述第一应用,用于通过所述TCP连接向所述第二应用发送所述请求消息;所述第二应用,用于通过所述TCP连接向所述第一应用发送与所述请求消息相对应的所述响应消息。
可选地,所述第一应用,具体用于根据所述通信协议的报文格式对请求信息进行封装处理并进行二进制序列化,生成所述请求消息,通过所述TCP连接发送所述请求消息。
可选地,所述第二应用,具体用于根据所述通信协议对所述请求消息进行解析处理并进行二进制反序列化,获取所述请求信息;获得与所述请求信息相对应的响应信息,根据所述报文格式对所述响应信息进行封装处理并进行二进制序列化,生成所述响应消息;通过所述TCP连接发送所述响应消息。
可选地,还包括:注册治理中心服务;其中,所述第二应用为服务器端,用于提供应用服务,所述第一应用为客户端;所述第二应用,还用于向注册治理中心服务注册自身的IP和端口信息;所述第一应用,还用于从所述注册治理中心服务获取所述IP和端口信息,基于所述IP和端口信息与所述第二应用建立所述TCP连接。
可选地,所述注册治理中心服务,用于使用K-V键值对存储所述IP和端口信息;其中,所述K-V键值对的Key值为所述应用服务信息,所述K-V键值对的Value值用于存储所述IP和端口信息。
可选地,所述客户端包括:RPC客户端;所述服务器端包括:RPC服务器端。
可选地,还包括:应用管理服务;所述第一应用和所述第二应用周期性地向所述注册治理中心服务发送心跳消息;所述应用管理服务,用于基于所述心跳消息判断所述第一应用和/或所述第二应用是否出现异常,如果是,则对所述第一应用和/或所述第二应用运行的版本进行控制处理。
可选地,所述应用管理服务,具体用于从所述注册治理中心服务获取与所述第一应用和/或所述第二应用相对应的版本信息;基于所述版本信息,控制所述第一应用和/或所述第二应用回滚到上一个稳定的版本并运行;其中,所述第一应用和所述第二应用向所述注册治理中心服务注册各自的版本信息。
可选地,所述注册治理中心服务,还用于根据所述心跳消息获得所述第二应用的运行状态信息,基于所述运行状态信息将处于正常运行状态的所述第二应用的IP和端口信息提供给所述第一应用。
可选地,还包括:失效服务清理服务;所述失效服务清理服务,用于基于预设的时间间隔,周期性地对失效的所述第二应用进行清理处理。
可选地,所述第一应用和所述第二应用部署在一个容器内,并且,分别与所述第一应用和所述第二应用相对应的开发语言的类型不相同。
可选地,还包括:网关;所述第一应用和所述第二应用通过所述网关与所述容器外的其他应用进行数据传输;其中,所述网关通过Http协议与所述其他应用进行通信。
根据本公开的又一方面,提供一种数据传输***,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上所述的方法。
根据本公开的再一方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行如上所述的方法。
本公开的数据传输方法、***以及存储介质,根据通信协议对数据进行封装并进行二进制序列化,使用TCP连接进行二进制数据传输,可以使数据报文体积更小并实现高效的二进制数据传输,能够提升数据的传输效率,降低对***资源的消耗,并且支持在使用不同开发语言实现的应用之间进行的数据传输。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本公开的数据传输方法的一个实施例的流程示意图;
图2为根据本公开的数据传输方法的一个实施例中的发送请求消息的流程示意图;
图3为根据本公开的数据传输方法的一个实施例中的发送响应消息的流程示意图;
图4为根据本公开的数据传输方法的一个实施例中的建立TCP连接的流程示意图;
图5为根据本公开的数据传输方法的一个实施例中的进行版本控制处理的流程示意图;
图6为根据本公开的数据传输***的一个实施例的模块示意图;
图7为根据本公开的数据传输***的另一个实施例的模块示意图;
图8为根据本公开的数据传输***的又一个实施例的模块示意图。
具体实施方式
下面参照附图对本公开进行更全面的描述,其中说明本公开的示例性实施例。下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
下文中的“第一”、“第二”等仅用于描述上相区别,并没有其他特殊的含义。
图1为根据本公开的数据传输方法的一个实施例的流程示意图,如图1所示:
步骤101,第一应用和第二应用之间建立TCP连接。
第一应用和第二应用都为计算机的应用,可以为独立的线程、进程等。第一应用和第二应用的功能有多种,例如,第一应用和第二应用对外提供AI算法功能等,算法可以为与图像识别、检测等相关的算法。第一应用和第二应用的功能可以为人脸识别、食材识别等图像识别相关的功能,第一应用和第二应用的算法可以用python来实现,也可以使用C/C++、JAVA、Golang等开发语言实现,为异构算法。第一应用和第二应用之间的TCP连接可以按需连接,也可以为TCP长连接。
步骤102,第一应用和/或第二应用通过TCP连接传输数据消息;其中,第一应用和/或第二应用根据预设的通信协议对数据进行封装并进行二进制序列化,生成包含有二进制消息内容的数据消息。
Http协议属于应用层协议,在请求中包含较多无用的内容,序列化和反序列化的耗时较多,导致传输效率降低,并且Http协议是无状态请求-应答的方式。TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,可以连接到不同但互连的计算机通信网络的主计算机中的成对进程之间,依靠TCP提供可靠的通信服务。
上述实施例中的数据传输方法,需要传输的数据可以为多种数据,预设的通信协议可以为自定义的通信协议,根据自定义的通信协议对数据进行封装并进行二进制序列化,使用TCP连接进行二进制数据传输,可以使数据报文体积更小并实现高效的二进制数据传输,能够提升数据的传输效率,降低对***资源(包括CPU、内存等资源)的消耗,并且支持在使用不同开发语言实现的应用之间进行的数据传输。
在一个实施例中,数据消息包括:请求消息和响应消息。第一应用和第二应用按照自定义的通信协议进行数据发送和响应,第一应用通过TCP连接向第二应用发送请求消息,第二应用通过TCP连接向第一应用发送与请求消息相对应的响应消息。
图2为根据本公开的数据传输方法的一个实施例中的发送请求消息的流程示意图,如图2所示:
步骤201,第一应用根据通信协议的报文格式对请求信息进行封装处理并进行二进制序列化,生成请求消息。
步骤202,第一应用通过TCP连接发送请求消息。
图3为根据本公开的数据传输方法的一个实施例中的发送响应消息的流程示意图,如图3所示:
步骤301,第二应用根据通信协议对请求消息进行解析处理并进行二进制反序列化,获取请求信息。
步骤302,第二应用获得与请求信息相对应的响应信息,根据报文格式对响应信息进行封装处理并进行二进制序列化,生成响应消息。
步骤303,第二应用通过TCP连接发送响应消息。
自定义的通信协议的报文格式可以有多种。例如,报文格式包括:消息边界、请求消息结构体和响应消息结构体,请求消息结构体和响应消息结构体为二进制消息结构体;通信协议还包括snappy压缩算法等,Snappy压缩算法是Google提供的一个压缩库。通信协议可以在Http/2的基础上进行定义,通过封装实现双向流,支持了连接的多路复用,提高连接的利用率。
消息边界能够解决在TCP连接上的多次消息的传递,通过消息边界在连续消息之间设置分割标识,便于接收端可以获取、解析一条完整的消息。消息边界可以通过长度前缀法确定,长度前缀法为在每条消息的开头增加一个四个字节长度的整数值,用以标记消息体的长度。
在接收到消息后,可以先读取消息体的长度信息,根据长度信息读取完整的字节数组获取到完整的数据消息。对于通过请求消息结构体或响应消息结构体传输的数据内容,进行二进制序列化后转换为的二进制字节数组,并通过二进制反序列化可以还原为原始数据内容。如果消息传输的内容过大,可以使用Snappy压缩算法对消息体进行压缩,减轻网络带宽的压力。
在一个实施例中,第二应用为服务器端,用于提供应用服务,应用服务可以为图像识别、检测服务等,第一应用为客户端。第一应用也可以作为服务器端,用于提供应用服务,当第二应用需要获取第一应用提供的应用服务时,第二应用作为客户端。客户端包括RPC客户端等,服务器端包括RPC服务器端等。
RPC(Remote Procedure Call,远程过程调用)为通过网络从远程计算机程序上请求服务。采用RPC原理实现自定义的、基于TCP传输的通信协议完成应用进程间的二进制远程过程调用。RPC Client根据通信协议的报文格式对请求信息进行封装处理并进行二进制序列化,生成请求消息并传递给RPC Server。RPC Server根据通信协议对请求消息进行解析处理并进行二进制反序列化,获取请求信息,获取对应方法进行本地调用,根据报文格式对响应信息进行封装处理并进行二进制序列化,生成响应消息,返回给RPC Client。一个应用可以作为RPC Client,也可以作为RPC Server,区别在于此应用是作为应用服务的提供者还是作为应用服务的消费者。例如,第一应用和第二应用可以为RPC Client,也可以为RPC Server。
在一个实施例中,通信协议的报文格式包括:消息边界、head(标志位,状态)、请求消息结构体(包括版本号、接口签名、参数值等),响应消息结构体(包括结果等),如下表1所示:
Figure BDA0002395851430000091
表1-报文格式的样例表
通过请求消息结构体和响应消息结构体携带的消息内容可以通过二进制序列化进行转换,生成二进制字节数组,即二进制消息内容。对于二进制消息内容进行二进制反序列化,可以还原通过请求消息结构体和响应消息结构体携带的消息内容。
服务器端依据通信协议,采用协议代码生成器生成对应的协议通信代码,即封装一个代码生成工具,用于进行通讯协议的数据格式封装以及编码、解码等。客户端依据生成的协议通信代码,进行通讯协议的数据格式封装以及编码、解码等操作,能够直接本地调用协议通信代码,完成对于远程应用进程的调用,协议通信代码即为客户端提供的一个便于使用的工具类。
图4为根据本公开的数据传输方法的一个实施例中的建立TCP连接的流程示意图,如图4所示:
步骤401,第二应用向注册治理中心服务注册自身的IP和端口信息。
第二应用对外提供应用服务,在启动时向注册治理中心服务注册自身的IP和端口信息。如果第一应用也对外提供应用服务,则在启动时向注册治理中心服务注册自身的IP和端口信息。
步骤402,第一应用从注册治理中心服务获取IP和端口信息,基于IP和端口信息与第二应用建立TCP连接。
注册治理中心服务使用K-V键值对存储IP和端口信息,K-V键值对为Key-Value对,K-V键值对的Key值为应用服务信息,K-V键值对的Value值用于存储IP和端口信息,即Key=应用服务信息(例如为服务名称等),Value=IP+端口等信息。
注册治理中心服务可以为独立运行的一个进程,通过注册治理中心服务可以实现对于应用服务的发现和负载均衡,可以解耦客户端和服务端的通讯地址。第二应用在启动时,向注册治理中心服务发送注册消息,注册消息携带的信息包括应用服务信息、IP和端口信息等。
可以有多个应用提供一种应用服务,注册治理中心服务存储有与一种应用服务相对应的多组IP和端口信息。第一应用向注册治理中心服务发送请求使用此应用服务的连接请求,注册治理中心服务将多组IP和端口信息中的一组IP和端口信息发送给第一应用,第一应用服务基于此组IP和端口信息与提供此应用服务的应用建立TCP连接。
图5为根据本公开的数据传输方法的一个实施例中的进行版本控制处理的流程示意图,如图5所示:
步骤501,第一应用和第二应用周期性地向注册治理中心服务发送心跳消息。
步骤502,应用管理服务基于心跳消息判断第一应用和/或第二应用是否出现异常,如果是,则对第一应用和/或第二应用运行的版本进行控制处理。
对第一应用和/或第二应用运行的版本进行控制处理可以采用多种方法。例如,应用管理服务从注册治理中心服务获取与第一应用和/或第二应用相对应的版本信息,应用管理服务基于版本信息,控制第一应用和/或第二应用回滚到上一个稳定的版本并运行;其中,第一应用和第二应用向注册治理中心服务注册各自的版本信息。第一应用和第二应用在启动时向注册治理中心服务注册各自的版本信息,包括历史可用的版本和当前启动的版本信息。
应用管理服务可以为独立运行的一个进程,用于进行版本管理和动态版本切换。应用管理服务可以获取不同应用启动时的版本以及历史可用的版本信息,实现对于应用的版本管理和版本的动态切换。应用管理服务可以控制应用运行,对应用的运行进行监控,对出现异常的应用进行回滚处理。
在运行过程中,应用管理服务通过心跳机制实时监控应用进程的运行情况,如果确定应用发生异常,基于版本信息动态控制应用回滚到上一个稳定的版本并运行。例如,第一应用和第二应用每隔1秒向注册治理中心服务发送心跳消息,如果确定第一应用和/或第二应用在5秒内没有发送心跳消息,则判断第一应用和/或第二应用出现异常。
第二应用在启动时向注册治理中心服务注册自身的主机和端口并启动定时任务发送心跳消息,第一应用可以定时从注册治理中心服务获取提供所需的应用服务的第二应用的IP地址和端口信息,并进行缓存。注册治理中心服务根据心跳消息获得第二应用的运行状态信息,基于运行状态信息将处于正常运行状态的第二应用的IP和端口信息提供给第一应用。
失效服务清理服务基于预设的时间间隔,周期性地对处于失效状态的第二应用进行清理处理。注册治理中心服务根据心跳机制对各个注册的第二应用进行检测和失效清理服务。在注册治理中心服务启动时,启动一个子进程用于定时检测、清理失效的应用服务等,此子进程为失效服务清理服务。
在一个实施例中,第二应用的线程在特定端口启动后,对外提供应用服务,将自身的IP和端口信息注册到注册治理中心服务,并与注册治理中心服务保持心跳连接,每隔1秒钟向注册治理中心服务发送心跳消息。
注册治理中心服务根据心跳消息检查第二应用提供的应用服务是否可用,如果确定注册治理中心服务在预设的时间间隔(例如为2秒、3秒等)内没有接收到第二应用发送的心跳消息,则标识此第二应用提供的应用服务不可用,为异常状态;如果确定注册治理中心服务在预设的时间间隔(例如为5秒、6秒等)内没有接收到第二应用发送的心跳消息,则确定此第二应用为失效状态,自动清除此第二应用提供的应用服务。
注册治理中心服务启动一个子进程作为失效服务清理服务,失效服务清理服务基于预设的时间间隔(例如为5秒、10秒等),周期性地对处于失效状态的第二应用进行清理处理,清理处理包括将注册治理中心服务存储的、处于失效状态的第二应用的IP和端口信息删除等。
在一个实施例中,第一应用和第二应用部署在一个容器内,分别与第一应用和第二应用相对应的开发语言的类型不相同,例如第一应用和第二应用的开发语言分别为java、python,基于容器化部署应用,能够实现动态扩展和伸缩,容器有多种,例如为docker、kubernetes容器等。注册治理中心服务、应用管理服务以及失效服务清理服务也可以部署在容器内。
第一应用和第二应用通过网关与容器外的其他应用进行数据传输,网关通过Http协议与其他应用进行通信,对外提供统一的Http服务。网关可以是容器内部署的服务层对外暴露的API网关,服务请求流入容器的流量需先经过API网关,网关提供鉴权,限流等措施。
在一个实施例中,本公开提供一种数据传输***,包括:第一应用61和第二应用62。第一应用61和第二应用62之间建立TCP连接,第一应用61和/或第二应用62通过TCP连接传输数据消息;其中,第一应用61和/或第二应用62根据预设的通信协议对数据进行封装并进行二进制序列化,生成包含有二进制消息内容的数据消息。
数据消息包括请求消息和响应消息,第一应用61通过TCP连接向第二应用发送请求消息,第二应用62通过TCP连接向第一应用61发送与请求消息相对应的响应消息。
在一个实施例中,第一应用61根据通信协议的报文格式对请求信息进行封装处理并进行二进制序列化,生成请求消息,通过TCP连接发送请求消息。第二应用62根据通信协议对请求消息进行解析处理并进行二进制反序列化,获取请求信息;第二应用62获得与请求信息相对应的响应信息,根据报文格式对响应信息进行封装处理并进行二进制序列化,生成响应消息,通过TCP连接发送响应消息。
如图7所示,第二应用62为服务器端,用于提供应用服务,第一应用61为客户端;客户端包括RPC客户端等,服务器端包括RPC服务器端等。第二应用62向注册治理中心服务65注册自身的IP和端口信息,第一应用61从注册治理中心服务65获取IP和端口信息,基于IP和端口信息与第二应用62建立TCP连接。
注册治理中心服务65使用K-V键值对存储IP和端口信息;其中,K-V键值对的Key值为应用服务信息,K-V键值对的Value值用于存储IP和端口信息。
第一应用61和第二应用62周期性地向注册治理中心服务65发送心跳消息。应用管理服务66基于心跳消息判断第一应用61和/或第二应用62是否出现异常,如果是,则对第一应用61和/或第二应用62运行的版本进行控制处理。
如果第一应用61和/或第二应用62出现异常,应用管理服务66从注册治理中心服务65获取与第一应用和/或第二应用相对应的版本信息,基于版本信息控制第一应用61和/或第二应用62回滚到上一个稳定的版本并运行;其中,第一应用61和第二应用62向注册治理中心服务65注册各自的版本信息。
注册治理中心服务65根据心跳消息获得第二应用62的运行状态信息,基于运行状态信息将处于正常运行状态的第二应用62的IP和端口信息提供给第一应用61。失效服务清理服务67基于预设的时间间隔,周期性地对失效的第二应用62进行清理处理。
在一个实施例中,第一应用61和第二应用62部署在容器60内,第三应用63和第四应用64也部署在容器60内,分别与第一应用61、第二应用62、第三应用63和第四应用64相对应的开发语言的类型不相同。第一应用61和第二应用62通过网关68与容器60外的其他应用进行数据传输;其中,网关68通过Http协议与容器60外的其他应用进行通信。
图8为根据本公开的数据传输***的又一个实施例的模块示意图。如图8所示,该装置可包括存储器81、处理器82、通信接口83以及总线84。存储器81用于存储指令,处理器82耦合到存储器81,处理器82被配置为基于存储器81存储的指令执行实现上述的数据传输方法。
存储器81可以为高速RAM存储器、非易失性存储器(non-volatile memory)等,存储器51也可以是存储器阵列。存储器81还可能被分块,并且块可按一定的规则组合成虚拟卷。处理器82可以为中央处理器CPU,或专用集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本公开的数据传输方法的一个或多个集成电路。
根据本公开的再一方面,提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,指令被处理器执行如上的方法。
上述实施例中提供的数据传输方法、***以及存储介质,根据通信协议对数据进行封装并进行二进制序列化,使用TCP连接进行二进制数据传输,可以使数据报文体积更小并实现高效的二进制数据传输,能够提升数据的传输效率,降低对***资源的消耗,并且支持在使用不同开发语言实现的应用之间进行的数据传输,可以解耦客户端和服务端的通讯地址。
可能以许多方式来实现本公开的方法和***。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和***。用于方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。

Claims (29)

1.一种数据传输方法,包括:
第一应用和第二应用之间建立TCP连接;
所述第一应用和/或所述第二应用通过所述TCP连接传输数据消息;
其中,所述第一应用和/或所述第二应用根据预设的通信协议对数据进行封装并进行二进制序列化,生成包含有二进制消息内容的所述数据消息。
2.如权利要求1所述的方法,其中,所述数据消息包括:请求消息和响应消息;所述第一应用和/或所述第二应用通过所述TCP连接传输数据消息包括:
所述第一应用通过所述TCP连接向所述第二应用发送所述请求消息;
所述第二应用通过所述TCP连接向所述第一应用发送与所述请求消息相对应的所述响应消息。
3.如权利要求2所述的方法,所述第一应用通过所述TCP连接向所述第二应用发送请求消息包括:
所述第一应用根据所述通信协议的报文格式对请求信息进行封装处理并进行二进制序列化,生成所述请求消息;
所述第一应用通过所述TCP连接发送所述请求消息。
4.如权利要求3所述的方法,所述第二应用通过所述TCP连接向所述第一应用发送与所述请求消息相对应的响应消息包括:
所述第二应用根据所述通信协议对所述请求消息进行解析处理并进行二进制反序列化,获取所述请求信息;
所述第二应用获得与所述请求信息相对应的响应信息,根据所述报文格式对所述响应信息进行封装处理并进行二进制序列化,生成所述响应消息;
所述第二应用通过所述TCP连接发送所述响应消息。
5.如权利要求3所述的方法,其中,
所述报文格式包括:消息边界、请求消息结构体和响应消息结构体;其中,通过所述请求消息结构体和所述响应消息结构体携带二进制消息内容。
6.如权利要求2所述的方法,其中,所述第二应用为服务器端,用于提供应用服务,所述第一应用为客户端;所述方法还包括:
所述第二应用向注册治理中心服务注册自身的IP和端口信息;
所述第一应用从所述注册治理中心服务获取所述IP和端口信息,基于所述IP和端口信息与所述第二应用建立所述TCP连接。
7.如权利要求6所述的方法,还包括:
所述注册治理中心服务使用K-V键值对存储所述IP和端口信息;
其中,所述K-V键值对的Key值为所述应用服务信息,所述K-V键值对的Value值用于存储所述IP和端口信息。
8.如权利要求6所述的方法,其中,
所述客户端包括:RPC客户端;所述服务器端包括:RPC服务器端。
9.如权利要求6所述的方法,还包括:
所述第一应用和所述第二应用周期性地向所述注册治理中心服务发送心跳消息;
应用管理服务基于所述心跳消息判断所述第一应用和/或所述第二应用是否出现异常,如果是,则对所述第一应用和/或所述第二应用运行的版本进行控制处理。
10.如权利要求9所示的方法,所述对所述第一应用和/或所述第二应用运行的版本进行控制处理包括:
所述应用管理服务从所述注册治理中心服务获取与所述第一应用和/或所述第二应用相对应的版本信息;
所述应用管理服务基于所述版本信息,控制所述第一应用和/或所述第二应用回滚到上一个稳定的版本并运行;
其中,所述第一应用和所述第二应用向所述注册治理中心服务注册各自的版本信息。
11.如权利要求9所述的方法,还包括:
所述注册治理中心服务根据所述心跳消息获得所述第二应用的运行状态信息,基于所述运行状态信息将处于正常运行状态的所述第二应用的IP和端口信息提供给所述第一应用。
12.如权利要求11所述的方法,还包括:
失效服务清理服务基于预设的时间间隔,周期性地对处于失效状态的所述第二应用进行清理处理。
13.如权利要求1所述的方法,其中,
所述第一应用和所述第二应用部署在一个容器内,并且,分别与所述第一应用和所述第二应用相对应的开发语言的类型不相同。
14.如权利要求13所述的方法,其中,
所述第一应用和所述第二应用通过网关与所述容器外的其他应用进行数据传输;
其中,所述网关通过Http协议与所述其他应用进行通信。
15.一种数据传输***,包括:第一应用和第二应用;
所述第一应用和所述第二应用之间建立TCP连接,所述第一应用和/或所述第二应用通过所述TCP连接传输数据消息;其中,所述第一应用和/或所述第二应用根据预设的通信协议对数据进行封装并进行二进制序列化,生成包含有二进制消息内容的所述数据消息。
16.如权利要求15所述的***,其中,所述数据消息包括:请求消息和响应消息;
所述第一应用,用于通过所述TCP连接向所述第二应用发送所述请求消息;
所述第二应用,用于通过所述TCP连接向所述第一应用发送与所述请求消息相对应的所述响应消息。
17.如权利要求16所述的***,其中,
所述第一应用,具体用于根据所述通信协议的报文格式对请求信息进行封装处理并进行二进制序列化,生成所述请求消息,通过所述TCP连接发送所述请求消息。
18.如权利要求17所述的***,其中,
所述第二应用,具体用于根据所述通信协议对所述请求消息进行解析处理并进行二进制反序列化,获取所述请求信息;获得与所述请求信息相对应的响应信息,根据所述报文格式对所述响应信息进行封装处理并进行二进制序列化,生成所述响应消息;通过所述TCP连接发送所述响应消息。
19.如权利要求16所述的***,还包括:注册治理中心服务;其中,所述第二应用为服务器端,用于提供应用服务,所述第一应用为客户端;
所述第二应用,还用于向注册治理中心服务注册自身的IP和端口信息;
所述第一应用,还用于从所述注册治理中心服务获取所述IP和端口信息,基于所述IP和端口信息与所述第二应用建立所述TCP连接。
20.如权利要求19所述的***,其中,
所述注册治理中心服务,用于使用K-V键值对存储所述IP和端口信息;其中,所述K-V键值对的Key值为所述应用服务信息,所述K-V键值对的Value值用于存储所述IP和端口信息。
21.如权利要求19所述的***,其中,
所述客户端包括:RPC客户端;所述服务器端包括:RPC服务器端。
22.如权利要求19所述的***,还包括:应用管理服务;所述第一应用和所述第二应用周期性地向所述注册治理中心服务发送心跳消息;
所述应用管理服务,用于基于所述心跳消息判断所述第一应用和/或所述第二应用是否出现异常,如果是,则对所述第一应用和/或所述第二应用运行的版本进行控制处理。
23.如权利要求22所示的***,其中,
所述应用管理服务,具体用于从所述注册治理中心服务获取与所述第一应用和/或所述第二应用相对应的版本信息;基于所述版本信息,控制所述第一应用和/或所述第二应用回滚到上一个稳定的版本并运行;其中,所述第一应用和所述第二应用向所述注册治理中心服务注册各自的版本信息。
24.如权利要求22所述的***,其中,
所述注册治理中心服务,还用于根据所述心跳消息获得所述第二应用的运行状态信息,基于所述运行状态信息将处于正常运行状态的所述第二应用的IP和端口信息提供给所述第一应用。
25.如权利要求24所述的***,还包括:失效服务清理服务;
所述失效服务清理服务,用于基于预设的时间间隔,周期性地对失效的所述第二应用进行清理处理。
26.如权利要求15所述的***,其中,
所述第一应用和所述第二应用部署在一个容器内,并且,分别与所述第一应用和所述第二应用相对应的开发语言的类型不相同。
27.如权利要求26所述的***,还包括:网关;
所述第一应用和所述第二应用通过所述网关与所述容器外的其他应用进行数据传输;其中,所述网关通过Http协议与所述其他应用进行通信。
28.一种数据传输***,包括:
存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1至14中任一项所述的方法。
29.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行如权利要求1至14中任一项所述的方法。
CN202010131331.4A 2020-02-28 2020-02-28 数据传输方法、***以及存储介质 Pending CN113329046A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010131331.4A CN113329046A (zh) 2020-02-28 2020-02-28 数据传输方法、***以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010131331.4A CN113329046A (zh) 2020-02-28 2020-02-28 数据传输方法、***以及存储介质

Publications (1)

Publication Number Publication Date
CN113329046A true CN113329046A (zh) 2021-08-31

Family

ID=77412965

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010131331.4A Pending CN113329046A (zh) 2020-02-28 2020-02-28 数据传输方法、***以及存储介质

Country Status (1)

Country Link
CN (1) CN113329046A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113938533A (zh) * 2021-10-15 2022-01-14 京东科技信息技术有限公司 应用间的通信方法、装置、电子设备及计算机可读介质
CN117390337A (zh) * 2023-12-11 2024-01-12 宁德时代新能源科技股份有限公司 消息发送方法、装置、中间件及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160171065A1 (en) * 2014-12-12 2016-06-16 Microsoft Technology Licensing, Llc Computer System
CN106959866A (zh) * 2016-01-08 2017-07-18 阿里巴巴集团控股有限公司 一种日志收集客户端及其升级方法
CN109815025A (zh) * 2018-12-17 2019-05-28 顺丰科技有限公司 业务模型调用方法、装置及存储介质
CN109862095A (zh) * 2019-01-30 2019-06-07 新华三大数据技术有限公司 基于Web服务的数据处理方法及装置
CN110222500A (zh) * 2019-06-14 2019-09-10 深圳前海微众银行股份有限公司 版本管理方法、装置、设备及计算机可读存储介质
CN110597500A (zh) * 2019-07-26 2019-12-20 北京柠檬微趣科技股份有限公司 消息结构的序列化和反序列化方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160171065A1 (en) * 2014-12-12 2016-06-16 Microsoft Technology Licensing, Llc Computer System
CN106959866A (zh) * 2016-01-08 2017-07-18 阿里巴巴集团控股有限公司 一种日志收集客户端及其升级方法
CN109815025A (zh) * 2018-12-17 2019-05-28 顺丰科技有限公司 业务模型调用方法、装置及存储介质
CN109862095A (zh) * 2019-01-30 2019-06-07 新华三大数据技术有限公司 基于Web服务的数据处理方法及装置
CN110222500A (zh) * 2019-06-14 2019-09-10 深圳前海微众银行股份有限公司 版本管理方法、装置、设备及计算机可读存储介质
CN110597500A (zh) * 2019-07-26 2019-12-20 北京柠檬微趣科技股份有限公司 消息结构的序列化和反序列化方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113938533A (zh) * 2021-10-15 2022-01-14 京东科技信息技术有限公司 应用间的通信方法、装置、电子设备及计算机可读介质
CN113938533B (zh) * 2021-10-15 2024-02-02 京东科技信息技术有限公司 应用间的通信方法、装置、电子设备及计算机可读介质
CN117390337A (zh) * 2023-12-11 2024-01-12 宁德时代新能源科技股份有限公司 消息发送方法、装置、中间件及介质
CN117390337B (zh) * 2023-12-11 2024-04-26 宁德时代新能源科技股份有限公司 消息发送方法、装置、中间件及介质

Similar Documents

Publication Publication Date Title
JP7463544B2 (ja) ブロックチェーンメッセージ処理方法、装置、コンピュータデバイスおよびコンピュータプログラム
EP1635532B1 (en) Methods and apparatuses for transferring data
US6510469B1 (en) Method and apparatus for providing accelerated content delivery over a network
CN104811459A (zh) 用于消息服务的处理方法、装置及***、消息服务***
CN108650482B (zh) 一种视频通话服务的响应方法及设备
US6954801B1 (en) Method and system for reducing data volume transferred over a wireless communications network
EP1327196A2 (en) System and method for highly scalable high-speed content-based filtering and load balancing in interconnected fabrics
CN112631788B (zh) 数据传输方法及数据传输服务器
CN113329046A (zh) 数据传输方法、***以及存储介质
US7076556B1 (en) Method and apparatus for storage and retrieval of connection data in a communications system
EP1916600A1 (en) Network robot system and method of communication therein
Plagemann et al. Modules as building blocks for protocol configuration
EP0586129B1 (en) Session oriented connectionless data transfer for a computer network
US10084835B1 (en) Systems and methods for distributing streams and stream metadata
US7580410B2 (en) Extensible protocol processing system
CN107104813B (zh) 一种信息传输方法、网关及控制器
KR20060111704A (ko) 상태 메모리 관리 방법 및 장치
CN107707546B (zh) 一种报文复制方法及支持报文复制功能的新型网络适配器
CN116383840A (zh) 用于提供安全支持的装置及支持国密安全协议的操作***
CN109039928A (zh) 数据的传输方法、装置和无线保真路由器
WO2021082832A1 (zh) 用于订阅事件流的方法和装置
CN109995589B (zh) 日志采集方法及***
CN113542324B (zh) 一种消息推送方法和装置
US20100274846A1 (en) Message Switching
CN110392017B (zh) 处理rpc报文的方法及相关装置

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