服务请求的处理方法、装置、系统、电子设备及存储介质与流程

文档序号:18823670发布日期:2019-10-09 01:12阅读:224来源:国知局
服务请求的处理方法、装置、系统、电子设备及存储介质与流程

本公开涉及数据处理技术领域,具体而言,本公开涉及一种服务请求的处理方法、装置、系统、电子设备及存储介质。



背景技术:

现有技术中,在交互式业务系统中,为了使客户端与对应的服务节点实现通信,通常由网络接口基于客户端的服务请求,在所有服务节点中匹配与该服务请求对应的服务节点,然后将服务请求转发至该匹配的服务节点,以实现客户端与服务节点之间的通信。

但是,如果大量客户端和服务节点间同时有网络通信的需求,比如,上亿的客户端与上万的服务节点间同时有网络通信的需求,则如果基于现有技术中的方式,由于网络接口的数据处理量相对较大,可能无法实现客户端与服务节点之间良好的服务调度,影响服务请求的处理效率。



技术实现要素:

本公开的目的旨在至少能解决上述的技术缺陷之一,提高服务请求的处理效率。本公开采用的技术方案如下:

第一方面,本公开提供了一种服务请求的处理方法,该方法包括:

接收客户端发送的服务请求;

根据服务请求对应的统一资源定位符url,确定与服务请求对应的服务节点的服务类型;

将与服务类型对应的服务节点确定为目标服务节点,并将服务请求发送到目标服务节点。

本公开第一方面的实施例中,服务类型包括服务类型标识。

本公开第一方面的实施例中,该方法还包括各个服务类型与各个服务请求对应url的对应关系,根据服务请求对应的统一资源定位符url,确定与服务请求对应的服务节点的服务类型,包括:

基于对应关系及服务请求对应的url,确定与服务请求对应的服务节点的服务类型。

本公开第一方面的实施例中,将与服务类型对应的服务节点确定为目标服务节点,包括:

将与服务类型对应的服务节点中的任一服务节点确定为目标服务节点。

本公开第一方面的实施例中,若url中包括目标路由参数,将与服务类型对应的服务节点确定为目标服务节点,包括:

基于目标路由参数,确定服务类型对应的服务节点中与目标路由参数对应的目标服务节点;

若url中不包括目标路由参数,将与服务类型对应的服务节点确定为目标服务节点,包括:

将与服务类型对应的服务节点中的任一服务节点作为目标服务节点。

本公开第一方面的实施例中,将服务请求发送到目标服务节点,包括:

根据目标服务节点,获取服务节点管理器中与目标服务节点对应的注册信息;

基于注册信息,将服务请求发送到目标服务节点。

本公开第一方面的实施例中,在客户端与目标服务节点建立通信连接后,该方法还包括:

将目标服务节点对应的路由参数发送至客户端。

本公开第一方面的实施例中,该方法还包括:

将各个服务类型的服务节点的注册信息和对应关系中的至少一项存储至存储系统。

第二方面,本公开提供了一种服务请求的处理装置,该装置包括:

请求接收模块,用于接收客户端发送的服务请求;

服务类型确定模块,用于根据服务请求对应的统一资源定位符url,确定与服务请求对应的服务节点的服务类型;

请求处理模块,用于将与服务类型对应的服务节点确定为目标服务节点,并将服务请求发送到目标服务节点。

本公开第二方面的实施例中,服务类型包括服务类型标识。

本公开第二方面的实施例中,该装置还包括各个服务类型与各个服务请求对应url的对应关系,服务类型确定模块在根据服务请求对应的统一资源定位符url,确定与服务请求对应的服务节点的服务类型时,具体用于:

基于对应关系及服务请求对应的url,确定与服务请求对应的服务节点的服务类型。

本公开第二方面的实施例中,请求处理模块在将与服务类型对应的服务节点确定为目标服务节点时,具体用于:

将与服务类型对应的服务节点中的任一服务节点确定为目标服务节点。

本公开第二方面的实施例中,若url中包括目标路由参数,请求处理模块在将与服务类型对应的服务节点确定为目标服务节点时,具体用于:

基于目标路由参数,确定服务类型对应的服务节点中与目标路由参数对应的目标服务节点;

若url中不包括目标路由参数,请求处理模块在将与服务类型对应的服务节点确定为目标服务节点时,具体用于:

将与服务类型对应的服务节点中的任一服务节点作为目标服务节点。

本公开第二方面的实施例中,请求处理模块在将服务请求发送到目标服务节点时,具体用于:

