CN110381058B - 基于全双工通信协议WebSocket的请求传输方法及装置 - Google Patents

基于全双工通信协议WebSocket的请求传输方法及装置 Download PDF

Info

Publication number
CN110381058B
CN110381058B CN201910652159.4A CN201910652159A CN110381058B CN 110381058 B CN110381058 B CN 110381058B CN 201910652159 A CN201910652159 A CN 201910652159A CN 110381058 B CN110381058 B CN 110381058B
Authority
CN
China
Prior art keywords
websocket
target
micro
service
service instance
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
Application number
CN201910652159.4A
Other languages
English (en)
Other versions
CN110381058A (zh
Inventor
尹强
刘有
王和平
黄山
杨峙岳
邸帅
卢道和
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank 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 WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN201910652159.4A priority Critical patent/CN110381058B/zh
Publication of CN110381058A publication Critical patent/CN110381058A/zh
Priority to PCT/CN2020/102220 priority patent/WO2021008567A1/zh
Application granted granted Critical
Publication of CN110381058B publication Critical patent/CN110381058B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • 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]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了基于全双工通信协议WebSocket的请求传输方法及装置,其中方法为:目标转发器确定第一WebSocket请求对应的至少一个目标微服务实例;针对所述至少一个目标微服务实例中的每个目标微服务实例,所述目标转发器通过所述目标微服务实例对应的第一WebSocket通道发送所述第一WebSocket请求至所述目标微服务实例。上述方法应用于金融科技(Fintech)领域时,目标转发器可以同时与多个微服务的微服务实例进行通信传输,提升了WebSocket请求传输的灵活性。

Description

