CN111541662B - 一种基于二进制通信协议的通信方法、电子设备及存储介质 - Google Patents
一种基于二进制通信协议的通信方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111541662B CN111541662B CN202010295855.7A CN202010295855A CN111541662B CN 111541662 B CN111541662 B CN 111541662B CN 202010295855 A CN202010295855 A CN 202010295855A CN 111541662 B CN111541662 B CN 111541662B
- Authority
- CN
- China
- Prior art keywords
- message
- communication
- target
- information
- device information
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种基于二进制通信协议的通信方法,发送终端侧获取消息发送指令;并根据目标设备信息和预设路由表,确定目标设备信息对应的目标通信信息;根据待发送消息和目标设备信息,确定待发送消息对应的二进制通信消息;根据目标通信信息,向目标通信信息对应的接收终端发送二进制通信消息,以使接收终端根据二进制通信消息,获取待发送消息。这样,实现在同一个通讯总线上,发送终端只需要指定不同的目标设备信息,即可与目标设备信息的接收终端进行消息通信,实现灵活的消息投递总线模型;并使得通信过程中的二进制通信消息兼并性能与灵活度,在短频快的业务场景下可以带来更短的响应时间,更小的资源消耗,从而能够满足复杂的业务场景。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于二进制通信协议的通信方法、装置及设备。
背景技术
随着移动互联网的迅速发展,越来越多的信息通过网络进行传输,也不断的有更多的传统业务的处理搬迁到了互联网上。随着用户量的爆炸式增长,各种服务的增多,基于HTTP技术的网络传输方案也越来越难以为继,一方面,用户对业务的响应时间要求更高,另一方面,大并发下短流程业务日益增长,例如常见的商品秒杀等。
而在短(业务报文短)频(调用频率高)快(响应速度快)的业务场景下 (例如常见的商品秒杀),如果利用传统的通讯协议实现,存在灵活性不高,难以满足复杂的业务场景(如短频快的商品秒杀场景)的问题。
故此,亟需一种能够满足复杂的业务场景,如短频快的商品秒杀场景的通信方法。
发明内容
本发明提供一种基于二进制通信协议的通信方法及装置,以实现灵活的消息投递总线模型;并且,在短频快的业务场景下可以带来更短的响应时间,更小的资源消耗,从而能够满足复杂的业务场景,如短频快的商品秒杀场景。
第一方面,本发明提供了一种基于二进制通信协议的通信方法,所述方法应用于发送终端侧,所述方法包括:
获取消息发送指令,其中,所述消息发送指令包括待发送消息和目标设备信息;
根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息;其中,所述预设路由表预先存储于所述发送终端中;
根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息;其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;
根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息。
第二方面,本发明提供了一种基于二进制通信协议的通信装置,所述装置应用于发送终端侧,所述装置包括:
获取单元,用于获取消息发送指令,其中,所述消息发送指令包括待发送消息和目标设备信息;
确定单元,用于根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息;其中,所述预设路由表预先存储于所述发送终端中;
所述确定单元,还用于根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息;其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;
发送单元,用于根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息。
第三方面,本发明提供了一种基于二进制通信协议的通信方法,所述方法应用于接收终端侧,所述方法包括:
接收发送终端发送的二进制通信消息,其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;
根据所述二进制通信消息获取待发送消息。
第四方面,本发明提供了一种基于二进制通信协议的通信装置,所述装置应用于接收终端侧,所述装置包括:
接收单元,用于接收发送终端发送的二进制通信消息,其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;
获取单元,用于根据所述二进制通信消息获取待发送消息。
第五方面,本发明提供了一种基于二进制通信协议的通信系统,所述系统包括:
发送终端,用于获取消息发送指令,其中,所述消息发送指令包括待发送消息和目标设备信息;根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息;其中,所述预设路由表预先存储于所述发送终端中;根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息;其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息;
所述接收终端,用于接收发送终端发送的二进制通信消息;根据所述二进制通信消息获取待发送消息。
第六方面本发明提供了一种可读介质,包括执行指令,当电子设备的处理器执行所述执行指令时,所述电子设备执行如第一或第三方面中任一所述的方法。
第七方面,本发明提供了一种电子设备,包括处理器以及存储有执行指令的存储器,当所述处理器执行所述存储器存储的所述执行指令时,所述处理器执行如第一或第三方面中任一所述的方法。
由上述技术方案可以看出,本发明发送终端获取到消息发送指令之后,所述消息发送指令包括待发送消息和目标设备信息;发送终端可以根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息,以及根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息;其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;接着,发送终端可以根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息;所述接收终端可以根据所述二进制通信消息,获取所述待发送消息。这样,本发明通过利用预设路由表中所存储的设备信息与接收终端对应的通信信息之间的映射关系,实现了在同一个通讯总线上,发送终端只需要指定不同的目标设备信息,即可与目标设备信息的接收终端进行消息通信,实现了灵活的消息投递总线模型;并且,待发送消息通过高度极简二进制协议的处理,使得通信过程中的二进制通信消息兼并性能与灵活度,也就是说,本发明对待发送消息使用了二进制序列化处理的方式,与文本型协议相比,在短频快的业务场景下可以带来更短的响应时间,更小的资源消耗,从而能够满足复杂的业务场景,如短频快的商品秒杀场景。
上述的非惯用的优选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
为了更清楚地说明本发明实施例或现有的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种示例性应用场景的框架示意图;
图2为本发明一实施例提供的一种基于二进制通信协议的通信方法的信令流程图;
图3为本发明一实施例提供的另一种基于二进制通信协议的通信方法的信令流程图;
图4为本发明一实施例提供的一种基于二进制通信协议的通信装置的结构示意图;
图5为本发明一实施例提供的另一种基于二进制通信协议的通信装置的结构示意图;
图6为本发明一实施例提供的一种基于二进制通信协议的通信系统的结构示意图;
图7为本发明一实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着移动互联网的迅速发展,越来越多的信息通过网络进行传输,也不断的有更多的传统业务的处理搬迁到了互联网上。随着用户量的爆炸式增长,各种服务的增多,基于HTTP技术的网络传输方案也越来越难以为继,一方面,用户对业务的响应时间要求更高,另一方面,大并发下短流程业务日益增长,例如常见的商品秒杀等。在现有技术中,主流的文本型通讯协议(HTTP)编解码过于复杂,冗余元素过多,不支持多路复用,导致的性能不佳问题以及常见的二进制型通讯协议不够灵活,满足不了较复杂的自定义场景的问题,如:进程内部通讯优先、自适应长短连接、多目标地址、灵活路由和负载策略。
为了解决现有技术中在短(业务报文短)频(调用频率高)快(响应速度快)的业务场景下(例如常见的商品秒杀),如果利用传统的通讯协议实现,存在灵活性不高,难以满足复杂的业务场景(如短频快的商品秒杀场景)的问题。
本发明提供了一种基于二进制通信协议的通信方法,发送终端获取到消息发送指令之后,所述消息发送指令包括待发送消息和目标设备信息;发送终端可以根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息,以及根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息;其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;接着,发送终端可以根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息;所述接收终端可以根据所述二进制通信消息,获取所述待发送消息。这样,本发明通过利用预设路由表中所存储的设备信息与接收终端对应的通信信息之间的映射关系,实现了在同一个通讯总线上,发送终端只需要指定不同的目标设备信息,即可与目标设备信息的接收终端进行消息通信,实现了灵活的消息投递总线模型;并且,待发送消息通过高度极简二进制协议的处理,使得通信过程中的二进制通信消息兼并性能与灵活度,也就是说,本发明对待发送消息使用了二进制序列化处理的方式,与文本型协议相比,在短频快的业务场景下可以带来更短的响应时间,更小的资源消耗,从而能够满足复杂的业务场景,如短频快的商品秒杀场景。
举例说明,本发明实施例可以应用到如图1所示的场景。在该场景中,包括发送终端101和接收终端102。发送终端101和接收终端102可以为具有通信功能的终端,例如,可以为智能手机、平板电脑、台式电脑、笔记本电脑等终端设备或者服务器等。
其中,发送终端101存储有预设路由表,该预设路由表包括本地路由表和网络路由表。路由表(routing table),是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库,路由表存储着指向特定网络地址的路径 (在有些情况下,还记录有路径的路由度量值),路由表中含有网络周边的拓扑信息,另外,路由表建立的主要目标是为了实现路由协议和静态路由选择。
在本实施例中,本地路由表存储了本地设备结构中各个设备的本地设备信息与通信信息之间的映射关系,其中,本地设备结构中包括至少一本地集线器,一本地集线器中至少包括一本地逻辑设备,一本地逻辑设备至少包括一本地物理设备;网络路由表存储了网络设备结构中各个设备的网络设备信息与通信信息之间的映射关系,其中,网络设备结构中包括至少一网络集线器,一网络集线器中至少包括一网络逻辑设备,一网络逻辑设备至少包括一网络物理设备。需要说明的是,物理设备为最基本的设备单元,一个物理设备表示一个真实的目标地址;逻辑设备为一组物理设备的集合,同一个逻辑设备下挂载的所有物理设备可以认为是可以处理相同的业务请求的,当向逻辑设备发送消息时可以实现负载均衡调用,即每次请求会按照负载均衡的规则发送到该逻辑设备下的其中一个物理设备;集线器设备为一组逻辑设备的集合,同一个集线器设备下挂载的所有逻辑设备认为是可以处理相同的业务请求的,当向集线器设备发送消息时可以实现负载均衡调用,即每次请求会按照负载均衡的规则发送到该集线器设备下的其中一个逻辑设备,逻辑设备再负载均衡到其中一个物理设备。需要强调的是,通过本地设备结构中的本地物理设备与接收终端进行通信,可以仅利用终端本地内存进行数据交换,即实现了进程内的通讯方式优先,该方式与通过网络设备结构中的网络物理设备与接收设备进行通信的方式相比,节省了网络资源的开销,充分利用服务器资源。
需要强调的是,接收终端102也存储有预设路由表,该预设路由表至少包括本地路由表,其中,该本地路由表与发送终端101中的本地路由表相同,具体请参见发送终端101中的本地路由表的阐述,这里不再赘述。
还需要说明的是,发送终端101和接收终端102均包括系统模块。系统模块包括路由模块、消息处理模块和网络通讯模块,而路由包括负载均衡模块。
针对路由模块的介绍:路由模块的功能是确定消息投递的路径,通过对用户输入的目标设备进行分析处理,结合相应的负载均衡方案,最终获得一个可用于进行消息投递的物理设备。其中,路由模块主要起到以下两个作用(也即载均衡模块起到以下作用):(1)设备解析:根据发送的目标设备类型不同,设备解析的步骤不同,最终的结果是选出一个物理设备;当目标设备是物理设备时,设备解析阶段直接返回该设备即可;当目标设备是逻辑设备时,通过负载均衡的策略从该逻辑设备下挂载的物理设备集合中选出一个物理设备返回;当目标设备是集线器设备时,通过负载均衡的策略从该逻辑设备下挂载的逻辑设备集合中选出一个逻辑设备,再通过负载均衡的策略从该逻辑设备下挂载的物理设备集合中选出一个物理设备返回;(2)负载均衡:输入一组设备地址,根据均衡规则选出一个设备返回;根据不同的规则,可以实现不同的流量分发策略,如轮询策略在多个地址中轮流访问、随机策略则利用随机数选择设备。
针对消息处理模块的介绍:消息处理模块的功能是将消息对象转换成二进制数据,并且将二进制数据还原成消息对象。由于消息数据都是按照一定的格式进行组织的,在一般面向对象的高级编程语言(如,JAVA)中,这种称为对象。而在网络传输时,实际上只能传输基础的二进制数据(0和1),也就说中间需要一个转换过程,将对象和网络数据进行转换,而消息处理模块便起到将消息对象转换成二进制数据,并且将二进制数据还原成消息对象的功能。具体地,消息处理模块主要包含以下方面:(1)消息序列化:使用特定的序列化框架将对象转换成二进制数据,与反序列化动作对应,常见的有hessian(JAVA 语言中的一种序列化方式)、protobuf(谷歌开源的一款跨平台序列化方式) 等;(2)消息反序列化:使用特定的序列化框架将二进制数据转换成对象,与序列化动作对应。
针对网络通讯模块的介绍:网络通讯模块的主要功能是以某种方式将处理好的二进制数据传输到指定的地址,或者通过接收新的传输请求。网络通讯模块是两个存在物理隔离的设备之间进行通讯的桥梁。具体地,网络通讯模块主要包括以下功能:(1)按照规定的协议格式组织二进制数据并通过调用系统的相关功能发送出去;(2)接收来自其它设备的数据并按照规定的协议格式读取二进制数据;(3)如果是长连接,网络通讯模块还需要负责保证连接的有效性并且自动重连失效的连接;(4)根据协议自动协商长短连接。
在本场景中,发送终端101可以先获取消息发送指令,其中,所述消息发送指令包括待发送消息和目标设备信息。然后,发送终端101可以根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息,并可以根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息,其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;紧接着,发送终端101可以根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息;接着,接收终端102接收到所述二进制通信消息后,可以根据所述二进制通信消息,获取所述待发送消息。这样,本发明通过利用预设路由表中所存储的设备信息与接收终端对应的通信信息之间的映射关系,实现了在同一个通讯总线上,发送终端只需要指定不同的目标设备信息,即可与目标设备信息的接收终端进行消息通信,实现了灵活的消息投递总线模型;并且,待发送消息通过高度极简二进制协议的处理,使得通信过程中的二进制通信消息兼并性能与灵活度,也就是说,本发明对待发送消息使用了二进制序列化处理的方式,与文本型协议相比,在短频快的业务场景下可以带来更短的响应时间,更小的资源消耗,从而能够满足复杂的业务场景,如短频快的商品秒杀场景。
可以理解的是,在上述应用场景中,本发明在执行主体方面不受限制,只要执行了本发明实施方式所公开的动作即可。
需要注意的是,上述应用场景仅是为了便于理解本申请而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
下面结合附图,详细说明本发明的各种非限制性实施方式。
接下来,将从发送终端侧与接收终端侧交互的角度,对本申请所提供的一种基于二进制通信协议的通信方法进行介绍。参见图2,为本申请实施例提供的一种基于二进制通信协议的通信方法的信令流程图。如图2所示,可以包括如下步骤:
S201:所述发送终端获取消息发送指令。
在本实施例中,所述消息发送指令可以理解为用于触发一终端向另一终端发送消息的指令。为了便于说明,在本实施例中可以将发送消息的终端称之为发送终端,将接收消息的终端称之为接收终端。
需要说明的是,消息发送指令可以包括待发送消息和目标设备信息。其中,待发送消息可以理解为发送终端与接收终端之间所需要传输的消息内容,例如,待发送消息可以包括业务消息、心跳消息和/或控制消息。在一种实现方式中,业务消息可以理解为用于传输用户输入内容或用户需要传输的内容的数据,需要强调的是,本实施例对业务消息的内容格式不进行限定,例如,待发送消息可以为文字(比如“hi”)、图片(比如风景图)、文件(比如excel 表格、pdf文件、word文档等)或其他字符串(比如代码)。心跳消息可以理解为在接收终端与发送终端之间的连接类型为长连接模式时,如果该通信连接处于空闲状态,可以用于保持该通信连接的活性的消息。控制消息可以理解用于发布控制命令的消息,例如重新协商长短连接的消息。需要说明的是,消息发送指令中的目标设备信息可以为一个或多个,即可以同时将该待发送消息发送至一个目标设备或多个目标设备。
目标设备信息可以理解为用于反映接收终端中用于接收待发送消息的目标设备的信息,其中,目标设备可以理解为接收终端中用于接收待发送消息的设备,在一种实现方式中,目标设备信息可以至少包括目标设备名称,举例来说,假设接收终端中包括1个集线器设备(设备名称为:SERVER_HUB_1),一个逻辑设备(设备名称为:SERVER_LOGIC_1),两个物理设备(设备名称为: SERVER_PHY_1、SERVER_PHY_2),其中,通过逻辑设备(SERVER_LOGIC_1)接收待发送消息,即目标设备为该逻辑设备,则,目标设备信息可以为 SERVER_LOGIC_1。
在一种实现方式,用户在预设的输入消息界面中,输入待发送消息以及接收终端中用于接收消息的目标设备的目标设备信息,并点击确认按键之后,发送终端便可以获取到消息发送指令。在另一种实现方式中,发送终端与接收终端之间的通信连接处于空闲状态,发送终端为了保持该通信连接的活性,则发送终端可以获取消息发送指令。在又一种实现方式中,发送终端确定其所设置的连接类型与接收终端所设置的连接类型不同时,发送终端为了发送重新协商长短连接的消息,则可以获取消息发送指令。
作为一种示例,在本步骤之前可以针对各个设备注册消息监听器,也就说说,可以在指定的设备上注册消息监听器,可以获取到发往指定目标设备的消息。例如,在逻辑设备上注册了消息监听器,当存在设备往逻辑设备发送请求时,该消息监听器就可以接收到该消息。消息监听器可以同时接收处理请求消息和响应消息。这样,便可以通过register方法针对各个设备设置对应的消息监听,用于接收待发送消息。举例来说,假设存在6个设备,分别是发送终端中的1个物理设备(CLIENT_PHY_1),接收终端中的1个集线器设备 (SERVER_HUB_1),一个逻辑设备(SERVER_LOGIC_1),两个物理设备 (SERVER_PHY_1、SERVER_PHY_2),且用户需要从CLIENT_PHY_1设备发送一个“hello”消息到目标设备SERVER_HUB_1;首先,可以预先通过调用addDevice 接口分别注册6个设备;然后,可以通过调用addDevice方法分别注册除了 CLIENT_PHY_1以外的其余5个设备,并通过register方法设置对应的消息监听,用于接收业务消息即“hello”消息。
S202:所述发送终端根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息。
在本实施例中,所述预设路由表可以预先存储于所述发送终端中。其中,所述预设路由表包括本地路由表和网络路由表。所述本地路由表包括至少一组本地设备信息与通信信息之间的映射关系,例如,本地物理设备信息与其通信信息之间的映射关系、本地逻辑设备信息与其通信信息之间的映射关系、本地集线器设备信息与其通信信息之间的映射关系。所述网络路由表包括至少一组网络设备信息与通信信息之间的映射关系,例如,网络物理设备信息与其通信信息之间的映射关系、网络逻辑设备信息与其通信信息之间的映射关系、网络集线器设备信息与其通信信息之间的映射关系。需要说明的是,目标通信信息可以理解为目标设备对应的通信信息,例如,通信信息至少可以包括:IP地址和/或端口,这样,发送终端便可以根据目标设备对应的通信信息与该目标设备之间建立通信连接进行通信。
由于预设路由表中存储有各个设备信息对应的通信信息,因此,获取到目标设备信息之后,可以通过预设路由表,查找到存储在该预设路由表中与该目标设备信息对应的映射关系,进而可以根据该映射关系确定该目标设备信息对应的通信信息。
由于通过本地设备结构中的本地物理设备与接收设备中的目标设备进行通信,可以仅利用终端本地内存进行数据交换,即实现了进程内的通讯方式优先,该方式与通过网络设备结构中的网络物理设备与接收设备进行通信的方式相比,节省了网络资源的开销,充分利用了服务器资源。
故此,在一种实现方式中,优先利用本地物理设备作为目标设备,具体地, S202可以包括:先判断本地路由表中是否存储有与所述目标设备信息相同的本地设备信息;若所述本地路由表中存储有与所述目标设备信息相同的本地设备信息,将所述本地设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息;若所述本地路由表中未存储有与所述目标设备信息相同的本地设备信息,则可以确定所述网络路由表中与所述目标设备信息相同的网络设备信息,并将所述网络设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
也就是说,在本方式中,可以先在本地路由表中查询是否存储有与所述目标设备信息相同的本地设备信息,若是,则可以获取该本地设备信息对应的通信信息,并将该通信信息作为该目标设备信息对应的目标通信信息;若否,则可以继续在网络路由表中查询是否存储有与该目标设备信息相同的网络设备信息。若网络路由表中存储有与该目标设备信息相同的网络设备信息,则可以获取该网络设备信息对应的通信信息,并将该通信信息作为该目标设备信息对应的目标通信信息;若网络路由表中也并未存储有与该目标设备信息相同的网络设备信息,则说明所输入的目标设备信息有误,可以输出错误提醒,以便提醒对设备信息修正并终止发送消息进程。需要说明的是,本实施例还提供了一种示例,获取到目标设备信息之后,可以通过消息总线的发送函数触发发送动作;该消息进入消息总线后,首先判断是否允许使用本地路由表执行本地进程优先访问,例如可以通过在该消息中一个配置项来标识这个开关,这个配置项只有两个可选的值:1.允许,2.禁用;如果允许则开始在本地路由表中查找是否存在目标设备,如果不允许,则开始在网络路由表中查找是否存在目标设备。
需要说明的是,由于需要通过物理设备发送消息,但所指定的目标设备可能不是物理设备,例如可以是逻辑设备或者集线器,因此,需要根据目标设备信息确定其对应的物理设备信息,进而将该物理设备信息对应的通信信息作为目标设备对应的目标通信信息。接下来,将分别介绍在本地路由表或网络路由表中如何确定目标设备对应的目标通信信息。
情况一:所述目标设备信息为集线器设备信息,且所述本地路由表中存储有与所述目标设备信息相同的本地设备信息。具体方式为:
若所述本地路由表中存储有与所述目标设备信息相同的本地集线器设备信息,可以先通过负载均衡处理方式确定所述本地集线器设备信息对应的本地逻辑设备信息;接着,通过负载均衡处理方式确定所述本地逻辑设备信息对应的本地物理设备信息,并将所述本地物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
其中,对于一次消息的投递,如果存在一系列的可选目标地址可以发送,那么需要通过某种算法从这些地址中选出一个地址进行投递,这种处理方式称之为负载均衡处理方式,即用于挑选地址的处理方式称为负载均衡处理方式。其中,负载均衡的方式包括但不限于轮询和随机两种方式。随机方式为任意从设备中选取一个设备。而轮询方式可以是轮流分配给各个设备,例如在所有的设备性能都相同的情况下,即在生产环境下如果所有的设备机器的性能都一样,假设逻辑设备中包括A、B、C三个物理设备,那么,这三个物理设备就是负载均衡的输入数据,在第一次选择时,轮询的初始值为0(物理设备A、物理设备B、物理设备C的位置分别是0、1、2),那么选中物理设备A返回,第二次选中物理设备B,第三次选中物理设备C,第四次选中物理设备A,依次循环;轮询方式也可以是基于各个设备的性能权重进行配置,例如,当各个设备的性能不同时,若采用轮流分配给各个设备的方式或随机分配的方式,那么会造成负载不均衡,而基于设备性能权重的负载均衡算法可以很好的解决这个问题。
举例来说,假设目标设备信息为本地集线器设备信息,所述本地路由表中存储有与所述目标设备信息相同的本地设备信息,且,本地集线器设备包括本地逻辑设备A和本地逻辑设备B,且本地逻辑设备A包括本地物理设备a和本地物理设备b。可以先通过负载均衡处理方式确定所述本地集线器设备信息对应的本地逻辑设备A的设备信息;接着,通过负载均衡处理方式确定所述本地逻辑设备A对应的本地物理设备a对应的设备信息,并将所述本地物理设备a 的设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
情况二:所述目标设备信息为集线器设备信息,且所述网络路由表中与所述目标设备信息相同的网络设备信息。具体方式为:
先确定所述网络路由表中与所述目标设备信息相同的网络集线器设备信息,通过负载均衡处理方式确定所述网络集线器设备信息对应的网络逻辑设备信息;接着,通过负载均衡处理方式确定所述网络逻辑设备信息对应的网络物理设备信息,并将所述网络物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
举例来说,假设目标设备信息为网络集线器设备信息,所述网络路由表中存储有与所述目标设备信息相同的网络设备信息,且,网络集线器设备包括网络逻辑设备A和网络逻辑设备B,且网络逻辑设备A包括网络物理设备a和网络物理设备b。可以先通过负载均衡处理方式确定所述网络集线器设备信息对应的网络逻辑设备A的设备信息;接着,通过负载均衡处理方式确定所述网络逻辑设备A对应的网络物理设备a对应的设备信息,并将所述网络物理设备a 的设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
情况三:所述目标设备信息为本地逻辑设备信息,且所述本地路由表中存储有与所述目标设备信息相同的本地设备信息。具体方式为:
若所述本地路由表中存储有与所述目标设备信息相同的本地逻辑设备信息,通过负载均衡处理方式确定所述本地逻辑设备信息对应的本地物理设备信息,并将所述本地物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
举例说明,假设目标设备信息为本地逻辑设备信息,且该本地逻辑设备包括本地物理设备a和本地物理设备b。可以先通过负载均衡处理方式确定所述本地逻辑设备对应的本地物理设备a对应的设备信息,并将所述本地物理设备 a的设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
情况四:所述目标设备信息为网络逻辑设备信息,且所述网络路由表中与所述目标设备信息相同的网络设备信息。具体方式为:
先确定所述网络路由表中与所述目标设备信息相同的网络逻辑设备信息;接着,通过负载均衡处理方式确定所述网络逻辑设备信息对应的网络物理设备信息,并将所述网络物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
举例说明,假设目标设备信息为网络逻辑设备信息,且该网络逻辑设备包括网络物理设备a和网络物理设备b。可以先通过负载均衡处理方式确定所述网络逻辑设备对应的网络物理设备a对应的设备信息,并将所述网络物理设备 a的设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
情况五:所述目标设备信息为本地物理设备信息,且所述本地路由表中存储有与所述目标设备信息相同的本地设备信息。具体方式为:
若所述本地路由表中存储有与所述目标设备信息相同的本地物理设备信息,将所述本地物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
举例说明,假设目标设备信息为本地物理设备a。可以先确定本地物理设备a对应的设备信息,并将所述本地物理设备a的设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
情况六:所述目标设备信息为网络物理设备信息,且,所述网络路由表中与所述目标设备信息相同的网络设备信息。具体方式为:
确定所述网络路由表中与所述目标设备信息相同的网络物理设备信息,并将所述网络物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
举例说明,假设目标设备信息为网络物理设备a。可以先确定网络物理设备a对应的设备信息,并将所述网络物理设备a的设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
至此,已介绍完在本地路由表或网络路由表中如何确定目标设备对应的目标通信信息的所有情况。
接下来,举例介绍S202。假设存在6个设备,分别是发送终端中的1个物理设备(CLIENT_PHY_1),接收终端中的1个集线器设备(SERVER_HUB_1),一个逻辑设备(SERVER_LOGIC_1),两个物理设备(SERVER_PHY_1、SERVER_PHY_2),且用户需要从CLIENT_PHY_1设备发送一个“hello”消息到目标设备SERVER_HUB_1;且设置发送终端中的源设备为CLIENT_PHY_1,目标设备为SERVER_HUB_1;可以先调用request接口或send接口(提供给消息总线使用的接口有两种:request、send,request接口可以实现发送终端发送业务消息之后需要等待响应消息才能结束,而send接口可以实现发送终端发送业务消息之后不需要等待响应消息便可以结束,即oneWay模式)发送该设置信息,以便总线可以查找本地路由表是否有该目标设备,由于该发送设备和接收设备属于不同的进程,在物理上是互相隔离的,所以在本地路由表上查找不到;然后基于网络路由表中查找,具体地,可以先确定该目标设备属于集线器设备,从而通过负载均衡方式选出逻辑设备SERVER_LOGIC_1,然后从这个逻辑设备中再次通过负载均衡方式选出一个物理设备SERVER_PHY_1。这样,便可以将物理设备SERVER_PHY_1对应的通信信息确定所述目标设备信息对应的目标通信信息。
S203:所述发送终端根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息。
为了能够在短频快的业务场景下可以实现更短的响应时间,更小的资源消耗,以能够满足复杂的业务场景,如短频快的商品秒杀场景。在本实施例中,在发送终端获取到待发送消息和目标设备信息之后,发送终端可以根据二进制通信协议(比如二进制高速通信协议),对所述待发送消息和所述目标设备信息进行处理,得到所述待发送消息对应的二进制通信消息。这样,待发送消息通过高度极简二进制协议的处理,使得通信过程中的二进制通信消息兼并性能与灵活度,也就是说,本发明对待发送消息使用了二进制序列化处理的方式,与文本型协议相比,在短频快的业务场景下可以带来更短的响应时间,更小的资源消耗,从而能够满足复杂的业务场景。
作为一种示例,发送终端可以先对待发送消息和目标设备信息进行序列化处理,得到所述待发送消息对应的二进制数据信息和所述目标设备信息对应的二进制数据信息,这样便可以将待发送消息和目标设备信息均转化为二进制数据。其中,该序列化处理方式可以包括以下至少一种实现方式:hessian序列化框架(JAVA语言中的一种序列化方式)、protobuf序列化框架(谷歌开源的一款跨平台序列化方式),或者在JAVA程序中该语言本身提供的序列化方式。
然后,发送终端可以根据预设的二进制协议,确定所述待发送消息对应的预设协议字段,例如,可以根据Google(谷歌)的GRPC、RabbitMQ(一种消息中间件)的AMQP(高级消息队列协议)等二进制协议,确定所述待发送消息对应的预设协议字段。需要说明的是,由于预设协议字段能够反映二进制协议所关心的字段信息,且不同的二进制协议所关心的字段信息可能会有所不同,故此,根据不同的二进制协议所确定的预设协议字段也会有所不同。可以理解的是,预设协议字段包括了发送终端与接收终端之间与二进制协议相关的通信信息,例如,在一种实现方式中,预设协议字段至少包括以下至少一种字段:协议魔数字段、协议版本字段、消息类型字段、响应类型字段、连接类型字段、错误码字段、请求ID字段、报文体长度字段、状态字段或者验证字段,其中,各个字段的字段名、字节范围和相关信息请参见表1。接下来,详细介绍验证字段、响应类型字段、连接类型字段。
验证字段为用于验证数据的完整性的字段。可以理解的是,可以利用验证字段进行数据完整性校验,而该数据完整性校验为保证数据的完整性进行的一种验证操作,通常用一种指定的算法对原始数据计算出的一个校验值,接收方用同样的算法计算一次校验值,如果两次计算得到的检验值相同,则说明数据是完整的。在本实施例中,可以采用CRC校验方式确定验证字段,例如可以采用CRC32校验方式,具体地,可以利用除法及余数的原理来进行错误检测的,将接收到的验证字段进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,另外CRC校验具还有自动纠错能力。这样,本发明可以利用验证字段保证消息的完整性,即可以基于CRC32的验证机制,保证消息的完整性。
响应类型字段为用于反映发送终端所采用的响应模式的字段。例如,响应类型字段可以包括Request-Response和OneWay两种数据答应模式,其中, Request-Response(请求-响应模式),可以实现每个请求消息都要求接收终端返回对应的响应消息,而OneWay(单边请求模式)只可以要求将请求消息发送到接收终端即可,不需要接收终端返回响应消息。
连接类型字段为用于反映发送终端所采用的通信连接类型的字段,即用于反映发送终端与接收终端进行通信连接所采用的连接类型的字段。其中,当连接类型字段反映的通信连接类型为长连接模式时,反映了发送终端与接收终端之间的一次通信连接可以重复用于多次业务请求并长时间保持连接的存活;当连接类型字段反映的通信连接类型为短连接模式时,反映了发送终端与接收终端之间的一次通信连接只用于一次业务请求,且使用后即销毁;当连接类型字段反映的通信连接类型为自适应模式时,反映了终端所设置的连接类型可以根据对方终端的连接类型进行调整,以保证两者的连接类型一致。
表1
确定待发送消息对应的二进制数据信息、目标设备信息对应的二进制数据信息以及待发送消息对应的预设协议字段之后,可以根据所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及所述预设协议字段,确定所述待发送消息对应的二进制通信消息。具体地,可以根据二进制通信协议对应的报文编码方式,将所述待发送消息对应的二进制数据信息所述二进制数据信息、所述目标设备信息对应的二进制数据信息以及所述预设协议字段,生成为符合二进制通信协议的报文,该符合二进制通信协议的报文即为所述待发送消息对应的二进制通信消息。可以理解的是,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段。
S204:所述发送终端根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以便所述接收终端接收所述发送终端发送的二进制通信消息。
所述发送终端确定所述待发送消息对应的二进制通信消息之后,可以根据目标设备信息对应的目标通信信息,利用发送终端中的网络模块将所述二进制通信消息向接收终端发送。具体地,网络模块收到二进制通信消息后,可以建立或者获取与接收终端中目标设备之间的通信连接,接着将二进制通信消息向接收终端中目标设备发送,以便接收终端接收到该二进制通信消息;或者,网络模块可以先收到待发送消息对应的二进制数据信息和所述目标设备信息对应的二进制数据信息后,首先可以建立或者获取与接收终端中目标设备之间的通信连接,接着,按照二进制协议的格式,将预设协议字段、待发送消息对应的二进制数据信息和所述目标设备信息对应的二进制数据信息生成报文,即二进制通信消息,接着将二进制通信消息向接收终端中目标设备发送,以便接收终端接收到该二进制通信消息。需要说明的是,发送终端将二进制通信消息发送完成后,可以根据发送终端调用的接口不同(request-response模式以及 oneWay模式),确定发送终端是否完成消息发送;具体地,如果发送终端所调用的接口为request-response模式,则发送终端会一直等待直至响应返回或者调用超时,如果是发送终端所调用的接口为oneWay模式,则视为本次调用已经结束。
举例说明,假设存在6个设备,分别是发送终端中的1个物理设备 (CLIENT_PHY_1),接收终端中的1个集线器设备(SERVER_HUB_1),一个逻辑设备(SERVER_LOGIC_1),两个物理设备(SERVER_PHY_1、SERVER_PHY_2),且用户需要从CLIENT_PHY_1设备发送一个“hello”消息到目标设备 SERVER_HUB_1;发送终端中的通讯模块首先建立和SERVER_PHY_1的网络连接,然后将“hello”消息对应的二进制通信消息发送到SERVER_PHY_1。
需要强调的是,S203与S204中发送终端与接收终端建立通信连接或保持通信连接的步骤之间的执行顺序在本实施例中并不限定,两者可以同时进行,也可以相互依次执行,即两者的执行前后顺序并不进行限定。即发送终端确定所述待发送消息对应的二进制通信消息与所述发送终端和所述接收终端建立通信连接的先后顺序在在本实施例中并不限定。
S205:所述接收终端根据所述二进制通信消息获取待发送消息。
在本实施例中,接收终端接收到发送终端发送的二进制通信消息后,可以先将二进制通信协议输入消息处理模块,以便消息处理模块可以根据二进制通信协议(比如二进制高速通信协议),对二进制通信消息进行处理,得到待发送消息、目标设备信息以及预设协议字段。然后,可以根据目标设备信息确定目标设备。接着,可以根据该目标设备查找注册在该目标设备上的监听器,通知监听器处理该待发送消息,该消息监听器处理完成该待发送消息后,可以根据预设协议字段中的响应类型字段决定是否返回响应。例如,如果该响应类型字段对应request-response模式,则接收终端可以向发送终端返回响应,例如可以返回心跳消息、控制消息或其他业务消息等;如果该响应类型字段对应 oneWay模式,则视为本次调用已经结束,即接收终端不需要向发送终端返回响应。
作为一种示例,接收终端可以先根据预设的二进制协议,确定所述二进制通信消息中所述待发送消息对应的二进制数据信息、目标设备信息对应的二进制数据信息以及预设协议字段;例如,可以根据Google(谷歌)的GRPC、RabbitMQ (一种消息中间件)的AMQP(高级消息队列协议)等二进制协议,确定所述二进制通信消息中所述待发送消息对应的二进制数据信息、目标设备信息对应的二进制数据信息以及预设协议字段。
然后,接收终端可以对所述二进制通信消息中所述待发送消息对应的二进制数据信息和所述目标设备信息对应的二进制数据信息进行序列化处理,得到所述待发送消息和所述目标设备信息;例如,可以通过hessian序列化框架 (JAVA语言中的一种序列化方式)、protobuf序列化框架(谷歌开源的一款跨平台序列化方式)或者在JAVA程序中该语言本身提供的序列化方式,对所述二进制通信消息中所述待发送消息对应的二进制数据信息和所述目标设备信息对应的二进制数据信息进行序列化处理,得到所述待发送消息和所述目标设备信息。
接着,接收终端可以判断其所存储的预设路由表中是否包括所述目标设备信息,若所述接收终端所存储的预设路由表中包括所述目标设备信息,则可以基于所述目标设备信息对应的消息监听器对所述待发送消息进行处理,即通知监听器处理该待发送消息,该消息监听器处理完成该待发送消息后,可以根据预设协议字段中的响应类型字段决定是否返回响应。若所述接收终端所存储的预设路由表中未包括所述目标设备信息,则说明消息发送有误,接收终端无法处理,此时以异常状态终止处理,并输出错误信息。
举例说明,假设存在6个设备,分别是发送终端中的1个物理设备 (CLIENT_PHY_1),接收终端中的1个集线器设备(SERVER_HUB_1),一个逻辑设备(SERVER_LOGIC_1),两个物理设备(SERVER_PHY_1、SERVER_PHY_2),且用户需要从CLIENT_PHY_1设备发送一个“hello”消息到目标设备 SERVER_HUB_1;发送终端将“hello”消息对应的二进制通信消息发送到 SERVER_PHY_1。SERVER_PHY_1接收到“hello”消息对应的二进制通信消息后,通过hessian框架将二进制通信消息转换成消息对象“hello”以及目标设备信息,且根据目标设备信息确定该消息对象“hello”是发送给SERVER_HUB_1 的,则可以根据设备信息SERVER_HUB_1的属性查找到注册到该设备 SERVER_HUB_1上的消息监听器,将该消息交给该监听器处理。需要说明的是,依此类推,如果把目标设备分别设置成SERVER_LOGIC_1、SERVER_PHY_1 (SERVER_PHY_2)即可实现将消息发送到逻辑设备和物理设备。可见,本实施例可以实现实现分组消息投递,也可以实现单点消息投递,从而实现了通信连接的复用,即多路复用。
由上述技术方案可以看出,本发明发送终端获取到消息发送指令之后,所述消息发送指令包括待发送消息和目标设备信息;发送终端可以根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息,以及根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息;其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;接着,发送终端可以根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息;所述接收终端可以根据所述二进制通信消息,获取所述待发送消息。这样,本发明通过利用预设路由表中所存储的设备信息与接收终端对应的通信信息之间的映射关系,实现了在同一个通讯总线上,发送终端只需要指定不同的目标设备信息,即可与目标设备信息的接收终端进行消息通信,实现了灵活的消息投递总线模型;并且,待发送消息通过高度极简二进制协议的处理,使得通信过程中的二进制通信消息兼并性能与灵活度,也就是说,本发明对待发送消息使用了二进制序列化处理的方式,与文本型协议相比,在短频快的业务场景下可以带来更短的响应时间,更小的资源消耗,从而能够满足复杂的业务场景,如短频快的商品秒杀场景。
图2所示仅为本发明所述方法的基础实施例,在其基础上进行一定的优化和拓展,还能够得到所述方法的其他可选实施例。
接下来,将介绍本发明所述一种基于二进制通信协议的通信方法的另一个具体实施例,同样将从发送终端侧与接收终端侧交互的角度,对本申请所提供的一种基于二进制通信协议的通信方法进行介绍。本实施例在图2对应实施例的基础上,对S204进行进一步阐述(S204包括S304-S307)。如图3所示,在本实施例中,所述方法具体包括以下步骤:
S301:所述发送终端获取消息发送指令。
需要说明的是,本实施例中的S301与图2对应实施例中的S201相同。因此,在本实施例中,不再对S301进行阐述,具体可以参见S201的介绍。
S302:所述发送终端根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息。
需要说明的是,本实施例中的S302与图2对应实施例中的S201相同。因此,在本实施例中,不再对S302进行阐述,具体可以参见S202的介绍。
S303:所述发送终端根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息。
需要说明的是,本实施例中的S303与图2对应实施例中的S203相同。因此,在本实施例中,不再对S303进行阐述,具体可以参见S203的介绍。
S304:所述发送终端根据所述目标通信信息,确定与所述目标通信信息对应的接收终端之间的目标连接类型;
S305:所述发送终端根据所述目标连接类型和所述目标通信信息,向所述接收终端发送通信连接请求;
S306:所述接收终端响应所述通信连接请求,向所述发送终端返回连接响应消息,与所述发送终端建立通信连接;
S307:所述发送终端通过所述通信连接向所述目标通信信息对应的接收终端发送所述二进制通信消息。
需要说明的是,发送终端在确定目标设备信息对应的目标通信信息之后,需要根据该目标通信信息与发送终端进行通信连接,以便能够将二进制通信消息向接收终端发送。由于发送终端的连接类型的设置不同,发送终端与接收终端之间的通信连接方式也会有所不同,故此,需要先确定发送终端与目标通信信息对应的接收终端之间的连接类型,需要说明的是,为了便于说明,在本实施例中,可以将发送终端与目标通信信息对应的接收终端之间的连接类型称之为目标连接类型。其中,目标连接类型可以为长连接模式或者短连接模式。
然后,发送终端可以根据所述目标连接类型和所述目标通信信息,向所述接收终端发送通信连接请求,以便接收终端响应所述通信连接请求,向所述发送终端返回连接响应消息,与所述发送终端建立通信连接。接着,发送终端可以通过该通信连接向所述接收终端发送所述二进制通信消息。
其中,通信连接请求可以理解为发送终端为实现与接收终端建立通信连接或保持通信连接所执行的操作信息,而连接响应消息可以理解为接收终端响应建立通信连接请求或保持通信连接请求所执行的操作信息。例如,当接收终端与发送终端为首次通信连接时,需要根据目标连接类型进行连接自适应处理,该连接自适应处理将在后面具体介绍,这里暂不介绍;又例如,当接收终端与发送终端为非首次通信连接时,若目标连接类型为短连接模式,说明发送终端与接收终端之间当前并未存在通信连接,故需要重新建立通信连接;还例如,当接收终端与发送终端为非首次通信连接时,若目标连接类型为长连接模式,说明发送终端与接收终端之间当前存在通信连接,故不需要重新建立通信连接,而可以通过心跳消息保持通信连接的活性,即通过心跳消息确认通信连接是否失效。接下来,接具体介绍针对接收终端与发送终端为首次通信连接、接收终端与发送终端为非首次通信连接且目标连接类型为短连接模式以及接收终端与发送终端为非首次通信连接且目标连接类型为长连接模式,这三种情况下,S305-S307对应的具体实现方式:
情况1:接收终端与发送终端为非首次通信连接且目标连接类型为长连接模式。
在该情况下,可以先根据所述长连接模式和所述目标通信信息,确定与所述目标通信信息对应的接收终端之间已连接的通信连接。可以理解的是,当目标连接类型为长连接模式时,说明发送终端与接收终端之间已经存在通信连接,但由于该通信连接可以能会出现失效的问题。故此,发送终端可以通过后台线程定时向接收终端发送包括心跳消息的通信连接请求,接收终端接收到包括心跳消息的通信连接请求后,接收终端可以返回包括心跳消息的连接响应信号,以便保持通信连接的活性。
在一种实现方式中,如果发送端连续3次向接收终端发送包括心跳消息的通信连接请求,均未收到接收终端返回包括心跳消息的连接响应信号,则发送终端可以确定该通信连接失效,关闭通信连接;同样地,若接收终端在3次心跳周期内都没有收到发送终端发送的包括心跳消息的通信连接请求,接收终端可以确定该通信连接失效,关闭该通信连接。
这样,发送终端确定其与接收终端之间已连接的通信连接的活性仍然保持,以及接收终端也确定其与发送终端之间已连接通信连接(即已连接的通信连接的活性仍然保持)之后,发送终端可以通过该通信连接,向所述接收终端发送所述二进制通信消息,以使所述接收终端接收所述发送终端发送的二进制通信消息,并且根据所述二进制通信消息,获取所述待发送消息。
情况2:接收终端与发送终端为非首次通信连接且目标连接类型为短连接模式。
在该情况下,可以先根据所述短连接模式和所述目标通信信息,确定与所述目标通信信息对应的接收终端之间的通信连接已销毁,此时,发送终端需要与接收终端重新建立通信连接。
具体地,发送终端可以根据目标通信信息,向该目标通信信息对应的接收终端发送包括控制消息(控制命令,例如重新协商长/短连接)的通信连接请求;接收所述发送终端发送的通信连接请求;接收终端接收该通信连接请求后,可以响应该通信连接请求,向所述发送终端返回连接响应消息,以通知发送终端建立通信连接。发送终端接收到连接响应消息,可以响应该连接响应消息与该接收终端建立通信连接,即接收终端与发送终端建立通信连接。这样,发送终端便可以通过通信连接,向目标通信信息对应的接收终端发送二进制通信消息,以使接收终端可以根据所述二进制通信消息,获取所述待发送消息。
情况3:接收终端与发送终端为首次通信连接。
当发送终端中的网络模块首次根据目标通信信息(IP地址和端口)与接收终端需要建立网络连接时,发送终端可以向接收终端发送通信连接请求,其中,该通信连接请求中包括发送终端对应的通信连接类型的标识,即该通信连接请求包括反映发送终端的通信连接状态的信息。接收终端的网络模块通过监听端口接收发送终端发送的通信连接请求,如果确定首次从该发送终端接收到该请求后,会进入连接自适应处理。接下来,将具体介绍连接自适应处理过程。
首先检查接收终端是否为自适应连接模式,如果接收终端为自适应模式,则接收终端的连接类型需要根据目标连接类型(即发送终端的连接类型)进行设置。例如,若所述接收终端的连接类型为自适应模式,目标连接类型为长连接模式(即发送终端的连接类型为长连接模式),则接收终端可以向发送终端返回一返回消息,其中,所述返回消息包括心跳消息,例如接收终端可以将其连接类型设置为长连接模式,且返回一包括心跳消息的返回消息;相应地,发送终端接收到接收终端返回的返回消息,则可以与接收终端进行长连接,或在预设周期内未接收到接收终端返回的返回消息,则可以响应调用超时结束通信。又例如,若所述接收终端的连接类型为自适应模式,目标连接类型为短连接模式(即发送终端的连接类型为短连接模式),接收终端与所述发送终端建立通信连接,例如接收终端可以将其连接类型设置为短连接模式,且接收终端直接与所述发送终端建立通信连接。
如果接收终端不为自适应模式,则发送终端的连接类型需要根据接收终端的连接类型进行调整,且接收终端需要主动通知发送终端切换连接类型,需要说明的是,如果两者使用了相同的连接类型则不需要进行处理,而两者使用了不相同的连接类型则需要进行处理(具体后面进行说明)。需要说明的是,接收终端需要主动通知发送终端切换连接类型的方式有两种:1、如果发送终端的响应类型字段对应Request-Response模式,则接收终端需要返回响应消息,此时,接收终端可以在该响应消息中加入接收终端的连接类型标识,即接收终端的连接类型标识可以通过响应消息返回给发送终端,以便发送终端根据该连接类型标识对其连接类型进行调整,从而发送终端与接收终端建立通信连接,这样也可以减少一次网络通讯的开销;2、如果发送终端的响应类型字段对应 OneWay模式,则接收终端可以通过向发送终端发送包括接收终端的连接类型标识的控制消息,以便发送终端根据该连接类型标识对其连接类型进行调整,从而发送终端与接收终端建立通信连接。
具体地,若所述目标连接类型为长连接模式(即发送终端的连接类型为长连接模式),所述接收终端的连接类型为长连接模式,则接收终端可以向发送终端返回一返回消息,其中,所述返回消息包括心跳消息,以便保持通信连接的活性。若所述目标连接类型为长连接模式(即发送终端的连接类型为长连接模式),所述接收终端的连接类型为短连接模式,则接收终端可以向发送终端返回一返回消息,其中,所述返回消息包括短连接模式标识;发送终端接收到接收终端返回的返回消息,发送终端可以根据该返回消息中的短连接模式标识,将所述目标连接类型切换为短连接模式,即将其连接类型切换为短连接模式,以及与接收终端建立短连接模式通信连接,并停止对该通信连接进行自动重连处理以及心跳检查处理;其中,自动重连处理为通过后台线程循环检查连接是否存活,如果已经失效就重新建立连接的处理方式,心跳检查处理为发送终端通过后台线程定时发送心跳消息到接收端,接收终端收到心跳消息后同样回应心跳消息,如果发送终端3次都没有收到接收终端的回复,则认为通信连接失效,关闭通信连接,如果接收终端在3次心跳周期内都没有收到发送终端发送的心跳消息,同样认为该通信连接失效,关闭该通信连接。
若所述目标连接类型为短连接模式(即发送终端的连接类型为短连接模式),接收终端的连接类型为长连接模式,则接收终端向所述发送终端返回一返回消息,其中,所述返回消息包括长连接模式标识;发送终端接收所述接收终端返回的返回消息,发送终端可以根据所述返回消息中的长连接模式标识,将所述目标连接类型切换为长连接模式,即将其连接类型切换为长连接模式,以及与接收终端建立长连接模式通信连接,并对所述通信连接进行自动重连处理以及心跳检查处理。若所述目标连接类型为短连接模式(即发送终端的连接类型为短连接模式),接收终端的连接类型为短连接模式,则接收终端与发送终端建立通信连接,即接收终端直接与所述发送终端建立通信连接。
接下来,将举例对情况3中的一种场景进行举例说明,假设存在6个设备,分别是发送终端中的1个物理设备(CLIENT_PHY_1),接收终端中的1个集线器设备(SERVER_HUB_1),一个逻辑设备(SERVER_LOGIC_1),两个物理设备 (SERVER_PHY_1、SERVER_PHY_2),且用户需要从CLIENT_PHY_1设备发送一个“hello”消息到目标设备SERVER_HUB_1;发送终端将“hello”消息对应的二进制通信消息发送到SERVER_PHY_1。CLIENT_PHY_1使用短连接模式,SERVER_PHY_1使用自适应模式,SERVER_PHY_2使用长连接模式。CLIENT_PHY_1 建立到SERVER_PHY_1的连接并发送”hello”消息;连接建立完成后,CLIENT_PHY_1按照短连接模式初始化,然后发送包括短连接模式标识的通信连接请求;SERVER_PHY_1收到通信连接请求后,默认按照短连接模式初始化,在收到”hello”消息后,检查到其处于自适应模式,通过对比发送终端的连接类型标识,发现两者一致,所以不发生实际的切换操作而将其的标识设定为短连接模式。
CLIENT_PHY_1建立到SERVER_PHY_2的连接并发送”hello”消息。连接建立完成后,CLIENT_PHY_1按照短连接模式初始化,然后发送包括短连接模式标识的通信连接请求。SERVER_PHY_2收到通信连接请求后,按照长连接模式初始化,在收到”hello”消息后,检查到其处于长连接模式,通过对比发送方的连接标识,发现两者不一致,所以在响应通信连接请求返回一返回消息时将其长连接模式标识也返回给发送终端。CLIENT_PHY_1收到返回消息后,发现接收终端要求使用长连接模式,由于其与接收终端的了连接类型不一致,因此将其连接类型切换为长连接模式。
S308:所述接收终端根据所述二进制通信消息获取待发送消息。
需要说明的是,本实施例中的S308与图2对应实施例中的S205相同。因此,在本实施例中,不再对S308进行阐述,具体可以参见S205的介绍。
可见,本实施例中,可以通过在发送终端和接收终端之间交换双方的长短连接模式表示,以实现双方可以最终进行长短连接的决定和调整,从而使得发送终端与接收终端可以实现自适应长短连接,保证了发送终端与接收终端的连接类型保持相同,即连接模式保持相同,进而实现了发送终端与接收终端之间的通信连接。
至此,本实施例结合具体的应用场景实现了基于二进制通信协议的通信方法过程。当然应该认为,上述场景仅仅为示例性场景,并不对本发明提供的方法构成限定。本发明提供的方法可延申的应用在其他相同原理的基于二进制通信协议的通信过程当中。
如图4所示,为本发明针对图2对应的方法所设置的所述基于二进制通信协议的通信装置的一个具体实施例。本实施例所述装置,即用于执行上述实施例所述方法的实体装置。其技术方案本质上与上述实施例一致,上述实施例中的相应描述同样适用于本实施例中。本实施例中所述装置应用于发送终端侧,所述装置包括:
获取单元401,用于获取消息发送指令,其中,所述消息发送指令包括待发送消息和目标设备信息;
确定单元402,用于根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息;其中,所述预设路由表预先存储于所述发送终端中;
所述确定单元402,还用于根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息;其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;
发送单元403,用于根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息。
可选的,所述预设路由表包括本地路由表和网络路由表,其中,所述本地路由表包括至少一组本地设备信息与通信信息之间的映射关系,所述网络路由表包括至少一组网络设备信息与通信信息之间的映射关系;
所述确定单元402,具体用于:
若所述本地路由表中存储有与所述目标设备信息相同的本地设备信息,将所述本地设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息;
若所述本地路由表中未存储有与所述目标设备信息相同的本地设备信息,则确定所述网络路由表中与所述目标设备信息相同的网络设备信息,并将所述网络设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
可选的,若所述目标设备信息为集线器设备信息,所述确定单元402,具体用于:
若所述本地路由表中存储有与所述目标设备信息相同的本地集线器设备信息,通过负载均衡处理方式确定所述本地集线器设备信息对应的本地逻辑设备信息;
通过负载均衡处理方式确定所述本地逻辑设备信息对应的本地物理设备信息,并将所述本地物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息;
相应地,所述所述确定单元402,具体用于:
确定所述网络路由表中与所述目标设备信息相同的网络集线器设备信息,通过负载均衡处理方式确定所述网络集线器设备信息对应的网络逻辑设备信息;
通过负载均衡处理方式确定所述网络逻辑设备信息对应的网络物理设备信息,并将所述网络物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
可选的,若所述目标设备信息为逻辑设备信息,所述确定单元402,具体用:
若所述本地路由表中存储有与所述目标设备信息相同的本地逻辑设备信息,通过负载均衡处理方式确定所述本地逻辑设备信息对应的本地物理设备信息,并将所述本地物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息;
相应地,所述确定单元402,具体用于:
确定所述网络路由表中与所述目标设备信息相同的网络逻辑设备信息;
通过负载均衡处理方式确定所述网络逻辑设备信息对应的网络物理设备信息,并将所述网络物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
可选的,若所述目标设备信息为物理设备信息,所述确定单元402,具体用于:
若所述本地路由表中存储有与所述目标设备信息相同的本地物理设备信息,将所述本地物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息;
相应地,所述确定单元402,具体用于:
确定所述网络路由表中与所述目标设备信息相同的网络物理设备信息,并将所述网络物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
可选的,所述确定单元402,具体用于:
对所述待发送消息和所述目标设备信息进行序列化处理,得到所述待发送消息对应的二进制数据信息和所述目标设备信息对应的二进制数据信息;
根据预设的二进制协议,确定所述待发送消息对应的预设协议字段;
根据所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及所述预设协议字段,确定所述所述待发送消息对应的二进制通信消息。
可选的,所述预设协议字段至少包括以下至少一种字段:协议魔数字段、协议版本字段、消息类型字段、响应类型字段、连接类型字段、错误码字段、请求ID字段、报文体长度字段、状态字段或者验证字段。
可选的,根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息,包括:
根据所述目标通信信息,确定与所述目标通信信息对应的接收终端之间的目标连接类型;
根据所述目标连接类型和所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息。
可选的,若所述目标连接类型为长连接模式,所述发送单元403,具体用于:
根据所述长连接模式和所述目标通信信息,确定与所述目标通信信息对应的接收终端之间已连接的通信连接;
通过所述通信连接,向所述接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息。
可选的,若所述目标连接类型为短连接模式,所述发送单元403,具体用于:
根据所述目标通信信息,向所述目标通信信息对应的接收终端发送通信连接请求,并与所述接收终端建立通信连接;
通过所述通信连接,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息。
可选的,所述接收终端与所述发送终端为首次通信连接时,所述装置还包括一处理单元:
若所述接收终端的连接类型为自适应模式或长连接模式,则接收所述接收终端返回的返回消息或响应调用超时结束通信,其中,所述返回消息包括心跳消息;或者,
若所述接收终端的连接类型为短连接模式,则接收所述接收终端返回的返回消息,并根据所述返回消息中的短连接模式标识,将所述目标连接类型切换为短连接模式,并停止对所述通信连接进行自动重连处理以及心跳检查处理。
可选的,所述接收终端与所述发送终端为首次通信连接时,所述处理单元还具体用于:
若所述接收终端的连接类型为自适应模式或短连接模式,则结束所述建立所述通信连接;或者,
若所述接收终端的连接类型为长连接模式,则接收所述接收终端返回的返回消息,并根据所述返回消息中的长连接模式标识,将所述目标连接类型切换为长连接模式,并对所述通信连接进行自动重连处理以及心跳检查处理。
可选的,所述待发送消息包括业务消息、心跳消息和/或控制消息。
可选的,所述目标设备信息至少包括目标设备名称。
可选的,所述目标通信信息至少包括:IP地址和/或端口。
如图5所示,为本发明针对图3对应的方法所设置的所述基于二进制通信协议的通信装置的一个具体实施例。本实施例所述装置,即用于执行上述实施例所述方法的实体装置。其技术方案本质上与上述实施例一致,上述实施例中的相应描述同样适用于本实施例中。本实施例中所述装置应用于接收终端侧,所述装置包括:
接收单元501,用于接收发送终端发送的二进制通信消息,其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;
获取单元502,用于根据所述二进制通信消息获取待发送消息。
可选的,所述接收单元501,具体用于:
确定与所述目标通信信息对应的接收终端之间的目标连接类型;
根据所述目标连接类型,接收所述发送终端发送的二进制通信消息。
可选的,若所述目标连接类型为长连接模式,所述接收单元501,具体用于:
根据所述长连接模式,确定与所述发送终端之间已连接通信连接;
通过所述通信连接,接收所述发送终端发送的二进制通信消息。
可选的,若所述目标连接类型为短连接模式,所述接收单元501,具体用于:
接收所述发送终端发送的通信连接请求;
响应所述通信连接请求,向所述发送终端返回连接响应消息,与所述发送终端建立通信连接;
通过所述通信连接,接收所述发送终端发送的二进制通信消息。
可选的,所述接收终端与所述发送终端为首次通信连接时,所述装置还包括:
处理单元,用于:若所述接收终端的连接类型为自适应模式或长连接模式,则向所述发送终端返回一返回消息,其中,所述返回消息包括心跳消息;或者,
若所述接收终端的连接类型为短连接模式,则向所述发送终端返回一返回消息,其中,所述返回消息包括短连接模式标识,以使所述发送终端根据所述短连接模式标识,将所述目标连接类型切换为短连接模式,并停止对所述通信连接进行自动重连处理以及心跳检查处理。
可选的,所述接收终端与所述发送终端为首次通信连接时,所述处理单元,具体用于:
若所述接收终端的连接类型为自适应模式或短连接模式,则与所述发送终端建立所述通信连接;或者,
若所述接收终端的连接类型为长连接模式,则向所述发送终端返回一返回消息,其中,所述返回消息包括长连接模式标识,以使所述发送终端根据所述返回消息中的长连接模式标识,将所述目标连接类型切换为长连接模式,并对所述通信连接进行自动重连处理以及心跳检查处理。
可选的,所述获取单元502,具体用于:
根据预设的二进制协议,确定所述二进制通信消息中所述待发送消息对应的二进制数据信息、目标设备信息对应的二进制数据信息以及预设协议字段;
对所述二进制通信消息中所述待发送消息对应的二进制数据信息和所述目标设备信息对应的二进制数据信息进行序列化处理,得到所述待发送消息和所述目标设备信息。
可选的,所述处理单元,还用于:
若所述接收终端所存储的预设路由表中包括所述目标设备信息,则基于所述目标设备信息对应的消息监听器对所述待发送消息进行处理;
若所述接收终端所存储的预设路由表中未包括所述目标设备信息,则输出错误信息。
可选的,所述待发送消息包括业务消息、心跳消息和/或控制消息。
可选的,所述目标设备信息至少包括目标设备名称。
如图6所示,为本发明所述基于二进制通信协议的通信系统的一个具体实施例。本实施例所述系统,即用于执行上述实施例所述方法的系统。其技术方案本质上与上述实施例一致,上述实施例中的相应描述同样适用于本实施例中。本实施例中所述系统包括:
发送终端601,用于获取消息发送指令,其中,所述消息发送指令包括待发送消息和目标设备信息;根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息;其中,所述预设路由表预先存储于所述发送终端601中;根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息;其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;根据所述目标通信信息,向所述目标通信信息对应的接收终端602发送所述二进制通信消息,以使所述接收终端602根据所述二进制通信消息,获取所述待发送消息;
所述接收终端602,用于接收发送终端601发送的二进制通信消息;根据所述二进制通信消息获取待发送消息。
图7是本发明实施例提供的一种电子设备的结构示意图。在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或 EISA(Extended IndustryStandard Architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6 中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放执行指令。具体地,执行指令即可被执行的计算机程序。存储器可以包括内存和非易失性存储器,并向处理器提供执行指令和数据。
在一种可能实现的方式中,处理器从非易失性存储器中读取对应的执行指令到内存中然后运行,也可从其它设备上获取相应的执行指令,以在逻辑层面上形成基于二进制通信协议的通信装置。处理器执行存储器所存放的执行指令,以通过执行的执行指令实现本发明任一实施例中提供的基于二进制通信协议的通信方法。
上述如本发明图2、3所示实施例提供的基于二进制通信协议的通信装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(CentralProcessing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit, ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
本发明实施例还提出了一种可读介质,该可读存储介质存储有执行指令,存储的执行指令被电子设备的处理器执行时,能够使该电子设备执行本发明任一实施例中提供的基于二进制通信协议的通信方法,并具体用于执行上述基于二进制通信协议的通信所述的方法。
前述各个实施例中所述的电子设备可以为计算机。
本领域内的技术人员应明白,本发明的实施例可提供为方法或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例,或软件和硬件相结合的形式。
本发明中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请中的术语“第一”、“第二”、“第三”、“第四”等(如果存在) 是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a, b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b 和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (14)
1.一种基于二进制通信协议的通信方法,其特征在于,所述方法应用于发送终端侧,所述方法包括:
获取消息发送指令,其中,所述消息发送指令包括待发送消息和目标设备信息;
根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息;其中,所述预设路由表预先存储于所述发送终端中;
根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息;其中,所述二进制通信消息包括所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及预设协议字段;
根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息;
其中,所述根据所述待发送消息和所述目标设备信息,确定所述待发送消息对应的二进制通信消息,包括:
对所述待发送消息和所述目标设备信息进行序列化处理,得到所述待发送消息对应的二进制数据信息和所述目标设备信息对应的二进制数据信息;
根据预设的二进制协议,确定所述待发送消息对应的预设协议字段;
根据所述待发送消息对应的二进制数据信息、所述目标设备信息对应的二进制数据信息以及所述预设协议字段,确定所述待发送消息对应的二进制通信消息;
所述预设路由表包括本地路由表和网络路由表,其中,所述本地路由表包括至少一组本地设备信息与通信信息之间的映射关系,所述网络路由表包括至少一组网络设备信息与通信信息之间的映射关系;
所述根据所述目标设备信息和预设路由表,确定所述目标设备信息对应的目标通信信息,包括:
若所述本地路由表中存储有与所述目标设备信息相同的本地设备信息,将所述本地设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息;
若所述本地路由表中未存储有与所述目标设备信息相同的本地设备信息,则确定所述网络路由表中与所述目标设备信息相同的网络设备信息,并将所述网络设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息;
若所述目标设备信息为集线器设备信息,所述若所述本地路由表中存储有与所述目标设备信息相同的本地设备信息,将所述本地设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息,包括:
若所述本地路由表中存储有与所述目标设备信息相同的本地集线器设备信息,通过负载均衡处理方式确定所述本地集线器设备信息对应的本地逻辑设备信息;
通过负载均衡处理方式确定所述本地逻辑设备信息对应的本地物理设备信息,并将所述本地物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息;
相应地,所述确定所述网络路由表中与所述目标设备信息相同的网络设备信息,并将所述网络设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息,包括:
确定所述网络路由表中与所述目标设备信息相同的网络集线器设备信息,通过负载均衡处理方式确定所述网络集线器设备信息对应的网络逻辑设备信息;
通过负载均衡处理方式确定所述网络逻辑设备信息对应的网络物理设备信息,并将所述网络物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
2.根据权利要求1所述的方法,其特征在于,若所述目标设备信息为逻辑设备信息,所述若所述本地路由表中存储有与所述目标设备信息相同的本地设备信息,将所述本地设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息,包括:
若所述本地路由表中存储有与所述目标设备信息相同的本地逻辑设备信息,通过负载均衡处理方式确定所述本地逻辑设备信息对应的本地物理设备信息,并将所述本地物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息;
相应地,所述确定所述网络路由表中与所述目标设备信息相同的网络设备信息,并将所述网络设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息,包括:
确定所述网络路由表中与所述目标设备信息相同的网络逻辑设备信息;
通过负载均衡处理方式确定所述网络逻辑设备信息对应的网络物理设备信息,并将所述网络物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
3.根据权利要求1所述的方法,其特征在于,若所述目标设备信息为物理设备信息,所述若所述本地路由表中存储有与所述目标设备信息相同的本地设备信息,将所述本地设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息,包括:
若所述本地路由表中存储有与所述目标设备信息相同的本地物理设备信息,将所述本地物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息;
相应地,所述确定所述网络路由表中与所述目标设备信息相同的网络设备信息,并将所述网络设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息,包括:
确定所述网络路由表中与所述目标设备信息相同的网络物理设备信息,并将所述网络物理设备信息对应的通信信息作为所述目标设备信息对应的目标通信信息。
4.根据权利要求1所述的方法,其特征在于,所述预设协议字段至少包括以下至少一种字段:协议魔数字段、协议版本字段、消息类型字段、响应类型字段、连接类型字段、错误码字段、请求ID字段、报文体长度字段、状态字段或者验证字段。
5.根据权利要求1-4中任一所述的方法,其特征在于,根据所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息,包括:
根据所述目标通信信息,确定与所述目标通信信息对应的接收终端之间的目标连接类型;
根据所述目标连接类型和所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息。
6.根据权利要求5所述的方法,其特征在于,若所述目标连接类型为长连接模式,所述根据所述目标连接类型和所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息,包括:
根据所述长连接模式和所述目标通信信息,确定与所述目标通信信息对应的接收终端之间已连接的通信连接;
通过所述通信连接,向所述接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息。
7.根据权利要求5所述的方法,其特征在于,若所述目标连接类型为短连接模式,所述根据所述目标连接类型和所述目标通信信息,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息,包括:
根据所述目标通信信息,向所述目标通信信息对应的接收终端发送通信连接请求,并与所述接收终端建立通信连接;
通过所述通信连接,向所述目标通信信息对应的接收终端发送所述二进制通信消息,以使所述接收终端根据所述二进制通信消息,获取所述待发送消息。
8.根据权利要求6所述的方法,其特征在于,所述接收终端与所述发送终端为首次通信连接时,所述方法还包括:
若所述接收终端的连接类型为自适应模式或长连接模式,则接收所述接收终端返回的返回消息或响应调用超时结束通信,其中,所述返回消息包括心跳消息;或者,
若所述接收终端的连接类型为短连接模式,则接收所述接收终端返回的返回消息,并根据所述返回消息中的短连接模式标识,将所述目标连接类型切换为短连接模式,并停止对所述通信连接进行自动重连处理以及心跳检查处理。
9.根据权利要求7所述的方法,其特征在于,所述接收终端与所述发送终端为首次通信连接时,所述方法还包括:
若所述接收终端的连接类型为自适应模式或短连接模式,则建立所述通信连接;或者,
若所述接收终端的连接类型为长连接模式,则接收所述接收终端返回的返回消息,并根据所述返回消息中的长连接模式标识,将所述目标连接类型切换为长连接模式,并对所述通信连接进行自动重连处理以及心跳检查处理。
10.根据权利要求1-4中任一所述的方法,其特征在于,所述待发送消息包括业务消息、心跳消息和/或控制消息。
11.根据权利要求1-4中任一所述的方法,其特征在于,所述目标设备信息至少包括目标设备名称。
12.根据权利要求1-4中任一所述的方法,其特征在于,所述目标通信信息至少包括:IP地址和/或端口。
13.一种电子设备,包括处理器以及存储有执行指令的存储器,当所述处理器执行所述存储器存储的所述执行指令时,所述处理器执行如权利要求1-12中任一所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1-12中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010295855.7A CN111541662B (zh) | 2020-04-15 | 2020-04-15 | 一种基于二进制通信协议的通信方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010295855.7A CN111541662B (zh) | 2020-04-15 | 2020-04-15 | 一种基于二进制通信协议的通信方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111541662A CN111541662A (zh) | 2020-08-14 |
CN111541662B true CN111541662B (zh) | 2022-09-23 |
Family
ID=71980193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010295855.7A Active CN111541662B (zh) | 2020-04-15 | 2020-04-15 | 一种基于二进制通信协议的通信方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111541662B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113079108B (zh) * | 2021-03-18 | 2023-05-02 | 中电科航空电子有限公司 | 一种提高网络架构通信效率的方法及系统 |
CN113411231A (zh) * | 2021-06-15 | 2021-09-17 | 中国电子科技集团公司第二十研究所 | 一种corba中间件通信时延性能优化方法 |
CN114979260B (zh) * | 2022-05-12 | 2023-09-15 | 深圳市绿联科技股份有限公司 | 一种基于协议的通信方法、装置、电子设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10439923B1 (en) * | 2016-09-22 | 2019-10-08 | Amazon Technologies, Inc. | Deserialization service |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105871907A (zh) * | 2016-05-26 | 2016-08-17 | 国云科技股份有限公司 | 一种通用的创建基于amqp协议代理服务的方法 |
US10785278B2 (en) * | 2016-11-04 | 2020-09-22 | Google Llc | Network management interface |
CN107370731B (zh) * | 2017-07-14 | 2020-09-04 | 北京墨丘科技有限公司 | 基于自然语言实现不同应用之间通信的方法及装置 |
CN110912803B (zh) * | 2019-11-14 | 2022-03-08 | 富途网络科技(深圳)有限公司 | 一种im消息传输方法及终端 |
CN110855792B (zh) * | 2019-11-19 | 2023-04-18 | 南京领行科技股份有限公司 | 一种消息推送方法、装置、设备及介质 |
-
2020
- 2020-04-15 CN CN202010295855.7A patent/CN111541662B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10439923B1 (en) * | 2016-09-22 | 2019-10-08 | Amazon Technologies, Inc. | Deserialization service |
Also Published As
Publication number | Publication date |
---|---|
CN111541662A (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111541662B (zh) | 一种基于二进制通信协议的通信方法、电子设备及存储介质 | |
US11411897B2 (en) | Communication method and communication apparatus for message queue telemetry transport | |
CN109417691B (zh) | 一种蓝牙集群在线升级方法及装置 | |
US20170163479A1 (en) | Method, Device and System of Renewing Terminal Configuration In a Memcached System | |
US20170163478A1 (en) | Method,electronic device and system for updating client configuration in key-value pair database | |
CN114172929B (zh) | 通信方法、装置以及网关 | |
CN114090388A (zh) | 信息获取方法、服务器集群、服务器及设备 | |
US20220046028A1 (en) | Method and system for determining a state of an account in a network device running a light client protocol of a distributed ledger technology network | |
CN112436997A (zh) | 聊天室的消息分发方法、消息分发系统及电子设备 | |
Biswas et al. | A novel leader election algorithm based on resources for ring networks | |
CN113409047B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN111369237A (zh) | 一种数据处理方法、装置及计算机存储介质 | |
CN110933188A (zh) | 远程服务的调用方法、系统、服务器及存储介质 | |
CN110870286B (zh) | 容错处理的方法、装置和服务器 | |
CN112131014B (zh) | 决策引擎系统及其业务处理方法 | |
CN111416851A (zh) | 在多个负载均衡器之间进行会话同步的方法和负载均衡器 | |
CN116595099A (zh) | 高并发数据异步处理方法及装置 | |
US7568194B2 (en) | Method and system for availability checking on distributed objects | |
CN114157725B (zh) | 设备联动的方法、装置、服务器、电子设备以及存储介质 | |
CN112019358A (zh) | 网络配置方法、装置、设备和系统 | |
CN113507530B (zh) | 数据转发方法、相关系统和设备及存储介质 | |
CN111416852A (zh) | 在多个负载均衡器之间进行会话同步的方法和负载均衡器 | |
CN115129708A (zh) | 数据处理方法、装置和存储介质及电子设备 | |
CN113032477A (zh) | 基于gtid的长距离数据同步方法、装置及计算设备 | |
CN113271305B (zh) | 一种攻击检测方法、装置及网站应用级入侵防护系统waf |
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 |