根据目标服务节点,获取服务节点管理器中与目标服务节点对应的注册信息;

基于注册信息,将服务请求发送到目标服务节点。

本公开第二方面的实施例中,该装置还包括目标服务节点发送模块;

目标服务节点发送模块在客户端与目标服务节点建立通信连接后,用于将目标服务节点对应的路由参数发送至客户端。

本公开第二方面的实施例中,该装置还包括存储模块;

存储模块用于将各个服务类型的服务节点的注册信息和对应关系中的至少一项存储至存储系统。

第三方面,本公开提供了一种服务请求的处理系统,该系统包括:

客户端、网络接口、服务节点管理器和服务节点;

服务节点管理器,用于存储各服务类型和与各服务类型对应的服务节点的注册信息;

网络接口,用于接收客户端发送的网络连接请求,根据服务请求对应的统一资源定位符url,确定与服务请求对应的服务节点的服务类型,将与服务类型对应的服务节点确定为目标服务节点,从服务节点管理器获取与目标服务节点对应的注册信息,根据目标服务节点的注册信息,将服务请求发送到目标服务节点。

第四方面,本公开提供了一种电子设备,该电子设备包括:

处理器和存储器;

存储器,用于存储计算机操作指令;

处理器,用于通过调用计算机操作指令,执行如本公开的第一方面的任一实施例中所示的方法。

第五方面,本公开提供了一种计算机可读存储介质,该存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如本公开的第一方面的任一实施例中所示的方法。

本公开实施例提供的技术方案带来的有益效果是:

本公开实施例的服务请求的处理方法、装置、系统、电子设备及存储介质,可以基于客户端发送的服务请求对应的统一资源定位符url,确定服务请求对应的服务节点的服务类型,由于不同的服务请求对应不同的服务类型的服务节点,因此,基于服务请求对应的服务节点的服务类型,可以在该服务类型对应的服务节点中匹配到与服务请求对应的目标服务节点,再将服务请求发送到目标服务节点,使得客户端可与目标服务节点之间进行通信;在大量客户端和服务节点间同时有建立网络通信连接的需求时,本公开中按照服务请求对应的服务节点的服务类型匹配服务请求对应的目标服务节点的方案,相较于在基于服务请求在所有服务节点中匹配对应的目标服务节点的方案,提高了服务请求的处理效率。

附图说明

为了更清楚地说明本公开实施例中的技术方案,下面将对本公开实施例描述中所需要使用的附图作简单地介绍。

图1为本公开的实施例提供的一种服务请求的处理方法的流程示意图;

图2为本公开的实施例提供的一种服务请求的处理装置的结构示意图;

图3为本公开的实施例提供的又一种服务请求的处理系统的结构示意图

图4为本公开的实施例提供的一种电子设备的结构示意图。

具体实施方式

下面详细描述本公开的实施例,该实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本公开的技术方案,而不能解释为对本公开的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本公开的说明书中使用的措辞“包括”是指存在该特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

下面以具体地实施例对本公开的技术方案以及本公开的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本公开的实施例进行描述。

在一种交互式的业务系统中,该系统可以包括客户端、网络接口、服务节点,其中,网络接口为客户端提供网络接入,同时将客户端的服务请求调度到服务节点上,之后通过服务节点再调度到各个子节点上,来实现业务需求。但是当出现上亿级的客户端和上万级的服务节点同时有通信需求时,如果网络接口和服务节点之间未做好调度,会直接影响服务请求的处理效率。

针对上述技术问题,本公开的实施例提供的一种服务请求的处理方法,如图1所示的一种服务请求的处理方法的流程示意图,本实施例以网络接口为本方案的至执行主体进行描述,该方法可以包括:

步骤s110,接收客户端发送的服务请求。

其中,当客户端需要请求服务节点所提供的某项业务时,客户端向网络接口发送服务请求,相应地,网路接口接收客户端发送的服务请求,其中,网络接口可为nginx网络接口和tomcat网络接口中的至少一种,需要说明的是,本公开中不限定网络接口的具体实现形式。

其中,客户端为具有通信功能的电子设备,包括但不限于手机、平板电脑、电子书阅读器、多媒体播放设备、便携式计算机、个人数字助理等可发起服务请求的电子设备,还可以包括发起服务请求的服务端节点,比如业务系统、业务节点、业务进程等,均在本公开的保护范围内。

步骤s120,根据服务请求对应的统一资源定位符url(uniformresourcelocator),确定与服务请求对应的服务节点的服务类型。

其中,服务节点可按照服务类型进行分类,同一个服务类型可以对应至少一个服务节点,则在确定与该服务请求对应的服务节点时,可依据服务请求先确定与该服务请求对应的服务节点的服务类型,这样,可以减少数据的处理量,提高数据处理效率。

步骤s130,将与服务类型对应的服务节点确定为目标服务节点,并将服务请求发送到目标服务节点。

其中,每类服务类型可以对应至少一个服务节点,则在服务类型对应的服务节点中,可以确定得到目标服务节点,如果与服务类型对应的服务节点只有一个,那么可将这个服务节点确定为目标服务节点,如果与服务类型对应的服务节点有至少两个,则该目标服务节点可以是至少两个服务节点中的一个。其中,服务节点包括但不限定于tce(toitiaocontainerengine,基于docker&&k8s的容器化实例)和物理机。

本公开的实施例中的方案,可以基于客户端发送的服务请求对应的统一资源定位符url,确定服务请求对应的服务节点的服务类型,由于不同的服务请求对应不同的服务类型的服务节点,因此,基于服务请求对应的服务节点的服务类型,可以在该服务类型对应的服务节点中匹配到与服务请求对应的目标服务节点,再将服务请求发送到目标服务节点,使得客户端可与目标服务节点之间进行通信。在大量客户端和服务节点间同时有建立网络通信连接的需求时,本公开中按照服务请求对应的服务节点的服务类型匹配服务请求对应的目标服务节点的方案,相较于在基于服务请求在所有服务节点中匹配对应的目标服务节点的方案,提高了服务请求的处理效率。

本公开的实施例中,服务类型可以包括服务类型标识。

其中,为了便于更好地对不同的服务类型进行区分,可以为每个服务类型对应配置唯一的服务类型标识,比如服务类型标识psm(psm即为productsubsysmodule,可以按psm定义规范区分资源和服务),该服务类型标识可以采用类似a.b.c.d这种格式。

本公开的实施例中,该方法还可以包括:各个服务类型与各个服务请求对应url的对应关系。

需要说明的是,如果服务类型包括服务类型标识,则服务类型与各个服务请求对应url的对应关系可以为服务类型标识与各个服务请求对应url的对应关系。

进而步骤s120中,根据服务请求对应的统一资源定位符url,确定与服务请求对应的服务节点的服务类型,可以包括:

基于对应关系及服务请求对应的url,确定与服务请求对应的服务节点的服务类型。

其中,在实际应用中,各个服务类型标识与各个服务请求对应的url的对应关系可以预先配置,也可以在服务过程中配置并生效,若该对应关系为预先配置的,则可在网络接口启动时,先加载该对应关系,然后基于该对应关系,确定与接收到的服务请求对应的服务类型标识。无论服务类型标识与各个服务请求对应的url的对应关系是预先加载还是在服务过程中配置并生效,网络接口接收客户端请求并对服务请求对应的url进行分析,确定出最终服务该服务请求对应的服务类型标识。

本公开的实施例中,若与服务请求对应的服务节点的服务类型包括至少两种服务类型,该方法还可以包括:

按照最长匹配原则和正则匹配原则中的至少一项确定出至少两种服务类型中与服务请求对应的服务类型。

其中,在实际应用中,若服务类型包括服务类型标识,对应关系为服务类型标识与各个服务请求对应url的对应关系,则可按照最长匹配原则和正则匹配原则中的至少一项确定出至少两种服务类型中与服务请求对应的服务类型标识。

下面以按照最长匹配原则确定出至少两种服务类型中与服务请求对应的服务类型为例进行说明:

作为一个示例,比如,系统配置在url为http://host/part1/part2/part3时,由服务类型标识a.b.c对应的服务节点处理,在url为http://host/part1/part2时,由服务类型标识a.b.d对应的服务节点处理,在url为http://host/part1时,由服务类型标识a.b.e对应的服务节点处理,则当到达服务器的客户端的服务请求url为http://host/part1/part2/part3/*时,与该url对应的服务节点的服务类型包括服务类型标识a.b.c对应的服务类型、服务类型标识a.b.d对应的服务类型和服务类型标识a.b.e对应的服务类型这三种服务类型,则可按照最长匹配原则确定出http://host/part1/part2/part3/*对应的服务类型标识为a.b.c,进而可以转发服务类型标识为a.b.c的服务节点响应该服务请求。

下面以按照正则匹配原则确定出至少两种服务类型中与服务请求对应的服务类型为例进行说明:

作为一个示例,比如,系统配置的正则表达式为:~http://host/toutiao/*/v[0-9]+/,符合该正则表达式的服务请求url由服务类型标识b.c.d对应的服务节点处理,如果客户端的服务请求url为:http://host/toutiao/s1/v1/*或http://host/toutiao/s119/v9/*时,判断该url是否满足上述正则表达式,如果满足,将该服务类型标识b.c.d对应的服务类型确定为与服务请求对应的服务类型,进而可以转发服务类型标识为b.c.d的服务节点响应该服务请求。

在本实施例中,按照最长匹配原则和正则匹配原则中的至少一项确定出至少两种服务类型中与服务请求对应的服务类型,可以更加准确的确定出与服务请求对应的服务类型。

本公开的实施例中,该客户端请求url和服务类型标识psm的对应关系可以存储在网络接口的本地缓存、服务节点管理器、缓存redis和数据库中的至少一项中,可以理解的是,对应关系可以存储的存储单元不限于上述几种,均在本公开的保护范围内。将对应关系预先进行存储,可以方便提供给提供服务的网络接口。

若将对应关系存储在网络接口的本地缓存中,可以进一步提高数据的处理效率。

本公开的实施例中,步骤130中,将与服务类型对应的服务节点确定为目标服务节点,可以包括:

将与服务类型对应的服务节点中的任一服务节点确定为目标服务节点。

其中,每种服务类型可以对应至少一个服务节点,如果与服务类型对应的服务节点为一个时,目标服务节点即为该服务节点,如果若与服务类型对应的服务节点为至少两个服务节点时,可以在至少两个服务节点中随机选择一个服务节点作为目标服务节点。

本公开的实施例中,若url中包括目标路由参数,将与服务类型对应的服务节点确定为目标服务节点,可以包括:

基于目标路由参数,确定服务类型对应的服务节点中与目标路由参数对应的目标服务节点。

其中,服务类型对应的服务节点通常可以有多个,即服务类型对应的多个服务节点可以为一个服务节点列表,或者一个服务节点集合,则基于目标路由参数,可以在服务节点列表或服务节点集合中匹配到与目标路由参数对应的目标服务节点。

在实际应用中,url链接中可以包括路由参数,也可以不包括路由参数,其中,路由参数可以为gtoken参数,下面以包括路由参数的url地址链接为示例进行说明:

url地址链接为:

wss://docs.bytedance.net/doc?gtoken=3fz9dc70mwzfigfa&userid=12345

其中,在该url地址中,“docs.bytedance.net”为访问域名,“doc”为服务类型参数,“/”为分隔符,“gtoken=3fz9dc7xuohbs0mwzfigfa”为路由参数,“userid=12345”为其它参数。路由参数可以为基于服务节点的注册信息进行编码得到的值,路由参数可以为利用以下至少一种算法得到的,对服务节点的注册信息(包括内网ip地址和服务端口等)进行编码的算法包括但不限于消息摘要算法(md5,messagedigestalgorithm,消息摘要算法第五版),高级加密标准算法(aes,advancedencryptionstandard),公钥加密算法(rsa,rivest-shamir-adleman),哈希等算法。例如,以上述url地址链接为例,其中,docs.bytedance.net表示的是访问域名,路由参数gtoken=3fz9dc70mwzfigfa标识的是期望提供该服务的业务节点的注册编号信息,doc表示的是服务类型参数。

本公开的方案中,由于确定出的目标服务节点是与服务请求对应的url中的目标路由参数对应的服务节点,因此,基于服务请求对应的url中的目标路由参数确定目标服务节点更有针对性,更加准确,另外,与目标路由参数对应的目标服务节点表示的是,针对该服务请求,网络接口提供定向转发,即在与服务类型对应的所有服务节点中,与目标路由参数对应的服务节点作为目标服务节点为客户端提供服务请求对应的服务,在客户端再一次发送相同服务请求时,可以不需重新确定对应的目标服务节点,仍然采用该目标服务节点为客户端提供服务请求对应的服务。

本公开的实施例中,若url中不包括目标路由参数,将与服务类型对应的服务节点确定为目标服务节点,可以包括:

将与服务类型对应的服务节点中的任一服务节点作为目标服务节点。

其中,若url中不包括目标路由参数,则将与服务类型对应的服务节点中的任一服务节点作为目标服务节点,表示针对该服务请求,网络接口提供的是随机转发,即在与服务类型对应的所有服务节点中,任意一个服务节点作为目标服务节点为客户端提供服务请求对应的服务,在客户端再一次发送相同服务请求时,还需重新确定对应的目标服务节点。

