CN105049342A - 动态服务网关及其中执行的方法 - Google Patents
动态服务网关及其中执行的方法 Download PDFInfo
- Publication number
- CN105049342A CN105049342A CN201510252766.3A CN201510252766A CN105049342A CN 105049342 A CN105049342 A CN 105049342A CN 201510252766 A CN201510252766 A CN 201510252766A CN 105049342 A CN105049342 A CN 105049342A
- Authority
- CN
- China
- Prior art keywords
- agreement
- protocol
- client
- gateway
- sub
- 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.)
- Granted
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种动态服务网关以及在其中执行的方法。所述动态服务网关包括:客户端模块,配置为:接收客户端请求;协议注册模块,配置为:接收子服务在启动时的注册请求;以及响应于所述注册请求,将所述子服务支持的协议的注册信息存储到路由表;策略路由模块,配置为:在路由表中查找所接收的客户端请求对应的协议;确定所述客户端请求对应的协议的编排路线图;以及,按照所述编排路线图,依次调用所述编排路线图中的每一个协议对应的子服务;以及,存储单元,配置为:存储所述注册目录和路由表。根据本发明实施例,实现了在子服务扩张时服务网关的协议分发能力的动态扩展。
Description
技术领域
本发明一般地涉及计算机网络,更具体地涉及动态服务网关和在其中执行的方法。
背景技术
在互联网迅猛发展的今天,网络流量实现了快速突飞猛进的增长,特别是电商行业的异军突起,成为该发展趋势的领军人物。对应着前段流量的爆发式增长,服务端系统也在承受着巨大考验。为了实现高并发、高可用的系统,大部分公司都会按照业务把整个系统拆分成独立的子系统,然后通过RPC框架按照业务需求调用对应服务。这样的设计可以实现业务更高的聚合,防止扩散影响,但却带来了其它问题,这些子系统怎么被外部接口调用、怎么实现相互调用和协同作业,都需要提供切实可行的方案去解决。
现有技术方案大部分实现的是一种“简单直接”的方式。也即让统一服务网关“记录(或记住)”每个子服务(或子系统)所提供的服务(即“可以做哪些事情”)。然后当外部请求流量到达时,服务网关根据请求类型去调用所需的对应的服务,完成整个请求过程。该流程可以例如如图1所示。在图1中,当外部请求到达服务网关时,服务网关根据调用关系去调用对应的服务。这种调用关系是在系统实现的时候通过“硬编码”的方式完成的,是一种自上而下的调用。
上述“硬编码”调用关系的现有技术系统在子服务有更新时将会出现问题。然而子服务和业务是紧密联系的,随着业务的发展和扩充,子服务的更新升级的频率会很高。现有技术系统应对这种场景需要通过升级服务网关来支持业务迭代。但服务网关是整个系统的流量中心,汇聚了所有的流量请求,它的升级会直接影响(甚至中断)整个系统的运营。而且这种“自上而下”的硬编码调用关系决定了服务网关将和各个子服务产生严重耦合,在服务网关中会搀和业务系统的逻辑,影响服务网关结构的清晰性,限制了子服务业务的发展。随着业务需求的层层叠加,子服务规模也将随之膨胀。在子服务规模比较小的时候,这种架构还能支撑,实现快速的业务更新。当子服务膨胀到一定程度时,这种架构的劣势将快速地暴露出来,难以支持快速的业务发展,而且后期的维护成本也将陡升。
因此,面对快速的业务迭代,特别是业务扩张到一定程度之后,现有技术方案将难以支撑,系统的稳定性也将受到威胁,同时系统维护成本加大。
发明内容
为了解决现有技术的问题,特别是为了解决在业务的扩展带动后端服务规模扩张时引起的服务网关经常升级导致系统不稳定、维护成本剧增的问题,本发明提出了一种动态的多服务协同作业编排方案以及支持该方案的动态服务网关。
根据本发明的一个方面,提出了一种在动态服务网关中执行的方法,包括:接收客户端请求;在路由表中查找所接收的客户端请求对应的协议,所述路由表包括指示所支持的协议的信息;确定所述客户端请求对应的协议的编排路线图;按照所述编排路线图,依次调用所述编排路线图中的每一个协议对应的子服务。
在本发明的一些实施例中,所述编排路线图可以包括按顺序编排的一个或多个步骤,每个步骤包括单个协议。
在本发明的一些实施例中,所述方法还可以包括:在所述网关的运行期间,配置新的对外协议或更新现有对外协议中的编排路线图。
在本发明的一些实施例中,所述方法还可以包括:接收子服务在启动时的注册请求;以及响应于所述注册请求,将所述子服务支持的协议的注册信息存储到路由表。
在本发明的一些实施例中,所述方法还可以包括:去除重复注册。
在本发明的一些实施例中,所述方法还可以包括:在注册信息发生更新时,同步其他动态服务网关上的注册信息。
在本发明的一些实施例中,所述同步可以包括:将更新的注册信息同步到缓存;以及向其他动态服务网关广播更新通知,以使其从所述缓存获取所述更新的注册信息。
在本发明的一些实施例中,所述方法还可以包括:在接收到客户端请求时,执行对所述客户端的授权校验。
在本发明的一些实施例中,所述方法还可以包括:监控到达所述网关的业务流量,以及执行安全控制。
根据本发明的第二方面,提供了一种动态服务网关,包括:客户端模块,配置为:接收客户端请求;协议注册模块,配置为:接收子服务在启动时的注册请求;以及响应于所述注册请求,将所述子服务支持的协议的注册信息存储到路由表;策略路由模块,配置为:在路由表中查找所接收的客户端请求对应的协议;确定所述客户端请求对应的协议的编排路线图;以及,按照所述编排路线图,依次调用所述编排路线图中的每一个协议对应的子服务;以及,存储单元,配置为:存储所述注册目录和路由表。
在本发明的一些实施例中,所述网关还可以包括:流量监控和控制模块,配置为:监控到达所述网关的业务流量,以及执行安全控制。
在本发明的一些实施例中,所述流量监控和控制模块还可以配置为:在所述网关接收到客户端请求时,执行对所述客户端的授权校验。
在本发明的一些实施例中,所述编排路线图包括按顺序编排的一个或多个步骤,每个步骤包括单个协议。
在本发明的一些实施例中,所述网关还可以包括:配置模块,配置为:在所述网关的运行期间,配置新的对外协议或更新现有对外协议中的编排路线图。
在本发明的一些实施例中,所述协议注册模块还可以配置为:去除重复注册。
在本发明的一些实施例中,所述网关还可以包括:协议同步模块,配置为:在注册信息发生更新时,同步其他动态服务网关上的注册信息。
在本发明的一些实施例中,所述协议同步模块可以进一步配置为:将更新的注册信息同步到缓存;以及向其他动态服务网关广播更新通知,以使其从所述缓存获取所述更新的注册信息。
根据本发明实施例的动态服务网关可以实现子服务的动态注册、策略路由,还可以实现集中式流量控制,提升了系统稳定性、灵活性,能够支撑快速业务扩张,降低维护成本。
附图说明
通过下面结合附图说明本发明的优选实施例,将使本发明的上述及其它目的、特征和优点更加清楚,其中:
图1示意性地示出了现有技术的子服务调用流程图;
图2示意性地示出了根据本发明实施例的动态服务网关的框图;
图3示意性地示出了根据本发明实施例的服务注册的一个示例的序列图;
图4示意性地示出了根据本发明实施例的服务注册协议类图的一个示例;
图5示意性地示出了根据本发明实施例的在动态服务网关中执行的协议注册方法的示例的流程图;
图6示意性地示出了根据本发明实施例的在动态服务网关中执行的处理客户端请求的方法的示例的流程图;
图7示意性地示出了根据本发明实施例的在动态服务网关10上执行的方法的一个具体实现示例的流程图。
在本发明的所有附图中,相同或相似的结构均以相同或相似的附图标记进行标识。
具体实施方式
现在将参考附图来详细描述本发明,附图中示出了本发明的说明性实施例,以使得本领域技术人员能够实现本发明。应该注意:以下附图和示例不意味着将本发明的范围限制为单一实施例,相反通过互换和组合不同实施例的一些或全部所述或所示元素形成其他实施例也是可能的。此外,在可以使用已知组件来部分或完全实现本发明的特定元素的情况下,将仅描述这些已知组件中为了理解本发明所必需的那部分组件,且将省略对这些已知组件中其他部分的详细描述,以使得本发明更突出。除非本文中另行指出,否则本领域技术人员应该理解:尽管本发明的一些实施例描述为用软件实形式现,但是本发明不受限于此,而是也可以用硬件、软件和硬件的组合来实现,且反之亦然。除非本文中另行明确声明,否则在本说明书中,不应将示出了单一组件的实施例视为是限制性的,而是本发明意在包含包括多个相同组件在内的其他实施例,且反之亦然。此外,本发明包含本文中作为示意所引用的已知组件的当前和将来开发的等价物。
如前所述,服务网关是整个系统的核心构件,是整个系统的消息枢纽。它的稳定关系着整个系统的可靠性。根据本发明实施例的服务网关将提供统一的服务协议注册功能和策略路由功能。应该理解,本根据本发明实施例的服务网关还可以包括服务网关的其他常规功能,如流量监控与控制功能等,在此不再赘述。
下面将参考附图对根据本发明实施例的动态服务网关进行详细描述。
图2示意性地示出了根据本发明实施例的动态服务网关10的框图。如图所示,动态服务网关10可以包括客户端模块12、协议注册模块14、策略路由模块16以及存储单元20等等。
客户端模块12执行与客户端的通信功能。客户端模块12可以配置为接收客户端请求,并且还可以配置为向客户端返回对请求的处理结果。
协议注册模块14执行协议注册功能。在本文中,协议(Protocol)表示服务完成的请求事项。协议可以区分对外协议和对内协议。对外协议和对内协议例如可以通过协议类中的字段(如)outside)来指示(下面将参考表2进行详述)。
对外协议是用户可以通过客户端直接访问的协议(Protocol)。对外协议通常由系统管理员配置。动态服务网关可以从配置中心拉取已配置的对外协议,并且通过协议注册模块14将其信息存储在路由表中。
内部协议是由子服务支持的协议,用户通常不能够通过客户端直接访问内部协议。内部协议由子服务启动时注册。每个子服务都会向服务网关注册一个Service对象,在例如服务表中存储该service对象的信息。服务表中存储的Service对象的信息格式可以示例如下:
[Protocol.group]+Protocol.type->List<Service>。
Service中包含了该子服务所支持的内部协议(Service.protocols)。这些内部协议也即子服务所支持的具体功能,比如:检查商品是否有货、查询商品价格等等。协议注册模块14同样会将这些内部协议的信息加到路由表中(RouteTable)。
协议注册模块14可以配置为:接收子服务在启动时的注册请求;以及响应于所述注册请求,在所述网关中注册一个所述子服务对应的服务对象(将在下文参考图4进行详述),并且在路由表中加入指示所注册的子服务支持的协议的信息。
路由表包括指示已注册的协议的(即所支持的协议)的信息。路由表(RouteTable)中存储的协议的信息格式可以示例如下:
[Protocol.group]+Protocol.type->Protocol
其中Protocol.group表示协议所属业务分组,对于全局协议,group可以不存在或为空(null);Protocol.type表示协议类型标识。
优选地,协议注册模块14还配置为:去除重复的协议注册。
优选地,动态服务网关10还可以包括协议同步模块,其配置为:在所述网关中的注册信息发生更新时,同步其他动态服务网关上的注册信息。例如,所述协议同步模块可以通过下述方式来实现同步:将本地更新的注册信息同步到共享缓存;以及向其他动态服务网关广播更新通知,以使其他动态服务网关从所述共享缓存获取更新的注册信息。应该理解,该协议同步模块可以作为单独的模块,也可以作为协议注册模块14的一部分。本发明在这方面不受限制。
策略路由模块16执行策略路由功能,其可以配置为:在路由表中查找所接收的客户端请求对应的协议;确定所述客户端请求对应的协议的编排路线图;以及,按照所述编排路线图,依次调用所述编排路线图中的每一个协议对应的子服务。所述编排路线图包括按顺序编排的一个或多个步骤,每个步骤包括单个协议。
存储单元20可以配置为存储所述注册目录和路由表等等。
可选地,动态服务网关10还可以包括流量监控和控制模块18。流量监控和控制模块18执行流量监控与控制功能,其可以配置为:监控所述网关的业务流量,以及执行安全控制。
可选地,动态服务网关10还可以包括配置模块。系统管理员可以通过该配置模块,在所述网关的运行期间,配置新的对外协议或更新现有对外协议中的编排路线图。例如,系统中可以具有集中的配置中心。系统管理员可以在配置中心配置新的对外协议或更新现有的对外协议(例如,现有协议中的编排路线图)。系统中的各个动态服务网关10的配置模块可以被配置为在网关10的运行期间定期地或者通过事件触发机制从配置中心拉取最新的配置。
下面通过具体示例说明动态服务网关10的主要功能,即服务协议注册功能、流量监控和控制功能以及策略路由功能。
A.协议注册
协议注册模块提供对各个子服务所支持的协议进行注册的功能。子服务在启动后会向动态服务网关10发送注册请求,以告知网关10“其能够做哪些事情”(即所支持的协议),以及完成“这些事情”需要做“哪些事情”(即服务协同作业编排图)。在协议注册模块不仅将每个子服务所支持的协议记录在本地路由表,还可以触发协议同步器(或称协议同步模块)将该信息同步到其它对等实例(即系统中的其他动态服务网关),以避免不同网关实例之间路由表不一致引起的路由混乱问题。
图3示意性地示出了服务注册的一个示例的序列图。
如图3所示,子服务(Service)在完成自启动(步骤1)后,会通知统一健康检查中心(HealthChecker)开始接口和功能的健康性检查(步骤2)。健康中心将向子服务返回健康检查结果(步骤2.1)。如果健康检查结果为不通过,则注册失败。如果健康检查结果为通过,则子服务向动态服务网关(Router)发送注册(register)请求(步骤3),以调用动态服务网关的协议注册接口(如协议注册模块提供的接口)来注册自己所支持的协议。具体地,例如该注册可以包括以下阶段:
a)加入待注册队列
如图中步骤3.1所示。在接收到子服务的注册请求之后,动态服务网关的协议注册模块提取该注册请求中包含的待注册的协议(也即子服务所支持的协议)的信息,并且将待注册的协议加入待注册队列。为保证可能存在的子服务多实例同时注册导致的协议注册重复的问题,可以将待注册的协议放入统一队列中,然后由后续步骤执行去除重复处理。
b)检查协议版本
如图中3.2步骤所示。协议注册模块中的协议校验器从待注册队列中取出待注册的协议,先去除重复的待注册的协议,然后检查待注册的协议的版本是否高于已注册的对应协议的现有版本或者是否是全新的协议。如果该待注册的协议是高版本的或是全新的协议,则将其放入需注册队列中。
c)协议同步
如图中步骤3.3与3.4所示。在生产环境部署时,系统中可能会部署动态服务网关的多个实例。如果在系统中部署了多个网关实例,则这些实例之间的路由表需保持同步才能保证路由的一致性。因此每个实例的注册信息的更新都需要通知其它实例。在本示例中,协议同步器(或协议同步模块)将需更新的注册信息同步到共享缓存(例如,其可以是系统中的某个独立数据库)(步骤3.3),然后通过广播接口向其他实例发送更新通知,以通知其它实例刷新路由表以及服务表(步骤3.4)。
d)刷新路由表和服务表
如图中步骤3.5所示。在完成协议同步后,动态服务网关的协议注册模块将根据需注册队列刷新本地路由表以及服务表,保持本地的路由信息的实时性。系统中的动态服务网关的其他实例也将根据所接收的更新通知从共享缓存获取更新的注册信息,以刷新各自的路由表和服务表。
e)记录日志
如图中步骤3.6所示。动态服务网关将完整记录整个协议注册过程的日志,方便以后执行数据统计和问题定位。
图4示出了服务注册协议类图的一个示例。
如图4所示,该服务注册协议类图中例如包括三个类(class):服务(service),协议(protocol)和步骤(step)。这三个类中的字段的含义详述如下。
●服务(Service)
Service代表一个子服务,字段详情如下表所示:
表1:子服务字段含义表
●协议(Protocol)
Protocol代表子服务中的一个请求事项,字段详情如下表所示:
表2:协议字段含义表
●编排方案中的步骤(Step)
Step代表请求事项中的一个处理步骤,字段详情如下表所示:
表3:编排方案步骤含义表
B.流量监控与控制
当某一客户端请求到达服务网关10时,服务网关10(具体地,如服务网关10中的流量监控与控制模块18)可以首先校验该客户端的授权信息,以决定是否受理该请求。如果授权校验结果是予以受理,则将该客户端请求交由策略路由模块16处理。如果授权校验结果是不授予处理,则将返回对应的提示信息。服务网关10可以提供流量监控数据给系统的监控中心进行分析,并且开放流控接口,根据监控中心的命令实现内部服务自我保护和安全控制。应该理解,流量监控与控制是服务网关的常规功能,可以使用各种已知的或将来开放的技术来实现该功能,本发明在这方面不受限制。
C.策略路由
针对通过授权校验的客户端请求,策略路由模块16负责确定该客户端请求对应的协议的编排路线图,依次调用所述编排路线图中的每一个协议对应的子服务(例如,根据该编排路线图,依次向对应子服务分发对应的数据包)。
作为示例,策略路由模块16执行的策略路由功能可以主要分为以下几个阶段:
●协议查找
针对通过授权检查的客户端请求,首先进行精确协议查找。这例如可以根据协议类型(protocol.type)和可选的客户端所属组(group)在路由表中查找是否存在对应的协议。如果查找到与该客户端请求对应的单个对应协议,则查找成功。其它查找结果(如不存在对应协议,或存在多个对应协议)都为失败,返回“不支持此请求”的提示信息。
●可用性检查
在查找到与客户端请求对应的协议的情况下,检查该协议是否可用。在区分对外协议和对内协议的情况下,可以首先检查该协议是否对外(如检查该协议的outside字段的值是否为‘真(true)’),并且仅在该协议是对外协议时,继续后续检查。在不区分对外协议和对内协议的情况下,可以不执行上述“对外”检查,直接进行后续检查。然后,检查该协议是否可用(如检查该协议的available字段的值是否为‘真(true)’)。如果检查结果为可用,则通过该可用性检查,否则查找该协议的备用协议(例如,该协议的backups字段中列出的协议)是否可用,如果找到可用的备用协议,则通过该可用性检查,否则可用性检查失败,返回“不支持此请求”的提示信息。在通过该可用性检查的情况下,将执行后续的路由调用。
●路由调用
在此阶段,将根据客户端请求对应的协议或其备用协议的编排路线图将各个独立的子服务串联起来共同完成请求事项,以实现协同作业。根据本发明的实施例,客户端的某一请求在服务网关10中将被划分为若干串行完成的协议(即编排路线图中顺序编排的步骤中的协议),然后由策略路由模块16通过异步调用方式依次调用各个协议对应的子服务来完成客户端所请求的事项。在执行过程中,策略路由模块16会循环遍历该客户端请求对应的协议的编排路线图中的每个步骤;检查步骤中的对应协议的可用性(包括查找可用的备用协议,这和上述可用性检查中的逻辑相同);在确定实际可调用的协议的子服务(协议对应的子服务可以例如通过服务表来确定)后,通过异步调用方式执行对子服务的调用;并根据设置的参数控制调用的后续过程,最终根据编排方案的控制参数信息返回请求处理结果。
下面将参考图5-图7描述根据本发明实施例的动态服务网关的操作。
图5示意性地示出了根据本发明实施例的在动态服务网关(如图2中的服务网关10)中执行的协议注册的方法500的示例的流程图。
方法500始于子服务启动后向服务网关10发送注册请求时。
在步骤S510中,服务网关10接收子服务在启动时的注册请求。
在步骤S520中,响应于接收到注册请求,将该子服务所支持的协议的注册信息存储到路由表。
可选地,方法500还可以包括步骤:在所述网关的运行期间,配置新的对外协议或更新现有对外协议中的编排路线图;以及,根据所述配置或更新来刷新路由表中的协议注册信息。
可选地,方法500还可以包括:去除重复的待注册的协议,以避免多实例重复注册问题。如前所述,这例如可以采用队列形式去重,并按照协议版本号刷新路由表。
可选地,在系统中存在多个网关实例的情况下,方法500还可以包括步骤:在注册信息发生更新时,同步其他动态服务网关上的注册信息。这可以避免不同网关实例之间路由表不一致引起的路由混乱问题。在一些实施例中,该同步例如可以通过下述方式来实现:将更新的注册信息同步到共享缓存;以及向其他动态服务网关广播更新通知,以使其他动态服务网关从该共享缓存获取该更新的注册信息。
协议注册方法500例如可以由服务网关10中的协议注册模块14来执行。协议注册模块14的功能在上文已经详述,在此不再对方法500的详细操作进行赘述。
图6示意性地示出了根据本发明实施例的在动态服务网关(如图2的服务网关10)中执行的处理客户端请求的方法600的示例的流程图。
如图所示,方法600始于某个客户端请求到达服务网关10。
在步骤S610中,接收客户端请求。
在步骤S620中,在路由表中查找所接收的客户端请求对应的协议。
如果找到对应的协议,则前进到步骤S630。在步骤S630中,确定该客户端请求对应的协议的编排路线图。
在步骤S640中,按照该编排路线图,依次调用该编排路线图中的每一个协议对应的子服务,以完成该客户端请求。然后,方法600结束。
应该理解,方法600还可以包括其他步骤。
在本发明的一些实施例中,在步骤S610中接收到客户端请求后,方法600可以前进到授权校验步骤,执行对该客户端的授权校验。如果授权校验结果是予以受理,则前进到步骤S620。如果授权校验失败,则向客户端返回对应的指示信息,方法600结束。
可选地,方法600还可以包括监控步骤:监控服务网关10的业务流量,并且执行安全控制。
处理客户端请求的方法600中的步骤S610例如可以由服务网关10中的客户端模块12来执行,步骤S620到S640可以由服务网关10中的策略路由模块16来执行,另一些步骤可以由流量监控和控制模块18来执行,等等。服务网关10中的相应模块的功能在上文已经详述,在此不再对方法600的详细操作进行赘述。
图7示意性地示出了根据本发明实施例的在动态服务网关10上执行的方法600的一个具体实现示例700的流程图。
如图所示,方法700始于某个客户端(APP)请求到达服务网关10。
在步骤S710中,对客户端请求进行授权检验,检查是否支持该APP接入系统。如果在步骤S710中检查失败,则前进到步骤S712,返回给用户“不支持该APP接入”的提示信息。
如果在步骤S710中检查成功,则前进到步骤S714,解析该客户端请求,并且处理转发规则。然后,前进到步骤S716。
在步骤S716中,根据步骤S710中解析出的APP所属分组(group)及协议类型(protocol.type)在路由表中查找对应的协议。
在步骤S718中,确定步骤S716的查找结果。如果查找到单个协议,则表示查找成功,于是前进到步骤S724,否则前进到步骤S720。
在步骤S720中,只根据协议类型(protocol.type)在路由表中查找对应的协议。如果在步骤S720中查找到单个协议,则表示查找成功,前进到步骤S724。如果在步骤S720中查找到零个或多个协议,则表示查找失败,前进到步骤S726。在步骤S726中,返回给用户APP“不支持此请求”的提示信息。
在步骤S724中,检查查找到的单个协议是否是对外协议(例如,检查protocol.outside字段)。如果不是对外协议,则前进到步骤S26,否则前进到步骤S728。
在步骤S728中,检查该协议是否可用(例如,检查protocol.available字段)。如果不可用,则前进到步骤S730,否则前进到步骤S732。
在步骤S730中,检查该协议是否存在备用协议。如果没有备用协议,则前进到步骤S726,否则回到步骤S728,检查备用协议是否可用。
在步骤S732中,查找协议的编排路线图(如,检查protocol.roadmap字段)。
然后,在步骤S734中,获取编排路线图中的第一个步骤对应的协议的子服务。
然后,在步骤S738中判断所获取的子服务是否可用。
如果步骤S738中的判断结果为不可用,则前进到步骤S740,检查是否存在备用服务。如果在步骤S740中确定存在备用服务,则返回步骤S738,判断备用服务是否可用。如果在步骤S740中确定不存在备用服务,则前进到步骤S736,判断是否中断处理。如果中断,则前进到步骤S726,否则回到步骤S734,获取下一个步骤对应的协议的子服务。
如果步骤S738中的判断结果为可用,则前进到步骤S742。在步骤S742中,调用子服务。
然后,在步骤S744中,判断调用是否成功。如果成功,则前进到步骤S748,判断处理是否完毕(即判断编排路线图中是否剩余其他协议步骤);否则前进到步骤S746中。
如果在步骤S748中,判断结果为处理完毕,则前进到S752,返回结果,于是过程结束。如果在步骤S748中,判断结果为处理未完毕,则返回步骤S734,获取下一个协议步骤对应的子服务。
在步骤S746中,判断是否中断处理。如果中断,则前进到步骤S750,请求异常处理;否则回到步骤S734,获取下一个步骤对应的协议的子服务。
下面以“下单”为例,对根据本发明的实施例的动态服务网关的操作进行示例说明。在该示例中,系统配置了作为外部协议的下单协议,该下单协议例如包含三个处理步骤:检查商品是否有货、查询商品价格、检查配送地址,其中检查商品是否有货、查询商品价格这两个协议是由商品服务提供的,检查配送地址这个协议是由配送服务提供的。应该理解,上述示例为了便于说明进行了简化,实际上该下单协议可以包括更多的处理步骤,如检查支付方式等等。
在该示例中,数据配置可以如下所示:
系统管理员可以配置如下下单协议(Protocol):
类似的,配送服务在启动时将向动态服务网关注册检查配送地址这一协议。
于是,在该例子中,动态服务网关的路由表中至少包含下述内容:
pc-下单->下单Protocol
pc-检查商品是否有货->检查商品是否有货Protocol
pc-查询商品价格->查询商品价格Protocol
pc-检查配送地址->检查配送地址Protocol
……
于是,当用户使用计算机(pc)客户端(APP)下单后,系统将用户选择的商品、收货地址等等作为一条下单请求发送给服务端(如服务网关10)。服务端首先检查是否支持该APP接入系统。如果检查失败,则返回给用户“不支持该APP接入”的提示信息。如果检查成功,则解析用户发送的下单请求,并根据解析出的该APP所属组(group,本例中为‘pc’)及协议类型(protocol.type,本例中为‘下单’)在路由表中查找对应的协议(即,‘pc-下单’协议)。如果查找到单个协议,则表示查找成功(本例中的情形,找到单个‘pc-下单’协议),否则将只根据协议类型(protocol.type)查找对应的协议,如果查找到单个协议(如‘null-下单’协议,如前所述,null表示该下单协议适用于所有APP下单),则表示查找成功,否则(查找到零个或多个协议)表示查找失败,此时将返回给用户APP“不支持此请求”的提示信息。如果查找协议成功,则先检查该协议(即‘下单’协议)是否允许用户直接访问(例如,检查该协议是否是对外协议,本例中为检查protocol.outside字段)。如果此协议不允许,则将返回给用户APP“不支持此请求”的提示信息,否则(本例中的情形,protocol.outside字段为true)继续检查该协议是否可用(例如,检查protocol.available字段)。如果不可用,则检查该协议是否有备用协议。如果没有备用协议,则将返回给用户APP“不支持此请求”的提示信息,否则检查备用协议是否可用。当存在可用的协议时(本例中的情形,protocol.available字段为true),查找该协议(下单)的编排路线图(即查找roadmap字段),依次调用编排路线图中的每一个协议(本例中依次为:检查商品是否有货、查询商品价格、检查配送地址)对应的服务(本例中依次为商品服务、商品服务、配送服务)。如果某一步骤对应的协议的对应子服务调用失败,则查看该协议步骤对于调用失败的处理方式(step.breakByFail字段),如果调用失败需要中断请求处理,则返回给用户APP“请求处理异常”的提示信息,如果无需中断则继续执行编排路线图中余下的步骤。如果某一步骤调用成功,则检查是否处理完毕(即是否还有其他协议步骤需要执行)。如果还有其他协议步骤需要处理,则继续执行编排路线图中余下的步骤,否则将返回给用户APP对应的处理结果(比如下单成功)。
上文已经结合优选实施例对本发明的方法和设备进行了描述。本领域技术人员可以理解,上面示出的方法仅是示例性的。根据本发明实施例的方法并不局限于上面示出的步骤和顺序,而是可以包括更多或者更少的步骤,或者以其他顺序来执行这些步骤。根据本发明实施例的动态服务网关也不局限于上面示出的结构。例如根据本发明实施例的动态服务网关可以包括更多的模块,或者可以省略所示的某些模块。此外,根据本发明实施例中的网关可以采用另外的模块划分。本领域技术人员根据所示实施例的教导可以进行许多变化和修改。
应该理解,本文中所使用的模块名称、字段名称等等仅是示例性的,而不是限制性的。作为替代,其可以使用其他等价名称。
还应该理解,本发明的动态服务网关的三个主要功能模块(即协议注册模块,流量监控和控制模块,策略路由模块)之间并不是强制性的依赖关系,而是保持着逻辑上的先后顺序。首先需要子服务向服务网关注册协议,策略路由模块才能根据路由表处理客户端请求以将向各个子服务分发对应的数据包,同时在处理客户端请求的处理过程中流量监控和控制模块可以记录下整个行为过程。
根据本发明实施例的动态服务网关通过各个模块的协作,能够实现在子服务扩张时服务网关协议分发能力的动态扩展,避免了不断升级服务网关带来的系统稳定性问题,降低了系统维护成本。同时,灵活的策略路由功能,能够将客户端请求分解为串行的多服务请求,由不同的子服务来独立处理,在运行隔离的同时实现了协同作业。此外,流量监控和控制模块生成的详细的访问控制日志,能够为系统运行质量分析、流量控制提供原始数据,为控制中心实现流控和授权行为提供判断依据。
应该理解,本发明的上述实施例可以通过软件、硬件或者软件和硬件两者的结合来实现。例如,上述实施例中的设备内部的各种组件可以通过多种器件来实现,这些器件包括但不限于:模拟电路器件、数字电路器件、数字信号处理(DSP)电路、可编程处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(CPLD),等等。
此外,这里所公开的本发明的实施例可以在计算机程序产品上实现。更具体地,该计算机程序产品是如下的一种产品:具有计算机可读介质,计算机可读介质上编码有计算机程序逻辑,当在计算设备上执行时,该计算机程序逻辑提供相关的操作以实现本发明的上述技术方案。当在计算系统的至少一个处理器上执行时,计算机程序逻辑使得处理器执行本发明实施例所述的操作(方法)。本发明的这种设置典型地提供为设置或编码在例如光介质(例如CD-ROM)、软盘或硬盘等的计算机可读介质上的软件、代码和/或其他数据结构、或者诸如一个或多个ROM或RAM或PROM芯片上的固件或微代码的其他介质、或一个或多个模块中的可下载的软件图像、共享数据库等。软件或固件或这种配置可安装在计算设备上,以使得计算设备中的一个或多个处理器执行本发明实施例所描述的技术方案。
尽管以上已经结合本发明的优选实施例示出了本发明,但是本领域的技术人员将会理解,在不脱离本发明的精神和范围的情形中,可以对本发明进行各种修改、替换和改变。因此,本发明不应由上述实施例来限定,而应由所附权利要求及其等价物来限定。
Claims (17)
1.一种在动态服务网关中执行的方法,包括:
接收客户端请求;
在路由表中查找所接收的客户端请求对应的协议,所述路由表包括指示所支持的协议的信息;
确定所述客户端请求对应的协议的编排路线图;以及
按照所述编排路线图,依次调用所述编排路线图中的每一个协议对应的子服务。
2.根据权利要求1所述的方法,其中,
所述编排路线图包括按顺序编排的一个或多个步骤,每个步骤包括单个协议。
3.根据权利要求1所述的方法,还包括:
在所述网关的运行期间,配置新的对外协议或更新现有对外协议中的编排路线图。
4.根据权利要求1所述的方法,还包括:
接收子服务在启动时的注册请求;以及
响应于所述注册请求,将所述子服务支持的协议的注册信息存储到路由表。
5.根据权利要求4所述的方法,还包括:去除重复注册。
6.根据权利要求4所述的方法,还包括:
在注册信息发生更新时,同步其他动态服务网关上的注册信息。
7.根据权利要求6所述的方法,其中,所述同步包括:
将更新的注册信息同步到缓存;以及
向其他动态服务网关广播更新通知,以使其从所述缓存获取所述更新的注册信息。
8.根据权利要求1所述的方法,还包括:
在接收到客户端请求时,执行对所述客户端的授权校验。
9.根据权利要求1所述的方法,还包括:
监控到达所述网关的业务流量,以及执行安全控制。
10.一种动态服务网关,包括:
客户端模块,配置为:接收客户端请求;
协议注册模块,配置为:接收子服务在启动时的注册请求;以及响应于所述注册请求,将所述子服务支持的协议的注册信息存储到路由表;
策略路由模块,配置为:在路由表中查找所接收的客户端请求对应的协议;确定所述客户端请求对应的协议的编排路线图;以及,按照所述编排路线图,依次调用所述编排路线图中的每一个协议对应的子服务;以及
存储单元,配置为:存储所述注册目录和路由表。
11.根据权利要求10所述的网关,还包括:
流量监控和控制模块,配置为:监控到达所述网关的业务流量,以及执行安全控制。
12.根据权利要求11所述的网关,其中,所述流量监控和控制模块还配置为:在所述网关接收到客户端请求时,执行对所述客户端的授权校验。
13.根据权利要求10所述的网关,其中,所述编排路线图包括按顺序编排的一个或多个步骤,每个步骤包括单个协议。
14.根据权利要求10所述的网关,还包括:
配置模块,配置为:在所述网关的运行期间,配置新的对外协议或更新现有对外协议中的编排路线图。
15.根据权利要求10所述的网关,其中,所述协议注册模块还配置为:去除重复注册。
16.根据权利要求10所述的网关,还包括:
协议同步模块,配置为:在注册信息发生更新时,同步其他动态服务网关上的注册信息。
17.根据权利要求16所述的网关,其中,所述协议同步模块进一步配置为:
将更新的注册信息同步到缓存,以及
向其他动态服务网关广播更新通知,以使其从所述缓存获取所述更新的注册信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510252766.3A CN105049342B (zh) | 2015-05-18 | 2015-05-18 | 动态服务网关及其中执行的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510252766.3A CN105049342B (zh) | 2015-05-18 | 2015-05-18 | 动态服务网关及其中执行的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105049342A true CN105049342A (zh) | 2015-11-11 |
CN105049342B CN105049342B (zh) | 2018-07-17 |
Family
ID=54455563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510252766.3A Active CN105049342B (zh) | 2015-05-18 | 2015-05-18 | 动态服务网关及其中执行的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105049342B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105721623A (zh) * | 2016-01-22 | 2016-06-29 | 中国互联网络信息中心 | 面向统一调度与管理的域名共享注册方法和系统 |
CN108924043A (zh) * | 2018-06-28 | 2018-11-30 | 江苏中威科技软件系统有限公司 | 系统监控方法、网关通信、网关装置、业务处理设备 |
CN109040152A (zh) * | 2017-06-08 | 2018-12-18 | 阿里巴巴集团控股有限公司 | 一种基于服务编排的服务请求和提供方法、装置以及电子设备 |
CN110636073A (zh) * | 2019-09-28 | 2019-12-31 | 同程网络科技股份有限公司 | 一种分布式异步远程服务编排与调用技术 |
CN112837798A (zh) * | 2019-11-25 | 2021-05-25 | 西门子医疗有限公司 | 比较协议的方法、比较装置、程序产品和存储介质 |
CN113726578A (zh) * | 2021-09-01 | 2021-11-30 | 网络通信与安全紫金山实验室 | 一种api网关的融合方法和网络架构系统 |
CN113824799A (zh) * | 2021-11-22 | 2021-12-21 | 南京中孚信息技术有限公司 | 一种高性能网络安全智能分流控制技术及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1395201A (zh) * | 2001-07-06 | 2003-02-05 | 博客来数位科技股份有限公司 | 线上商品库存的即时显示管理系统与方法 |
CN101425165A (zh) * | 2007-10-29 | 2009-05-06 | 株式会社日立制作所 | 购买操作系统、购买操作处理方法和购买操作处理程序 |
US20120095865A1 (en) * | 2010-10-15 | 2012-04-19 | Ezpayy, Inc. | System And Method For Mobile Electronic Purchasing |
CN103593767A (zh) * | 2012-08-17 | 2014-02-19 | 纽海信息技术(上海)有限公司 | 电商系统和订单提交方法 |
CN103593772A (zh) * | 2013-11-15 | 2014-02-19 | 北京奇虎科技有限公司 | 用于实现商品收藏及状态变化提醒的方法、装置和系统 |
-
2015
- 2015-05-18 CN CN201510252766.3A patent/CN105049342B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1395201A (zh) * | 2001-07-06 | 2003-02-05 | 博客来数位科技股份有限公司 | 线上商品库存的即时显示管理系统与方法 |
CN101425165A (zh) * | 2007-10-29 | 2009-05-06 | 株式会社日立制作所 | 购买操作系统、购买操作处理方法和购买操作处理程序 |
US20120095865A1 (en) * | 2010-10-15 | 2012-04-19 | Ezpayy, Inc. | System And Method For Mobile Electronic Purchasing |
CN103593767A (zh) * | 2012-08-17 | 2014-02-19 | 纽海信息技术(上海)有限公司 | 电商系统和订单提交方法 |
CN103593772A (zh) * | 2013-11-15 | 2014-02-19 | 北京奇虎科技有限公司 | 用于实现商品收藏及状态变化提醒的方法、装置和系统 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105721623A (zh) * | 2016-01-22 | 2016-06-29 | 中国互联网络信息中心 | 面向统一调度与管理的域名共享注册方法和系统 |
WO2017124882A1 (zh) * | 2016-01-22 | 2017-07-27 | 中国互联网络信息中心 | 面向统一调度与管理的域名共享注册方法和系统 |
CN105721623B (zh) * | 2016-01-22 | 2019-06-04 | 中国互联网络信息中心 | 面向统一调度与管理的域名共享注册方法和系统 |
CN109040152A (zh) * | 2017-06-08 | 2018-12-18 | 阿里巴巴集团控股有限公司 | 一种基于服务编排的服务请求和提供方法、装置以及电子设备 |
CN109040152B (zh) * | 2017-06-08 | 2022-05-31 | 创新先进技术有限公司 | 一种基于服务编排的服务请求和提供方法、装置以及电子设备 |
CN108924043A (zh) * | 2018-06-28 | 2018-11-30 | 江苏中威科技软件系统有限公司 | 系统监控方法、网关通信、网关装置、业务处理设备 |
CN110636073A (zh) * | 2019-09-28 | 2019-12-31 | 同程网络科技股份有限公司 | 一种分布式异步远程服务编排与调用技术 |
WO2021056813A1 (zh) * | 2019-09-28 | 2021-04-01 | 同程网络科技股份有限公司 | 一种分布式异步远程服务编排与调用的系统和方法 |
CN112837798A (zh) * | 2019-11-25 | 2021-05-25 | 西门子医疗有限公司 | 比较协议的方法、比较装置、程序产品和存储介质 |
CN113726578A (zh) * | 2021-09-01 | 2021-11-30 | 网络通信与安全紫金山实验室 | 一种api网关的融合方法和网络架构系统 |
CN113726578B (zh) * | 2021-09-01 | 2024-04-12 | 网络通信与安全紫金山实验室 | 一种api网关的融合方法和网络架构系统 |
CN113824799A (zh) * | 2021-11-22 | 2021-12-21 | 南京中孚信息技术有限公司 | 一种高性能网络安全智能分流控制技术及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105049342B (zh) | 2018-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105049342A (zh) | 动态服务网关及其中执行的方法 | |
CN113206763B (zh) | 一种适应于物联管理平台的仿真测试系统及方法 | |
CN109640319A (zh) | 基于接入信息的调度方法、装置及电子设备 | |
CN110442814A (zh) | 一种泛在电力物联网智能终端的数据交互系统及方法 | |
EP3398044B1 (en) | System and method for acquiring, processing and updating global information | |
US10216514B2 (en) | Identification of a component for upgrade | |
CN110719209B (zh) | 一种集群网络配置方法、系统、设备及可读存储介质 | |
CN104065528A (zh) | 用于分析和检验多个网络设备的功能性的方法和装置 | |
JP6859340B2 (ja) | グローバル情報を取得、処理および更新するための装置、システムおよび方法 | |
CN110658794A (zh) | 一种制造执行系统 | |
CN111147308B (zh) | 基于微服务架构的网络管理方法和系统 | |
CN113127023B (zh) | 业务升级的方法、装置和系统 | |
CN111464646B (zh) | 信息处理方法、装置、电子设备和介质 | |
US20130054768A1 (en) | Migrating device management between object managers | |
CN110012111B (zh) | 一种数据服务集群系统及数据处理方法 | |
CN109684093A (zh) | 数据处理方法及系统 | |
US7401136B2 (en) | Powertag: manufacturing and support system method and apparatus for multi-computer solutions | |
WO2013037234A1 (zh) | 参数接收方法及系统 | |
CN108829495B (zh) | 多数据库修改事务的验证方法、装置、设备及存储介质 | |
KR20200048633A (ko) | 소프트웨어 자동 테스트 시스템 및 방법 | |
CN111314221A (zh) | 业务处理方法、装置、设备及计算机可读存储介质 | |
US11431571B2 (en) | Monitoring time-base policy domain architecture | |
CN112351106A (zh) | 一种含事件网格的服务网格平台及其通信方法 | |
CN114598680B (zh) | 域名的管理方法、装置及存储介质 | |
CN114615251B (zh) | 一种实现采算分离的信号测试仪器云控制系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |