CN111586097A - 一种网络请求处理方法、计算设备及存储介质 - Google Patents
一种网络请求处理方法、计算设备及存储介质 Download PDFInfo
- Publication number
- CN111586097A CN111586097A CN202010250602.8A CN202010250602A CN111586097A CN 111586097 A CN111586097 A CN 111586097A CN 202010250602 A CN202010250602 A CN 202010250602A CN 111586097 A CN111586097 A CN 111586097A
- Authority
- CN
- China
- Prior art keywords
- network request
- micro
- service
- request
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 230000002776 aggregation Effects 0.000 claims abstract description 38
- 238000004220 aggregation Methods 0.000 claims abstract description 38
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000013507 mapping Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 17
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- 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)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种网络请求处理方法,适于在计算设备中执行,计算设备适于与客户端连接,该方法包括步骤:接收客户端发送的网络请求;判断该网络请求是否是聚合请求,若是,获取与该网络请求对应的至少两个微服务名,并将此网络请求转发给微服务名对应的至少两个微服务;获取至少两个微服务的返回结果中的目标数据,将目标数据进行合并,并发送给客户端。本发明还公开了相应的计算设备及存储介质。
Description
技术领域
本发明涉及信息处理技术领域,特别涉及一种网络请求处理方法、计算设备及存储介质。
背景技术
随着业务的不断发展,和服务端微服务化的进程,客户端与服务端的交互在急剧增长,交互简单说即网络接口的通信。这种增长很明显的体现在客户端调用服务端接口的数量上。并且处于不同微服务中的功能接口往往域名、接口地址、接口名等都不尽相同,很难统一。因此出现了通过网关统一提供各微服务的入口的技术,但是并没有对不同微服务功能进行彻底的整合,当客户端同时需要多个微服务的返回数据时,客户端仍然需要分别通过网关向这多个微服务并发多次请求,浪费了大量资源,而且各客户端的终端设备性能存在差异,终端设备性能不好时,用户的体验不佳。
现有技术中,解决这种问题的方式是将多个微服务的功能进行耦合,然而这种方案需要通过硬编码来实现,不仅增加工程师的工作量,当需要聚合的功能有所改变时,只能更换硬件或者重新编码,增加了业务***的复杂度。
发明内容
为此,本发明提供了一种网络请求处理方法、计算设备及存储介质,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明的一个方面,提供了一种网络请求处理方法,适于在计算设备中执行,计算设备适于与客户端连接,该方法包括步骤:接收客户端发送的网络请求;判断该网络请求是否是聚合请求,若是,获取与网络请求对应的至少两个微服务名;将网络请求转发给所述至少两个微服务名分别对应的微服务;获取至少两个微服务的返回结果中的目标数据,将目标数据进行合并,并发送给客户端。
可选地,在根据本发明的网络请求处理方法中,获取与网络请求对应的至少两个微服务名包括步骤:读取聚合请求的路由信息,根据此路由信息获取与聚合请求对应的至少两个微服务名,路由信息包含聚合请求和微服务名的映射关系。
可选地,在根据本发明的网络请求处理方法,将网络请求转发给至少两个微服务名分别对应的微服务,包括步骤:获取每个微服务名对应的地址信息,根据地址信息,将网络请求转发给与注册中心服务列表中的微服务名对应的微服务。
可选地,在根据本发明的网络请求处理方法中,根据地址信息,将网络请求转发给与注册中心服务列表中的微服务名对应的微服务,包括步骤:判断所述网络请求时是否只能读取一次,若是,将所述网络请求封装为可多次读取的字节信息。
可选地,在根据本发明的网络请求处理方法中,获取至少两个微服务的返回结果中的目标数据,包括步骤:在获取所有请求返回结果之前进行等待,当超过时间阈值时将目前已返回的目标数据进行合并。
可选地,在根据本发明的网络请求处理方法中,时间阈值为500ms。
可选地,在根据本发明的网络请求处理方法中,获取网络请求对应的至少两个微服务之前,包括步骤:创建所述网络请求和各微服务名之间的映射关系。
可选地,在根据本发明的网络请求处理方法中,当映射关系需要进行修改时,对应修改网络请求的路由信息。
可选地,在根据本发明的网络请求处理方法中,若网络请求不是聚合请求,则读取网络请求的路由信息;根据路由信息将网络请求转发至注册中心服务列表中的单个微服务;根据网络请求获取微服务的返回结果中的目标数据,将目标数据发送给客户端。
可选地,在根据本发明的网络请求处理方法中,通过心跳机制实时监控注册中心服务列表中的每一个微服务的健康状态;若未检测到服务列表中的微服务的心跳,则发送报警信息,其中,报警信息包括微服务的微服务名。
根据本发明的另一个方面,提供了一种网络请求处理***,包括:客户端,适于发出网络请求;网关,适于接收来自客户端的网络请求,并获取与网络请求对应的微服务名,将网络请求转发给微服务名对应的微服务,获取微服务的返回结果中的目标数据,将目标数据进行合并,并发送给客户端;注册中心,包含服务列表,服务列表包含来自相同或不同服务器注册的微服务名,以及每个微服务名对应的微服务地址信息,网关根据此地址信息,将网络请求转发给微服务名对应的微服务;配置中心,适于配置网络请求的路由信息,网关根据此路由信息获取注册中心服务列表中的微服务名;服务器,包含与网络请求对应的微服务
可选地,在根据本发明的网络请求处理***中,网关进一步适于,判断所述网络请求是否是聚合请求,若是,则获取网络请求对应的至少两个微服务。
根据本发明的又一个方面,提供了一种计算设备,包括至少一个处理器;以及存储器,存储有程序指令,其中程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行根据本发明的网络请求处理方法的指令。
根据本发明的又一个方面,提供了一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得计算设备执行本发明的网络请求处理方法。
根据本发明的技术方案,当同时需要多个微服务的返回数据时,只需要发送一个网络请求,根据网络请求的路由信息获取与网络请求对应的多个微服务名,将网络请求转发给微服务名对应的多个微服务,则可获取到这些微服务的返回结果中的目标数据,将目标数据进行合并返回给客户端,避免了因客户端终端设备的性能问题而影响用户的体验。在减少客户端请求资源的同时也大大的减轻了客户端的复杂度,使得客户端开发起来更为简洁。
其中,路由信息包含聚合请求和微服务名的映射关系,映射关系需要进行修改时,对应修改网络请求的路由信息,即可改变需要聚合的功能。进一步地,利用配置中心配置网络请求的路由信息,当路由信息修改时网关只需要重读配置,实现动态路由,不需要中断重启***。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明的一个实施例的网络请求处理***100的示意图;
图2示出了根据本发明的一个实施例的计算设备200的示意图;
图3示出了根据本发明的一个实施例的网络请求处理方法300的流程图;
图4示出了根据本发明的一个实施例的网络请求处理模块400的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明的一个实施例的网络请求处理***100的示意图。如图1所示,网络请求处理***100包括:客户端110、网关120、注册中心130、配置中心140、服务器150。微服务简单说即网络接口的通信,客户端根据需求调用服务端接口的数量在不断增长,当客户端需要完成一次完整的信息呈现过程时可能需要同时调用不同的服务端接口,即不同的微服务。在根据本发明的网络请求处理***100的微服务架构中,通过网关120提供微服务资源的入口,来实现前后端的分离,当客户端110需要请求后端服务器150中的微服务时,客户端110所发送的网络请求会通过网关120,再由网关120根据配置中心140提供的路由信息,将服务请求转发给微服务所在的服务器150。
注册中心120的服务列表包含来自相同或不同服务器150注册的微服务名,以及每个微服务名对应的微服务地址信息。具体来说,服务器150可以是单个服务器,也可以是由多个服务器组成的服务器集群,本发明对服务器的部署方式不做限制。根据本发明的技术方案,当同时需要多个微服务的返回数据时,只需要发送一个网络请求,根据网络请求的路由信息获取与网络请求对应的多个微服务名,将网络请求转发给微服务名对应的多个微服务,则可获取到这些微服务的返回结果中的目标数据,将目标数据进行合并返回给客户端110,避免了因客户端终端设备的性能问题而影响用户的体验。在减少客户端请求资源的同时也大大的减轻了客户端的复杂度,使得客户端开发起来更为简洁。
图2示出了根据本发明一个实施例的计算设备200的结构框图。在基本配置202中,计算设备200典型地包括***存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和***存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,***存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。***存储器206可以包括操作***220、一个或者多个应用222以及程序数据226。在一些实施方式中,应用222可以布置为在操作***上利用程序数据226进行操作。在一些实施例中,计算设备200被配置为执行网络请求处理方法300,程序数据226中就包含了用于执行所述方法的指令
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置102经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。在一些实施例中,计算机可读介质中存储一个或多个程序,这一个或多个程序中包括执行某些方法的指令,如根据本发明的实施例,计算设备200通过所述指令来执行基于本发明的网络请求处理方法300。
计算设备200上安装有支持网络文件传输和存储的移动APP或者客户端应用,包括原生应用或者诸如包括IE、Chrome和Firefox等浏览器,或者微信、QQ等通讯软件,并且本地存储有各种文件,如照片、音频、视频、文档(如Word、PDF等格式的文档)。应用客户端可以运行在诸如Windows、MacOS、安卓等操作***上。计算设备200可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、数码照相机、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备200还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。当客户端同时需要多个微服务的返回数据时,比如一个商品的详情页面中,商品详情数据与可用优惠券数据往往需要同时展示,但一般这两个数据会在不同的微服务模块中,客户端需要发送两次请求分别请求商品模块与优惠券模块。根据本发明的技术方案,将请求内容相近的不同微服务功能在网关路由时进行聚合,客户端只需请求一次便可以拿到全部数据。
图3示出了根据本发明的一个实施例的网络请求处理方法300的流程图。方法200适于在计算设备(例如前述计算设备200中)执行,计算设备与客户端连接。如图2所示,网络请求处理方法始于步骤S310。
在步骤S310中,接收客户端发送的网络请求。微服务架构中通过网关提供微服务资源的入口,来实现前后端的分离,当客户端需要请求后端的微服务时,客户端所发送的网络请求会通过网关,再由网关将服务请求转发给微服务。
根据本发明的一个实施例,网络请求分为聚合请求和非聚合请求。聚合请求对应多个微服务,需要在之前创建该网络请求和多个微服务之间的映射关系。例如,要实现网络请求A的功能,需要调用微服务A和微服务B,则创建网络请求A与微服务A和微服务B的映射关系,该映射关系由网络请求的路由信息表现。可根据需求进行聚合请求和非聚合请求的区分。
具体来说,当网络请求的功能是返回一个页面时,搜索类型请求不需要聚合,而用户类型请求需要配置为聚合请求。因为搜索服务的输入参数比较复杂,往往有各种所搜条件,返回结果集数据量大,但往往结果集合内类型相同。输入复杂,输出类型单一,可选择不进行聚合请求配置。而请求是返回与用户对应的页面时,用户信息往往存在于多个***中,输入条件却很简单,可能只需要一个用户ID,需要查询出用户的订单列表、用户的优惠券列表、用户自身的基本信息。这是存在于三个不同的***中的,但是输入参数只需要一个用户ID,返回类型却是不同的。输入单一,返回类型多样且不在同一***中,可以使用聚合请求,客户端将三次请求聚合为一次。
接着在步骤S320中,判断该网络请求是否是聚合请求,若是,获取与网络请求对应的至少两个微服务名,聚合请求与微服务名的映射关系由路由信息体现。
根据本发明的一个实施例,读取聚合请求的路由信息,根据此路由信息获取与聚合请求对应的至少两个微服务名。网络请求的路由信息在创建网络请求和微服务名的关系时,由配置中心实现。
需要说明的是,在现有的通过网关统一提供各微服务的入口的技术中,原有的获取网络请求的路由方式为自动从工程依赖的配置文件中读取路由信息,或硬编码到网关代码中。
而本发明将获取网络请求的路由方式更改为从外部信息例如数据库或其他存储介质读取,可灵活自定义路由信息规则,为请求的聚合做好基础。进一步地,利用配置中心存储路由规则,同时动态加载路由。加载路由方式从配置中心中读取。而每当配置中心更新修改后,发布配置时,会向整个网关发出一个更新事件使得重新读取的路由规则生效。利用配置中心配置网络请求的路由信息,当路由信息修改时网关只需要重读配置,实现动态路由,不需要中断重启***。
例如在一个线上商城***中,配置中心的部分配置如下:
routeIds=service-search,service-user
service-search.serviceUrl=lb://TRAVELPLAT-SEARCH-SERVICE
service-search.path=/api/search/**
service-user.serviceUrl=me://TRAVELPLAT-ORDER-SERVICE.TRAVELPLAT-COUPON-SERVICE.TRAVELPLAT-ACCOUNT-SERVICE
service-user.path=/api/user/info
路由规则service-search为搜索类型服务,不需要进行聚合,lb://开头为非聚合请求,当客户端访问www.gateway.com/api/search/**所包含的链接时,获取与网络请求对应的微服务名——搜索***(TRAVELPLAT-SEARCH-SERVICE)。
路由规则service-user为用户类型服务,需要进行聚合,以me://开头为聚合请求,多个服务名(service-name)以句号隔开,当客户端访问www.gateway.com/api/user/info此链接时,获取与网络请求对应的微服务名——订单***(TRAVELPLAT-ORDER-SERVICE)、优惠券***(TRAVELPLAT-COUPON-SERVICE)、用户信息***(TRAVELPLAT-ACCOUNT-SERVICE)。
随后在步骤S330中,将网络请求转发给至少两个微服务名分别对应的微服务。因为微服务的网络位置都是动态分配的。并且因为扩展、失效、升级等需求,微服务所在的服务器也经常出现变动,微服务在启用时,都需要将自己的信息注册到注册中心中,生成服务列表,由注册中心实现服务发现。
注册中心的服务列表包含来自相同或不同服务器注册的微服务名,以及每个微服务名对应的微服务地址信息。根据本发明的一个实施例,获取每个微服务名对应的地址信息,根据地址信息,将网络请求转发给与注册中心服务列表中的微服务名对应的微服务。具体地,对于聚合请求,解析出配置的多个服务名,同时寻址,寻址完成后开启线程池进行异步并发请求。
需要注意的是,部分流请求具有不可复读性,例如当请求参数在请求体中的时候,通过流的方式将请求体取出参数进行转发之后,无法将此请求再次进行转发。因此根据本发明的一个实施例,在进行转发前需要判断网络请求时是否只能读取一次,若是,将该网络请求封装为可多次读取的字节信息。具体地,在转发前判断是否POST请求,如果是则通过重写的NettyMergeRoutionFilter进行流的复制,并更新线程池中所有线程,其中将只可读取一次的流信息转换为可暂存并多次读取的字节信息。如果不是POST请求则直接进入线程池。该步骤的代码如下所示:
可选地,本发明实施例中,为了能监控所有微服务,还进一步包括:通过心跳机制实时监控注册中心服务列表中的每一个微服务的健康状态;若未检测到服务列表中的微服务的心跳,则发送报警信息,其中,报警信息包括该微服务的微服务名。具体的,可以实现为服务列表中的每一个后端服务每间隔一段预设时间,发送包括自身微服务名的心跳报告。
最后在步骤S340中,获取至少两个微服务的返回结果中的目标数据,将目标数据进行合并,并发送给客户端。
根据数据请求从各返回结果中提取所需的目标字段参数,确定为目标数据。将各个目标数据按照设定规则进行数据转换。设定规则可以是开发业务***的技术人员设置的。数据转换的过程是将目标数据转换为含义相同只是表示方式不同的过程,如大小写转换等。例如对于在一个线上商城***的用户类型请求中,将请求转发到订单***中查询订单列表,优惠券***中查询优惠券列表,用户信息***中查询用户昵称、头像等基本信息,等待三个***的返回,将三种类型的结果中的目标数据整合为客户端需要的格式,一次性返回给客户端。
进一步的,异步线程池采用可得到返回数据的,在获取线程池中所有线程的请求返回之前进行等待,当超过等待时间阀值时会将目前已返回的目标数据进行合并。根据本发明的一个实施例,此阀值可以设置为500ms,异步请求多个服务在理想状态下与单一请求某一服务的效率应基本一致,500ms已是某一服务请求效率的底线。
前述网络请求分为聚合请求和非聚合请求,对于非聚合请求,则读取网络请求的路由信息,根据路由信息将网络请求转发至注册中心服务列表中的单个微服务,根据网络请求获取微服务的返回结果中的目标数据,将目标数据发送给客户端。例如线上商城***中的搜索类型请求,当客户端访问www.gateway.com/api/search/**所包含的链接时,将请求转发到注册中心中名为TRAVELPLAT-SEARCH-SERVICE的服务上的/api/search/**所对应的地址,此地址可以通过其他几个配置进行修改,默认与客户端访问地址一致,并获取多个数据类型相同搜索结果返回给客户端。
具体地,将数据返回给客户端的步骤包括,将原请求头信息赋予路由转发后数据并返回客户端。当单一请求或聚合请求转发完成后,将返回给客户端的数据进行后续处理,包括资源统计,日志整理等一系列统一操作,为本发明提供了完善的数据统计与流量分析的功能。
根据本发明的技术方案,当同时需要多个微服务的返回数据时,只需要发送一个网络请求,根据网络请求的路由信息获取与网络请求对应的多个微服务名,将网络请求转发给微服务名对应的多个微服务,则可获取到这些微服务的返回结果中的目标数据,将目标数据进行合并返回给客户端,避免了因客户端终端设备的性能问题而影响用户的体验。在减少客户端请求资源的同时也大大的减轻了客户端的复杂度,使得客户端开发起来更为简洁。
其中,路由信息包含聚合请求和微服务名的映射关系,映射关系需要进行修改时,对应修改网络请求的路由信息,即可改变需要聚合的功能。进一步地,利用配置中心配置网络请求的路由信息,当路由信息修改时网关只需要重读配置,实现动态路由,不需要中断重启***。
为了结合***对上述方法进一步阐述,图4示出了根据本发明的另一个实施例的网络请求处理模块400的示意图。网络请求处理模块400包括:客户端410、网关420、注册中心430、配置中心440、服务器450。当客户端410需要请求后端服务器450中的微服务时,客户端410所发送的网络请求会通过网关420,再由网关420根据配置中心440提供的路由信息,将服务请求转发给微服务所在的服务器450。
客户端410适于发出网络请求,根据本发明的一个实施例,网络请求分为聚合请求和非聚合请求。聚合请求对应多个微服务,需要在之前创建该网络请求和多个微服务之间的映射关系。例如,要实现网络请求A的功能,需要调用微服务A和微服务B,则创建网络请求A与微服务A和微服务B的映射关系,该映射关系由网络请求的路由信息表现。可根据需求进行聚合请求和非聚合请求的区分。
具体来说,当网络请求的功能是返回一个页面时,搜索类型请求不需要聚合,而用户类型请求需要配置为聚合请求。因为搜索服务的输入参数比较复杂,往往有各种所搜条件,返回结果集数据量大,但往往结果集合内类型相同。
网关420适于接收来自客户端的网络请求,并获取与该网络请求对应的微服务名,将网络请求转发给微服务名对应的微服务,获取微服务的返回结果中的目标数据,将目标数据进行合并,并发送给客户端410。
当网关420接收到一个网络请求时,会判断该网络请求是否是聚合请求,若是,获取与网络请求对应的至少两个微服务名,聚合请求与微服务名的映射关系由路由信息体现。然后将网络请求转发给至少两个微服务名分别对应的微服务,获取每个微服务名对应的地址信息,根据地址信息,将网络请求转发给与注册中心430服务列表中的微服务名对应的微服务。具体地,对于聚合请求,解析出配置的多个服务名,同时寻址,寻址完成后开启线程池进行异步并发请求。需要注意的是,部分流请求具有不可复读性,例如当请求参数在请求体中的时候,通过流的方式将请求体取出参数进行转发之后,无法将此请求再次进行转发。因此根据本发明的一个实施例,在进行转发前需要判断网络请求时是否只能读取一次,若是,将该网络请求封装为可多次读取的字节信息。具体的方式封装方式已在前述步骤S330详尽陈述,此处不再赘述。
在获取对应聚合请求的至少两个微服务的返回结果中的目标数据后,网关420将目标数据进行合并,并发送给客户端410。合并的方式可以是根据数据请求从各返回结果中提取所需的目标字段参数,确定为目标数据,将各个目标数据按照设定规则进行数据转换。设定规则可以是开发业务***的技术人员设置的。进一步的,异步线程池采用可得到返回数据的,在获取线程池中所有线程的请求返回之前进行等待,当超过等待时间阀值时会将目前已返回的目标数据进行合并,避免请求超时而影响用户体验。
若网关420接收到非聚合请求,则读取网络请求的路由信息,根据路由信息将网络请求转发至注册中心430服务列表中的单个微服务,根据网络请求获取微服务的返回结果中的目标数据,将目标数据发送给客户端410。
注册中心430,包含服务列表,服务列表包含来自相同或不同服务器注册的微服务名,以及每个微服务名对应的微服务地址信息,网关根据此地址信息,将网络请求转发给微服务名对应的微服务。因为微服务的网络位置都是动态分配的。并且因为扩展、失效、升级等需求,微服务所在的服务器也经常出现变动,微服务在启用时,都需要将自己的信息注册到注册中心430中,生成服务列表,由注册中心430实现服务发现。
配置中心440,适于配置网络请求的路由信息,网关根据此路由信息获取注册中心服务列表中的微服务名。前述体现了网络请求与微服务名的映射关系的路由信息,在创建网络请求和微服务名的关系时,由配置中心440实现,对应的,网络请求可以为聚合请求,也可以为非聚合请求,映射关系由业务场景更具实际情况决定。
需要说明的是,在现有的通过网关统一提供各微服务的入口的技术中,原有的获取网络请求的路由方式为自动从工程依赖的配置文件中读取路由信息,或硬编码到网关代码中,并没有涉及配置中心的流程。而本发明将获取网络请求的路由方式更改为从外部信息例如数据库或其他存储介质读取,可灵活自定义路由信息规则,为请求的聚合做好基础。进一步地,利用配置中心440存储路由规则,同时动态加载路由。加载路由方式从配置中心440中读取。而每当配置中心440更新修改后,发布配置时,会向整个网关420发出一个更新事件使得重新读取的路由规则生效。利用配置中心440配置网络请求的路由信息,当路由信息修改时网关只需要重读配置,实现动态路由,不需要中断重启***。
服务器450,包含与网络请求对应的微服务,因为微服务的网络位置都是动态分配的。并且因为扩展、失效、升级等需求,微服务所在的服务器450也经常出现变动,因此微服务在启用时,都需要将自己的信息注册到注册中心430中。
现有的微服务架构中,通过网关统一提供各微服务的入口的技术,但是并没有对不同微服务功能进行彻底的整合,当客户端同时需要多个微服务的返回数据时,客户端仍然需要分别通过网关向这多个微服务并发多次请求,浪费了大量资源,而且各客户端的终端设备性能存在差异,终端设备性能不好时,用户的体验不佳。而在本发明的网络请求处理***中,当同时需要多个微服务的返回数据时,客户端只需要发送一个网络请求,网关根据网络请求的路由信息获取与网络请求对应的多个微服务名,将网络请求转发给微服务名对应的多个微服务,则可获取到这些微服务的返回结果中的目标数据,将目标数据进行合并返回给客户端,避免了因客户端终端设备的性能问题而影响用户的体验。在减少客户端请求资源的同时也大大的减轻了客户端的复杂度,使得客户端开发起来更为简洁。
其中,路由信息包含聚合请求和微服务名的映射关系,映射关系需要进行修改时,无需更换硬件或者重新编码,对应修改网络请求的路由信息,即可改变需要聚合的功能,降低了业务***的复杂度。进一步地,利用配置中心配置网络请求的路由信息,当路由信息修改时网关只需要重读配置,实现动态路由,不需要中断重启***。
A6、如A1-A5中任一项所述的方法,所述时间阈值为500ms。
A8、如A2-A7中任一项所述的方法,当所述映射关系需要进行修改时,对应修改所述网络请求的路由信息。
A9、如A1所述的方法,还包括步骤:
若所述网络请求不是聚合请求,则读取所述网络请求的路由信息;
根据所述路由信息将所述网络请求转发至注册中心服务列表中的单个微服务;
根据所述网络请求获取所述微服务的返回结果中的目标数据,将所述目标数据发送给客户端。
A10、如A1-A9中任一项所述的方法,还包括步骤:
通过心跳机制实时监控注册中心服务列表中的每一个微服务的健康状态;
若未检测到服务列表中的微服务的心跳,则发送报警信息,其中,所述报警信息包括所述微服务的微服务名。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机***的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (10)
1.一种网络请求处理方法,所述方法适于在计算设备中执行,所述计算设备适于与客户端连接,包括步骤:
接收客户端发送的网络请求;
判断所述网络请求是否是聚合请求,若是,获取与所述网络请求对应的至少两个微服务名;
将所述网络请求转发给所述至少两个微服务名分别对应的微服务;
获取至少两个微服务的返回结果中的目标数据,将所述目标数据进行合并,并发送给客户端。
2.如权利要求1所述的方法,所述获取所述网络请求对应的至少两个微服务名包括步骤:
读取所述聚合请求的路由信息,根据此路由信息获取与所述聚合请求对应的至少两个微服务名,所述路由信息包含所述聚合请求和微服务名的映射关系。
3.如权利要求1或2所述的方法,所述将所述网络请求转发给所述至少两个微服务名分别对应的微服务,包括步骤:
获取每个微服务名对应的地址信息,根据所述地址信息,将所述网络请求转发给与注册中心服务列表中的微服务名对应的微服务。
4.如权利要求1-3中任一项所述的方法,所述根据所述地址信息,将所述网络请求转发给与注册中心服务列表中的微服务名对应的微服务,包括步骤:
判断所述网络请求时是否只能读取一次,若是,将所述网络请求封装为可多次读取的字节信息。
5.如权利要求1-4中任一项所述的方法,所述获取至少两个微服务的返回结果中的目标数据,包括步骤:
在获取所有请求返回结果之前进行等待,当超过时间阈值时将目前已返回的目标数据进行合并。
6.如权利要求1-5中任一项所述的方法,所述获取所述网络请求对应的至少两个微服务之前,包括步骤:创建所述网络请求和各微服务名之间的映射关系。
7.一种网络请求处理***,包括:
客户端,适于发出网络请求;
网关,适于接收来自客户端的网络请求,并获取与所述网络请求对应的微服务名,将所述网络请求转发给微服务名对应的微服务,获取所述微服务的返回结果中的目标数据,将所述目标数据进行合并,并发送给客户端;
注册中心,包含服务列表,所述服务列表包含来自相同或不同服务器注册的微服务名,以及每个微服务名对应的微服务地址信息,所述网关根据此地址信息,将所述网络请求转发给微服务名对应的微服务;
配置中心,适于配置所述网络请求的路由信息,所述网关根据此路由信息获取注册中心服务列表中的微服务名;
服务器,包含与所述网络请求对应的微服务。
8.如权利要求7所述的***,所述网关进一步适于,判断所述网络请求是否是聚合请求,若是,则获取所述网络请求对应的至少两个微服务。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-6所述的网络请求处理方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被客户端读取并执行时,使得所述客户端执行如权利要求1-6中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010250602.8A CN111586097A (zh) | 2020-04-01 | 2020-04-01 | 一种网络请求处理方法、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010250602.8A CN111586097A (zh) | 2020-04-01 | 2020-04-01 | 一种网络请求处理方法、计算设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111586097A true CN111586097A (zh) | 2020-08-25 |
Family
ID=72119128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010250602.8A Pending CN111586097A (zh) | 2020-04-01 | 2020-04-01 | 一种网络请求处理方法、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111586097A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112866379A (zh) * | 2021-01-15 | 2021-05-28 | 浪潮云信息技术股份公司 | 微服务的访问方法和装置 |
CN114584451A (zh) * | 2022-01-18 | 2022-06-03 | 北京智象信息技术有限公司 | 一种基于微服务环境调试内部服务接口的方法及装置 |
CN114817821A (zh) * | 2022-06-30 | 2022-07-29 | 数字广东网络建设有限公司 | 一种政务信息的显示方法、装置、电子设备及存储介质 |
CN115118787A (zh) * | 2022-06-21 | 2022-09-27 | 京东科技信息技术有限公司 | 一种服务控制方法、***、存储介质及电子设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170364434A1 (en) * | 2016-06-15 | 2017-12-21 | International Business Machines Corporation | Splitting and merging microservices |
CN108234566A (zh) * | 2016-12-21 | 2018-06-29 | 阿里巴巴集团控股有限公司 | 一种集群的数据处理方法及装置 |
CN108847989A (zh) * | 2018-06-29 | 2018-11-20 | 杭州安恒信息技术股份有限公司 | 基于微服务架构的日志处理方法、业务服务***以及电子设备 |
CN108900329A (zh) * | 2018-06-21 | 2018-11-27 | 珠海宏桥高科技有限公司 | 基于网关基础服务的实时动态转发方法 |
CN109086409A (zh) * | 2018-08-02 | 2018-12-25 | 泰康保险集团股份有限公司 | 微服务数据处理方法、装置、电子设备及计算机可读介质 |
CN109474685A (zh) * | 2018-11-16 | 2019-03-15 | 中国银行股份有限公司 | 一种基于微服务架构下的服务监控方法和*** |
CN109639572A (zh) * | 2018-12-06 | 2019-04-16 | 网易(杭州)网络有限公司 | 路由管理方法、装置及微服务*** |
CN110008045A (zh) * | 2019-04-12 | 2019-07-12 | 深圳乐信软件技术有限公司 | 微服务的聚合方法、装置、设备及存储介质 |
CN110557284A (zh) * | 2019-08-30 | 2019-12-10 | 贝壳技术有限公司 | 基于客户端网关的数据聚合方法及装置 |
CN110837424A (zh) * | 2019-10-15 | 2020-02-25 | 东软集团股份有限公司 | 服务实例确定方法、装置、存储介质及电子设备 |
-
2020
- 2020-04-01 CN CN202010250602.8A patent/CN111586097A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170364434A1 (en) * | 2016-06-15 | 2017-12-21 | International Business Machines Corporation | Splitting and merging microservices |
CN108234566A (zh) * | 2016-12-21 | 2018-06-29 | 阿里巴巴集团控股有限公司 | 一种集群的数据处理方法及装置 |
CN108900329A (zh) * | 2018-06-21 | 2018-11-27 | 珠海宏桥高科技有限公司 | 基于网关基础服务的实时动态转发方法 |
CN108847989A (zh) * | 2018-06-29 | 2018-11-20 | 杭州安恒信息技术股份有限公司 | 基于微服务架构的日志处理方法、业务服务***以及电子设备 |
CN109086409A (zh) * | 2018-08-02 | 2018-12-25 | 泰康保险集团股份有限公司 | 微服务数据处理方法、装置、电子设备及计算机可读介质 |
CN109474685A (zh) * | 2018-11-16 | 2019-03-15 | 中国银行股份有限公司 | 一种基于微服务架构下的服务监控方法和*** |
CN109639572A (zh) * | 2018-12-06 | 2019-04-16 | 网易(杭州)网络有限公司 | 路由管理方法、装置及微服务*** |
CN110008045A (zh) * | 2019-04-12 | 2019-07-12 | 深圳乐信软件技术有限公司 | 微服务的聚合方法、装置、设备及存储介质 |
CN110557284A (zh) * | 2019-08-30 | 2019-12-10 | 贝壳技术有限公司 | 基于客户端网关的数据聚合方法及装置 |
CN110837424A (zh) * | 2019-10-15 | 2020-02-25 | 东软集团股份有限公司 | 服务实例确定方法、装置、存储介质及电子设备 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112866379A (zh) * | 2021-01-15 | 2021-05-28 | 浪潮云信息技术股份公司 | 微服务的访问方法和装置 |
CN114584451A (zh) * | 2022-01-18 | 2022-06-03 | 北京智象信息技术有限公司 | 一种基于微服务环境调试内部服务接口的方法及装置 |
CN114584451B (zh) * | 2022-01-18 | 2023-10-17 | 北京智象信息技术有限公司 | 一种基于微服务环境调试内部服务接口的方法及装置 |
CN115118787A (zh) * | 2022-06-21 | 2022-09-27 | 京东科技信息技术有限公司 | 一种服务控制方法、***、存储介质及电子设备 |
CN114817821A (zh) * | 2022-06-30 | 2022-07-29 | 数字广东网络建设有限公司 | 一种政务信息的显示方法、装置、电子设备及存储介质 |
CN114817821B (zh) * | 2022-06-30 | 2022-09-16 | 数字广东网络建设有限公司 | 一种政务信息的显示方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111586097A (zh) | 一种网络请求处理方法、计算设备及存储介质 | |
CN111427766B (zh) | 一种请求处理方法、装置和代理服务器 | |
CN111221521B (zh) | 日志代码的生成方法、装置、计算机***和可读存储介质 | |
CN108696381B (zh) | 一种协议配置方法及装置 | |
CN111290806B (zh) | 应用程序接口的调用方法、装置、计算机设备及存储介质 | |
US11979300B2 (en) | Standardized format for containerized applications | |
CN107688538B (zh) | 一种脚本执行方法、装置及计算设备 | |
CN109831466B (zh) | 微服务业务处理方法及nginx服务器 | |
CN109617647B (zh) | 报文转换方法、装置、计算机设备及计算机可读存储介质 | |
CN113010224B (zh) | 前端微服务化方法、装置、计算机设备和存储介质 | |
WO2023185166A1 (zh) | 服务调用方法、装置、设备及存储介质 | |
WO2021179156A1 (zh) | 消息处理方法、装置、***以及服务器 | |
US10915378B1 (en) | Open discovery service | |
CN110365724A (zh) | 任务处理方法、装置及电子设备 | |
CN113448756B (zh) | 一种进程间通信***、方法及计算设备 | |
KR20210141704A (ko) | 네트워크 기반 미디어 처리(nbmp)에서의 미디어 처리 함수를 대한 구성 파라미터의 그래프 표현 및 설명 | |
US9990570B2 (en) | Information processing apparatus that determines spooling completion, and method for information processing apparatus | |
CN109885347B (zh) | 一种配置数据的获取方法、装置及终端、***、存储介质 | |
CN112417014A (zh) | 动态修改执行计划方法、***、计算机可读存储介质 | |
CN112732468B (zh) | 数据处理方法、数据交互***及计算设备 | |
CN114489622A (zh) | 静态资源管理方法、Node.js应用、电子设备和存储介质 | |
US10437919B2 (en) | Information processing system, information processing method, document processing system, and storage medium, for deleting a conversion process when a request to generate document data in a first format has been canceled | |
CN113761871A (zh) | 富文本渲染方法、装置、电子设备以及存储介质 | |
WO2023082813A1 (zh) | 信息分享方法、装置、电子设备及存储介质 | |
JP2014146276A (ja) | クライアント、サーバー、管理システム及びその方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200825 |