本公开的实施例中,步骤s130中,将服务请求发送到目标服务节点,可以包括:

根据目标服务节点,获取服务节点管理器中与目标服务节点对应的注册信息;

基于注册信息,将服务请求发送到目标服务节点。

其中,在运行本公开的方法之前,可先将各个服务节点在服务节点管理器中注册,该服务节点管理器可以为服务发现模块consul,各个服务节点在注册过程中,可以基于服务节点对应的服务类型配置服务类型标识,比如,psm标识,各个服务节点的注册信息包括但不限于服务节点的ip(internetprotocol,网络协议)地址,端口号,服务节点负载信息等,可以理解的是,上述这些信息可以定期更新。注册完成后,提供一类服务(每个服务类型)的所有服务节点的注册信息均可保存在该服务节点管理器中。

在本实施例中,服务节点可以表示为ip:ip,其中,ip为对应服务节点的网络地址,port为对应服务节点的网络端口号,基于服务节点的ip和端口号,可以确定该服务节点的网络位置,以使网络接口可以基于目标服务节点的网络位置,准确将服务请求发送到目标服务节点。

具体的,在确定得到目标服务节点之后,服务节点管理器可以将目标服务节点的注册信息发送给网络接口,网络接口基于目标服务节点的注册信息,将服务请求发送到目标服务节点,或者,也可以由网络接口向服务节点管理器发送获取注册信息的请求,服务节点管理器响应该请求,将目标服务节点的注册信息发送给网络接口,网络接口基于目标服务节点的注册信息,将服务请求发送到目标服务节点。其中,由于服务节点的注册信息中包括节点的ip和端口号,因此,基于服务节点的注册信息,可以准确地将服务请求发送到目标服务节点。

本公开的实施例中,确定得到的目标服务节点的服务状态为可用。

本公开的实施例中,服务节点管理器还用于检查服务节点的服务状态,服务状态包括可用和不可用中的至少一项。

其中,服务管理节点本身可以对存储的各个服务节点的服务状态进行检查,以确定服务节点是否可用,从而确定客户端与可用的服务节点进行通信。

其中,在实际应用中,可以基于预配置的检查周期定期检测服务节点的服务状态,检查周期可基于实际需求配置,比如,检查周期为5分钟,则可每隔5分钟检测一次服务节点的服务状态。

本公开的实施例中,可以基于心跳机制定期检查服务节点的服务状态。

本公开的实施例中,服务节点管理器还用于更新注册信息。

其中,在实际应用中,会基于实际需求,更新服务节点的注册信息,以保证基于可以为各种服务请求提供对应的服务。

其中,更新服务节点的注册信息包括但不限于以下至少一种情况:增加服务节点管理器中注册的服务节点,也可以将服务节点管理器中已注册的服务节点进行注销,比如,将服务状态为不可用的服务节点注销,还可以对发生改变的注册信息进行更改。

在实际应用中,服务节点管理器可以基于预先配置的更新周期更新服务节点的注册信息,其中,更新周期可以基于实际需求配置;也可以在服务节点管理器接收到更新指令时再更新服务节点的注册信息,比如,增加一个新的注册服务节点时,向服务节点管理器发送一个更新指令,服务节点管理器可以基于该指令进行对应的更新。还可以预先配置一个标识,该表示所有服务节点的注册信息的状态,当该标识发生变化,可能表示服务节点管理器中的服务节点的注册信息发生变化,需要更新,则服务节点管理器可基于预先配置的更新方式进行更新,注册信息的更新方式不限定上述几种具体的实现方式,均在本公开的保护范围内。

本公开的实施例中,该方法还可以包括:

将各个服务类型的服务节点的注册信息和对应关系中的至少一项存储至存储系统。

其中,该存储系统包括网络接口的本机内存、本地磁盘、服务节点管理器、缓存redis和数据库中的至少一项中,可以理解的是,存储系统不限于上述几种,均在本公开的保护范围内。将对应关系和服务节点的注册信息预先进行存储,可以方便提供给提供服务的网络接口。

其中,对应关系可以是各个服务类型与各个服务请求对应url的对应关系,还可以是各个服务类型对应的服务类型标识与各个服务请求对应url的对应关系。

本公开的实施例中,为了提高网络接口的转发效率,可以将对应关系和服务节点的注册信息均存储在服务节点的本地缓存中。进一步地,为了保证本地缓存中的信息与新增加的服务节点的相关信息保持同步,需要将本地缓存中的信息与服务节点管理器中的服务节点的信息进行同步更新。

