消息处理方法、装置、设备及计算机可读存储介质与流程

文档序号:28691339发布日期:2022-01-29 11:32阅读:56来源:国知局
1.本技术涉及计算机网络技术,尤其涉及一种消息处理方法、装置、设备及计算机可读存储介质。
背景技术
::2.随着微服务概念的流行普及,基于微服务架构的开发和集成逐渐成为业内趋势。在微服务架构下,功能庞大的应用被拆分成多个小的服务,为了给内部服务提供保障,通过提供高性能的应用程序接口(api,applicationprogramminginterface)托管服务可以帮助应用服务的开发人员便捷地对外提供服务,无需考虑安全控制、流量控制、审计日志等问题。3.相关技术中,实现应用程序接口托管服务的设备可称为api网关,api网关可以提供统一访问入口以简化客户端访问微服务的操作。然而,相关技术中对于服务消息的路由方式,配置复杂,路由速度慢。技术实现要素:4.本技术实施例提供一种消息处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够实现服务消息的快速路由。5.本技术实施例的技术方案是这样实现的:6.本技术实施例提供一种消息处理方法,包括:7.网关设备接收客户端发送的服务消息,所述服务消息携带用于指示路由信息的路由元数据;8.解析所述服务消息,得到所述路由元数据;9.根据所述路由元数据,确定所述服务消息对应的目标服务,以及所述目标服务所对应的目标服务器;10.向所述目标服务器转发所述服务消息,以使所述目标服务器返回与所述服务消息对应的响应结果。11.本技术实施例提供一种消息处理装置,包括:12.接收模块,用于接收客户端发送的服务消息,所述服务消息携带用于指示路由信息的路由元数据;13.解析模块,用于解析所述服务消息,得到所述路由元数据;14.确定模块,用于根据所述路由元数据,确定所述服务消息对应的目标服务,以及所述目标服务所对应的目标服务器;15.发送模块,用于向所述目标服务器转发所述服务消息,以使所述目标服务器返回与所述服务消息对应的响应结果。16.上述方案中,所述解析模块,还用于解析所述服务消息,得到路由元数据区,所述路由元数据区包括序列化后的路由元数据;17.对所述序列化后的路由元数据进行反序列化,得到所述路由元数据。18.上述方案中,所述确定模块,还用于将所述路由元数据所指示的路由信息与路由表中的路由信息进行匹配,以在所述路由表中确定目标路由信息;19.基于所述目标路由信息,确定所述服务消息对应的目标服务,以及所述目标服务对应的服务实例;20.根据所述目标服务对应的服务实例,确定所述服务消息对应的目标服务器。21.上述方案中,所述路由元数据所指示的路由信息包括消息标识,所述确定模块,还用于获取路由表中的各路由信息所包括的参考消息标识组、及各所述参考消息标识组所对应的服务;22.确定所述消息标识归属的参考消息标识组为目标消息标识组,并确定包括所述目标消息标识组的路由信息为所述目标路由信息;23.基于所述目标路由信息,确定所述服务消息对应的目标服务,包括:24.基于所述目标路由信息,确定所述目标消息标识组对应的服务为所述服务消息对应的目标服务。25.上述方案中,所述消息标识采用键值对的方式存储,所述确定模块,还用于获取所述消息标识对应的标识值;26.确定各所述参考消息标识组对应的标识值范围;27.确定所述标识值所归属的标识值范围,并将相应的参考消息标识组确定为所述目标消息标识组。28.上述方案中,所述确定模块,还用于当所述服务实例的数量为一个时,将所述服务实例所在的服务器,确定为所述服务消息对应的目标服务器;29.当所述服务实例的数量为至少两个时,根据负载均衡,从所述至少两个服务实例中,确定目标服务实例,并将所述目标服务实例所在的服务器作为所述目标服务器。30.上述方案中,所述发送模块,还用于获取所述网关设备当前路由所述目标服务的服务消息的数量、以及所述网关设备的限流阈值;31.其中,所述限流阈值用于表征单位时间内,通过所述网关设备能够路由所述目标服务的服务消息的最大数量;32.当所述数量未达到所述限流阈值时,向所述目标服务器转发所述服务消息。33.上述方案中,所述发送模块,还用于当所述数量达到所述限流阈值时,获取所述目标服务对应的熔断方式;34.其中,所述熔断方式,用于指示禁止所述客户端对所述目标服务进行访问所执行的操作;35.根据所述熔断方式,执行所述操作,以停止向所述目标服务器转发所述服务消息。36.上述方案中,所述发送模块,还用于当所述熔断方式指示执行消息丢弃操作时,丢弃所述客户端发送的所述服务消息;37.当所述熔断方式指示进行连接中断操作时,中断所述客户端与所述目标服务器间的通信连接。38.本技术实施例提供一种电子设备,包括:39.存储器,用于存储可执行指令;40.处理器,用于执行所述存储器中存储的可执行指令时,实现本技术实施例提供的消息处理方法。41.本技术实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本技术实施例提供的消息处理方法。42.本技术实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本技术实施例提供的消息处理方法。43.本技术实施例具有以下有益效果:44.本技术实施例中,由于服务消息中携带有用于指示路由信息的路由元数据,从而使得网关设备可以直接基于路由元数据所指示的路由信息,实现服务消息的快速路由,路由方式简单灵活、降低了客户端与服务器的耦合度。附图说明45.图1是本技术实施例提供的消息处理方法的架构示意图;46.图2是本技术实施例提供的电子设备的结构示意图;47.图3是本技术实施例提供的消息处理方法的流程示意图;48.图4是本技术实施例提供的元数据区格式示意图;49.图5是本技术实施例提供的目标服务器的确定方法流程图;50.图6是本技术实施例提供的路由信息的示例图;51.图7是本技术实施例提供的路由信息的匹配方式示意图;52.图8是本技术实施例提供的路由信息配置示意图;53.图9是本技术实施例提供的限流熔断信息配置示意图;54.图10是本技术实施例提供的目标路由信息的确定方法流程示意图;55.图11是本技术实施例提供的消息处理流程图;56.图12是本技术实施例提供的目标服务的确定方法流程示意图;57.图13是本技术实施例提供的目标服务器的确定方法流程图;58.图14是本技术实施例提供的限流熔断处理流程图;59.图15a-15b是本技术实施例提供的相关路由配置示意图;60.图16是本技术实施例提供的服务消息处理系统架构示意图;61.图17是本技术实施例提供的消息处理流程图。具体实施方式62.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。63.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。64.如果申请文件中出现“第一/第二”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。65.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的
技术领域
:的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。66.对本技术实施例进行进一步详细说明之前,对本技术实施例中涉及的名词和术语进行说明,本技术实施例中涉及的名词和术语适用于如下的解释。67.1)应用程序接口网关:应用程序接口(api,applicationprogramminginterface)网关,简称api网关,是多个微服务的客户端的中央接口,将所有api的调用统一接入api网关层,由网关层负责接入和输出。68.对于服务数量众多、复杂度比较高、规模比较大的业务来说,引入api网关的优势如下:聚合接口使得服务对调用者(客户端)透明,客户端与后端的耦合度降低;聚合后台服务,节省流量,提高性能,提升用户体验;提供安全、流控、过滤、缓存、计费、监控等api管理功能等。69.2)元数据(metadata):用来描述数据的数据信息。常见的例如数据的属性信息,可以使描述信息格式化,便于机器处理。70.3)路由表(routingtable):在计算机网络中,是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表存储着指向特定网络地址的路径(在有些情况下,还记录有路径的路由度量值)。路由表中含有网络周边的拓扑信息。路由表建立的主要目标是为了实现路由协议和静态路由选择。可以理解成是记录源端到目的端的路径的相关信息表,提供给路由模块寻路。71.4)服务熔断:对于服务接口的调用次数的限制,当某服务达到上限时,接口网关会自动停止向上游服务发送请求,并向客户端返回错误提示信息或一个统一的相应,进行服务降级,对于需要临时发生故障的服务,接口网关打开对应服务的断路器进行服务熔断,防止整个系统“雪崩”。72.5)4层/7层路由:分别对应于网络七层协议中的第4层(传输层、tcp/udp层)和第7层(应用层、http)。在传输层实现路由的叫4层路由,在应用层实现的路由叫7层路由。73.相关技术中,针对服务消息的路由方式大多是采用基于http协议,往往需要通过统一资源定位系统(url,uniformresourcelocator)的正则匹配获取目标路由的。而对于自定义协议的服务消息,大多基于tcp/udp协议,承载的不一定是http协议,也无url这种字段。对于这种服务信息不一定都在url里面,即使放到url上,用正则表达式配置也非常复杂,不容易理解。74.基于此,本技术实施例提供一种消息处理方法、装置、设备和计算机可读存储介质,能够实现服务消息的快速路由,路由方式简单灵活、降低了客户端与服务器的耦合度。75.下面说明本技术实施例提供的消息处理设备的示例性应用,本技术实施例提供的消息处理设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。下面,将说明网关设备实施为服务器时示例性应用。76.参见图1,图1是本技术实施例提供的消息处理方法的架构示意图,为实现支撑一个消息处理应用,在消息处理系统100中,终端400(示例性示出了终端400-1和终端400-2)通过网络300连接网关设备,网关设备通过网络300连接服务器200(示例性示出了服务器200-1和服务器200-2),网络300可以是广域网或者局域网,又或者是二者的组合。77.在实际应用中,终端400可以为智能手机、平板电脑、笔记本电脑等各种类型的用户终端,还可以为台式计算机、媒体播放器、游戏机、电视机或者这些数据处理设备中任意两个或多个的组合;服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(cdn,contentdeliverynetwork)、以及大数据和人工智能平台等基础云计算服务的云服务器。网关设备500可以是终端400的任意一台或多台,也可以是服务器200中的任意一台或多台。78.终端400用于,向网关设备发送携带用于指示路由信息的路由元数据的服务消息,并接收网关设备发送的响应失败的通知消失,或服务器返回的针对服务消息的响应结果。79.网关设备500用于,接收客户端发送的服务消息,服务消息携带用于指示路由信息的路由元数据;解析服务消息,得到路由元数据;根据路由元数据,确定服务消息对应的目标服务,以及目标服务所对应的目标服务器;向目标服务器转发服务消息,以使目标服务器返回与服务消息对应的响应结果。80.服务端200用于,接收网关设备转发的服务消息,并转发针对服务消息的响应结果至终端。81.在一些实施例中,如图1所示,终端400-1部署的应用程序客户端410-1(如游戏应用客户端、即时通信客户端等)通过网络300向网关设备500发送携带有用于指示路由信息的路由元数据的服务消。网关设备500接收客户端410-1发送的服务消息,并解析服务消息,得到路由元数据;然后,根据路由元数据,确定服务消息对应的目标服务,以及目标服务所对应的目标服务器;向目标服务器转发服务消息;目标服务器返回与服务消息对应的响应结果至网关设备,网关设备转发针对服务消息的响应结果至客户端。82.参见图2,图2是本技术实施例提供的电子设备的结构示意图,图2所示的电子设备600包括:至少一个处理器610、存储器650、至少一个网络接口620和用户接口630。电子设备600中的各个组件通过总线系统640耦合在一起。可理解,总线系统640用于实现这些组件之间的连接通信。总线系统640除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统640。83.处理器610可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。84.用户接口630包括使得能够呈现媒体内容的一个或多个输出装置631,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口630还包括一个或多个输入装置632,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。85.存储器650可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器650可选地包括在物理位置上远离处理器610的一个或多个存储设备。86.存储器650包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom,readonlymemory),易失性存储器可以是随机存取存储器(ram,randomaccessmemory)。本技术实施例描述的存储器650旨在包括任意适合类型的存储器。87.在一些实施例中,存储器650能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。88.操作系统651,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;89.网络通信模块652,用于经由一个或多个(有线或无线)网络接口620到达其他计算设备,示例性的网络接口620包括:蓝牙、无线相容性认证(wifi)、和通用串行总线(usb,universalserialbus)等;90.呈现模块653,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);91.输入处理模块654,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。92.在一些实施例中,本技术实施例提供的装置可以采用软件方式实现,图2示出了存储在存储器650中的消息处理装置655,其可以是程序和插件等形式的软件,包括以下软件模块:接收模块6551、解析模块6552、确定模块6553和发送模块6554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。93.在另一些实施例中,本技术实施例提供的消息处理装置可以采用硬件方式实现,作为示例,本技术实施例提供的消息处理装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本技术实施例提供的消息处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(asic,applicationspecificintegratedcircuit)、dsp、可编程逻辑器件(pld,programmablelogicdevice)、复杂可编程逻辑器件(cpld,complexprogrammablelogicdevice)、现场可编程门阵列(fpga,field-programmablegatearray)或其他电子元件。94.接下来说明本技术实施例提供的消息处理方法。在一些实施例中,网关设备可以是独立设备,也可以是图1中示出的服务器200、或终端400中任意一台设备,将结合本技术实施例提供的网关设备的示例性应用和实施,说明本技术实施例提供的消息处理方法。参见图3,图3是本技术实施例提供的消息处理方法的流程示意图,将结合图3示出的步骤进行说明。95.在步骤101中,网关设备接收客户端发送的服务消息,服务消息携带用于指示路由信息的路由元数据。96.在一些实施例中,客户端通过网关设备访问应用程序所归属的微服务系统中各服务器所提供的微服务,在微服务系统中,网关设备也可称为api网关,(后续陈述中无特别说明,网关设备即api网关)。在实际应用中,服务消息中可以携带用于指示路由信息的路由元数据,通过路由元数据,api网关可以获取服务消息所要访问的目标服务,以及目标服务对应的服务实例,进而确定能够处理所述服务消息的服务器。需要说明的,携带路由元数据的服务消息,可以在网络七层协议中的第4层(传输层、tcp/udp层)传输,即携带路由元数据的服务消息是基于tcp/udp传输,如此,能够适用于无url内容或无端口内容的消息路由。97.对路由元数据进行说明,在一些实施例中,路由元数据主要用于在api网关设备上和路由表做匹配,即路由元数据用于指示与路由信息相关的信息,(后续描述中出现的元数据可以理解成路由元数据)。路由元数据可以采用键值对(key,value)格式传输,其中,key和value可以是字符串类型,能够存储任意类型的数据。98.在实际实施时,可以为服务消息包括多个相互独立的路由元数据,每个元数据可以定义一个对路由的约束。例如,元数据为消息标识:key=‘msgid’、value=‘100’;元数据为游戏用户标识:key=‘uin’,value=‘游戏账号1’。99.由于数据的传输可以是基于http协议所实现的在tcp/ip七层的应用层实现,也可以是基于自定义协议实现在tcp/ip四层中的传输层实现。其中,自定义协议可以理解成是定义数据传输过程中的格式规范,即客户端、网关设备以及服务器经过约定后,确定的传输数据的格式。100.在步骤102中,解析服务消息,得到路由元数据。101.在一些实施例中,服务消息可以字节流的方式进行传输,服务消息中可以携带路由元数据区,路由元数据区可以包括多个通过序列化处理得到字节流格式的路由元数据。网关设备在接收到客户端发送的服务消后,可以通过以下方式获取初始的路由元数据:网关设备解析服务消息,得到路由元数据区,路由元数据区包括序列化后的路由元数据;对序列化后的路由元数据进行反序列化,得到路由元数据。102.在实际实施时,路由元数据区可以存在服务消息的消息头、消息体位置,通过可以设置路由元数据区对应的起始位置和结束位置。网关设备解析服务消息(解析服务消息对应的字节流),从路由元数据区的起始位置开始,对字节流进行反序列化操作,直到路由元数据区的结束位置,最终得到反序列化后的路由元数据。103.在一些实施例中,当路由元数据以键值对形式传输时,多条元数据可以通过一些序列化的方法组成字节流形成元数据区。参见图4,图4是本技术实施例提供的元数据区格式示意图,元数据区是具有一定长度的字节数组,可以表示成(buffer,length),元数据区中的多个元数据之间通过预设分割符(图中编号1所示)进行区分,各元数据的key和value,经过序列化操作后,元数据(图中编号2所示)的格式可以是图中编号2-a所示的key部分,(key部分由key的长度、key的内容两个部分组成)、图中编号2-b所示的分割符、以及图中编号2-c所示的value部分(value部分由value的长度、value的内容两个部分组成),在实际应用中,图中编号2-b所示的分割符和图中编号1所示的分割符可以是相同的,也可以是不同的。104.在步骤103中,根据路由元数据,确定服务消息对应的目标服务,以及目标服务所对应的目标服务器。105.在一些实施例中,网关设备将路由元数据所指示的路由信息与预先加载的路由表中的路由信息进行匹配,确定服务消息对应的目标服务器。参见图5,图5是本技术实施例提供的目标服务器的确定方法流程图,结合图5示出的步骤进行说明。106.步骤1031,网关设备将路由元数据所指示的路由信息与路由表中的路由信息进行匹配,以在路由表中确定目标路由信息。107.对路由表进行说明,在一些实施例中,路由表是由一条条路由信息(也可称为路由规则)组成的,路由表中路由信息的匹配规则是:从前到后匹配;成功匹配到任何规则,则退出匹配过程;没有匹配到任何路由,对于非指定路由则走缺省路由;否则返回出错。其中,路由信息,主要包括4部分:名字、匹配规则、路由策略、负载均衡策略(loadbalancer)。名字(name):标识路由规则,不允许重复。匹配规则(matchrules):描述了用于匹配的元数据,以及匹配方式。108.示例性地,参见图6,图6是本技术实施例提供的路由信息的示例图,图中示例性地列出2条路由信息,路由信息1(图中编号1所示),消息标识(msgid,messageidentitydocument)、用户标识(uin)描述了可以匹配信息,服务名称(servicename)表征路由信息1能够路由的目标服务server1,服务实例(serverid)表示路由信息1的目标服务对应的服务实例,服务实例101和服务实例102,该路由信息对应的负载均衡方式(loadbalancer)是轮转方式(round_robin)。109.对匹配方式进行说明,在一些实施例中,参见图7,图7是本技术实施例提供的路由信息的匹配方式示意图,图中示出包括3种匹配方式,第一种:exist,匹配字段key存在;第二种:exact,匹配字段的key存在,且value和路由规则里面的字段值相同;第三种:range,匹配字段的key存在,且value在min和max之间。110.示例性地,参见图6,图6中编号1所示的路由信息,其中msgid的匹配方式是range,对应的取值范围是1-10,即服务消息中携带的msgid的值落入1-10范围内,就可以将该条路由信息作为候选路由信息,进一步匹;uin的匹配方式exact,对应的值为100,即如果服务消息中携带的uin的值是100,即可以匹配该条路由,路由信息1是msgid的值落入1-10范围内且uin的值是100的服务消息所能匹配的路由信息。图中编号2所示的路由信息2是msgid的值为11的服务消息可以匹配的路由信息。111.对路由策略进行说明,路由策略描述了成功匹配后的路由策略和负载均衡(loadbalancer,也可称为负载均衡方式)方法。在一些实施例中,参见图8,图8是本技术实施例提供的路由信息配置示意图,图中示出了路由信息(route)的负载均衡方式(图中编号2所示loadbalancer部分)以及server部分(图中编号1所示)。server部分主要定义了目标服务器提供的服务名字(service_name)和服务实例(图中编号2-1所示host所列出的service_id)。如果没有指定具体实例(host没有列出service_id),或者指定的服务实例多于1台(service_id的数量大于1),可以配置负载均衡方式(loadbalancer)。112.对负载均衡策略进行说明,在一些实施例中,loadbalancer主要定义了3种负载均衡策略:哈希(hash)、一致性哈希(consistenthash)、轮转(round_robin)和随机(random)。其中,第一种:哈希通常是将哈希key用一个算法散列成一个整数值,然后对实例数求模,得到的值如果是0就访问第一个实例,是1就访问第二个实例。第二种:轮转是一种依次均衡访问的方法,第一次访问选择实例0,第二次访问选择实例1。第三种:随机就是通过一个随机算法计算出一个值然后对服务实例数求模,得到的值是0就访问第一个实例,是1就访问第二个实例。113.示例性地,参见图6,图6中编号1所示的路由信息对应的负载均衡方式(loadbalancer)是轮转方式,针对目标服务server1,提供了两个服务实例(service_id)即服务实例101和服务实例102。114.对api网关的限流和熔断进行说明,在一些实施例中,参见图9,图9是本技术实施例提供的限流熔断信息配置示意图,api网关的限流配置(flowcontrol)可以通过图中编号1所示qps(querypersecond)表征,qps定义了本条路由信息的最大流量阈值,api网关通过预设的限流算法实现限流后,可以通过熔断方式实现对服务消息的后续操作,api网关的熔断配置(图中2所示)可以通过operation表征,operation主要定义了超过限流阈值的熔断方式,可以采用的熔断方式有丢弃,或者关闭连接等。115.在一些实施例中,路由元数据所指示的路由信息可以包括消息标识,网关设备可以根据消息标识,从路由表中确定目标路由信息。参见图10,图10是本技术实施例提供的目标路由信息的确定方法流程示意图,基于图5,步骤1031还可以通过如下方式实现:116.步骤201,网关设备获取路由表中的各路由信息所包括的参考消息标识组、及各参考消息标识组所对应的服务。117.示例性地,参见图11,图11是本技术实施例提供的消息处理流程图,图中api网关接收来自客户端的两条服务消息,其中,服务消息1中携带消息标识对应的路由元数据msgid=8、以及用户标识对应的路由元数据uin=100,即消息标识msgid对应的标识值是8,用户标识对应的标识值是100;服务消息2中携带消息表示对应的路由元数据msgid=11、以及用户标识路由元数据uin=100。基于图6示出的路由表,可以图6表中的msgid为参考消息标识组。118.步骤202,网关设备确定消息标识归属的参考消息标识组为目标消息标识组,并确定包括目标消息标识组的路由信息为目标路由信息。119.在一些实施例中,参见图12,图12是本技术实施例提供的目标服务的确定方法流程示意图,基于图10,当消息标识可以采用键值对的方式存储,步骤202还可以通过以下方式实现:120.步骤2021,网关设备获取消息标识对应的标识值。121.在实际实施时,消息标识可以采用键值对的形式存储,即key-value形式,消息标识作为key,消息标识对应的标识值作为value。122.示例性地,参见图11,图中api网关接收来自客户端的两条服务消息,其中,服务消息1中携带消息标识对应的路由元数据msgid=8、以及用户标识对应的路由元数据uin=100,即消息标识msgid对应的标识值是8,用户标识对应的标识值是100;服务消息2中携带消息表示对应的路由元数据msgid=11、以及用户标识路由元数据uin=100。123.步骤2022,确定各参考消息标识组对应的标识值范围。124.在实际实施时,各参考消息标识组中的各参考消息标识同样采用键值对的形式存储,参考消息标识作为key,参考消息标识对应的标识值范围作为value,需要说明的是,对应参考消息标识的标识值可以是独立的信息,也可以是一个范围区间,即参考消息标识的标识值为一个区间。125.承接上例,api网关接收到服务消息1后,在路由表中按照从前到后的顺序,获取匹配各路由信息,路由表可参见图6,api网关确定图6中,编号1所示的路由信息1的参考消息标识msgid所对应的标识值范围[1,10],表示如果服务消息中消息标识对应的标识值,落入[1,10]的范围,就可以将路由信息1作为目标路由信息;编号2所示的路由信息2的参考消息标识msgid所对应的标识值就是一个值11,表示如果服务消息中消息标识对应的标识值为11,就可以将路由信息2作为目标路由信息。[0126]步骤2023,确定标识值所归属的标识值范围,并将相应的参考消息标识组确定为所述目标消息标识组。[0127]承接上例,图11中所示的服务消息1中消息标识的标识值落入图6中编号1所示的路由信息1中参考消息标识的标识值范围,路由信息1中的参考消息标识组可以作为服务消息1的目标消息标识组,服务消息1对应的目标路由信息可以是图6中编号1所示的路由信息1;图11中所示的服务消息2中消息标识的标识值落入图6中编号2所示的路由信息2中参考消息标识的标识值范围,路由信息2中的参考消息标识组可以作为服务消息2的目标消息标识组,服务消息2对应的目标路由信息可以是图6中编号2所示的路由信息2。[0128]步骤1032,网关设备基于目标路由信息,确定服务消息对应的目标服务,以及目标服务对应的服务实例。[0129]在一些实施例中,基于图10示出的步骤201-步骤202确定的目标路由信息,网关设备还可以通过以下方式确定目标服务:基于目标路由信息,网关设备确定目标消息标识组对应的服务为服务消息对应的目标服务。[0130]承接上例,图11中所示的服务消息1中对应的目标参考消息标识组归属于图6中编号1所示路由信息1,路由信息1对应的服务server1可以作为服务消息1的目标服务,路由消息1对应的服务实例101和服务实例102,可以作为对应目标服务server1的服务实例;图11中所示的服务消息2中对应的目标参考消息标识组归属于图6中编号2所示路由信息2,路由信息2对应的服务server2可以作为服务消息2的目标服务,由于路由消息2未设置服务server2的服务实例,可以通过负载均衡方式选择一台服务实例进行转发。[0131]步骤1033,网关设备根据目标服务对应的服务实例,确定服务消息对应的目标服务器。[0132]在一些实施例中,参见图13,图13是本技术实施例提供的目标服务器的确定方法流程图,基于图5或图10,步骤1033可以由以下方式实现:[0133]步骤301,网关设备获取目标服务对应的服务实例的数量。[0134]在实际实施时,根据确定的目标服务对应的服务实例的数量,确定响应服务消息的目标服务器。[0135]步骤302a,当服务实例的数量为一个时,将服务实例所在的服务器,确定为服务消息对应的目标服务器。[0136]在实际实施时,当目标路由信息中的对应目标服务的服务实例的数量是一个时,直接将该服务实例所在的服务器,作为用于相应服务消息的目标服务器。[0137]步骤302b,当服务实例的数量为至少两个时,根据负载均衡,从至少两个服务实例中,确定目标服务实例,并将目标服务实例所在的服务器作为目标服务器。[0138]在实际实施时,当目标路由信息中对应目标服务的服务实例的数量为至少两个,或者,目标路由信息中未指定目标服务对应的服务实例时,则可以通过负载均衡的方式,确定对应服务消息的目标服务器。通过获取配置负载均衡策略,确定网络设备可以实施的负载均衡方式。[0139]示例性地,图11所示的服务消息1在图6所示的路由表中,对应目标路由信息是编号1所示的路由信息1,在路由信息1中,对应服务server1的服务实例数量为两个,即服务实例101和服务实例102,路由信息1中对应的负载均衡方式轮转方式,通过轮转方式选中服务实例101作为目标服务的服务实例,即通过服务实例101响应服务消息,并获取响应结果,同时根据服务实例101,确定图11中编号3-1所示的两个服务器中,确定编号a所示的服务器作为处理服务消息1的目标服务器。确定编号3-2所示的服务器作为处理服务消息2的目标服务器。[0140]在步骤104中,向目标服务器转发服务消息,以使目标服务器返回与服务消息对应的响应结果。[0141]在一些实施例中,网关设备向目标服务器转发服务消息时,可以根据网关设备设定的限流阈值,定制针对服务消息的不同的操作。可以根据网关设备当前路由目标服务的服务消息的数量与限流阈值之间的大小关系确定。参见图14,图14是本技术实施例提供的限流熔断处理流程图,基于图3,步骤104还可以通过以下方式实现:[0142]步骤1041,网关设备获取网关设备当前路由目标服务的服务消息的数量、以及网关设备的限流阈值。[0143]在一些实施例中,限流阈值用于表征单位时间内,通过网关设备能够路由目标服务的服务消息的最大数量。[0144]在实际实施时,可以通过漏桶算法、令牌桶算法等网关限流方式实现限流。[0145]示例性地,参见图6中编号1所示的路由信息1,对应的server1的限流阈值qps是100,表征每分钟处理访问server1的服务消息的数量最大多为100条。若图11中所示的服务消息1访问server1时,qps未达到100时,网关设备可以继续对服务消息1进行后续处理,即执行步骤1042a;若图11中所示的服务消息1访问server1时,qps已达到100,网关设备可以继续获取路由信息1中的配置的熔断方式,对服务消息执行相应的熔断方式所指示的操作,即执行步骤1042b。[0146]步骤1042a,当数量未达到限流阈值时,向目标服务器转发服务消息。[0147]示例性地,参见图6中编号1所示的路由信息1,若图11中所示的服务消息1访问server1时,qps未达到100时,网关设备可以向目标服务对应的服务器转发服务消息。[0148]步骤1042b,当数量达到限流阈值时,获取目标服务对应的熔断方式。[0149]示例性地,参见图6中编号1所示的路由信息1,若图11中所示的服务消息1访问server1时,qps已达到100,网关设备需要获取路由信息1中配置的与服务server1对应的熔断方式,即operation对应的值。当operation值为0时,可以表示丢弃针对服务server1访问操作100次后的服务消息;当operation值为1时,可以表示直接中断客户端与目标服务间的通信连接。[0150]步骤1043,根据熔断方式,执行操作,以停止向目标服务器转发服务消息。[0151]在一些实施例中,当网关设备当前路由目标服务的服务消息的数量满足网关设备的限流条件时,可以获取网关设备设置的熔断方式,对服务消息执行相应的操作,以停止向目标服务器转发服务消息。可以通过以下熔断方式实现停止向目标服务器转发服务消息:当熔断方式指示执行消息丢弃操作时,丢弃客户端发送的服务消息;当熔断方式指示进行连接中断操作时,中断客户端与目标服务器间的通信连接。[0152]本技术实施例,通过在服务消息中注入一个可以定义多个元数据约束的元数据区,可以实现路由信息的灵活设置。如此,就可以使客户端和服务器解耦:服务器只需要提供具体的服务功能,不需要关注客户端的对服务的访问情况;客户端进行服务接口访问时只需关注服务接口功能,而无需关注提供服务的服务器的实现和部署。通过注入路由元数据到客户端发送的服务消息中,并基于路由元数据配置相应的路由信息,可以让api网关高效的完成对目标服务的路由功能。客户端只需要关注服务接口名称和接口协议即可,无需关注提供服务的服务器的实现和部署,同时也不需要关注负载均衡策略和限流和熔断策略,只需要抽取服务消息对应的元数据生成元数据区,将元数据区注入到服务消息的消息头上。另外,服务器只需专注于提供接口服务,无需关注服务接口的访问情况。网关设备还可以通过更改路由规则的限流策略或者负载均衡策略,保证后端服务正常可靠的运行;通过调整路由逻辑、在元数据区加入版本号等方式可以实现后台服务热更新灰度上线等;从而降低了前端-后端的耦合,极大的提高应用程序服务的开发效率,提高了系统的健壮性、稳定性和灵活性。[0153]下面,将说明本技术实施例在一个实际的应用场景中的示例性应用。以大型游戏应用程序对应的微服务集群为例,在游戏服务中,客户端可以和后端的若干各服务器进行通讯,如,客户端与家族服务器进行通信以拉取家族信息,客户端与副本服务器进行通信以拉取副本信息和临时组队信息,客户端与去战斗服务器进行通信拉取战斗信息等,如此,在整个游戏服务系统中,存在由客户端向若干不同的服务器发送的若干不同的服务消息。[0154]相关技术中,参见图15a-15b,图15a-15b是本技术实施例提供的相关路由配置示意图,图15a中是采用7层路由时的路由配置信息,nginx(是一个高性能的http和反向代理web服务器)主要面向web服务器,7层路由主要基于http协议基础上,将url通过正则表达式来匹配预先配置的location,然后通过location找到预先配置的upstream(nginx的一个模块,将一组目的机器组合一个upstream,这组机器可承载nginx的负载均衡策略),然后通过upstream配置的负载均衡方法找到目的端。图15b中是采用4层路由时的路由配置信息,nginx的4层路由主要基于端口的,通过不同的端口将流量路由到不同的预先定义的upstream,然后通过upstream定义的负载均衡方法找到目的端。[0155]从上述的分析可以看出,nginx的7层路由是基于http协议之上的,是通过url的正则匹配来寻路的。而自定义协议主要工作在tcp/udp上,承载的不一定是http协议,也无url这种字段,也就没办法用7层路由。另外对于一些较为复杂的路由策略,例如:msgid在2001到2010之间,用户uin是1000,走第一条路由,其他的走第2条路由。这种信息不一定都在url(可以不是基于http协议的)里面,即使放到url上,用正则表达式配置也非常复杂,不容易理解。而nginx的4层路由是基于端口的,还无法完成复杂的自定义路由策略。[0156]基于此,本技术实施例提供的消息处理方法,是一种基于四层元数据的自定义路由和熔断的方法。通过在协议中加入一个元数据区,这个数据区里面可以定义多个元数据约束,可以很简单的实现非常灵活的路由策略。这样就可以使客户端和服务器解耦:服务器只需要提供具体功能,客户端只关注接口功能而不用关注是哪个服务器提供的。通过注入元数据到客户端消息中和配置路由规则就可以由网关设备完成路由功能。[0157]在一些实施例中,参见图16,图16是本技术实施例提供的服务消息处理系统架构示意图,本技术实施例提供的服务消息处理系统中包括客户端(图中编号1所示)、网关设备(图中编号2所示,后续可以成为api网关)以及服务端(图中编号3所示,也可称为服务器)三部分。客户端可以实现对服务消息的重新封装,实现服务消息的封装流程如下:c1.设置元数据;c2.序列化元数据区;c3.将元数据区加入到自定义消息头;c4.将消息发送给api网关。api网关设备可以结合预先设置的路由表(图中编号4所示)实现对服务消息的转发,实现服务消息的转发流程如下:g1.收到客户端消息,取出元数据区反序列化成多个元数据;g2.按顺序遍历路表,根据匹配逻辑里面的匹配字段和匹配方法进行匹配;g3.匹配成功,确定目标路由规则,继续检查限流和熔断策略是否满足条件;g4.满足限流策略,根据路由策略选择目标服务器转发服务消息。服务端可以实现对服务消息的响应。[0158]在一些实施例中,参见图17,图17是本技术实施例提供的消息处理流程图,结合图17示出的步骤,说明api网关将元数据与路由表中的各路由信息进行匹配的详细过程。[0159]步骤401,客户端将服务消息用多个元数据描述出来,并将元数据序列化成元数据区,将元数据区添加到服务消息的消息头中,发送给网关设备。[0160]在一些实施例中,元数据主要用于在api网关设备上和路由表做匹配,即元数据用于指示与路由信息相关的信息,可称作路由元数据(后续出现的元数据可以理解成路由元数据),是用来描述服务消息的数据,可以采用键值对(key,value)格式存储,其中,key和value可以是字符串类型,能够存储任意类型的数据。在实际实施时,可以为服务消息设置多个相互独立的元数据,每条元数据可以定义一个对路由的约束。例如,元数据为消息标识:key=‘msgid’、value=‘100’;元数据为游戏用户标识:key=‘uin’,value=‘游戏账号1’。[0161]由于服务消息在网路连接中,通常是以字节流的形式进行传输的。在一些实施例中,多条元数据可以通过一些序列化的方法组成字节流。参见图4,多个元数据之间通过预设分割符(图中编号1所示)进行区分,各元数据的key和value,经过序列化操作后,元数据(图中编号2所示)的元格式可以是图中编号2-a所示的key部分,(key部分由key的长度、key的内容两个部分组成)、图中编号2-b所示的分割符、以及图中编号2-c所示的value部分(value部分由value的长度、value的内容两个部分组成),在实际应用中,图中编号2-b所示的分割符和图中编号1所示的分割符可以是相同的,也可以是不同的。[0162]步骤402,网关设备将元数据区反系列化成多个元数据,和预先加载的路由表做匹配。[0163]在实际实施时,api网关接收到服务消息后,解析服务消息,从服务消息的消息头中获取元数据区,并对元数据区进行反序列化,得到与当前服务消息对应的路由元数据。然后,将得到的路由元数据与预先加载到内存中的路由表中的各路由信息进行匹配,获取匹配结果,匹配结果可以用于指示是否在路由表中匹配得到与路由元数据对应的路由信息,即与服务消息对应的目标路由信息。[0164]对路由表进行说明,路由表是由一条条路由规则(路由信息)组成的,具体的执行策略(路由匹配规则):从前到后匹配;成功匹配到任何规则,则退出匹配过程;没有匹配到任何路由,对于非指定路由则走缺省路由;否则返回出错。其中,路由规则,主要包括4部分:名字、匹配规则、路由策略、负载均衡策略。名字(name):标识路由规则,不允许重复。匹配规则(matchrules):描述了用于匹配的元数据,以及匹配方式(匹配的方法)。[0165]在一些实施例中,参见图7,图中示出包括3种匹配方式,第一种:exist,匹配字段key存在;第二种:exact,匹配字段的key存在,且value和路由规则里面的字段值相同;第三种:range,匹配字段的key存在,且value在min和max之间。[0166]在实际实施时,网关设备启动时,加载路由表,解析为一条条的路由规则,并将匹配逻辑、路由策略、限流策略等加载在内存中;在网关设备运行过程中如果更新了路由表,例如调整限流策略、新增服务、新增服务的服务器等,可以给api网关发送一个信号(更新消息),以使api网关设备重新加载(reload)路由表。网关设备接收到客户端发送的服务消息,通过自定义协议取出元数据区,通过约定的反序列化方法将元数据区解析为一条条独立的元数据。从前到后遍历路由表,取出第一条路由规则,通过匹配逻辑里面的匹配字段、匹配值、和匹配方法,看元数据里面是否存在,如果匹配逻辑多个匹配字段都和元数据匹配,则说明该条路由规则匹配本消息。则退出匹配过程。如果任意一个匹配字段不匹配,则说明该路由规则不匹配;则接着取出下条路由规则继续进行匹配。[0167]步骤403,当路由元数据匹配成功后,网关设备通过负载均衡策略,确定目标服务器,并向目标服务器转发服务消息。[0168]对路由策略进行说明,路由策略描述了成功匹配后的路由策略和负载均衡(loadbalancer)方法。在一些实施例中,参见图8,图中示出了路由信息(route)的负载均衡策略(图中编号2所示loadbalancer部分)以及server部分(图中编号1所示)。server部分主要定义了目的端机器(目标服务器)提供的服务名字(service_name)和服务实例(图中编号2-1所示host所列出的service_id)。如果没有指定具体实例(host没有列出service_id),或者指定的服务实例多于1台(service_id的数量大于1),可以配置负载均衡策略(loadbalancer)。[0169]对负载均衡策略进行说明,在一些实施例中,loadbalancer主要定义了3种负载均衡策略:哈希(hash)、一致性哈希(consistenthash)、轮转(round_robin)和随机(random)。其中,第一种:哈希通常是将哈希key用一个算法散列成一个整数值,然后对实例数求模,得到的值如果是0就访问第一个实例,是1就访问第二个实例。第二种:轮转是一种依次均衡访问的方法,第一次访问选择实例0,第二次访问选择实例1。第三种:随机就是通过一个随机算法计算出一个值然后对服务实例数求模,得到的值是0就访问第一个实例,是1就访问第二个实例。[0170]对api网关的限流和熔断进行说明,在一些实施例中,参见图9,api网关的限流配置(flowcontrol)可以通过qps(图中编号1所示)表征,qps定义了本条路由信息的最大流量阈值,api网关通过预设的限流算法实现限流后,可以通过熔断方式实现对服务消息的后续操作,api网关的熔断配置(图中2所示)可以通过operation表征,operation主要定义了超过阈值的处理策略,可以采用的策略有丢弃,或者关闭连接等熔断策略。[0171]在实际实施时,通过步骤402,若在路由表中成功匹配到了路由规则,则可以进一步检查针对该条路由规则的限流和熔断逻辑是否满足。若流量超过了设定的阈值(限流阈值),则根据限流熔断逻辑(设定的熔断方式)来采取丢包或者断开连接操作。若通过了限流策略,可以根据路由规则里面的路由策略找到具体的目的端服务名,如果目的端服务只配置了一个实例,则直接将消息转发给该实例;如果配置了多个实例,或者没配置实例,则需要通过负载均衡里面定义的策略选择一台实例进行转发。[0172]概括来说,上述步骤401至步骤403中,客户端在自定义的四层协议中携带用于路由的元数据信息,这些信息可以用若干键值对格式描述;api网关加载预先配置的路由表,路由表是由若干基于先后顺序的路由规则组成,每条路由规则定义了元数据匹配规则、负载均衡算法、目的端信息、限流方案等信息;api网关获取元数据信息,通过路由匹配规则找到相匹配的路由规则,并进一步检查是否满足限流条件,当满足限量条件时,可以通过负载均衡算法找到目的端(目标服务器),然后向目的端转发服务消息。如果路由表中没有找到相匹配的路由规则,会走缺省的路由规则向目的端转发服务消息、或者api网关向客户端发送路由失败的通知消息。[0173]本技术实施例,通过在自定义协议中加入一个可以定义多个元数据约束的元数据区,可以实现非常灵活的路由策略。如此,就可以使客户端和服务器解耦:服务器只需要提供具体功能,客户端进行服务接口访问时只需关注服务接口功能,而无需关注提供服务的服务器的实现和部署。通过注入元数据到客户端消息中和配置路由规则就可以让api网关完成路由功能。客户端只需要关注服务接口名称和接口协议即可,无需关注提供服务的服务器的实现和部署,同时也不需要关注负载均衡策略和限流和熔断策略,只需要抽取该服务消息对应的元数据生成元数据区,将元数据区加入到服务消息的消息头上。另外,服务器只需专注于提供接口服务,无需关注服务接口的访问情况。网关设备还可以通过更改路由规则的限流策略或者负载均衡策略,保证后端服务正常可靠的运行;通过调整路由逻辑、在元数据区加入版本号等方式可以实现后台服务热更新灰度上线等;从而降低了前端-后端的耦合,极大的提高应用程序服务的开发效率,提高了系统的健壮性、稳定性和灵活性。[0174]下面继续说明本技术实施例提供的消息处理装置655的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器640的消息处理装置655中的软件模块可以包括:[0175]接收模块6551,用于接收客户端发送的服务消息,所述服务消息携带用于指示路由信息的路由元数据;[0176]解析模块6552,用于解析所述服务消息,得到所述路由元数据;[0177]确定模块6553,用于根据所述路由元数据,确定所述服务消息对应的目标服务,以及所述目标服务所对应的目标服务器;[0178]发送模块6554,用于向所述目标服务器转发所述服务消息,以使所述目标服务器返回与所述目标消息对应的响应结果。[0179]在一些实施例中,所述解析模块,还用于解析所述服务消息,得到路由元数据区,所述路由元数据区包括序列化后的路由元数据;对所述序列化后的路由元数据进行反序列化,得到所述路由元数据。[0180]在一些实施例中,所述确定模块,还用于将所述路由元数据所指示的路由信息与路由表中的路由信息进行匹配,以在所述路由表中确定目标路由信息;基于所述目标路由信息,确定所述服务消息对应的目标服务,以及所述目标服务对应的服务实例;根据所述目标服务对应的服务实例,确定所述服务消息对应的目标服务器。[0181]在一些实施例中,所述路由元数据所指示的路由信息包括消息标识,所述确定模块,还用于获取路由表中的各路由信息所包括的参考消息标识组、及各所述参考消息标识组所对应的服务;确定所述消息标识归属的参考消息标识组为目标消息标识组,并确定包括所述目标消息标识组的路由信息为所述目标路由信息;基于所述目标路由信息,确定所述服务消息对应的目标服务,包括:基于所述目标路由信息,确定所述目标消息标识组对应的服务为所述服务消息对应的目标服务。[0182]在一些实施例中,所述消息标识采用键值对的方式存储,所述确定模块,还用于获取所述消息标识对应的标识值;确定各所述参考消息标识组对应的标识值范围;确定所述标识值所归属的标识值范围,并将相应的参考消息标识组确定为所述目标消息标识组。[0183]在一些实施例中,所述确定模块,还用于当所述服务实例的数量为一个时,将所述服务实例所在的服务器,确定为所述服务消息对应的目标服务器;当所述服务实例的数量为至少两个时,根据负载均衡,从所述至少两个服务实例中,确定目标服务实例,并将所述目标服务实例所在的服务器作为所述目标服务器。[0184]在一些实施例中,所述发送模块,还用于获取所述网关设备当前路由所述目标服务的服务消息的数量、以及所述网关设备的限流阈值;其中,所述限流阈值用于表征单位时间内,通过所述网关设备能够路由所述目标服务的服务消息的最大数量;当所述数量未达到所述限流阈值时,向所述目标服务器转发所述服务消息。[0185]在一些实施例中,所述发送模块,还用于当所述数量达到所述限流阈值时,获取所述目标服务对应的熔断方式;其中,所述熔断方式,用于指示禁止所述客户端对所述目标服务进行访问所执行的操作;根据所述熔断方式,执行所述操作,以停止向所述目标服务器转发所述服务消息。[0186]在一些实施例中,所述发送模块,还用于当所述熔断方式指示执行消息丢弃操作时,丢弃所述客户端发送的所述服务消息;当所述熔断方式指示进行连接中断操作时,中断所述客户端与所述目标服务器间的通信连接。[0187]本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本技术实施例上述的消息处理方法。[0188]本技术实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本技术实施例提供的消息处理方法,例如,如图3示出的消息处理方法。[0189]在一些实施例中,计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。[0190]在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。[0191]作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hypertextmarkuplanguage)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。[0192]作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。[0193]综上所述,本技术实施例,通过在自定义协议中加入一个可以定义多个元数据约束的元数据区,可以实现非常灵活的路由策略。如此,就可以使客户端和服务器解耦:服务器只需要提供具体功能,客户端进行服务接口访问时只需关注服务接口功能,而无需关注提供服务的服务器的实现和部署。通过注入元数据到客户端消息中和配置路由规则就可以让api网关完成路由功能。客户端只需要关注服务接口名称和接口协议即可,无需关注提供服务的服务器的实现和部署,同时也不需要关注负载均衡策略和限流和熔断策略,只需要抽取该服务消息对应的元数据生成元数据区,将元数据区加入到服务消息的消息头上。另外,服务器只需专注于提供接口服务,无需关注服务接口的访问情况。网关设备还可以通过更改路由规则的限流策略或者负载均衡策略,保证后端服务正常可靠的运行;通过调整路由逻辑、在元数据区加入版本号等方式可以实现后台服务热更新灰度上线等;从而降低了前端-后端的耦合,极大的提高应用程序服务的开发效率,提高了系统的健壮性、稳定性和灵活性。[0194]以上所述,仅为本技术的实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本技术的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1