一种网关业务实现方法、控制装置和网关与流程

文档序号:21405782发布日期:2020-07-07 14:39阅读:207来源:国知局
本申请涉及云基础设施领域,更具体地,涉及一种网关业务实现方法、控制装置和网关。
背景技术
::在服务化架构中,超文本传输协议(http,hypertexttransferprotocol))网关(包含http1.0,http1.1和http2.0等)承担着整个系统对外的入口,是服务化体系中的核心组件。从面向对象设计的角度看,它与外观模式类似。网关封装了系统内部架构,为每个客户端提供一个定制的应用程序编程接口(api,applicationprogramminginterface)。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。所有的客户端和消费端都通过统一的网关接入微服务,需要在网关层处理所有的非业务功能。现在各种各样的api网关其各有特色,但是其网关业务的开发都需要通过编写代码,开发多个插件来完成,介绍如下:nginx:作为最为流行的http网关,其处理性能高,稳定性好,但是动态能力不足,新配置的下发需要重启才能生效,并且网关业务需要满足其规范,使用插件方式进行开发,对开发人员的技术水平要求高。openresty:基于nginx,但是为了降低nginx自身插件的开发难度,引入lua来开发网关业务插件。kong:基于nginx,采用lua为openapi开发了很多特定的插件,实现开箱即用的目的,但是非预置的功能都需要自身开发插件。zuul:基于java开发,可以使用java或者groovy开发其业务所需插件使用上面的http网关开发http业务最大的缺点是:完成不同的http网关业务需要开发不同的网关插件,导致业务上线慢,稳定性不高,不能灵活调整。技术实现要素:以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。本发明实施例提供了以下方案。一种网关业务实现方法,应用于网关业务控制装置,包括:根据输入指令生成网关业务模型;根据生成的所述网关业务模型向网关下发网关业务信息,以在所述网关上执行网关业务处理。一种网关业务控制装置,包括模型设计器和业务下发接口,其中:所述模型设计器,设置为根据输入指令生成网关业务模型;所述业务下发接口,设置为根据生成的网关业务模型向网关下发网关业务信息。一种实现网关业务的方法,包括:网关获取用于实现网关业务的多个第一指令,其中,所述第一指令基于网关业务模型得到;所述网关根据所述第一指令对接收的报文进行处理。一种网关,包括网关控制面和指令执行器,其中:所述网关控制面,设置为获取用于实现网关业务的多个第一指令并下发给所述指令执行器,其中,所述第一指令基于网关业务模型得到,所述网关业务模型采用如本发明任一实施例所述网关业务模型生成方法生成;所述指令执行器,设置为根据下发的所述第一指令对接收的报文进行处理。一种网关业务控制装置,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明任一实施例所述网关业务控制装置侧执行的方法的处理。一种网关,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明任一实施例所述网关执行的方法的处理。一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明任一实施例所述的方法的处理。本发明实施例提供了一种网关业务实现的系统,其网关业务采用模型驱动设计,可以应对不同的业务需求,快速实现业务目标,运维人员即可开发新的业务,不再需要根据不同业务开发不同插件。在阅读并理解了附图和详细描述后,可以明白其他方面。附图说明图1是本发明实施例实现网关业务的系统的示意图;图2是本发明实施例流水线的结构示意图;图3是本发明实施例网关业务模型设计和下发的流程图;图4是本发明实施例模型设计器提供的操作界面的示意图;图5是本发明实施例根据下发指令对报文进行处理的流程图;图6a和图6b分别是本发明实施例认证控制流程和指令执行器所执行指令的示意图;图7a和图7b分别是本发明实施例限流控制流程和指令执行器所执行指令的示意图;图8a和图8b分别是本发明实施例金丝雀升级控制流程和指令执行器所执行指令的示意图;图9a和图9b分别是本发明实施例秒杀控制流程和指令执行器所执行指令的示意图;图10是本发明实施例一业务流程中嵌入限流控制子流程和权限控制子流程的示意图;图11是本发明实施例网关业务控制装置和网关的硬件结构示意图。具体实施方式本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。在通信领域系统的开发中,it化越来越明显,各大主流设备商的电信管理运营系统采用微服务架构已经成为了主流,如:linux基金会下,由业界主流运营商和设备商共同参与管理和编排(mano,managementandorchestration)系统:开放网络自动化平台(onap,theopennetworkautomationplatform)从一开始就采用微服务架构,msb是其http网关,位于系统的核心部分。3gpp确认的5g核心网采用基于服务的网络架构(sba,service-basedarchitecture)作为统一基础架构,接口推荐采用基于http/2rest。其由六大部分组成:控制面服务、用户面服务、服务框架、数据服务、服务管理与编排、其他部分。其中控制面服务和用户面服务都是由多个服务构成,在调用控制面服务和用户面服务时,需要通过http网关来转发具体请求。http网关在开放api(openapi)体系中占有绝对重要的位置,是api治理的核心组件,在将api(applicationprogramminginterface,应用程序编程接口)作为能力暴露到外部时,就需要由http网关完成认证,鉴权和限流等多种要求,并且要求极高的灵活性。各种系统云化的趋势越来越明显,安全问题也越发的突出,http网关作为安全体系的第一道屏障,需要应对突发的安全问题。在下一代微服务架构中,服务网格作为一个云设施将大大简化微服务的开发,同时服务网格技术也要求网关能配合服务网格,根据微服务的运行需要,按照下发的相关规则,调整网关的行为。为此,本发明一示例性实施例提供了一种实现网关业务的系统,如图1所示,包括网关业务控制装置1和网关2,该网关为http网关。网关业务控制装置1包括模型设计器11和业务下发接口12,网关业务控制装置1在实体上可以是任意的计算机设备,如服务器、pc等。网关业务控制装置1和网关2可以通过网络连接。模型设计器11设置为根据输入指令生成网关业务模型。模型设计器提供了网关业务模型的设计功能。在模型设计器中,可以将网关业务所需要的步骤和元素以可视化的方式展现出来,通过在模型设计器中拖拽,构成一个完整的处理网关业务的流水线。在相关元素中,可以配置特定匹配规则和执行动作,可以实现复杂网关业务。本发明一示例性实施例中,模型设计器11包括:用户接口单元,设置为显示操作界面,接收用户的输入指令;模型构建单元,设置为根据输入指令,从可选元素中选择网关业务模型的组成元素,将所述组成元素连接为处理网关业务的流水线,及设置所述组成元素的属性,以实现网关业务处理逻辑。模型生成单元,设置为根据所述流水线和所述组成元素的属性生成所述网关业务模型。在一个示例中,用户接口单元可以显示包括元素选择区和模型设计区的可视化操作界面,根据用户操作确定用户的输入指令。模型构建单元检测到元素选择区中的可选元素被拖拽到模型设计区中时,将被拖拽的可选元素记录为网关业务模型的组成元素。所述可选元素可以包括以下至少之一:开始环节、结束环节、执行环节、判断跳转环节、已有业务模型。该示例中,将已有业务模型作为元素,也就意味着可以将已设计完成的网关业务流程作为新设计的业务流程的子流程,通过组合子流程构成更复杂的流程,从而可以通过流程的复用减少人员、时间的投入。在本发明一示例性实施例中,上述流水线包括一个或多个分支,每一分支有一个或多个执行环节,每个环节可以包括一个或多个第二指令,第二指令使用高级语言如dsl描述。可以将多个功能类似的第二指令(如执行报文处理的指令)设计在一个环节中。在一个示例中,所述环节包括以下信息中的至少之一:业务标识、环节标识、入口环节标识、优先级、指令标识、匹配规则、执行动作。其中,入口环节的匹配规则用于判断接收的报文是否与该入口环节所在的流水线匹配;入口环节的优先级用于确定对流水线进行匹配的顺序;执行动作用于确定对报文执行的处理,其中包括跳转到下一环节或指令的动作(跳转动作是执行动作的一种)。上述环节中的信息可以根据组成元素所属的环节、为组成元素设置的属性、流水线中环节的连接关系等来生成。在本发明一示例性实施例中,所述网关业务模型基于针对http操作的领域特定语言(dsl,domain-specificlanguage)描述。dsl指专注于某个应用程序领域的计算机语言,又称领域专用语言。使用dsl,一般的运维人员即可进行模型设计。此时网关业务模型中的第二指令也可以称为dsl指令。dsl指令包括动作原语、参数、上下文变量、运算符、逻辑处理符等组成要素。动作原语和对应的表达式的示例如下:url重写:rewrite<url>header信息修改:headeradd/modify/remove<property><value>body信息修改:bodyadd/modify/remove<xpath><content>请求重定向:redirect<url>条目跳转:jump<table-entry-id>拒绝请求:refuse请求转发:forward保存状态:save<key><value>加载状态:load<key>增加计数:calc<key><count>读取计数:read<key>网关业务模型使用dsl或其他高级语言描述,并不能够直接被网关执行,需要先转化为网关可执行的第一指令,才能被下发到流表库中生效,从而实现网关业务的目标。在图1所示的示例中,网关业务控制装置1将网关业务模型直接下发给网关2,由网关2中的业务控制面22来完成指令转化。此时,业务下发接口12设置为将网关业务模型下发给网关2。在另一示例中,是在网关业务控制装置1中完成指令转化后再下发给网关2。此时业务下发接口12设置为对网关业务模型进行解析并转化为网关可执行的第一指令后,将所述第一指令下发给网关。在一个示例中,模型设计器11自身可以带有持久化存储,以对已经完成的网关业务模型进行保存。模型设计器11还可以带有校验功能,在保存时会对整个网关业务模型进行校验。在本发明一示例性实施例中,如图1所示,网关2包括网关控制面21、指令执行器22、请求解析器23、请求下发器24、响应解析器25和响应反馈器26,其中:网关控制面21提供了网关与网关业务控制装置的交互接口,设置为获取用于实现网关业务的多个第一指令并下发给指令执行器22,其中,所述第一指令基于网关业务模型得到。在本发明一示例性实施例中,所述网关业务模型采用如本发明任一实施例所述的网关业务模型生成方法生成。图1所示的实施例中,指令转化在网关实现。网关控制面21接收网关业务控制装置1下发的网关业务模型,对所述网关业务模型进行解析并转化为多个所述第一指令,然后下发给指令执行器22。在对网关业务模型进行解析之前,网关控制面21还可以对下发的网关业务模型进行校验如crc校验,如果校验不通过则拒绝下发,可以要求网关业务控制装置重新下发。而在本发明另一示例性实施例中,网关业务控制装置2完成指令转化功能后再下发。此时网关控制面21可设置为接收网关业务控制装置1下发的第一指令并直接下发给指令执行器22。网关控制面21下发成功后,可以向网关业务控制装置返回下发成功的响应消息。指令执行器22设置为根据下发的第一指令对接收的报文(如http请求报文、http响应报文)进行处理。指令执行器22可以将下发的第一指令保存为指令流表库中的条目,第一指令也可以称为流表指令。第一指令对报文处理的逻辑结构为一条流水线,此流水线包括一个或多个分支,每一分支有一个或多个执行环节,每个执行环节中可以包括一个或多个第一指令,如图2所示。当网关2接收到一条报文后,该条报文在指令执行器22中按照流水线逐步进行处理,在流水线的每个指令按照“匹配条件,执行动作”的方式运行,实现对报文的流水线处理。在本发明一示例性实施例中,多个所述第一指令组成实现网关业务处理的流水线,所述第一指令包括以下信息中的至少之一:指令标识、优先级、匹配规则、执行动作;其中,所述流水线中的第一个指令的匹配规则用于判断接收的报文是否与所述流水线匹配;所述第一个指令的优先级用于确定对流水线进行匹配的顺序;所述执行动作用于确定对报文执行的处理,其中包括跳转到下一指令的动作,当然最后一个指令并不需要执行到下一个指令的跳转。指令标识可以是一个编号序列,指令的顺序可以根据编号来确定。请求解析器23设置为对接收到的请求报文进行解析并发送给指令执行器22;请求下发器24,设置为将经过指令执行器22处理后的请求报文下发给后端服务;响应解析器25,设置为对接收到的响应报文进行解析并发送给指令执行器22;响应反馈器26,设置为将经过指令执行器22处理后的响应报文返回给客户端。本申请中,网关业务控制装置1可以是任何可执行网关业务模型生成和下发处理的计算机设备,网关业务控制装置1可以直接向网关2下发网关业务信息,也可以间接下发。在间接下发时,指令转化的功能也可以由中间设备来实现。本发明上述实施例实现了一种网关业务实现的系统,其网关业务采用模型驱动设计,可以应对不同的业务需求,快速实现业务目标,运维人员即可开发新的业务,不再需要根据不同业务开发不同插件。本发明一示例性实施例还提供了一种网关业务实现方法,所述网关业务为http网关业务。该实现方法包括设计阶段在网关业务控制装置执行的网关业务模型设计和下发处理,以及运行阶段在网关执行的对报文的处理。其中,对报文的处理又分为:对请求报文的处理和对响应报文的处理。在网关业务控制装置侧执行的方法如图3所示,包括:步骤110,根据输入指令生成网关业务模型;及,步骤120,根据生成的所述网关业务模型向网关下发网关业务信息,以在所述网关上执行网关业务处理。在本发明一示例性实施例中,所述根据输入指令生成网关业务模型,包括:显示操作界面,接收输入指令;根据输入指令,从可选元素中选择网关业务模型的组成元素,将所述组成元素连接为处理网关业务的流水线并设置所述组成元素的属性,以实现网关业务处理逻辑;根据所述流水线和所述组成元素的属性生成所述网关业务模型。在本发明一示例性实施例中,网关业务模型使用网关业务特定语言实现,如采用针对http操作的dsl描述,能完成不同网关业务的设计。在一示例中,网关业务控制装置提供的一个操作界面是包括“元素选择区”和“模型设计区”的可视化操作界面,如图4所示,元素选择区位于操作界面的左侧,设计人员可以在“元素选择区”选择构建模型,“元素选择区”中元素除基本元素(如开始环节、结束环节、执行环节、判断跳转)外,还可以包含已有业务模型即原来已经设计好的业务模型。这意味着在进行网关业务模型设计时,可以将所设计的业务模型保存下来,作为一个环节(也即子流程)嵌套在更复杂的网关业务的流水线(也业务流程)中,作为其中的处理环节。这样可以实现业务模型的共享和重用,完成更复杂的业务模型的开发,可以大大节约了设计所需的时间。如图4所示的示例中,模型设计区位于该操作界面的中间,该操作界面的右侧还包括一个模型属性区,用于填写组成元素的属性。“模型设计区”是模型的可视化展示区,设计人员可以通过拖拽“元素选择区”的元素到“模型设计区”来构成模型。网关业务控制装置检测到所述元素选择区中的可选元素被拖拽到所述模型设计区中时,将被拖拽的所述可选元素记录为所述网关业务模型的组成元素。当设计人员在“模型设计区”选中特定元素后,可以在“模型属性区”设置该元素的属性,如匹配条件和执行动作等。模型设计器可以根据操作原语和上下文给出智能提示,帮助运维人员进行设计,并不需要专门的开发人员参与其中;同时,还可以提供了“保存“和“下发”按钮,可以将设计好的模型进行保存,也可以将设计好的模型下发到http网关。在本发明一示例性实施例中,生成的网关业务模型在逻辑结构上是包括多个环节的一个流水线。一个环节可以包括一条第二指令(如dsl指令)或者流水线上依次执行的多条第二指令。例如,可以将执行类似功能的多条第二指令(如执行报文处理的多条第二指令)组成为一个环节,以简化流水线的结构,方便模型的设计。所述环节包括以下信息中的至少之一:业务标识、环节标识、入口环节标识、优先级、指令标识、匹配规则、执行动作;其中,入口环节的匹配规则用于判断接收的报文是否与该入口环节所在的流水线匹配;入口环节的优先级用于确定对流水线进行匹配的顺序;执行动作用于确定对报文执行的处理,其中包括跳转到下一环节或指令的动作。根据流水线组成元素所属的环节、各环节的连接关系、组成元素的属性等可以确定第二指令的匹配规则和执行动作等内容。在本发明一示例性实施例中,根据生成的所述网关业务模型向网关下发网关业务信息时,是将所述网关业务模型直接下发给网关。例如,通过点击模型设计器中的“下发“按钮,将网关业务模型下发给http网关。而在本发明另一示例性实施例中,是先对所述网关业务模型进行解析并转化为所述网关可执行的第一指令,再将所述第一指令下发给网关。在网关侧执行的方法如图5所示,包括:步骤210,网关获取用于实现网关业务的多个第一指令,其中,所述第一指令基于网关业务模型得到;及,步骤220,所述网关根据所述第一指令对接收的报文进行处理。其中,所述网关业务模型可以采用如本发明任一实施例所述的网关业务模型生成方法生成。在本发明一示例性实施例中,所述网关获取用于实现网关业务的多个第一指令,包括:所述网关接收所述网关业务模型,对所述网关业务模型进行解析并转化为多个所述第一指令。在对网关业务模型进行解析之前,还可以对网关业务模型进行校验如crc校验,如果校验不通过则拒绝下发。在本发明一示例性实施例中,网关对请求报文(如http请求报文)的处理包括:步骤一,网关对接收到客户端发送的请求报文进行解析,得到请求报文的内容,其中包括统一资源定位符(url),头部(header)和包体(body)等信息。步骤二,网关根据请求报文中的相关特征(如ip地址、cookie中的login_token等),判断是否有与其匹配的流水线,如果没有,则拒绝请求报文,流程结束;如果有,继续下一步。本步骤中,如果请求报文中的相关特征符合一个流水线的入口环节的匹配条件,则该流水线是与该请求报文匹配的流水线。步骤三,从匹配到的流水线的第一指令开始,依次执行所述流水线上的所有第一指令以对请求报文进行处理,将处理后的请求报文下发到后端服务。在本发明一示例性实施例中,网关对响应报文(如http响应报文)的处理包括:步骤一,网关对接收到的后端服务返回的响应报文进行解析,得到响应报文的内容,如header和body等信息;步骤二:网关根据响应报文的相关特征,判断是否有与其匹配的流水线,如果没有,则拒绝请求报文,流程结束;如果有,继续下一步。本步骤中,如果响应报文中的相关特征符合一个流水线的第一个指令(对应入口环节)的匹配条件,则所述流水线是与该响应报文匹配的流水线。步骤三,从匹配到的流水线的第一指令开始,依次执行所述流水线上的所有第一指令以对响应报文进行处理,将处理后的响应报文返回给发送相应请求报文的客户端。在本发明一示例性实施例中,http网关需要同时承载多个不同的网关业务,所以指令执行器中能同时运行多个业务的处理流程,在流水线的第一个处理环节上,会对http报文进行编号,同时会根据http报文的特征与流水线的匹配结果,将其http请求/响应送到不同的流水线上进行处理,并利用所述编号来跟踪相应的处理过程。在本发明一示例性实施例中,第一指令在执行时是一个解释执行的模式,当执行次数达到一定门限后,可以使用即时转化技术,将第一指令再度转化成机器码如native代码进行执行,以提升整个流程的处理效率。在本发明一示例性的实施例中,业务网关模型的逻辑结构是一条或多条流水线,不同流水线如可以分别用于处理不同类型的报文。每一条流水线可以包括一个或多个分支。一条流水线上可以有多个环节,每个环节可以包含如下的信息:业务标识:用于标识此环节所针对的业务。环节标识(id):可以采用环节的编号作为环节id。入口环节标识:值为“y”标识该环节是入口环节,入口环节的匹配规则用于判断流水线是否与接收的报文匹配。优先级:当此环节是入口环节时设置优先级,该字段的数字越小表示优先级越高,优先级相同时可以定义为环节的id越大优先级越高,或者相反。在网关接收到报文,根据报文中的特征判断所述报文是否与已设置的流水线匹配时,是从高优先级的入口环节(也可称为条目)开始,按照从高到低的顺序依次进行匹配。匹配规则:也可以称为匹配条件,用于判断请求报文是否满足一定的条件,从而控制流水线的处理流向,其用于匹配操作的特征可以是报文中的任何一部分,如:httpurl,httpheader和httpbody等。执行动作:即对报文执行的处理,如:修改http头部,重写url,增加计数器,转发http请求到后端服务,http请求拒绝,跳转到下一环节或指令等。上述匹配规则和执行动作在设计时可以使用特定的dsl语言描述(或者说编写),由网关控制面转化为网关可执行的第一指令的内容。在本发明一个示例性实施例中,一个环节即一个指令,环节标识也即指令标识,此时一个环节包括以上的业务标识、环节标识、入口环节标识、优先级、匹配规则和执行动作等信息,无需再另外设置指令标识。而在本发明另一个示例性实施例中,一个环节中可以包括多个指令,此时每一指令有各自的匹配规则和执行动作,还需为每一指令设置一个指令标识以区别不同的指令。业务名称、环节标识、入口环节标识等内容可以为同一环节的多个指令共用。下表示出了一个流水线中的3个环节:本实施例中流水线上环节的结构可以应用于本发明上述的任一实施例中。在本发明一示例性的实施例中,多个所述第一指令组成实现网关业务处理的流水线,所述第一指令可以包括以下信息中的至少之一:指令标识,该指令标识可以同时包含第一指令中环节编号和指令编号;优先级;匹配规则;执行动作;其中,所述流水线中的第一个指令的匹配规则用于判断接收的报文是否与所述流水线匹配;所述第一个指令的优先级用于确定对流水线进行匹配的顺序;所述执行动作用于确定对报文执行的处理,其中一种是跳转到下一指令的动作。另外,对于非判断跳转的只是对报文进行处理的指令,可以将匹配规则设置为一默认值如true,默认匹配成功。流水线中指令的顺序可以根据顺序编号的指令标识确定。http网关作为服务化系统的入口,需要开发各种各样的业务逻辑,传统方式通过开发和部署不同业务插件,部署在http网关中来实现,采用本发明实施例的方案后,不再采用编写插件的方式,可以由运维人员,采用一个统一的流程和模型来实现。下面通过几个具体网关业务的实施例对本申请进行说明。实施例一某企业微服务架构系统,需要对所有来自于外部的http请求采用基本(basicaccessauthentication)安全认证。实施环境说明:外部的http请求都会经过http网关,然后转发到后端服务,但是目前http网关不具备安全控制的能力,需要运维人员需要快速增加对外部请求的安全认证功能,认证采用了基本认证,通过http请求中的cookie中的authorization属性来获取用户名和密码,然后对密码进行验证。以该企业使用本发明实施例的网关业务实现系统为例,对本发明实施例进行详细描述:模型设计:运维人员使用模型设计器设计认证的网关业务模型,设计完成的模型。运维人员点击模型设计器的下发按钮,将模型下发到网关中的网关控制面。网关控制面对网关业务模型进行解析,转化为可执行的指令并下发到指令执行器,相应指令如图6b所示。对请求和响应的处理:当http网关接收到http客户端发送的请求报文和响应报文后,会执行流水线的相应指令,其处理逻辑参见图6a。步骤501:http网关在80端口上监听到http请求报文。步骤502:在http请求报文的cookie中,没有login_token属性,本实施例表示该报文是请求报文。步骤504:通过base64算法,解析authorization字段,获取用户名和密码。步骤505:使用用户名从缓存中获取用户的密码。步骤506:将缓存中获取的密码与步骤504中获得的密码比较,假定两者是相同的。步骤507:将http请求报文转发给后端处理者。步骤508:接收到后端处理者完成处理后返回的http响应报文。步骤509:在http响应的cookie中设置login_token属性。步骤510:将http响应返回给http的客户端。实施例二本实施例中,某运营商的api开发平台需要对非登录的用户的访问频率进行限制,其每分钟的访问配额是10次。实施环境说明:运营商的api平台使用restful接口对外提供的api服务,为了保证核心用户的qos,对非登录的用户的访问频率进行限制,需要通过判断cookie中是否有login_token属性,有login_token属性则认为是登录用户,没有则认为是非登录用户,然后记录其访问次数,超过配额就拒绝提供服务。以该运营商使用本装置为例对本发明进行详细描述:模型设计:运维人员使用模型设计器设计限流业务模型,设计完成的模型。运维人员点击模型设计器的下发按钮,将模型发现到网关中的网关控制面。网关控制面对模型进行解析,生成可执行的指令并下发到指令执行器,相应指令如图7b所示。请求处理:当接收到请求报文后,会执行流水线的全部指令,其处理逻辑参见图7a:步骤701:http服务器在80端口上监听到http请求报文。步骤702:在http请求报文的cookie中,如果没有login_token属性,转步骤703,如果有login_token属性,转步骤708。步骤703:从http请求报文中获取请求的原ip地址。步骤704:根据获取的ip地址从缓存中获取当前统计周期(一分钟内)的已访问次数。步骤705:如果已访问次数已经达到10次,转步骤706,如果没有达到10次,执行步骤707。步骤706,拒绝访问请求的转发,结束步骤707:缓存中当前计数增加1;步骤708,转发http请求报文到后端处理者,结束。实施例三某政府部门需要升级其在公有云中的应用,需要采用金丝雀升级的方式来完成。实施环境说明:某政府部门需要升级其在公有云中的应用,需要在一段时间内保持新旧应用共存,将小部分的流量导入到新的应用中,观察新应用使用是否正常,在发现新应用不正常时就立即将流量导回到旧应用。以该政府部门使用本装置为例对本发明进行详细描述:模型设计:运维人员使用模型设计器设计金丝雀升级的业务模型,设计完成的模型。运维人员点击模型设计器的下发按钮,将模型发现到网关的网关控制面。网关控制面对模型解析,生成可执行的指令并下发到指令执行器,相应指令如图8b所示。请求处理:当接收到请求报文后,会执行流水线的全部指令。其处理逻辑可参见图8a。步骤901:http服务器在80端口上监听到http请求报文。步骤902:从http请求中获取请求报文的原ip地址。步骤903:通过原ip地址进行哈希(hash)计数,然后与100求模数。步骤904:判断模数是否为1,为1转到步骤906,否则转到步骤905。步骤905:转发http请求报文到旧版本的服务,结束。步骤906:转发http请求报文到新版本的服务,结束。通过上述处理,可以将1%的报文转发到新版本的服务,其他报文仍使用旧版本的服务。实施例四某电商需要开展秒杀业务,前100个请求能购买到商品,后面的请求返回秒杀失败的响应。实施环境说明:某电商需要开展秒杀业务,http网关使用访问计数器计数,当计数小于100,则正常下单,并且计数器加一,否则请求返回秒杀失败的响应。以该电商使用本装置为例对本发明进行详细描述:模型设计:运维人员使用模型设计器设计秒杀业务模型,设计完成的模型,如图9a所示。运维人员点击模型设计器的下发按钮,将模型发现到网关中的网关控制面。网关控制面对模型解析,生成可执行的指令并下发到指令执行器,相关指令如图9b所示。请求和响应的处理:当接收到请求报文和响应报文后,会执行流水线的全部指令。其处理逻辑可参见图9a。步骤1101:http服务器在80端口上监听到http请求报文。步骤1102:从缓存中获取当前的请求计数。步骤1103:判断请求计数是否达到100,达到转发到步骤1104,没有达到转发到步骤1106。步骤1104:缓存中的请求计数增加1。步骤1105:转到http请求到业务服务器,结束。步骤1106:向http客户端返回秒杀失败的响应,结束。实施例五本实施例要实现的网关业务是:对经过身份认证的用户其访问频率控制在每秒1000次,非身份认证的用户总体访问频率控制在每秒100次,在这个http网关业务中可以使用身份认证模型和访问限流两个模型的组合来完成。本实施例主要说明一下模型设计时的嵌套。假定已经设计完成一个用于实现限流控制流程的第一网关业务模型和一个用于实现权限控制流程的第二网关业务模型,在设计本实施例的第三网关业务模型时,就可以将第一网关业务模型和第二网关业务模型作为一个环节嵌入在该第三网关业务模型中,也即是将权限控制子流程和限流控制子流程嵌入到总的业务流程中,实现如图10的处理逻辑。本发明一示例性实施例还提供了一种网关业务控制装置,如图11所示,包括处理器50、存储器60及存储在所述存储器60上并可在所述处理器50上运行的计算机程序,所述处理器50执行所述计算程序时实现本发明上述任一实施例所述的网关业务控制装置侧所执行的方法的处理。本发明一示例性实施例还提供了一种网关,也可参见图11,包括处理器50、存储器60及存储在所述存储器60上并可在所述处理器50上运行的计算机程序,所述处理器50执行所述计算程序时实现本发明上述任一实施例所述的网关侧所执行的方法的处理。本发明一示例性实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明上述任一实施例所述的方法的处理。本发明上述实施例例的技术方案具有如下至少一个有益效果:使用模型驱动网关,无须针对业务开发特定的插件,完成了原来需要多个业务插件才能完成的不同业务。采用dsl语言构建网关业务模型,将模型转化成可执行的指令后再下发到指令执行器,使网关业务开发能基于高层次的抽象来完成。通过网关模型设计器完成网关业务的设计,提高网关业务的开发速度。本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1