基于全双工通信协议WebSocket的请求传输方法及装置
技术领域
本发明涉及金融科技(Fintech)领域中的WebSocket请求传输领域,尤其涉及基于全双工通信协议WebSocket的请求传输方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链(Blockchain)、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变。目前,金融科技领域中,随着微服务的兴起,为实现金融信息的交互,金融业务的使用方一般通过WebSocket客户端发送WebSocket请求,再经由中间件转发WebSocket请求至相应微服务,从这个相应微服务获取服务。
微服务包括多个微服务实例,WebSocket请求的处理由某个微服务实例来完成。然而,目前方法中,把应用程序按功能划分的微服务的组合,作为一个整体的微服务,WebSocket客户端将WebSocket请求传输给这个整体微服务,再由这个整体微服务实现WebSocket请求的处理。显然,这种“一对一”WebSocket请求的传输方式违背了微服务之间彼此独立、相互协调、互相配合的理念,不能与多个微服务建立对应关系,导致WebSocket请求传输的灵活性较低。
发明内容
本申请实施例提供了基于全双工通信协议WebSocket的请求传输方法及装置,解决了现有技术中WebSocket请求传输的灵活性较低的问题。
第一方面,本申请实施例提供一种基于全双工通信协议WebSocket的请求传输方法:目标转发器确定第一WebSocket请求对应的至少一个目标微服务实例;所述至少一个目标微服务实例用于处理所述WebSocket请求;针对所述至少一个目标微服务实例中的每个目标微服务实例,所述目标转发器通过所述目标微服务实例对应的第一WebSocket通道发送所述第一WebSocket请求至所述目标微服务实例;所述第一WebSocket通道是所述目标转发器与所述目标微服务实例之间的传输通道。
上述方法下,目标转发器确定第一WebSocket请求对应的至少一个目标微服务实例;所述至少一个目标微服务实例用于处理所述WebSocket请求,确定WebSocket请求对应的至少一个目标微服务实例,即在转发之前WebSocket请求将要发送给哪些目标微服务实例,对于每个目标微服务实例,目标转发器通过目标微服务实例对应的第一WebSocket通道发送所述第一WebSocket请求至所述目标微服务实例;所述第一WebSocket通道是所述目标转发器与所述目标微服务实例对应的微服务之间的传输通道,从而目标转发器可以通过每个目标微服务实例第一WebSocket通道,将WebSocket请求发送至指定的目标微服务实例,从而可以同时与多个微服务的微服务实例进行通信传输,提升了WebSocket请求传输的灵活性。
一种可选实施方式中,所述目标转发器通过所述目标微服务实例对应的第一WebSocket通道发送所述第一WebSocket请求至所述目标微服务实例之前,还包括:所述目标转发器确定是否已建立所述目标微服务实例对应的第一WebSocket通道;若未建立,则与所述目标微服务实例对应的微服务之间建立所述第一WebSocket通道。
上述方法中,所述目标转发器确定是否已建立所述目标微服务实例对应的第一WebSocket通道;若未建立,则与所述目标微服务实例对应的微服务之间建立所述第一WebSocket通道,因此可以保证目标转发器与目标微服务实例能够实时第一WebSocket通道,从而保证了WebSocket请求传输的可靠性。
一种可选实施方式中,所述目标转发器确定第一WebSocket请求对应的至少一个目标微服务实例之前,还包括:所述目标转发器通过第二WebSocket通道获取所述第一WebSocket请求;所述第二WebSocket通道是所述客户端与所述目标转发器之间的传输通道。
上述方法中,所述目标转发器通过第二WebSocket通道从客户端获取所述第一WebSocket请求,从而提供了一种从客户端获取WebSocket请求的方法。
一种可选实施方式中,所述与所述目标微服务实例对应的微服务之间建立所述第一WebSocket通道之后,还包括:所述目标转发器将所述第一WebSocket通道与所述第二WebSocket通道绑定。
上述方式下,第一WebSocket通道与第二WebSocket通道绑定,从而二者建立了关联关系,方便后续来自第二WebSocket通道的信息转发通过第一WebSocket通道转发至客户端。
一种可选实施方式中,所述目标转发器确定所述第二WebSocket通道断开时,断开与该第二WebSocket通道绑定的一个或多个第一WebSocket通道。
上述方式下,由于当第二WebSocket通道断开时,目标转发器就不会通过第二WebSocket通道接收WebSocket请求,即便与该第二WebSocket通道绑定的一个或多个第一WebSocket通道存在,也不会有转发WebSocket请求需求,从而及时释放与该第二WebSocket通道绑定的一个或多个第一WebSocket通道,节约资源。
一种可选实施方式中,在所述目标转发器确定所述第二WebSocket通道断开后,所述目标转发器按照预设周期,通过与该第二WebSocket通道绑定的一个或多个第一WebSocket通道发送心跳请求包。
目标转发器按照预设周期,通过与该第二WebSocket通道绑定的一个或多个第一WebSocket通道发送心跳请求包,从而可长期维护一个或多个第一WebSocket通道不因为空闲被释放,也可以及时知悉一个或多个第一WebSocket通道的状态。
所述目标转发器确定第一WebSocket请求对应的至少一个目标微服务实例,包括:所述目标转发器根据预设规则,确定所述第一WebSocket请求对应的至少一个目标微服务;针对所述至少一个目标微服务中每个目标微服务,所述目标转发器将该目标微服务的至少一个微服务实例中负载率最小的微服务实例,作为该目标微服务的目标微服务实例。
上述方法中,确定所述第一WebSocket请求对应的至少一个目标微服务后,将该目标微服务的至少一个微服务实例中负载率最小的微服务实例,作为该目标微服务的目标微服务实例,从而保证负载最小的微服务实例优先处理第一WebSocket请求,促进了微服务中各微服务实例的负载均衡。
第二方面,本申请提供一种基于WebSocket的请求传输装置,包括:确定模块,用于确定第一WebSocket请求对应的至少一个目标微服务实例;所述至少一个目标微服务实例用于处理所述WebSocket请求;处理模块,用于针对所述至少一个目标微服务实例中的每个目标微服务实例,通过所述目标微服务实例对应的第一WebSocket通道发送所述第一WebSocket请求至所述目标微服务实例;所述第一WebSocket通道是与所述目标微服务实例之间的传输通道。
一种可选实施方式中,所述确定模块还用于:确定是否已建立所述目标微服务实例对应的第一WebSocket通道;若未建立,则与所述目标微服务实例对应的微服务之间建立所述第一WebSocket通道。
一种可选实施方式中,所述处理模块还用于:通过第二WebSocket通道获取所述第一WebSocket请求;所述第二WebSocket通道是所述客户端与之间的传输通道。
一种可选实施方式中,所述处理模块还用于:将所述第一WebSocket通道与所述第二WebSocket通道绑定。
一种可选实施方式中,所述确定模块还用于:确定所述第二WebSocket通道断开时,断开与该第二WebSocket通道绑定的一个或多个第一WebSocket通道。
一种可选实施方式中,所述处理模块还用于:在确定所述第二WebSocket通道断开后,按照预设周期,通过与该第二WebSocket通道绑定的一个或多个第一WebSocket通道发送心跳请求包。
一种可选实施方式中,所述确定模块具体用于:所述确定模块具体用于:根据预设规则,确定所述第一WebSocket请求对应的至少一个目标微服务;针对所述至少一个目标微服务中每个目标微服务,将该目标微服务的至少一个微服务实例中负载率最小的微服务实例,作为该目标微服务的目标微服务实例。
上述第二方面及第二方面各个实施例的有益效果,可以参考上述第一方面及第一方面各个实施例的有益效果,这里不再赘述。
第三方面,本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。
第四方面,本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个实施例的方法。
附图说明
图1为本申请实施例提供的一种基于WebSocket请求的传输方法可应用的架构示意图;
图2为本申请实施例提供的一种基于WebSocket请求的传输方法可应用的目标转发器的结构示意图;
图3为本申请实施例提供的一种基于WebSocket请求的传输方法的步骤流程示意图;
图4为本申请实施例提供的一种基于WebSocket请求的传输装置的结构示意图。
具体实施方式
为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互结合。
为方便叙述,首先列出本申请出现的缩略语和名词。
微服务:微服务提倡将单一应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务和服务之间采用轻量级的通信机制相互沟通。
微服务应用程序接口(API)网关:API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。
WebSocket:超文本标记语言HTML5开始提供的一种浏览器与服务器进行全双工通讯网络技术,属于应用层协议。它基于传输控制协议(Transmission Control Protocol,TCP),并复用HTTP的握手通道。
Spring Cloud Gateway:该项目提供了一个用于在Spring MVC之上构建API网关的库。Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到API,并为他们提供横切关注点。Spring Cloud Gateway具有以下功能:(1)基于Spring Framework 5,ProjectReactor和Spring Boot 2.0构建;(2)能够匹配任何请求属性上的路由;(3)Hystrix熔断器集成;(4)Spring Cloud DiscoveryClient集成;(5)请求率限制;(6)路径重写。
随着微服务的兴起,网关API作为所有微服务的唯一入口,提供统一的身份验证、请求转发、监控、负载均衡功能,是所有微服务体系都必须支持的基础服务。然而市面上已有的网关API,无法完成一个WebSocket客户端通过网关API对接后台多个WebSocket服务器的需求,因此只能将多个彼此独立的WebSocket服务合成一个服务对外提供服务,违背了微服务提倡的将单一应用程序划分成一组小的服务,服务之间彼此独立、相互协调、互相配合的理念。
如图1所示,为本申请实施例提供的一种基于WebSocket的请求传输方法可应用的架构示意图。
该架构基于运行库实现目标转发器。其中,运行库可以为Spring Cloud Gateway,目标转发器用于与客户端建立WebSocket连接,建立连接成功后,会自动分析客户端的WebSocket请求,通过规则判断出请求该转发给哪个后端微服务,从而将WebSocket请求转发给对应的后端微服务实例。
具体地,客户端中运行着浏览器以及基于WebSocket的WebSocket客户端,用户可以在浏览器点击按钮等方式,生成WebSocket请求,并通过客户端中的WebSocket客户端将WebSocket请求转发给目标转发器。
目标转发器,向上对接客户端的WebSocket请求,向下对接后端微服务的多个WebSocket微服务实例,可以直接将从客户端接收到的WebSocket请求发送给WebSocket微服务中的实例。需要说明的是,本申请实施例中,目标转发器还可以称为WebSocket路由转发器、WebSocket请求转发器等。
后端微服务中运行着多个WebSocket微服务,每个WebSocket微服务又有一个或多个实例,WebSocket微服务和WebSocket微服务中的实例个数不限,仅以图1示出的WebSocket微服务1~3为例说明该过程。
下面基于图1,详细介绍目标转发器,如图2所示,为本申请实施例提供的一种基于WebSocket请求的传输方法可应用的目标转发器的结构示意图。
该架构的整体结构如下:
WebSocket接收器包括WebSocket连接创建器和WebSocket请求处理器。其中,WebSocket连接创建器负责接收客户端的WebSocket创建连接请求,连接建立后,同时接收WebSocket请求。WebSocket请求处理器接收到的请求处理后,传递给规则器。
规则器包括服务发现和规则器。服务发现可以获取后端微服务中微服务及微服务实例的列表,服务发现具体可以通过Eureka来实现,Eureka是一个服务发现框架,本身是一个基于REST的服务。规则器可以通过使用各种规则,为客户端的WebSocket请求选择的后端微服务实例进行WebSocket请求转发,再传递给目标转发器。
WebSocket传输中心负责建立与后端微服务实例的WebSocket通道,将客户端的请求通过新的WebSocket通道,转发给对应后端微服务实例,同时负责将后端微服务实例实时推送的信息,通过与客户端建立的WebSocket通道,推送给客户端。需要说明的是,本申请实施例中,WebSocket通道与WebSocket连接含义相同。
下面结合本申请实施例提供的基于WebSocket的请求传输方法,详细说明图2示出架构的各个部分。如图3所示,为本申请实施例提供的一种基于WebSocket的请求传输方法的步骤流程示意图。
步骤301:目标转发器确定第一WebSocket请求对应的至少一个目标微服务实例。
至少一个目标微服务实例用于处理WebSocket请求。
步骤302:针对至少一个目标微服务实例中的每个目标微服务实例,目标转发器通过目标微服务实例对应的第一WebSocket通道发送第一WebSocket请求至目标微服务实例。
第一WebSocket通道是目标转发器与目标微服务实例之间的传输通道。
步骤301之前,一种可选实施方式为:
所述目标转发器通过第二WebSocket通道获取所述第一WebSocket请求;所述第二WebSocket通道是所述客户端与所述目标转发器之间的传输通道。
上述方法中,所述目标转发器通过第二WebSocket通道从客户端获取所述第一WebSocket请求,从而提供了一种从客户端获取WebSocket请求的方法。
在此基础上,目标转发器还可以将所述第一WebSocket通道与所述第二WebSocket通道绑定。上述方式下,第一WebSocket通道与第二WebSocket通道绑定,从而二者建立了关联关系,方便后续来自第二WebSocket通道的信息转发通过第一WebSocket通道转发至客户端。
举例来说,采用图2示出的WebSocket接收器来执行上述可选实施方式,WebSocket接收器可以是Spring Cloud Gateway的一个全局过滤器,用于接收客户端的WebSocket连接请求,创建客户端与Spring Cloud Gateway的WebSocket通信通道。同时,WebSocket接收器会监听该WebSocket通道,将客户端发送过来的请求,获取必要的基本信息(如请求地址、统一资源定位符(URL)和用户名等),进行简单的封装,传递给规则器进行处理。
步骤301中,可通过图2示出的规则器来选择微服务实例。规则器接收到WebSocket接收器的通知,开始使用规则进行处理。其中,规则器包括URL规则器和自定义规则器。目标转发器可按照以下方式,根据预设规则,确定第一WebSocket请求对应的至少一个目标微服务:
目标转发器提取第一WebSocket请求的至少一个关键字段,并根据预设规则对至少一个关键字段进行解析,获取满足预设规则格式的所述至少一个目标微服务。
具体地,规则器中的URL规则器可以通过一个或多个具体规则确定出需要将WebSocket请求发送给哪些微服务,再在每个微服务中确定具体的目标微服务实例。具体地,可通过将WebSocket请求解析后的结果与正则表达式匹配,来确定至少一个目标微服务实例。
URL规则器,将客户端请求的文本帧(TextWebSocket Frame)的格式转化为JSON格式的字符串,例如:
“{‘method’:’/api/v1/${service}/${uriPath}’,’data’:”}”,其中method为实际的请求统一资源标识符(URI),前面/api固定为应用程序接口(API)请求,v1指API的版本,service为请求的服务名称,uriPath为服务的实际请求URI,data为实际的请求数据,可通过解析method,得到微服务信息。
举例来说,具体过程为:(1)如果客户端请求的文本帧(TextWeb SocketFrame)不符合URL规则器的标准格式,或URL规则器不能解析出微服务信息,这时会加载用户自定义规则器进行解析service,如果所有的自定义规则器都不能解析出service信息,则直接抛出一个解析错误给到客户端;否则直接根据微服务信息进行步骤(2)。
(2)规则器会从服务发现(如Eureka)中,拿到所有健康状态为正常的微服务列表,找到该微服务所有的微服务实例,再选择相应的微服务实例。举例来说,通过负载均衡的方式,选择其中一个负载最小的实例,将该微服务service实例传递给目标转发器。
步骤301一种具体的可选实施方式中,所述目标转发器根据预设规则,确定所述第一WebSocket请求对应的至少一个目标微服务;针对所述至少一个目标微服务中每个目标微服务,所述目标转发器将该目标微服务的至少一个微服务实例中负载率最小的微服务实例,作为该目标微服务的目标微服务实例。
上述方法中,确定所述第一WebSocket请求对应的至少一个目标微服务后,将该目标微服务的至少一个微服务实例中负载率最小的微服务实例,作为该目标微服务的目标微服务实例,从而保证负载最小的微服务实例优先处理第一WebSocket请求,促进了微服务中各微服务实例的负载均衡。
需要说明的是,此处仅以微服务实例的负载率为例说明规则器中的规则,事实上,可以将多方面考虑到规则中,如微服务实例的流量限制等,可通过图2示出的自定义规则器实现。
步骤302之前,一种可选实施方式为:
所述目标转发器确定是否已建立所述目标微服务实例对应的第一WebSocket通道;若未建立,则与所述目标微服务实例对应的微服务之间建立所述第一WebSocket通道。
上述方法中,所述目标转发器确定是否已建立所述目标微服务实例对应的第一WebSocket通道;若未建立,则与所述目标微服务实例对应的微服务之间建立所述第一WebSocket通道,因此可以保证目标转发器与目标微服务实例能够实时第一WebSocket通道,从而保证了WebSocket请求传输的可靠性。
图2示出的WebSocket传输中心分为WebSocket管理模块和WebSocket请求转发模块。
上述可选实施方式具体可由WebSocket请求转发模块执行,WebSocket请求转发模块从规则器获取微服务实例信息(一个微服务会有多个实例,每个实例的功能完全相同,一个微服务之所以需要多个实例,是为了保证微服务的高可用和高可靠),先从WebSocket管理模块中为该客户端和该微服务寻找是否已经存在目标转发器到该微服务的WebSocket通道,如果存在,则直接使用该webSocket连接通道转发客户端请求的文本帧(TextWebSocketFrame);否则为该客户端和该微服务实例创建一个全新的webSocket通道,并将该新的WebSocket连接和客户端与WebSocket接收器的1对1WebSocket连接通道进行绑定,保证后端微服务一旦通过该新的WebSocket连接实时推送信息,可以将该信息通过客户端与WebSocket接收器建立的连接通道,回推给客户端。
一种可选实施方式中,所述目标转发器确定所述第二WebSocket通道断开时,断开与该第二WebSocket通道绑定的一个或多个第一WebSocket通道。该可选实施方式可通过WebSocket管理模块执行。
上述方式下,由于当第二WebSocket通道断开时,目标转发器就不会通过第二WebSocket通道接收WebSocket请求,即便与该第二WebSocket通道绑定的一个或多个第一WebSocket通道存在,也不会有转发WebSocket请求需求,从而及时释放与该第二WebSocket通道绑定的一个或多个第一WebSocket通道,节约资源。
一种可选实施方式中,在所述目标转发器确定所述第二WebSocket通道断开后,所述目标转发器按照预设周期,通过与该第二WebSocket通道绑定的一个或多个第一WebSocket通道发送心跳请求包。该可选实施方式可通过WebSocket管理模块执行。
目标转发器按照预设周期,通过与该第二WebSocket通道绑定的一个或多个第一WebSocket通道发送心跳请求包,从而可长期维护一个或多个第一WebSocket通道不因为空闲被释放,也可以及时知悉一个或多个第一WebSocket通道的状态。
对于上述两种实施方式,具体来说:WebSocket管理模块负责管理客户端与WebSocket接收器的1对1WebSocket连接通道,和目标转发器与后端微服务实例的1对多WebSocket连接通道。如果客户端与WebSocket接收器的WebSocket连接断开,则WebSocket管理模块会断开所有相关的目标转发器与后端微服务实例的1对多WebSocket连接通道;同时,为了保持所有目标转发器与后端微服务实例的1对多WebSocket连接通道不会因为空闲而被释放,WebSocket管理模块会定时发送心跳请求(PingWebSocketFrame)给对应的后端微服务实例。
步骤301~步骤302方法可支持以下三种方式:1、支持Spring Cloud Gateway一对多路由转发WebSocket请求。2、支持WebSocket请求的负载均衡。3、支持通过规则,自动为WebSocket请求转发给合适的后端服务。
在步骤301~步骤302方法下,目标转发器确定第一WebSocket请求对应的至少一个目标微服务实例;所述至少一个目标微服务实例用于处理所述WebSocket请求,确定WebSocket请求对应的至少一个目标微服务实例,即在转发之前WebSocket请求将要发送给哪些目标微服务实例,对于每个目标微服务实例,目标转发器通过目标微服务实例对应的第一WebSocket通道发送所述第一WebSocket请求至所述目标微服务实例;所述第一WebSocket通道是所述目标转发器与所述目标微服务实例对应的微服务之间的传输通道,从而目标转发器可以通过每个目标微服务实例第一WebSocket通道,将WebSocket请求发送至指定的目标微服务实例,从而可以同时与多个微服务的微服务实例进行通信传输,提升了WebSocket请求传输的灵活性。
如图4所示,为本申请实施例提供的一种基于WebSocket的请求传输装置的结构示意图。
本申请提供一种基于WebSocket的请求传输装置,包括:确定模块401,用于确定第一WebSocket请求对应的至少一个目标微服务实例;所述至少一个目标微服务实例用于处理所述WebSocket请求;处理模块402,用于针对所述至少一个目标微服务实例中的每个目标微服务实例,通过所述目标微服务实例对应的第一WebSocket通道发送所述第一WebSocket请求至所述目标微服务实例;所述第一WebSocket通道是与所述目标微服务实例之间的传输通道。
一种可选实施方式中,所述确定模块401还用于:确定是否已建立所述目标微服务实例对应的第一WebSocket通道;若未建立,则与所述目标微服务实例对应的微服务之间建立所述第一WebSocket通道。
一种可选实施方式中,所述处理模块402还用于:通过第二WebSocket通道获取所述第一WebSocket请求;所述第二WebSocket通道是所述客户端与之间的传输通道。
一种可选实施方式中,所述处理模块402还用于:将所述第一WebSocket通道与所述第二WebSocket通道绑定。
一种可选实施方式中,所述确定模块401还用于:确定所述第二WebSocket通道断开时,断开与该第二WebSocket通道绑定的一个或多个第一WebSocket通道。
一种可选实施方式中,所述处理模块402还用于:在确定所述第二WebSocket通道断开后,按照预设周期,通过与该第二WebSocket通道绑定的一个或多个第一WebSocket通道发送心跳请求包。
一种可选实施方式中,所述确定模块401具体用于:所述确定模块401具体用于:根据预设规则,确定所述第一WebSocket请求对应的至少一个目标微服务;针对所述至少一个目标微服务中每个目标微服务,将该目标微服务的至少一个微服务实例中负载率最小的微服务实例,作为该目标微服务的目标微服务实例。
本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种WebSocket请求传输方法及任一可选方法。
本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种WebSocket请求传输方法及任一可选方法。
最后应说明的是:本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (12)