基于前文所描述的内容可知,服务节点管理器可用于保存服务类型标识psm和服务节点的关系,提供服务节点注册,服务节点注销,服务节点的注册信息更新,根据服务类型标识psm查询当前可用服务节点集合(psm对应的服务类型标识对应的服务节点形成的集合)及服务节点的属性信息,为服务节点提供注册和注销功能,为网络接口(nginx)和其它业务服务提供查询psm当前可用业务节点集合及节点属性信息的功能。

本公开的实施例中,在客户端与目标服务节点建立通信连接后,该方法还可以包括:

将目标服务节点对应的路由参数发送至客户端,以支持客户端在网络异常时携带路由参数主动重连上对应目标服务节点。

其中,将目标服务节点的路由参数发送至客户端,可以在客户端与目标服务节点的网络连接中断后,使得客户端可以基于该路由参数与目标服务节点主动重新建立连接,从而不需要再一次通过网络接口重新确定可连接的目标服务节点。

比如,针对随机长连接的情形,在客户端和目标服务节点建立网路连接后,可以由与客户端可以进行通信的终端将目标服务节点对应的路由参数发送至客户端,与客户端可以进行通信的终端包括目标服务节点,服务节点管理服务器和网络接口中的至少一项。将目标服务节点对应的路由参数发送至客户端后,若客户端与目标服务节点之间发生断线,客户端可以基于该路由参数重新与目标服务节点连接起来。

其中,目标服务节点可以按照路由参数计算规则在服务过程中计算得到,也可以将各个服务节点与对应的路由参数预先存储,在需要调用目标服务节点的路由参数时,直接从预先存储的各个服务节点与对应的路由参数中获取,其中,路由参数计算规则指的是前文所描述的对服务节点的注册信息进行编码的算法。

本公开的实施例中,若服务类型对应的服务节点中不存在与目标路由参数对应的目标服务节点,该方法还可以包括:

向客户端发送连接失败标识信息。

其中,如果服务类型对应的服务节点中不存在与目标路由参数对应的目标服务节点,则可能表示服务类型对应的服务节点中不存在可以为客户端提供与服务请求对应服务的服务节点,或者系统发生异常导致目标服务节点无法提供服务等,则可以向客户端发送连接失败标识信息,通过连接失败标识信息告知客户端,无法为其提供相应的服务。其中,连接失败标识信息可以基于实际需求配置,比如,可以为指定内容的文字。

本公开的实施例中,网络接口将服务请求发送到目标服务节点,可以包括:

网络接口nginx对服务请求进行授权验证,将通过验证的服务请求发送到目标服务节点。

其中,网络接口在确定出目标服务节点后,为了确保网络通讯和数据交互的安全性,可以还对服务请求进行授权验证,将通过验证的服务请求发送到目标服务节点。本公开中不限定验证的具体实现方式,均在本公开的保护范围内。

本公开的实施例中,在客户端与目标服务节点建立通信连接后,客户端和目标服务节点可以协商通讯消息加密算法以及压缩算法,可以包括:加密算法包括到不局限于rsa加密,压缩算法包括但不局限于lz4算法。

需要说明的是,客户端通过网络口与服务节点建立通信后,还可以通过其他方式进行通信,比如,可以通过udp(userdatagramprotocol,用户数据报协议)方式进行通信。

本公开的实施例中,若服务节点管理器包括其他服务类型对应的服务节点,该方法还可以包括:根据业务逻辑,将其他服务类型对应的服务节点分配给客户端。

其中,其他服务类型表示的是可以为客户端提供新的服务,该服务于客户端发送的服务请求对应的服务不同,比如,新开发的服务,则将该新的服务对应的服务节点分配给客户端,可以使客户端了解到新的服务,为新服务提供了推广途径。

本公开的实施例中,根据业务逻辑,将其他服务类型对应的服务节点分配给客户端,可以包括:

基于其他服务类型对应的服务节点,生成路由参数;

将路由参数发送给客户端。

其中,基于其他服务类型对应的服务节点,生成路由参数的具体实现方式可以与前文描述的方法相同,也可以采用其他方式。

作为一个示例,生成路由参数的方式采用md5加密方式,网络接口(nginx)转发需要访问服务节点列表(psm),服务节点列表指的是与其他服务类型对应的服务节点所形成的列表,该方式下网络接口(nginx)只需增加从md5到目标服务节点ip:port的方向索引。

