CN113765805B - 基于调用的通信方法、装置、存储介质及设备 - Google Patents
基于调用的通信方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN113765805B CN113765805B CN202111015022.1A CN202111015022A CN113765805B CN 113765805 B CN113765805 B CN 113765805B CN 202111015022 A CN202111015022 A CN 202111015022A CN 113765805 B CN113765805 B CN 113765805B
- Authority
- CN
- China
- Prior art keywords
- server
- information
- call
- target
- rule
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- 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/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- 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/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种基于调用的通信方法及装置,涉及通信技术领域,主要为解决目前在面对复杂环境和场景时,现有的基于调用的通信方式难以满足转发功能的需求的问题。该方法包括:获取调用信息,其中,所述调用信息是基于调用请求解析后得到的;根据所述调用信息及路由转发策略确定目标服务器,所述路由转发策略包括至少一条转发规则,每条所述转发规则用于基于所述调用信息从多个服务器中选取所述目标服务器,所述调用信息中包含选取路由转发策略的信息;将所述调用信息发送至所述目标服务器。本发明用于基于调用的通信过程。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种基于调用的通信方法及装置。
背景技术
随着技术的不断发展,通信技术也随之进步。目前,在一些情况下存在需要使用远程调用的情况,即RPC调用时。其中,RPC调用即远程过程调用(Remote Procedure Call,简称RPC)。一般通过接口调用远程服务器内部的一些服务以实现本地的功能,例如,调用远程服务器的标准函数或自定义函数并在获得函数返回的数据进行处理后显示或打印。
目前,往往通过谷歌开发的gRPC调用框架进行远程调用,或者使用由脸书所开发的Thrift调用框架。然而,在实际应用中,上述两种远程调用的通信方式并不支持转发功能,也就是说,当面临不同场景下的转发需求时,目前常规的基于调用的通信方式,难以满足基于转发功能的通信需求。
发明内容
鉴于上述问题,本发明提供一种基于调用的通信方法及装置,主要目的在于解决目前在面对复杂环境和场景时,现有的基于调用的通信方式难以满足转发功能的需求的问题。
为解决上述技术问题,第一方面,本发明提供了一种基于调用的通信方法,该方法包括:
获取调用信息,其中,所述调用信息是基于调用请求解析后得到的;
根据所述调用信息及路由转发策略确定目标服务器,所述路由转发策略包括至少一条转发规则,每条所述转发规则用于基于所述调用信息从多个服务器中选取所述目标服务器,所述调用信息中包含选取路由转发策略的信息;
将所述调用信息发送至所述目标服务器。
可选的,所述路由转发策略包括强制路由规则,所述强制路由规则用于在所述调用信息中存在强制路由信息时优先使用所述强制路由信息对应的服务器;
所述根据所述调用信息及路由转发策略确定目标服务器,包括:
判断所述调用信息中是否包含所述强制路由信息;
若存在,则根据所述强制路由规则,将所述强制路由信息对应的服务器确定为所述目标服务器。
可选的,所述路由转发策略还包括绑定服务器规则,所述绑定服务器规则用于在所述调用信息存在绑定服务器信息且不存在所述强制路由信息时,优先使用所述绑定服务器信息对应的服务器;
所述根据所述调用信息及路由转发策略确定目标服务器包括:
若确定所述调用信息中并未存在所述强制路由信息时,判断所述调用信息中是否包含所述绑定服务器信息;
若存在,则根据所述绑定服务器规则,将所述绑定服务器信息对应的服务器确定为所述目标服务器。
可选的,所述路由转发策略还包括负载均衡规则,所述负载均衡规则用于在所述调用信息中不存在所述强制路由信息及所述绑定服务器信息时,基于多个所述服务器中的负载状态选取服务器;
所述根据所述调用信息及路由转发策略确定目标服务器包括:
若确定所述调用信息中并未存在所述强制路由信息和所述绑定服务器信息,从多个所述服务器中确定符合所述负载均衡规则的服务器作为所述目标服务器。
可选的,所述从多个所述服务器中确定符合所述负载均衡规则的服务器作为所述目标服务器,包括:
确定每个所述服务器的服务器权重,其中,所述服务器权重是根据每个服务器的服务器参数确定的,所述服务器参数至少包括服务器硬件性能参数、服务器吞吐量参数、服务器负载参数以及距离参数中四者之一,所述距离参数用于表征与每个所述服务器的拓扑距离,所述服务器权重分别与所述服务器硬件性能参数、服务器吞吐量参数呈正相关,所述服务器权重分别与服务器负载参数、距离参数均呈负相关;
根据每个所述服务器权重进行累加得到总权重;
依据所述总权重随机选取目标权重,并根据二分查找规则从多个所述服务器中确定所述目标服务器。
可选的,在所述从多个所述服务器中确定符合所述负载均衡规则的服务器作为所述目标服务器之后,所述方法还包括:
若在多个所述服务器中确定不存在符合所述负载均衡规则的服务器时,则获取拓扑网络,其中,所述拓扑网络为包含所有服务器的网络;
根据所述拓扑网络确定每个所述服务器的位置,并根据所述位置及每个所述服务器的服务器权重计算路径权重;
通过预设路径算法从多个所述路径权重中确定目标路径;
并根据所述目标路径发送所述调用信息。
可选的,在所述获取拓扑网络之前,所述方法还包括:
判断是否存在所述目标路径;
若存在,则依据所述目标路径确定目标服务器。
可选的,所述调用信息中还包括调用内容参数,所述调用内容参数用于表征需要执行调用操作的数据;
在所述根据所述调用信息及路由转发策略确定目标服务器之前,所述方法还包括:
通过哈希算法对所述调用内容参数计算得到对应的目标哈希值;
根据所述目标哈希值及预设哈希值映射关系,在本地缓存中判断是否存在对应所述目标哈希值的缓存数据,所述预设哈希值映射关系包含每个哈希值对应的缓存数据,所述缓存数据为对应所述调用内容参数的调用结果;
若存在,则依据所述缓存数据响应所述调用请求;
所述根据所述调用信息及路由转发策略确定目标服务器,包括:
若确定所述本地缓存中并未存在对应所述目标哈希值的缓存数据,则根据所述调用信息及路由转发策略确定目标服务器。
可选的,所述调用信息还包括接口信息;
在所述根据所述目标哈希值及预设哈希值映射关系,在本地缓存中判断是否存在对应所述目标哈希值的缓存数据之后,所述方法还包括:
若确定所述本地缓存并未存在对应所述目标哈希值的缓存数据,则根据所述接口信息确定对应所述调用信息的处理接口是否为RPC接口,并判断所述处理接口对应的目的进程是否为本地进程;
若所述处理接口并非RPC接口且所述处理接口对应的目的进程为本地进程,则根据预设调用方式调用所述处理接口,并基于所述处理接口获取目标数据;
其中,所述处理接口包括同步接口和异步接口,所述预设调用方式包括第一调方式、第二调用方式以及第三调用方式;
所述第一调用方式用于当所述处理接口为同步接口时,通过同步调用方式调用所述处理接口;
所述第二调用方式用于当所述处理接口为异步接口时,通过异步调用方式直接调用所述处理接口;
所述第三调用方式用于当所述处理接口为同步接口,且为输入输出接口或计算密集型接口时,通过工作线程调用所述处理接口。
可选的,所述调用信息还包括传输协议参数;
所述方法还包括:
若根据所述传输协议参数确定存在预设传输协议,则根据所述预设传输协议发送所述调用信息;
若根据所述传输协议参数确定并未存在预设传输协议,则根据已建立的长连接发送所述调用信息;
若根据所述传输协议参数确定并未存在预设传输协议,且确定未建立所述长连接,则根据内置协议规则建立所述长连接并根据所述长连接发送所述调用信息,所述内置协议规则用于根据预设协议优先级的先后顺序选取传输协议构建所述长连接;
若根据所述传输协议参数确定并未存在预设传输协议,且确定未建立所述长连接,并根据内置协议规则确定所述客户端不符合所述长连接的建立要求,则根据超文本传输协议发送所述调用信息。
可选的,所述调用信息中包含有调用信息传输协议,所述调用信息传输协议包括tcp协议、http协议、websocket协议、http2协议、以及quic协议中的至少一种。
可选的,所述调用信息是基于typescript语言编译后,利用protobuf转化算法转化的二进制的信息。
第二方面,本发明还提供了一种基于调用的通信装置,包括:
解析单元,用于获取调用信息,其中,所述调用信息是基于调用请求解析后得到的;
确定单元,用于根据所述调用信息及路由转发策略确定目标服务器,所述路由转发策略包括至少一条转发规则,每条所述转发规则用于基于所述调用信息从多个服务器中选取所述目标服务器,所述调用信息中包含选取路由转发策略的信息;
发送单元,用于将所述调用信息发送至所述目标服务器。
第三方面,本发明实施例还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行第一方面或第二方面中任意一项所述的基于调用的通信方法。
第四方面,本发明实施例还提供了一种设备,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,执行如第一方面或第二方面中任意一项所述基于调用的通信方法。
借由上述技术方案,本发明提供的基于调用的通信方法、装置、存储介质及设备,对于目前在面对复杂环境和场景时,现有的基于调用的通信方式难以满足转发功能的需求的问题,本发明通过获取调用信息,其中,所述调用信息是基于调用请求解析后得到的,然后根据所述调用信息及路由转发策略确定目标服务器,最后将所述调用信息发送至所述目标服务器,从而实现一种具备转发功能的基于调用的通信方法。在上述方案中,由于所述路由转发策略包括至少一条转发规则,每条所述转发规则用于基于所述调用信息从多个服务器中选取所述目标服务器,所述调用信息中包含选取路由转发策略的信息,也就是说当通过路由转发策略转发调用信息至目标服务器的过程中,可以确保在面对不同的业务场景时,都能够基于路由转发策略确定目标服务器,以便基于目标服务器实现基于远程调用的通信功能,相较于目前常规的通信方式较为僵化的问题,本发明的上述方法可以利用路由转发策略实现灵活调整目标服务器的效果,从而满足基于转发功能的通信需求。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种基于调用的通信方法流程示意图;
图2示出了本发明实施例提供的一种基于调用的通信方法具体执行步骤的流程示意图;
图3示出了本发明实施例提供的一种基于调用的通信方法具体执行步骤的流程示意图;
图4示出了本发明实施例提供的一种基于调用的通信方法具体执行步骤的流程示意图;
图5示出了本发明实施例提供的一种基于调用的通信装置的组成框图;
图6示出了本发明实施例提供的一种基于调用的通信设备的组成框图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
为了解决目前在面对复杂环境和场景时,现有的基于调用的通信方式较为僵化,难以满足转发功能的需求的问题,本发明实施例提供了一种基于调用的通信方法,如图1所示,该方法包括:
101、获取调用信息。
其中,所述调用信息是基于调用请求解析后得到的。
需要说明的是,在本实施例中,实际应用的场景可以是由客户服务器、转发服务器以及目标服务器形成的远程调用网络,或者是由客户服务器和目标服务器直接形成的远程调用网络,具体的属于上述哪种远程调用网络可以基于实际情况确定。基于本实施例所述方法的执行主体的不同,本步骤的具体实现方式也存在一定区别。
一方面,当执行本实施例的方法作为上述远程调用网络中的客户服务器时,本步骤中获取调用信息的方式可以为:
首先,检测是否存在调用请求。该调用请求可以理解为用于触发远程调用功能的请求。具体的,在检测是否存在调用请求的过程中包括但不限于下述方法:通过请求中的调用特征确定是否为调用请求,具体的判断方式可以通过调用的是否为RPC接口和/或本地进程是否为远程调用功能所需的进程,若调用RPC接口和/或所需进程非本地进程,则确定该请求确为调用请求。随后,基于该调用请求进行解析操作,得到对应的调用信息。该调用信息可以理解为用于确定远程调用服务或远程调用功能的指示信息,其中可以包含需要具体调用的数据或功能。
另一方面,当执行本实施例的方法作为上述远程调用网络中的转发服务器时,则本步骤中获取调用信息的方式可以为通过从客户服务器接收由客户服务器解析后得到的调用信息。
需要说明的是,在本步骤具体执行时,其执行方式可以是基于执行主体具体的类型确定。
102、根据所述调用信息及路由转发策略确定目标服务器。
其中,所述路由转发策略包括至少一条转发规则,每条所述转发规则用于基于所述调用信息从多个服务器中选取所述目标服务器,所述调用信息中包含选取路由转发策略的信息。
在解析出调用信息后,则可以基于路由转发策略来确定后续执行调用功能所需的服务器,即目标服务器。
其中,所述路由转发策略中包含一个或几个转发规则,每种转发规则都可以用于确定目标服务器的选取方式。其中,由于在通信过程中需要面对不同的业务场景,且不同业务场景所需的远程调用的执行需求是不同的,例如转发过程与目标服务器是否直连,转发时服务器的数量,以及远程调用时的延迟情况等需求。因此,在本实施例中需要基于该路由转发策略来对执行该调用信息的目标服务器进行确定。
在具体应用中,所述调用信息可以为RPC调用包,该RPC调用包中可以包含:RPC命令码、通讯协议、应用数据、状态数据、RPC配置选项等信息,其中,RPC命令码中包含了具体的服务调用信息;通讯协议:指定数据包在网络链路上的传输方式;应用数据:应用的具体数据,包含了编码信息已经加密后的数据;RPC配置选项:包含使用RPC所需求的一切选项。
由于路由转发策略中包含了至少一种转发规则,也就是说可以在解析出调用信息后,可以基于该调用信息和转发规则来确定执行调用信息对应的远程调用功能的服务器是哪一个,即目标服务器。
需要说明的是,在本实施例所述的方法在实际应用中,路由转发策略中包含的具体的转发规则的具体方式和数量可以基于用户在实际的远程调用过程所需进行选取和设置,在此不做限定,可以根据用户的实际需求选取。
103、将所述调用信息发送至所述目标服务器。
在确定了目标服务器后,也就确定了后续调用信息对应的远程调用功能执行时的服务器,这时可以将该调用信息发送到该目标服务器中,从而便于该目标服务器基于该调用信息实现远程调用某些数据或服务的功能。
基于前述步骤101所述可知,由于执行本实施例的方法可以是客户端也可以是转发服务器,当本步骤中确定了目标服务器后,实际上也就确定了执行远程调用功能的远程调用网络。当上述步骤的执行主体为客户端时,则可以确定本实施例所形成的网络是客户端和目标服务器二者;而当上述步骤的执行主体为转发服务器时,则说明在基于调用请求解析得到的调用信息后,是由转发服务器获取该调用信息并执行后续的目标服务器的确定过程,其形成的是由客户端、转发服务器和目标服务器三者形成的远程调用网络。
在上述方案中,由于所述路由转发策略包括至少一条转发规则,每条所述转发规则用于基于所述调用信息从多个服务器中选取所述目标服务器,所述调用信息中包含选取路由转发策略的信息,也就是说当通过路由转发策略转发调用信息至目标服务器的过程中,可以确保在面对不同的业务场景时,都能够基于路由转发策略确定目标服务器,以便基于目标服务器实现基于远程调用的通信功能,相较于目前常规的通信方式较为僵化的问题,本发明的上述方法可以利用路由转发策略实现灵活调整目标服务器的效果,从而满足基于转发功能的通信需求。
在一些实施例中,由于路由转发策略中可以设置了一种强制选取某个服务器作为目标服务器的规则,也就是说在远程调用的过程中可能已经预先设置了执行该远程调用功能的路由相关情况,因此,前述步骤中的路由转发策略可以包括强制路由规则,该强制路由规则可以理解为在所述调用信息中存在强制路由信息时优先使用所述强制路由信息对应的服务器;
基于此,前述步骤102中根据所述调用信息及路由转发策略确定目标服务器,在执行时可以包括:
判断所述调用信息中是否包含所述强制路由信息;
若存在,则根据所述强制路由规则,将所述强制路由信息对应的服务器确定为所述目标服务器。
在本实时例中,该强制路由可以理解为预先设置的,转发调用信息时适配远程调用功能的服务器。具体的,判断所述调用信息中是否包含所述强制路由信息可以通过判断调用信息中的强制路由对应的服务器标识判断,即判断是否有强制路由对应的服务器标识,当存在强制路由对应的服务器标识时,则说明该调用信息对应的远程调用功能具有已经设置的专门服务器,这样就可以将该强制路由信息对应的服务器确定为目标服务器。
通过判断所述调用信息中是否包含所述强制路由信息,并在确定调用信息中存在强制路由信息时,根据所述强制路由规则,将所述强制路由信息对应的服务器确定为所述目标服务器,能够确保在确定目标服务器的过程中直接基于强制路由规则确定,由于强制路由作为一种适配远程调用的业务场景的转发服务器,这不仅能够满足远程功能的调用,还能避免通过其他方式确定过程的时间,从而提高了整体的效率。
在一些实施例中,前述实施例中的路由转发策略还可以包括绑定服务器规则,该绑定服务器规则可以理解为在所述调用信息存在绑定服务器信息且不存在所述强制路由信息时,优先使用所述绑定服务器信息对应的服务器。也就是说,当调用信息中不存在强制路由信息时,则需要判断是否需要按照绑定服务器规则发送调用信息。
基于此,前述实施例中102根据所述调用信息及路由转发策略确定目标服务器,在执行时可以包括:
若确定所述调用信息中并未存在所述强制路由信息时,判断所述调用信息中是否包含所述绑定服务器信息;
若存在,则根据所述绑定服务器规则,将所述绑定服务器信息对应的服务器确定为所述目标服务器。需要说明的是,该绑定服务器信息可以从调用信息中的摘要数据中获取,当然,也可以在生成调用信息的过程中,在摘要数据之外的其他数据中添加该绑定服务器信息,具体的绑定服务器信息的位置和设置方式在此不做限定,可以根据实际的调用信息生成过程确定。
由于实际应用中,某些远程调用功能对于服务器有严格的要求,并不是任意一个服务器都能够实现的,因此,在确定不存在强制路由信息时,还需要判断是否预先已经设置好了绑定服务器,基于此,在本实施例中可以通过调用信息来判断其中是否存在绑定服务器信息,当存在该绑定服务器信息时,则可以基于路由转发策略中的绑定服务器规则,直接将绑定服务器信息对应的服务器确定为目标服务器。此外,绑定服务器信息对应的服务器可以为一或多个,当存在多个服务器时,可以任选其一或者依据预先设定的规则选择其一作为目标服务器。
由于上述方法在执行过程中是在确定能否采用强制路由进行调用信息转发未果的情况下执行的,确保了在调用信息中不存在强制路由信息且其包含绑定服务器信息时,可以按照绑定服务器规则确定目标服务器,从而使某些特殊场景和需求时,直接根据绑定服务器信息来确定目标服务器,以便按照所绑定的服务器进行远程调用功能的实现,继而避免通过其他方式确定目标服务器可能导致所选取的服务器不符合远程调用的某些特殊需求的情况。
在一些实施例中,由于调用信息中可能既没有强制路由信息,也没有绑定服务器信息,这时则需要考虑按照一定的负载情况来选取目标服务器,因此,前述实施例中路由转发策略还包括负载均衡规则,该负载均衡规则可以理解为在所述调用信息中不存在所述强制路由信息及所述绑定服务器信息时,基于多个所述服务器中的负载状态选取服务器;
基于此,前述实施例中102根据所述调用信息及路由转发策略确定目标服务器,在执行可以具体为:
若确定所述调用信息中并未存在所述强制路由信息和所述绑定服务器信息,从多个所述服务器中确定符合所述负载均衡规则的服务器作为所述目标服务器。
由于本实施例中的目标服务器是基于负载均衡规则确定的,能够从多个服务器中按照负载情况选取最为适合的一个作为执行后续调用信息对应的远程调用功能的服务器。这就避免了当存在多个服务器都能够执行远程调用功能,且未设置强制路由和绑定服务器的情况下,可以将负载较为适合的服务器确定为目标服务器,从而整体上避免在基于调用的通信过程中使用负载较大的服务器作为目标服务器从而影响远程调用功能的问题。
在一些实施例中,前述实施例的步骤中从多个所述服务器中确定符合所述负载均衡规则的服务器作为所述目标服务器,在具体执行时可以如图2所示,其中,包括:
201、确定每个所述服务器的服务器权重。
其中,所述服务器权重是根据每个服务器的服务器参数确定的,所述服务器参数至少包括服务器硬件性能参数、服务器吞吐量参数、服务器负载参数以及距离参数中四者之一,所述距离参数用于表征与每个所述服务器的拓扑距离,所述服务器权重分别与所述服务器硬件性能参数、服务器吞吐量参数呈正相关,所述服务器权重分别与服务器负载参数、距离参数均呈负相关。
需要说明的,在实际应用中,在确定服务器权重过程中,性能参数可以通过服务器的处理器性能、内存性能、网卡性能等进行计算,当然性能越好权重越高;而服务器吞吐量参数则是基于服务器当前实时的数据处理情况确定的,吞吐量越高权重越高;服务器负载参数则可以基于服务器当前的实时负载情况确定的,负载越大权重越低;距离参数则是根据服务器距离当前执行本实施例所述方法的执行主体的服务器之间的拓扑距离确定的,距离越大权重越低。
202、根据每个服务器权重进行累加得到总权重。
在确定了每个服务器中的服务器权重后,则可以进行累加计算,得到权重的之和,即总权重。
203、依据所述总权重随机选取目标权重,并根据二分查找规则从多个所述服务器中确定所述目标服务器。
其中,二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。另外时间复杂度即是上述过程的循环的次数。例如,总共有n个元素,按上述过程依次执行下去就是n,n/2,n/4,。。。。n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数,由于n/2^k取整后>=1,即令n/2^k=1,可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O(h)=O(log2n)。
这样,由于随机选取了的目标权重在1到总权重之间,而基于二分查找规则必然会在总权重中匹配到某个服务器。因为每台服务器的占比和权重占比一致,的因此每台服务器被选中的概率和权重占比相同,也就是说权重越大的服务器被选取的概率更高,而权重的大小能够反映了服务器当前转发效率(基于性能、吞吐量、负载和距离),也就是说基于上述方法能够确保更大的概率选取到转发效率较高的服务器,从而使本实施例所述的方法能够选取较为适合的服务器作为目标服务器,从而使远程调用功能实现过程中可以基于整体性能更好的服务器执行,可以提高远程调用功能的效率。
另外,当基于上述方法基于权重确定了目标服务器后,还可以将该目标服务器与该调用信息进行绑定,并生成对应的绑定服务器信息,也就是说当下次再执行调用信息对应的调用功能时,则可以直接基于前述实施例的方法,在检测到调用信息中包含该绑定服务器信息时直接确定该目标服务器作为后续执行远程调用功能的服务器,这样使后续再次需要进行远程调用的通信过程时,直接利用该目标服务器进行转发,提高了转发效率。
在上述过程中,无论是通过强制路由规则、绑定服务器规则还是负载均衡规则进行目标服务器的选取过程中,某种规则下都有可能存在多个符合条件的服务器,例如负载均衡规则下可能存在多个符合条件的服务器,这时在从多个符合上述规则的服务器中确定目标服务器时,还可以基于调用信息对应的实际业务场景进行选取,具体方式可以基于调用信息中的场景信息进行确定,其中,由于场景信息作为体现业务场景的具体数据,因此可以在基于场景信息确定了业务场景之后,则可以通过预设选取规则中包含的业务场景和对应的转发需求之间的对应关系来确定当前的业务场景对应的转发需求。该转发需求可以理解为在从多个服务器中选取最为适合的目标服务器的筛选条件或排序条件,这样就可以基于转发需求来确定多个服务器中哪一个是最符合转发需求的服务器作为目标服务器。
例如,业务场景可以包括超时敏感的场景、延时敏感的场景、高频通信的场景以及数据量较大的场景;同时与之对应的转发需求分别为:在超时敏感的场景,转发需求为需要确保转发时低于超时时间,且请求优先级要高于一定等级;在延时敏感的场景,转发需求为转发请求优先级要高于一定等级;在高频通信的场景,转发需求为优先使用长连接通信;在数据量较大的场景,转发需求为尽量少的转发跳数。
在本实施例中,由于能够基于业务场景和预设选取规则能够确定具体的转发需求,而转发需求将直接体现不同场景下对转发节点的转发情况的要求,因此,通过上述步骤能够基于转发需求确定第一服务器,实现了基于不同场景下实际的转发需求选取对应转发节点的功能,能够满足不同场景的转发需求,提高了本发明实施例所述方法的适用性。
在一些实施例中,由于通过上述强制路由规则、绑定服务器规则乃至负载均衡规则确定目标服务器的过程均为当前执行本实施例所述方法的服务器与目标服务器为直连的情况,也就是说前述实施例的方法在确定了目标服务器后,可以直接将该调用信息发送到目标服务器,而目标服务器在接收到调用信息后则可以直接对该调用信息对应的远程调用功能进行响应,但在实际应用中,还可能存在当前执行上述方法的服务器与目标服务器并非是直连的情况,其间可能需要至少一个中转服务器转发,即形成的远程调用网络可以为:客户服务器-转发服务器-中转服务器-目标服务器。在这种情况下,由于中转服务器的数量不是确定的,选择一条相对适合的路径至目标服务器就显得尤为重要。
基于此,在前述步骤中在所述从多个所述服务器中确定符合所述负载均衡规则的服务器作为所述目标服务器执行完成之后,所述方法还包括:
所述方法还可以如图3所示,其中包括:
301、若在多个所述服务器中确定不存在符合所述负载均衡规则的服务器时,则获取拓扑网络。
其中,所述拓扑网络为包含所有服务器的网络。由于拓扑网络能够体现执行本实施例所述方法的服务器与目标服务器之间所有服务器之间的拓扑连接关系,因此获取该拓扑网络后可以较为直观的确定当前执行本实施例所述方法的服务器至目标服务器之间的网络连接情况。
302、根据所述拓扑网络确定每个所述服务器的位置,并根据所述位置及每个所述服务器的服务器权重计算路径权重。
在本步骤中确定每条路径权重的方式可以基于距离服务器中的转发次数来确定每个服务器中的权重,并基于每条路径上的每个服务器中的权重确定每条路径的路径权重。
303、通过预设路径算法从多个路径权重中确定目标路径。
当确定了每条路径的路径权重后,实际上也就确定了对应从客户端至目标服务器的多个转发线路,每个路径权重即每条转发线路的分值,在具体实施过程中,若转发次数与权重呈正相关,则本步骤中预设路径算法则是从多个路径权重中选取权重值最小的最为目标路径,即转发次数最小。
当然,在本步骤中预设路径算法的选取和前述步骤中路径权重的计算方式相对应,当前述步骤中采用权重计算方式中每个服务器中的服务器权重是按照前述实施例中的方式确定时,则本步骤中选取目标路径的方式则可以为路径权重越大,越适合作为目标路径。需要说明的是,上述两种方式仅为示例性的,具体的选取方式可以根据用户的实际设置需求进行选取,在此不做限定。
304、根据所述目标路径发送所述调用信息。
在确定了目标路径之后,实际上就确定出了最为适合传输调用信息的一条转发路线,因此,可以直接基于该目标路径进行调用信息的发送。
在上述方法中,由于能够基于拓扑网络中每个服务器中的位置和服务器权重计算对应的每条路径的路径权重,并以此路径权重和预设路径算法确定目标路径,能够确保以转发线路的方式从多个节点之间的拓扑网络中选取最为适合的路径,从而确保了后续转发过程中调用信息的转发效率,从而整体上确保了基于调用的通信方法的效率。
需要说明的是,在当前执行上述方法的服务器确定了目标路径后,还可以将该目标路径保存在服务器本地中,当再次获取到调用信息后,则可以基于上述方法在确定不存在与当前服务器直连的目标服务器时,即基于路由转发策略中的三种规则判断后均未能确定适合的服务器作为目标服务器时,则可以在服务器本地中检测是否存在目标路径,若存在对应调用信息的目标路径时,则可以直接基于该目标路径进行调用信息的转发。
基于此,在一些实施例中,在前述实施例中所述获取拓扑网络之前,所述方法还可以包括:
判断是否存在所述目标路径;
若存在,则依据所述目标路径确定目标服务器。
在本实施例中,在确定无法基于强制路由规则、绑定服务器规则以及负载均衡规则进行目标服务器的确定时,说明不存在与当前执行本实施例方法的服务器直连的目标服务器,此时需要按照路径进行转发,但基于前述描述可知,在按照路径转发调用信息至目标服务器的过程中,可能在前一次实现远程调用功能过程中已经确定了最为适合的路径的情况,即目标路径。因此,在本实施例中还可以在获取拓扑路径以确定适合的路径之前,可以先在服务器本地进行目标路径的检测,当判断存在对应调用信息的目标路径时,则说明此前已经执行过远程调用,并已经选取了一条适合的转发路径,即目标路径,那么此时的远程调用的过程可以直接利用该目标路径即可。这样就节省了再次基于拓扑网络确定目标路径的时间,从而整体上可以提高基于调用的通信时的执行效率。
需要说明的是,在一些实施例中,当服务器作为前述示例中远程调用网络中的中转服务器时,在其获取到调用信息后,也可以按照前述实施例的方法基于路由转发策略进行目标服务器的确定。但由于前述步骤可知,由于发送调用信息的转发服务器实际上在拓扑网络中与中转服务器的位置不同,距离目标服务器也不同,此前转发服务器基于负载均衡规则无法确定出合适的服务器可能在中转服务器上能够确定出目标服务器,譬如转发服务器通过一个中转服务器与目标服务器形成连接,那么转发服务器虽然基于上述规则确定不出与之直连的目标服务器,但中转服务器确实与目标服务器直连,因此,中转服务器按照负载均衡规则就能够确定出目标服务器并发送调用信息。这时基于实际应用可知,前述步骤中转发服务器已经确定出了目标路径,而目标路径实际上是基于拓扑网络确定的,也就是说目标路径中的目标服务器与中转服务器基于上述方法确定出的目标服务器时一致的。因此,在实时应用中,当中转服务器接收到调用信息后可以分别按照两种方式来确定目标服务器:
一方面,可以基于上述实施例的方法,通过路由转发策略来确定目标服务器,即,通过路由转发策略及调用信息确定目标服务器,并将调用信息发送至目标服务器。此过程与前述实施例中的101至104中的过程类似,在此不做赘述。基于本步骤的方法,能够确定网络中的每个服务器在获取到调用信息后都能按照上述方式来确定目标服务器并转发调用信息,从而使得整个网络中的服务器都能够作为转发过程的控制点,尤其是当网络不稳定时,能够实时调整转发的过程,继而确保了远程调用功能的实现。
另一方面,还可以基于转发服务器中的目标路径确定目标服务器,即获取目标路径;根据目标路径在拓扑网路中确定目标服务器。其中,获取目标路径的方式可以通过向上游的服务器,即转发服务器通过请求的方式来获取,并在接收到响应得到目标路径后,根据目标路径在拓扑网路中确定对应的目标服务器。由于本步骤中可以直接基于目标路径确定目标服务器,这就节省了服务器自身确定目标服务器的时间,从而可以提高基于调用的通信过程的效率。
在一些实施例中,由于无论是哪一个服务器都可能是符合远程调用功能的服务器,因此,在基于调用信息进行转发时,还可以首先在获取到该调用信息的服务器本地判断是否当前的服务器就符合远程调用的功能。因此,所述调用信息中还可以包括调用内容参数,所述调用内容参数用于表征需要执行调用操作的数据;
在前述实施例102中根据所述调用信息及路由转发策略确定目标服务器之前,所述方法还包括:
401、通过哈希算法对所述调用内容参数计算得到对应的目标哈希值。
402、根据所述目标哈希值及预设哈希值映射关系,在本地缓存中判断是否存在对应所述目标哈希值的缓存数据。
其中,所述预设哈希值映射关系包含每个哈希值对应的缓存数据,所述缓存数据为对应所述调用内容参数的调用结果。
403、若存在,则依据所述缓存数据响应所述调用请求。
另一方面,当确定服务器本地中不存在符合条件的数据时,也就是说当前执行上述方法的服务器并不是目标服务器,也可以是当前服务器是目标服务器但是对应调用请求的缓存数据被删除了,或者是当前服务器未处理过类似调用请求,基于此,前述步骤中根据所述调用信息及路由转发策略确定目标服务器,执行时可以为:
404、若不存在,则根据所述调用信息及路由转发策略确定目标服务器。
基于本实施例的方法,由于哈希算法能够使数据经其处理后得到唯一的哈希值,这就使得在任意服务器获取到调用信息后都可以基于内容参数的哈希值与本地缓存中的数据进行对比,从而在本地缓存中的数据是否就已经符合远程调用功能的需要,即对应所述调用信息,从而使确定目标服务器时,能够直接将当前的服务器确定为目标服务器,节省了基于路由转发策略确定目标服务器的过程,还能够避免本地数据就符合远程调用功能的情况下通过其他服务器执行影响调用的通信效率的问题。
在一些实施例中,由于本地缓存中仅包含部分当前服务器获得过的数据,若不存在与目标哈希值对应的数据,并不意味着当前服务器并非目标服务器,因此,在确定调用请求的处理方式时,还需要结合其他信息来进行判断,基于此,所述调用信息还包括接口信息;
在前述步骤中根据所述目标哈希值及预设哈希值映射关系,在本地缓存中判断是否存在对应所述目标哈希值的缓存数据之后,所述方法还包括:
若确定所述本地缓存并未存在对应所述目标哈希值的缓存数据,则根据所述接口信息确定对应所述调用信息的处理接口是否为RPC接口,并判断所述处理接口对应的目的进程是否为本地进程;
若所述处理接口并非RPC接口且所述处理接口对应的目的进程为本地进程,则根据预设调用方式调用所述处理接口,并基于所述处理接口获取目标数据;
其中,所述处理接口包括同步接口和异步接口,所述预设调用方式包括第一调方式、第二调用方式以及第三调用方式;
所述第一调用方式用于当所述处理接口为同步接口时,通过同步调用方式调用所述处理接口;
所述第二调用方式用于当所述处理接口为异步接口时,通过异步调用方式直接调用所述处理接口;
所述第三调用方式用于当所述处理接口为同步接口,且为输入输出接口或计算密集型接口时,通过工作线程调用所述处理接口。
由于处理接口的种类不同,在调用过程中的方式也随之不同,这样在上述步骤中选取对应不同处理接口的调用方式执行,确保了调用功能的实现,避免了调用失败导致的基于调用的通信方法的整体失败。
为了确保发送调用信息的稳定性和效率,所述调用信息还包括传输协议参数;基于此,前述实施例在执行时,发送调用信息时还可以分别按照下述几方面来进行,其中包括:
一方面,若根据所述传输协议参数确定存在预设传输协议,则根据所述预设传输协议发送所述调用信息,这样可以确保在检测到右预设传输协议时直接利用该协议进行发送,可以在确保目标服务器正确接收的前提下还能确保快速确定传输调用信息的协议,整体上提高了传输的效率。
另一方面,若根据所述传输协议参数确定并未存在预设传输协议,则根据已建立的长连接发送所述调用信息,通过已建立的长连接发送调用信息能够确保正确发送调用信息的同时还能利用已有的通讯通道进行传输,避免了再次建立传输通道时的时间消耗。
又一方面,若根据所述传输协议参数确定并未存在预设传输协议,且确定未建立所述长连接,则根据内置协议规则建立所述长连接并根据所述长连接发送所述调用信息,所述内置协议规则用于根据预设协议优先级的先后顺序选取传输协议构建所述长连接;在本实施例中,预设协议优先级的顺序由高到低依次为quic协议、tcp协议、websocket协议及http2协议。这样,在确定不存在长连接的情况下通过上述几种协议按照优先级选取适合的协议进行长连接的建立可以确保传输过程中依赖长连接进行,避免了每次通信时需要单独建立连接的过程。
再一方面,若根据所述传输协议参数确定并未存在预设传输协议,且确定未建立所述长连接,并根据内置协议规则确定所述客户端不符合所述长连接的建立要求,则根据超文本传输协议,即http协议,发送所述调用信息。在确定不符合长连接建立的要求时通过超文本传输协议进行发送,能够确保在发送过程中转发节点与客户端之间无法长连接通信时的调用信息发送功能,使本实施例所述的方法更具适配性。
在一些实施例中,所述调用信息中包含有调用信息传输协议,所述调用信息传输协议包括tcp协议、http协议、websocket协议、http2协议、以及quic协议中的至少一种,这样,通过支持多种传输协议,可以确保本实施例所述的基于调用的通信方法能够适应较多的通信方式,提高了适应范围。
需要说明的是,在上述任一实施例所述的方法在具体应用中,其调用信息可以为RPC调用包,该RPC调用包中可以包含:RPC命令码、通讯协议、应用数据、状态数据、RPC配置选项等信息,其中,RPC命令码中包含了具体的服务调用信息;通讯协议:指定数据包在网络链路上的传输方式;应用数据:应用的具体数据,包含了编码信息已经加密后的数据;RPC配置选项:包含使用RPC所需求的一切选项。
其中,RPC命令码包括:服务器信息、服务类型、服务的接口,前述实施例中的目标服务器的相关信息可以添加到该RPC命令码中;
通讯协议包括:指定数据包在网络链路上的传输方式,支持数据包在多种协议间切换传输,具体的支持的以协议有包括tcp协议、http协议、websocket协议、http2协议及quic协议,前述实施例中的传输协议参数也可以在该通信协议中确定。
状态数据包括:用于标识请求唯一性的编码即RPC id、cookie信息、会话摘要,会话摘要为请求处理快速提供必要信息,减少路由过程中的io频率、传输状态以及其他系统状态。
RPC配置选项包含:强制路由信息;缓存选项,请求超时时限,转发次数阈值、网络协议设置,内置协议优先级等其他框架或业务选项。
在一些实施例中,所述调用信息是基于typescript语言编译后,利用protobuf转化算法转化的二进制的信息。
具体的,本步骤在过程中可以按照下述方式执行:
首先,使用typescript对进调用信息中RPC接口与调用信息的结构进行描述。其中,使用function描述RPC接口,使用interface描述RPC请求应答的相关信息以及RPC控制选项的相关信息。
然后,使用转换算法将typescript代码转化为protobuf代码,在数据传输时用protobuf直接进行序列化与反序列化。
最后,将typescript打包发布到各程序框架中,各程序框架可通过该typescript包进行类型化的RPC调用。
通过使用typescript对调用信息进行编译,可以使调用信息中的协议的相关信息高度类型化。支持protobuf和typescript的相互转换,充分利用了protobuf类型可扩展以及typescript协议类型化的优点,可以使得本实施例所述的方法兼容更多程序框架,具有更好的适应性。
此外,为了确保执行过程中,为了确保转发调用信息的时效性,在转发调用信息的过程中还可以基于预设的请求池中确定每个调用信息是否超时,并在超时情况下反馈至调用信息的发送方。具体的执行方式可以为:
收到RPC应答包(即反馈信息),根据RPC id(调用信息中的预设标识)从请求池中找到对应的请求;
将其从请求池中移除,记录缓存并执行一些请求后处理操作;
根据RPC请求信息,将RPC应答包应答给上一层的请求者;
如果RPC请求超时,超时的请求会自动从请求池中弹出,并将超时情况应答给上一层的请求者(即调用信息的发送方)。
进一步的,作为对上述图1及相关的多种实施例所示方法的实现,本发明实施例还提供了一种基于调用的通信装置,用于对上述图1以及上述多个实施例所示的方法进行实现。该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。如图5所示,该装置包括:
解析单元51,可以用于获取调用信息,其中,所述调用信息是基于调用请求解析后得到的;
确定单元52,可以用于根据所述解析单元51得到的调用信息及路由转发策略确定目标服务器,所述路由转发策略包括至少一条转发规则,每条所述转发规则可以用于基于所述调用信息从多个服务器中选取所述目标服务器,所述调用信息中包含选取路由转发策略的信息;
发送单元55,可以用于将所述调用信息发送至所述确定单元52确定的目标服务器。
借由上述技术方案,本发明实施例提供一种基于调用的通信方法、装置、存储介质及设备,对于目前在面对复杂环境和场景时,现
现有的基于调用的通信方式难以满足转发功能的需求的问题,本发明通过获取调用信息,其中,所述调用信息是基于调用请求解析后得到的,然后根据所述调用信息及路由转发策略确定目标服务器,最后将所述调用信息发送至所述目标服务器,从而实现一种具备转发功能的基于调用的通信方法。在上述方案中,由于所述路由转发策略包括至少一条转发规则,每条所述转发规则用于基于所述调用信息从多个服务器中选取所述目标服务器,所述调用信息中包含选取路由转发策略的信息,也就是说当通过路由转发策略转发调用信息至目标服务器的过程中,可以确保在面对不同的业务场景时,都能够基于路由转发策略确定目标服务器,以便基于目标服务器实现基于远程调用的通信功能,相较于目前常规的通信方式较为僵化的问题,本发明的上述方法可以利用路由转发策略实现灵活调整目标服务器的效果,从而满足基于转发功能的通信需求。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现一种自动化实现基于调用的通信方法,以解决现有的基于调用的通信方式难以满足转发功能的需求的问题。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述基于调用的通信方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述基于调用的通信方法。
本发明实施例提供了一种设备60,如图6所示,设备包括至少一个处理器601、以及与处理器连接的至少一个存储器602、总线603;其中,处理器601、存储器602通过总线603完成相互间的通信;处理器601用于调用存储器中的程序指令,以执行上述的基于调用的通信方法。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:获取调用信息,其中,所述调用信息是基于调用请求解析后得到的;根据所述调用信息及路由转发策略确定目标服务器,所述路由转发策略包括至少一条转发规则,每条所述转发规则用于基于所述调用信息从多个服务器中选取所述目标服务器,所述调用信息中包含选取路由转发策略的信息;将所述调用信息发送至所述目标服务器。
进一步的,所述路由转发策略包括强制路由规则,所述强制路由规则用于在所述调用信息中存在强制路由信息时优先使用所述强制路由信息对应的服务器;
所述根据所述调用信息及路由转发策略确定目标服务器,包括:
判断所述调用信息中是否包含所述强制路由信息;
若存在,则根据所述强制路由规则,将所述强制路由信息对应的服务器确定为所述目标服务器。
进一步的,所述路由转发策略还包括绑定服务器规则,所述绑定服务器规则用于在所述调用信息存在绑定服务器信息且不存在所述强制路由信息时,优先使用所述绑定服务器信息对应的服务器;
所述根据所述调用信息及路由转发策略确定目标服务器包括:
若确定所述调用信息中并未存在所述强制路由信息时,判断所述调用信息中是否包含所述绑定服务器信息;
若存在,则根据所述绑定服务器规则,将所述绑定服务器信息对应的服务器确定为所述目标服务器。
进一步的,所述路由转发策略还包括负载均衡规则,所述负载均衡规则用于在所述调用信息中不存在所述强制路由信息及所述绑定服务器信息时,基于多个所述服务器中的负载状态选取服务器;
所述根据所述调用信息及路由转发策略确定目标服务器包括:
若确定所述调用信息中并未存在所述强制路由信息和所述绑定服务器信息,从多个所述服务器中确定符合所述负载均衡规则的服务器作为所述目标服务器。
进一步的,所述从多个所述服务器中确定符合所述负载均衡规则的服务器作为所述目标服务器,包括:
确定每个所述服务器的服务器权重,其中,所述服务器权重是根据每个服务器的服务器参数确定的,所述服务器参数至少包括服务器硬件性能参数、服务器吞吐量参数、服务器负载参数以及距离参数中四者之一,所述距离参数用于表征与每个所述服务器的拓扑距离,所述服务器权重分别与所述服务器硬件性能参数、服务器吞吐量参数呈正相关,所述服务器权重分别与服务器负载参数、距离参数均呈负相关;
根据每个所述服务器权重进行累加得到总权重;
依据所述总权重随机选取目标权重,并根据二分查找规则从多个所述服务器中确定所述目标服务器。
进一步的,在所述从多个所述服务器中确定符合所述负载均衡规则的服务器作为所述目标服务器之后,所述方法还包括:
若在多个所述服务器中确定不存在符合所述负载均衡规则的服务器时,则获取拓扑网络,其中,所述拓扑网络为包含所有服务器的网络;
根据所述拓扑网络确定每个所述服务器的位置,并根据所述位置及每个所述服务器的服务器权重计算路径权重;
通过预设路径算法从多个所述路径权重中确定目标路径;
并根据所述目标路径发送所述调用信息。
进一步的,在所述获取拓扑网络之前,所述方法还包括:
判断是否存在所述目标路径;
若存在,则依据所述目标路径确定目标服务器。
进一步的,所述调用信息中还包括调用内容参数,所述调用内容参数用于表征需要执行调用操作的数据;
在所述根据所述调用信息及路由转发策略确定目标服务器之前,所述方法还包括:
通过哈希算法对所述调用内容参数计算得到对应的目标哈希值;
根据所述目标哈希值及预设哈希值映射关系,在本地缓存中判断是否存在对应所述目标哈希值的缓存数据,所述预设哈希值映射关系包含每个哈希值对应的缓存数据,所述缓存数据为对应所述调用内容参数的调用结果;
若存在,则依据所述缓存数据响应所述调用请求;
所述根据所述调用信息及路由转发策略确定目标服务器,包括:
若确定所述本地缓存中并未存在对应所述目标哈希值的缓存数据,则根据所述调用信息及路由转发策略确定目标服务器。
进一步的,所述调用信息还包括接口信息;
在所述根据所述目标哈希值及预设哈希值映射关系,在本地缓存中判断是否存在对应所述目标哈希值的缓存数据之后,所述方法还包括:
若确定所述本地缓存并未存在对应所述目标哈希值的缓存数据,则根据所述接口信息确定对应所述调用信息的处理接口是否为RPC接口,并判断所述处理接口对应的目的进程是否为本地进程;
若所述处理接口并非RPC接口且所述处理接口对应的目的进程为本地进程,则根据预设调用方式调用所述处理接口,并基于所述处理接口获取目标数据;
其中,所述处理接口包括同步接口和异步接口,所述预设调用方式包括第一调方式、第二调用方式以及第三调用方式;
所述第一调用方式用于当所述处理接口为同步接口时,通过同步调用方式调用所述处理接口;
所述第二调用方式用于当所述处理接口为异步接口时,通过异步调用方式直接调用所述处理接口;
所述第三调用方式用于当所述处理接口为同步接口,且为输入输出接口或计算密集型接口时,通过工作线程调用所述处理接口。
进一步的,所述调用信息还包括传输协议参数;
所述方法还包括:
若根据所述传输协议参数确定存在预设传输协议,则根据所述预设传输协议发送所述调用信息;
若根据所述传输协议参数确定并未存在预设传输协议,则根据已建立的长连接发送所述调用信息;
若根据所述传输协议参数确定并未存在预设传输协议,且确定未建立所述长连接,则根据内置协议规则建立所述长连接并根据所述长连接发送所述调用信息,所述内置协议规则用于根据预设协议优先级的先后顺序选取传输协议构建所述长连接;
若根据所述传输协议参数确定并未存在预设传输协议,且确定未建立所述长连接,并根据内置协议规则确定所述客户端不符合所述长连接的建立要求,则根据超文本传输协议发送所述调用信息。
进一步的,所述调用信息中包含有调用信息传输协议,所述调用信息传输协议包括tcp协议、http协议、websocket协议、http2协议、以及quic协议中的至少一种。
进一步的,所述调用信息是基于typescript语言编译后,利用protobuf转化算法转化的二进制的信息。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种基于调用的通信方法,其特征在于,包括:
获取调用信息,其中,所述调用信息是基于调用请求解析后得到的,所述调用信息包括传输协议参数;
根据所述调用信息及路由转发策略确定目标服务器,所述路由转发策略包括至少一条转发规则,每条所述转发规则用于基于所述调用信息从多个服务器中选取所述目标服务器,所述调用信息中包含选取路由转发策略的信息;
若根据所述传输协议参数确定存在预设传输协议,则根据所述预设传输协议发送所述调用信息至所述目标服务器;
若根据所述传输协议参数确定并未存在预设传输协议,则根据已建立的长连接发送所述调用信息至所述目标服务器;
若根据所述传输协议参数确定并未存在预设传输协议,且确定未建立所述长连接,则根据内置协议规则建立所述长连接并根据所述长连接发送所述调用信息,所述内置协议规则用于根据预设协议优先级的先后顺序选取传输协议构建所述长连接,以通过构建的所述长连接发送所述调用信息至所述目标服务器;
若根据所述传输协议参数确定并未存在预设传输协议,且确定未建立所述长连接,并根据内置协议规则确定客户端不符合所述长连接的建立要求,则根据超文本传输协议发送所述调用信息至所述目标服务器;
其中,所述路由转发策略包括强制路由规则,所述强制路由规则用于在所述调用信息中存在强制路由信息时优先使用所述强制路由信息对应的服务器;所述根据所述调用信息及路由转发策略确定目标服务器,包括:
判断所述调用信息中是否包含所述强制路由信息;
若存在,则根据所述强制路由规则,将所述强制路由信息对应的服务器确定为所述目标服务器。
2.根据权利要求1所述的方法,其特征在于,所述路由转发策略还包括绑定服务器规则,所述绑定服务器规则用于在所述调用信息存在绑定服务器信息且不存在所述强制路由信息时,优先使用所述绑定服务器信息对应的服务器;
所述根据所述调用信息及路由转发策略确定目标服务器包括:
若确定所述调用信息中并未存在所述强制路由信息时,判断所述调用信息中是否包含所述绑定服务器信息;
若存在,则根据所述绑定服务器规则,将所述绑定服务器信息对应的服务器确定为所述目标服务器。
3.根据权利要求2所述的方法,其特征在于,所述路由转发策略还包括负载均衡规则,所述负载均衡规则用于在所述调用信息中不存在所述强制路由信息及所述绑定服务器信息时,基于多个所述服务器中的负载状态选取服务器;
所述根据所述调用信息及路由转发策略确定目标服务器包括:
若确定所述调用信息中并未存在所述强制路由信息和所述绑定服务器信息,从多个所述服务器中确定符合所述负载均衡规则的服务器作为所述目标服务器。
4.根据权利要求3所述的方法,其特征在于,所述从多个所述服务器中确定符合所述负载均衡规则的服务器作为所述目标服务器,包括:
确定每个所述服务器的服务器权重,其中,所述服务器权重是根据每个服务器的服务器参数确定的,所述服务器参数至少包括服务器硬件性能参数、服务器吞吐量参数、服务器负载参数以及距离参数中四者之一,所述距离参数用于表征与每个所述服务器的拓扑距离,所述服务器权重分别与所述服务器硬件性能参数、服务器吞吐量参数呈正相关,所述服务器权重分别与服务器负载参数、距离参数均呈负相关;
根据每个所述服务器权重进行累加得到总权重;
依据所述总权重随机选取目标权重,并根据二分查找规则从多个所述服务器中确定所述目标服务器。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若在多个所述服务器中确定不存在符合所述负载均衡规则的服务器时,则获取拓扑网络,其中,所述拓扑网络为包含所有服务器的网络;
根据所述拓扑网络确定每个所述服务器的位置,并根据所述位置及每个所述服务器的服务器权重计算路径权重;
通过预设路径算法从多个所述路径权重中确定目标路径;
根据所述目标路径发送所述调用信息。
6.根据权利要求5所述的方法,其特征在于,在所述获取拓扑网络之前,所述方法还包括:
判断是否存在所述目标路径;
若存在,则依据所述目标路径确定目标服务器。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述调用信息中还包括调用内容参数,所述调用内容参数用于表征需要执行调用操作的数据;
在所述根据所述调用信息及路由转发策略确定目标服务器之前,所述方法还包括:
通过哈希算法对所述调用内容参数计算得到对应的目标哈希值;
根据所述目标哈希值及预设哈希值映射关系,在本地缓存中判断是否存在对应所述目标哈希值的缓存数据,所述预设哈希值映射关系包含每个哈希值对应的缓存数据,所述缓存数据为对应所述调用内容参数的调用结果;
若存在,则依据所述缓存数据响应所述调用请求。
8.根据权利要求7所述的方法,其特征在于,所述调用信息还包括接口信息;
在所述根据所述目标哈希值及预设哈希值映射关系,在本地缓存中判断是否存在对应所述目标哈希值的缓存数据之后,所述方法还包括:
若确定所述本地缓存并未存在对应所述目标哈希值的缓存数据,则根据所述接口信息确定对应所述调用信息的处理接口是否为RPC接口,并判断所述处理接口对应的目的进程是否为本地进程;
若所述处理接口并非RPC接口且所述处理接口对应的目的进程为本地进程,则根据预设调用方式调用所述处理接口,并基于所述处理接口获取目标数据。
9.根据权利要求1所述的方法,其特征在于,所述调用信息是基于typescript语言编译后,利用protobuf转化算法转化的二进制的信息。
10.一种基于调用的通信装置,其特征在于,包括:
解析单元,用于获取调用信息,其中,所述调用信息是基于调用请求解析后得到的,所述调用信息包括传输协议参数;
确定单元,用于根据所述调用信息及路由转发策略确定目标服务器,所述路由转发策略包括至少一条转发规则,每条所述转发规则用于基于所述调用信息从多个服务器中选取所述目标服务器,所述调用信息中包含选取路由转发策略的信息;
发送单元,用于若根据所述传输协议参数确定存在预设传输协议,则根据所述预设传输协议发送所述调用信息至所述目标服务器;若根据所述传输协议参数确定并未存在预设传输协议,则根据已建立的长连接发送所述调用信息至所述目标服务器;若根据所述传输协议参数确定并未存在预设传输协议,且确定未建立所述长连接,则根据内置协议规则建立所述长连接并根据所述长连接发送所述调用信息,所述内置协议规则用于根据预设协议优先级的先后顺序选取传输协议构建所述长连接,以通过构建的所述长连接发送所述调用信息至所述目标服务器;若根据所述传输协议参数确定并未存在预设传输协议,且确定未建立所述长连接,并根据内置协议规则确定客户端不符合所述长连接的建立要求,则根据超文本传输协议发送所述调用信息至所述目标服务器;
其中,所述路由转发策略包括强制路由规则,所述强制路由规则用于在所述调用信息中存在强制路由信息时优先使用所述强制路由信息对应的服务器;所述根据所述调用信息及路由转发策略确定目标服务器,包括:
判断所述调用信息中是否包含所述强制路由信息;
若存在,则根据所述强制路由规则,将所述强制路由信息对应的服务器确定为所述目标服务器。
11.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1-9中任一项所述的基于调用的通信方法。
12.一种基于调用的通信设备,其特征在于,所述通信设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,执行如权利要求1-9中任一项所述基于调用的通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111015022.1A CN113765805B (zh) | 2021-08-31 | 2021-08-31 | 基于调用的通信方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111015022.1A CN113765805B (zh) | 2021-08-31 | 2021-08-31 | 基于调用的通信方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113765805A CN113765805A (zh) | 2021-12-07 |
CN113765805B true CN113765805B (zh) | 2023-10-20 |
Family
ID=78792245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111015022.1A Active CN113765805B (zh) | 2021-08-31 | 2021-08-31 | 基于调用的通信方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113765805B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222108A (zh) * | 2011-06-28 | 2011-10-19 | 用友软件股份有限公司 | 脚本处理方法和脚本处理装置 |
CN106657287A (zh) * | 2016-11-30 | 2017-05-10 | 广州市千钧网络科技有限公司 | 一种数据访问方法及系统 |
CN108289060A (zh) * | 2017-01-09 | 2018-07-17 | 腾讯科技(深圳)有限公司 | 一种基于rpc服务的数据处理方法以及装置 |
CN109218181A (zh) * | 2018-10-30 | 2019-01-15 | 北京大米科技有限公司 | 一种数据传输的方法、装置及电子设备 |
CN109542641A (zh) * | 2018-11-14 | 2019-03-29 | 中国联合网络通信集团有限公司 | 服务调用方法、装置及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170034311A1 (en) * | 2015-07-30 | 2017-02-02 | Netapp, Inc. | Method for selecting between multiple RPC frameworks during a TCP/IP session |
US11277338B2 (en) * | 2016-09-26 | 2022-03-15 | Juniper Networks, Inc. | Distributing service function chain data and service function instance data in a network |
US10708185B2 (en) * | 2017-11-30 | 2020-07-07 | Cisco Technology, Inc. | Dynamic next-hop selection for routes in a network fabric |
US10652077B2 (en) * | 2018-08-31 | 2020-05-12 | Subcom, Llc | Techniques for interfacing between web services and interface description language (IDL)-based remote procedure call (RPC) services and an optical communication system implementing same |
EP3977712A1 (en) * | 2019-05-31 | 2022-04-06 | ADVA Optical Networking SE | Transparent multiplexing of ip endpoints |
-
2021
- 2021-08-31 CN CN202111015022.1A patent/CN113765805B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222108A (zh) * | 2011-06-28 | 2011-10-19 | 用友软件股份有限公司 | 脚本处理方法和脚本处理装置 |
CN106657287A (zh) * | 2016-11-30 | 2017-05-10 | 广州市千钧网络科技有限公司 | 一种数据访问方法及系统 |
CN108289060A (zh) * | 2017-01-09 | 2018-07-17 | 腾讯科技(深圳)有限公司 | 一种基于rpc服务的数据处理方法以及装置 |
CN109218181A (zh) * | 2018-10-30 | 2019-01-15 | 北京大米科技有限公司 | 一种数据传输的方法、装置及电子设备 |
CN109542641A (zh) * | 2018-11-14 | 2019-03-29 | 中国联合网络通信集团有限公司 | 服务调用方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
朱荣鑫等.《Go语言高并发与微服务实战》.中国铁道出版社,2020,正文第168-171页. * |
Also Published As
Publication number | Publication date |
---|---|
CN113765805A (zh) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105099989B (zh) | 用于处理业务请求及获取业务处理结果的方法、装置和系统 | |
EP4195594A1 (en) | Congestion control method and apparatus, network node device and computer-readable storage medium | |
CN111901157B (zh) | 一种基于k8s的服务部署方法、装置、设备、介质 | |
CN108206788B (zh) | 一种流量的业务识别方法及相关设备 | |
WO2023221452A1 (zh) | 报文处理系统、方法、设备和存储介质 | |
CN112087382A (zh) | 一种服务路由方法及装置 | |
CN113315848B (zh) | 访问控制方法、装置及设备 | |
CN111600929B (zh) | 传输线路探测方法、路由策略生成方法及代理服务器 | |
CN113328927A (zh) | 一种具有计算、存储和网络交换功能的工业物联网网关 | |
CN113765805B (zh) | 基于调用的通信方法、装置、存储介质及设备 | |
WO2024032011A1 (zh) | Cdn调度方法、cdn调度系统、存储介质 | |
CN112749015A (zh) | 负载均衡方法及装置 | |
CN112104566B (zh) | 一种负载均衡的处理方法和装置 | |
CN114124778B (zh) | 一种基于QoS约束的任播服务源路由方法及装置 | |
CN114697269A (zh) | 数据通信方法、装置、设备和介质 | |
WO2017193814A1 (zh) | 一种业务链生成方法及系统 | |
KR102526770B1 (ko) | 추가의 네트워크 주소 변환 테이블을 참조하여 빠른 패킷 포워딩을 제공하는 전자 장치 | |
CN114490458A (zh) | 数据传输方法、芯片、服务器以及存储介质 | |
CN109600421B (zh) | 一种无线云计算系统中分布式计算资源的选择方法 | |
CN114374649A (zh) | 混合路由方法、装置和网络设备 | |
CN111818134A (zh) | 变电站数据中心内基于雾计算的数据传输方法及装置 | |
CN112596893B (zh) | 用于多节点边缘计算设备的监控方法和系统 | |
KR101686186B1 (ko) | 핸드오버 대기시간 감소를 위한 핸드오버 수행방법 및 모바일 무선 네트워크 시스템 | |
CN111464442B (zh) | 对数据包进行路由的方法和装置 | |
CN114553965B (zh) | 内网设备的调度方法、网络设备及存储介质 |
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 |