1.基于全双工通信协议WebSocket的请求传输方法,其特征在于,包括:
目标转发器提取第一WebSocket请求的至少一个关键字段,并根据预设规则对所述至少一个关键字段进行解析,获取满足预设规则格式的至少一个目标微服务;目标转发器通过将所述至少一个关键字段的解析结果与正则表达式匹配,确定至少一个目标微服务实例;所述至少一个目标微服务实例用于处理所述WebSocket请求;
针对所述至少一个目标微服务实例中的每个目标微服务实例,所述目标转发器通过所述目标微服务实例对应的第一WebSocket通道发送所述第一WebSocket请求至所述目标微服务实例;所述第一WebSocket通道是所述目标转发器与所述目标微服务实例之间的传输通道。
2.如权利要求1所述的方法,其特征在于,所述目标转发器通过所述目标微服务实例对应的第一WebSocket通道发送所述第一WebSocket请求至所述目标微服务实例之前,还包括:
所述目标转发器确定是否已建立所述目标微服务实例对应的第一WebSocket通道;若未建立,则与所述目标微服务实例对应的微服务之间建立所述第一WebSocket通道。
3.如权利要求2所述的方法,其特征在于,所述目标转发器确定第一WebSocket请求对应的至少一个目标微服务实例之前,还包括:
所述目标转发器通过第二WebSocket通道获取所述第一WebSocket请求;所述第二WebSocket通道是客户端与所述目标转发器之间的传输通道。
4.如权利要求3所述的方法,其特征在于,所述与所述目标微服务实例对应的微服务之间建立所述第一WebSocket通道之后,还包括:
所述目标转发器将所述第一WebSocket通道与所述第二WebSocket通道绑定。
5.如权利要求4所述的方法,其特征在于,还包括:
所述目标转发器确定所述第二WebSocket通道断开时,断开与该第二WebSocket通道绑定的一个或多个第一WebSocket通道。
6.如权利要求4所述的方法,其特征在于,还包括:
在所述目标转发器确定所述第二WebSocket通道断开后,所述目标转发器按照预设周期,通过与该第二WebSocket通道绑定的一个或多个第一WebSocket通道发送心跳请求包。
7.如权利要求1-6任一所述的方法,其特征在于,所述目标转发器确定第一WebSocket请求对应的至少一个目标微服务实例,包括:
所述目标转发器根据预设规则,确定所述第一WebSocket请求对应的至少一个目标微服务;
针对所述至少一个目标微服务中每个目标微服务,所述目标转发器将该目标微服务的至少一个微服务实例中负载率最小的微服务实例,作为该目标微服务的目标微服务实例。
8.基于全双工通信协议WebSocket的请求传输装置,其特征在于,包括:
确定模块,用于提取第一WebSocket请求的至少一个关键字段,并根据预设规则对所述至少一个关键字段进行解析,获取满足所述预设规则格式的至少一个目标微服务;通过将所述至少一个关键字段的解析结果与正则表达式匹配,确定至少一个目标微服务实例;所述至少一个目标微服务实例用于处理所述WebSocket请求;
处理模块,用于针对所述至少一个目标微服务实例中的每个目标微服务实例,通过所述目标微服务实例对应的第一WebSocket通道发送所述第一WebSocket请求至所述目标微服务实例;所述第一WebSocket通道是与所述目标微服务实例之间的传输通道。
9.如权利要求8所述的装置,其特征在于,所述确定模块还用于:
确定是否已建立所述目标微服务实例对应的第一WebSocket通道;若未建立,则与所述目标微服务实例对应的微服务之间建立所述第一WebSocket通道。
10.如权利要求9所述的装置,其特征在于,所述处理模块还用于:
通过第二WebSocket通道获取所述第一WebSocket请求;所述第二WebSocket通道是客户端与之间的传输通道。
11.如权利要求10所述的装置,其特征在于,所述处理模块还用于:
将所述第一WebSocket通道与所述第二WebSocket通道绑定。
12.如权利要求8-11任一所述的装置,其特征在于,所述确定模块具体用于:
根据预设规则,确定所述第一WebSocket请求对应的至少一个目标微服务;
针对所述至少一个目标微服务中每个目标微服务,将该目标微服务的至少一个微服务实例中负载率最小的微服务实例,作为该目标微服务的目标微服务实例。
CN201910652159.4A 2019-07-18 2019-07-18 基于全双工通信协议WebSocket的请求传输方法及装置 Active CN110381058B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910652159.4A CN110381058B (zh) 2019-07-18 2019-07-18 基于全双工通信协议WebSocket的请求传输方法及装置
PCT/CN2020/102220 WO2021008567A1 (zh) 2019-07-18 2020-07-15 基于全双工通信协议的请求传输方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910652159.4A CN110381058B (zh) 2019-07-18 2019-07-18 基于全双工通信协议WebSocket的请求传输方法及装置

Publications (2)

Publication Number Publication Date
CN110381058A CN110381058A (zh) 2019-10-25
CN110381058B true CN110381058B (zh) 2023-05-16

Family

ID=68254035

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910652159.4A Active CN110381058B (zh) 2019-07-18 2019-07-18 基于全双工通信协议WebSocket的请求传输方法及装置

Country Status (2)

Country Link
CN (1) CN110381058B (zh)
WO (1) WO2021008567A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110381058B (zh) * 2019-07-18 2023-05-16 深圳前海微众银行股份有限公司 基于全双工通信协议WebSocket的请求传输方法及装置
CN110377437A (zh) * 2019-07-19 2019-10-25 深圳前海微众银行股份有限公司 一种微服务间通信方法、计算机设备及存储介质
CN112202872A (zh) * 2020-09-28 2021-01-08 华云数据控股集团有限公司 一种数据转发方法、api网关及消息服务系统
CN114943511A (zh) * 2022-05-17 2022-08-26 黑龙江省芯网科技有限公司 一种政务办公自动化平台及其优化实现方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106612188A (zh) * 2015-10-21 2017-05-03 中兴通讯股份有限公司 一种基于微服务架构扩展软件功能的方法及装置
CN108206852B (zh) * 2016-12-20 2020-12-22 华为技术有限公司 一种微服务框架下的基于会话的服务实例管理方法及设备
US10860390B2 (en) * 2017-06-28 2020-12-08 Intel Corporation Microservices architecture
US20190141009A1 (en) * 2017-11-07 2019-05-09 General Electric Company Session moderator for turn-pattern tcp-packet relay with websocket instantiation
CN107786379A (zh) * 2017-11-15 2018-03-09 四川省龙逸凤集网络科技有限公司 一种基于微服务架构的分层云管理平台
CN107733726B (zh) * 2017-11-29 2021-07-06 新华三云计算技术有限公司 一种服务请求的处理方法及装置
CN109995713B (zh) * 2017-12-30 2020-11-27 华为技术有限公司 一种微服务框架中的服务处理方法及相关设备
CN108418862B (zh) * 2018-01-31 2021-01-22 金蝶软件(中国)有限公司 基于人工智能服务云平台的微服务管理方法和系统
CN108924243A (zh) * 2018-07-20 2018-11-30 珠海宏桥高科技有限公司 基于微服务架构的数据分发及处理方法
CN109343829A (zh) * 2018-08-09 2019-02-15 广州瀚信通信科技股份有限公司 一种java语言分布式微服务治理框架
CN109788055B (zh) * 2019-01-11 2021-07-30 武汉虹旭信息技术有限责任公司 一种基于微服务架构的服务治理系统及其方法
CN110381058B (zh) * 2019-07-18 2023-05-16 深圳前海微众银行股份有限公司 基于全双工通信协议WebSocket的请求传输方法及装置

Also Published As

Publication number Publication date
WO2021008567A1 (zh) 2021-01-21
CN110381058A (zh) 2019-10-25

Similar Documents

Publication Publication Date Title
CN110381058B (zh) 基于全双工通信协议WebSocket的请求传输方法及装置
CN109756559B (zh) 面向嵌入式机载系统分布式数据分发服务的构建及使用方法
US10374910B2 (en) Automated service profiling and orchestration
CN113132376B (zh) 媒体数据处理方法及装置、系统、电子设备和存储介质
US20150134727A1 (en) Cloud-based data server providing home appliance management service and method thereof
KR20140072044A (ko) 다중-소스 푸시 통지를 다수의 타겟들로의 분배 기법
CN102355426A (zh) 实现离线文件传输的方法和系统
WO2020112793A2 (en) Framework for dynamic brokerage and management of topics and data at the service layer
US11201928B2 (en) Method of referencing a connection session with a wireless communication device in a local area, a system for implementing this method, a method of referencing an application user, a machine-readable medium for implementing this method, as well as a method of collecting data on the wireless communication device user, and a machine-readable medium for implementing this method
JP2019519975A (ja) リソースサブスクリプション方法、リソースサブスクリプション装置、及びリソースサブスクリプションシステム
US9402056B2 (en) Collaboration extension system
CN112236990A (zh) 用于实现iot数据的高效分析的基于服务层的方法
CN112883011A (zh) 实时数据处理方法和装置
WO2017000572A1 (zh) 基于因特网内容适配协议的通信方法、客户端和服务器
CN107809681B (zh) 切片视频传输的方法及装置
CN112131014B (zh) 决策引擎系统及其业务处理方法
CN107113281A (zh) 内容共享的方法、终端、服务器和系统
CN112689020A (zh) 一种消息传输方法、消息中间件、电子设备及存储介质
US11929933B2 (en) Ephemeral data stream routing service
US9253124B2 (en) Techniques for sending and relaying information over broadcast and non-broadcast communications media
CN113132745B (zh) 直播服务系统、方法、服务器
GB2580420A (en) Electronic message adaptation
JP6577907B2 (ja) 通信監視装置および通信監視方法
CN109194729A (zh) 一种信息通讯系统以及方法
CN114139093A (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