需要说明的是,本公开的服务请求的处理方法,不仅可以通过网络接口实现,其它服务类型同样可以使用。这样不仅方便在网络接口层实现定向转发和随机转发,同时也方便满足不同的业务需要,以实现服务节点的分配。本公开的方案的应用场景包括但不限定于客户端与服务器的网络连接请求,消息转发请求等,即服务请求可以包括各种类型的请求。

下面以下服务请求对应的url为例,对本公开的服务请求的处理方法进行说明:

wss://docs.bytedance.net/doc?gtoken=3fz9dc70mwzfigfa&userid=12345

其中,在该url地址中,“docs.bytedance.net”为访问域名,“doc”为服务类型参数,“/”为分隔符,“gtoken=3fz9dc7xuohbs0mwzfigfa”为路由参数,“userid=12345”为其它参数。

当该服务请求的url到达网络接口(nginx)时,根据提取的客户端网络请求url=“docs.bytedance.net/doc”及预配置的服务类型标识psm与upl的对应关系,如果设定的“docs.bytedance.net/doc”对应的服务类型标识psm为“a.b.c”,则基于“docs.bytedance.net/doc”和对应关系匹配到与该服务请求对应的url对应服务类型标识为:psm=“a.b.c”,那么,由于服务类型标识为psm=“a.b.c”的服务节点均已预先在服务节点管理器中注册,则可在服务节点管理器(服务发现consul)中查询到与psm=“a.b.c”对应的可用服务节点集合(所有服务节点),或者,如果服务节点的注册信息存储在本地缓存,则还可以查询本地缓存,以获取到响应客户端的url的服务节点集合,再根据该url中的目标路由参数(gtoken参数)最终决定实施定向转发服务请求还是随机转发服务请求,基于该服务请求对应的目标路由参数“3fz9dc7xuohbs0mwzfigfa”为例,如果在所有服务节点中存在与目标路由参数“3fz9dc7xuohbs0mwzfigfa”对应的目标服务节点,则可以实施定向转发该服务请求,如果在所有服务节点中不存在与该目标路由参数“3fz9dc7xuohbs0mwzfigfa”对应的目标服务节点,则可以向客户端发送连接失败标识信息。

基于与图1中所示方法相同的原理,本公开的实施例中还提供了一种服务请求的处理装置20,如图2所示,该服务请求的处理装置20可以包括:请求接收模块210,服务类型确定模块220以及请求处理模块230,其中,

请求接收模块210,用于接收客户端发送的服务请求;

服务类型确定模块220,用于根据服务请求对应的统一资源定位符url,确定与服务请求对应的服务节点的服务类型;

请求处理模块230,用于将与服务类型对应的服务节点确定为目标服务节点,并将服务请求发送到目标服务节点。

本公开的实施例中的方案,可以基于客户端发送的服务请求对应的统一资源定位符url,确定服务请求对应的服务节点的服务类型,由于不同的服务请求对应不同的服务类型的服务节点,因此,基于服务请求对应的服务节点的服务类型,可以在该服务类型对应的服务节点中匹配到与服务请求对应的目标服务节点,再将服务请求发送到目标服务节点,使得客户端可与目标服务节点之间进行通信。在大量客户端和服务节点间同时有建立网络通信连接的需求时,本公开中按照服务请求对应的服务节点的服务类型匹配服务请求对应的目标服务节点的方案,相较于在基于服务请求在所有服务节点中匹配对应的目标服务节点的方案,提高了服务请求的处理效率。

本公开的实施例中,服务类型可以包括服务类型标识。

本公开的实施例中,该装置还可以包括各个服务类型与各个服务请求对应url的对应关系,服务类型确定模块在根据服务请求对应的统一资源定位符url,确定与服务请求对应的服务节点的服务类型时,具体用于:

基于对应关系及服务请求对应的url,确定与服务请求对应的服务节点的服务类型。

本公开的实施例中,请求处理模块在将与服务类型对应的服务节点确定为目标服务节点时,具体用于:

将与服务类型对应的服务节点中的任一服务节点确定为目标服务节点。

本公开的实施例中,若url中包括目标路由参数,请求处理模块在将与服务类型对应的服务节点确定为目标服务节点时,具体用于:

基于目标路由参数,确定服务类型对应的服务节点中与目标路由参数对应的目标服务节点;

若url中不包括目标路由参数,请求处理模块在将与服务类型对应的服务节点确定为目标服务节点时,具体用于:

将与服务类型对应的服务节点中的任一服务节点作为目标服务节点。

本公开的实施例中,请求处理模块在将服务请求发送到目标服务节点时,具体用于:

根据目标服务节点,获取服务节点管理器中与目标服务节点对应的注册信息;

基于注册信息,将服务请求发送到目标服务节点。

本公开的实施例中,该装置还可以包括目标服务节点发送模块;

目标服务节点发送模块在客户端与目标服务节点建立通信连接后,用于将目标服务节点对应的路由参数发送至客户端。

本公开的实施例中,该装置还可以包括存储模块;

存储模块用于将各个服务类型的服务节点的注册信息和对应关系中的至少一项存储至存储系统。

本公开实施例的服务请求的处理装置可执行图1所示的一种服务请求的处理方法,其实现原理相类似,本公开各实施例中的服务请求的处理装置中的各模块所执行的动作是与本公开各实施例中的服务请求的处理方法中的步骤相对应的,对于服务请求的处理装置的各模块的详细功能描述具体可以参见前文中所示的对应的服务请求的处理方法中的描述,此处不再赘述。

基于与图1中所示方法相同的原理,本公开的实施例中还提供了一种基于与图1中所示方法相同的原理,本公开的实施例中还提供了一种服务请求的处理系统,该系统可以包括客户端310、网络接口320、服务节点管理器330和服务节点340;

服务节点管理器330,用于存储各服务类型和各服务类型对应的服务节点340的注册信息;

网络接口320,用于接收客户端310发送的网络连接请求,根据服务请求对应的统一资源定位符url,确定与服务请求对应的服务节点340的服务类型,将与服务类型对应的服务节点340确定为目标服务节点240,从服务节点管理器330获取与目标服务节点340对应的注册信息,根据目标服务节点340的注册信息,将服务请求发送到目标服务节点340。

在实际应用中,服务节点管理器330可配置在网络接口320中,也可以独立于系统中的其他部件配置,若服务节点管理器330配置在网络接口320中,则在网络接口320确定出服务类型对应的服务节点340中的目标服务节点340后,可直接调用服务节点管理器330中存储的服务节点340的注册信息,从而根据目标服务节点340的注册信息,将服务请求发送到目标服务节点340;若服务节点管理器330独立于其他部件配置,则在网络接口320确定出服务类型对应的服务节点340中的目标服务节点340后,可以由服务管理服务器依据目标服务节点340,主动向网络接口320发送目标服务节点340的注册信息,也可以由网络接口320向服务管理服务器发送请求,服务节点管理器330依据该请求将目标服务节点340的注册信息发送给网络接口320,以使得网络接口320根据目标服务节点340的注册信息,将服务请求发送到目标服务节点340。

本公开的实施例中的方案,可以基于客户端310发送的服务请求对应的统一资源定位符url,确定服务请求对应的服务节点的服务类型,由于不同的服务请求对应不同的服务类型的服务节点340,因此,基于服务请求对应的服务节点340的服务类型,可以在该服务类型对应的服务节点340中匹配到与服务请求对应的目标服务节点340,再将服务请求发送到目标服务节点340,使得客户端310可与目标服务节点340之间进行通信。在大量客户端310和服务节点340间同时有建立网络通信连接的需求时,本公开中按照服务请求对应的服务节点340的服务类型匹配服务请求对应的目标服务节点340的方案,相较于在基于服务请求在所有服务节点340中匹配对应的目标服务节点340的方案,提高了服务请求的处理效率。

基于与本公开的实施例中的服务请求的处理方法相同的原理,本公开提供了一种电子设备,该电子设备包括处理器和存储器;存储器,用于存储操作指令;处理器,用于通过调用操作指令,执行如本公开的服务请求的处理方法中的任一实施例中所示的方法。

基于与本公开的实施例中的服务请求的处理方法相同的原理,本公开提供了一种计算机可读存储介质,该存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如本公开的数据处理方法中的任一实施例中所示的方法。

本公开的实施例中,如图4所示,其示出了适于用来实现本公开实施例的电子设备50(例如实现图1中所示的方法的终端设备或服务器)的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图4示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图4所示,电子设备50可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(rom)502中的程序或者从存储装置508加载到随机访问存储器(ram)503中的程序而执行各种适当的动作和处理。在ram503中,还存储有电子设备30操作所需的各种程序和数据。处理装置501、rom502以及ram503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。

通常,以下装置可以连接至i/o接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备50与其他设备进行无线或有线通信以交换数据。虽然图4示出了具有各种装置的电子设备50,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从rom502被安装。在该计算机程序被处理装置501执行时,执行本公开实施例的方法中限定的上述功能。

需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述方法实施例所示的方法;或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述方法实施例所示的方法。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1