流量转发方法和装置、服务系统、计算设备及存储介质与流程

文档序号:16516062发布日期:2019-01-05 09:38阅读:168来源:国知局
流量转发方法和装置、服务系统、计算设备及存储介质与流程

本发明涉及互联网技术领域,特别涉及一种用于实验实例的流量转发方法和装置、服务系统、计算设备及存储介质。



背景技术:

在如今互联网飞速发展的时代,每天都有海量的信息产生,人们从互联网上获取信息的方式主要依赖于搜索和推荐这两种途径。服务效果是搜索推荐产品成功与否的一项重要指标,即能否从海量信息中快速找出用户最感兴趣的内容推送给用户。服务效果的提升离不开一次又一次的迭代,每次迭代都需要引入少量实际流量进行效果验证,效果验证通过方可全量上线。

但是,高频率的效果测试必然对系统运维和服务稳定性带来一些问题:一方面,为了保证流量的一致性,新增、删除一个实验版本都需要上游调用方调整流量分配方式。如此一来,每次的效果验证都需要上游配合,提高了运维成本,降低了工作效率。

另一方面,实验版本本身是待验证的,其效果和稳定性存在问题的概率较高,一旦实验版本出现问题不能正常提供服务,则转发到该实验版本的流量将被丢弃,极大影响整个系统的服务稳定性。

因此,仍然需要一种改进的流量转发方案。



技术实现要素:

本发明提供了一种用于实验实例的流量转发方法和装置,根据预定实验规则向实验实例转发流量请求,以最大程度保证服务稳定性。

根据本发明的一个方面,提供了一种用于实验实例的流量转发方法,包括:从名字服务获取在线实验实例的归属信息,归属信息包括实验实例所归属的实验应用以及实验应用所归属的集群;响应于指定实验应用的流量请求,在存在归属于所指定实验应用的可用实验实例的情况下,从归属于所指定实验应用的可用实验实例中选择实验实例,并向所选择的实验实例转发流量请求;在不存在归属于所指定实验应用的可用实验实例的情况下,在归属于所指定实验应用所归属的集群的实验实例中选择实验实例,并向所选择的实验实例转发流量请求。

由此,在不存在归属于所指定实验应用的可用实验实例的情况下,将对实验应用的转发请求可以转化为对集群的转发请求,通过高层级资源对低层级资源的兼容保证了服务的稳定性。

可选地,该方法还可以包括:响应于指定集群的流量请求,在归属于所指定集群的实验实例中选择实验实例,并向所选择的实验实例转发流量请求。

由此,将流量请求梳理成多组,分别按集群或实验应用进行访问,减少运维操作和上下游的沟通成本。请求转发过程中的三级资源管理模式能有效保证流量不被丢失,实验下线或服务故障导致实验应用级别无法决策出合适的实验实例时,自动从实验应用归属的集群级别决策,能够做到实验上线或下线时流量的自动分配。

可选地,该方法还可以包括:基于归属信息构建树状结构,树状结构中,实验实例为其所归属的实验应用的子节点,实验应用为其所归属的集群的子节点,其中,基于树状结构选择实验实例。

由此,通过服务发现机制收集下游服务资源,对其进行树状组织并管理。

可选地,该方法还可以包括:在线实验实例在向名字服务注册的同时,向名字服务上报自身的归属信息。

可选地,可以周期性地从名字服务获取在线实验实例的归属信息。

可选地,一个实验实例只归属于一个实验应用,且一个实验应用仅归属于一个集群;并且一个集群能够下辖一个或多个实验应用,一个实验应用能够下辖一个或多个实验实例。

可选地,流量请求是来自上游流量下发模块的用于实验的流量请求。

根据本发明的另一个方面,还提供了一种用于实验实例的流量转发装置,包括:信息获取装置,用于从名字服务获取的在线实验实例的归属信息,归属信息包括实验实例所归属的实验应用以及实验应用所归属的集群;第一转发装置,用于响应于指定实验应用的流量请求,在存在归属于所指定实验应用的可用实验实例的情况下,从归属于所指定实验应用的可用实验实例中选择实验实例,并向所选择的实验实例转发流量请求;第二转发装置,用于在不存在归属于所指定实验应用的可用实验实例的情况下,在归属于所指定实验应用所归属的集群的实验实例中选择实验实例,并向所选择的实验实例转发流量请求。

可选地,该流量转发装置还可以包括:第三转发装置,用于响应于指定集群的流量请求,在归属于所指定集群的实验实例中选择实验实例,并向所选择的实验实例转发流量请求。

可选地,该流量转发装置还可以包括:树状结构构建装置,用于基于归属信息构建树状结构,树状结构中,实验实例为其所归属的实验应用的子节点,实验应用为其所归属的集群的子节点,其中,基于树状结构选择实验实例。

可选地,归属信息可以是在线实验实例在向名字服务注册的同时向名字服务上报的。

根据本发明的另一方面,还提供了一种实验流量服务系统,包括:实验实例,向名字服务注册,并向名字服务上报自身的归属信息,归属信息包括实验实例所归属的实验应用以及实验应用所归属的集群;以及实验流量转发模块,从名字服务获取在线实验实例的归属信息,从上游接收用于实验的流量请求,并向实验实例转发流量请求,其中,响应于指定实验应用的流量请求,在存在归属于所指定实验应用的可用实验实例的情况下,实验流量转发模块从归属于所指定实验应用的可用实验实例中选择实验实例,并向所选择的实验实例转发流量请求;在不存在归属于所指定实验应用的可用实验实例的情况下,实验流量转发模块在归属于所指定实验应用所归属的集群的实验实例中选择实验实例,并向所选择的实验实例转发流量请求。

可选地,响应于指定集群的流量请求,实验流量转发模块在归属于所指定集群的实验实例中选择实验实例,并向所选择的实验实例转发流量请求。

根据本发明的另一方面,还提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上所述的方法。

根据本发明的另一方面,还提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上所述的方法。

由此,通过引入实验流量转发模块以及构建树状结构,统一接收上游流量请求,根据实验规则向下管理实验实例并转发流量请求,并在实验实例故障时能最大程度保证服务稳定性。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。

图1示出了根据本发明一个实施例的实验流量服务系统的示意性结构图。

图2示出了根据本发明一个实施例的树状结构的示意图。

图3示出了根据本发明另一个实施例的流量转发方法的示意性流程图。

图4示出了根据本发明另一个实施例的流量转发方法的示意性流程图。

图5示出了根据本发明一实施例的流量转发装置的结构框图。

图6示出了根据本发明另一个实施例的流量转发装置的示意性框图。

图7示出了根据本发明一实施例的计算设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

如前所述,为了解决现有技术中高频率的效果测试对系统运维和服务稳定性带来的影响,本发明提出了一种流量转发方法和装置,通过引入实验流量转发模块,以根据实验规则将接收到的上游请求转发至相应的实验实例,并在实验实例故障时最大程度保证服务稳定性。

在一个实施例中,本发明的流量转发方法基于一种实验流量服务系统实现。图1示出了根据本发明一个实施例的实验流量服务系统的示意性框图。

如图1所示,本发明的实验流量服务系统100(如下简称服务系统)可以是分布式系统,该服务系统可以包括名字服务110、实验实例120以及实验流量转发模块130。其中,附图中的连线表示各个模块之间存在信息交互,上述连线可以是有线连接、无线连接,或是能够进行信息传送的任何形式的连接。

实验实例120可以向名字服务110注册,并向名字服务110上报自身的归属信息

归属信息可以包括实验实例所归属的实验应用以及实验应用所归属的集群。实验实例在向名字服务注册时,实验实例上报的元数据中可以包含该归属信息。

在分布式系统中,某个服务为了提升整体服务能力,通常部署了很多实验实例。这里,将提供相同服务的实验实例统称为集群(cluster),每个实验实例称为一个节点(node)。一般,一个实验应用可能会使用一个或多个集群。

在一个优选实施例中,一个实验实例只归属于一个实验应用,且一个实验应用仅归属于一个集群。并且,一个集群能够下辖一个或多个实验应用,一个实验应用能够下辖一个或多个实验实例。由此,简化了三者的归属关系,使得高层级资源能够对低层级资源兼容。

实验流量转发模块130从名字服务获取在线实验实例的归属信息,从上游接收用于实验的流量请求,并向实验实例转发该流量请求。

实验流量转发模块130可以周期性地或是定期从名字服务获取在线实验实例的归属信息。

在线实验实例是纳入实验流量转发体系的实验实例,包括但不限于是一个实验应用新上线,或者从故障中恢复、或者是重新上线。在线实验实例在向名字服务注册的同时,向名字服务上报的元数据中包含其自身的归属信息。

流量请求是来自上游流量下发模块的用于实验的流量请求。上游流量下发模块可以将用于实验的流量请求下发到实验流量转发模块130,其它流量请求则可以直接下发到相应的服务实例,也可以通过其它方式下发。具体下发方式与本发明无关,本发明对此不作限制。

该流量请求可以是对指定实验应用的流量请求。

在一个实施例中,响应于指定实验应用的流量请求,实验流量转发模块130首先可以基于从名字服务获取的归属信息,判断是否存在归属于所指定的实验应用的可用实验实例,进而通过预定选择方式,选择可用实验实例来进行流量转发。其中,本发明对所采用的预定选择方式不作限制。

响应于指定实验应用的流量请求,在存在归属于所指定实验应用的可用实验实例的情况下,实验流量转发模块130可以从归属于所指定实验应用的可用实验实例中选择实验实例,并向所选择的实验实例转发所述流量请求。其中,例如可以采用常规流量分配方式,在归属于该实验应用的多个可用实验实例中选择实验实例。

在所选择的实验实例执行流量请求失败的情况下,可以选择归属于该实验应用的其它可用实验实例,并向所选择的实验实例转发流量请求。

在一些情况下,可能不存在归属于所指定的实验应用的可用实验实例。例如,从名字服务获取的归属信息可能已过期,或者周期性(定期)获取归属信息的情况下,在两次获取之间,发生了应用下线或实验实例故障等情况。

在不存在归属于所指定实验应用的可用实验实例的情况下,实验流量转发模块130可以在归属于所指定实验应用所归属的集群的实验实例中选择实验实例,并向所选择的实验实例转发所述流量请求。

由此,当一个实验应用下的所有实验实例都不再可用,则对其指定其的流量转向归属于该集群下的其它实验应用的实验实例,实现顺畅的流量转发,避免了流量丢失,高层级资源对低层级资源的兼容也保证了服务的稳定性。

如前所述的流量请求也可以是对指定集群的流量请求。

响应于指定集群的流量请求,实验流量转发模块130可以在归属于所指定集群的实验实例中选择实验实例,并向所选择的实验实例转发所述流量请求。

这里,也可以采用常规流量分配方式,在归属于该集群的多个可用实验实例中选择实验实例。

在所选择的实验实例执行流量请求失败的情况下,可以选择归属于所指定集群的其它可用实验实例,并向所选择的实验实例转发流量请求。

由此,通过本发明的上述流量转发机制可以实现顺畅的流量转发,避免流量丢失。

另外,为了便于管理,实验流量转发模块130还可以基于归属信息构建树状结构,实验流量转发模块130可以基于该树状结构选择实验实例。

在一个优选实施例中,可以对下游服务资源通过集群、实验应用、实验实例三个层次构建树状结构,该树状结构中,实验实例为其所归属的实验应用的子节点,实验应用为其所归属的集群的子节点,

图2示出了根据本发明一个实施例的树状结构的示意图。

如图2所示,实验流量转发模块130(dispatcher)对实验实例的管理可以分为三级:集群(group),实验应用(app),实验实例(instance)。

instance即对应一个ip:port实际服务,group、app是对instance在不同粒度上的划分。在其中,一个instance只能归属一个app,一个app只能归属一个group,以此类推,一个instance只能归属一个group。相反的,一个group可以下辖多个app。

实验实例在向名字服务注册时,上报的元信息中包括上述归属信息。

实验流量转发模块130启动时,可以立即从名字服务获取三级信息,并在内存中构建图2所示的树状拓扑结构。在其生命周期内,实验流量转发模块130还可以周期性或定期从名字服务获取最新归属信息,相应地更新/重建该树状结构。

上游调用方可以指定集群(group)或者实验应用(app)发起调用。

若指定group访问,则实验流量转发模块130可以基于上述树状结构,并根据负载均衡策略,从该group下辖的所有可用实验实例中选择一个实验实例,并向所选择的实验实例转发流量请求。

在所选择的实验实例执行流量请求失败的情况下,可以选择归属于该集群的其它可用实验实例,并向所选择的实验实例转发流量请求。

一般来说,group下辖的实验实例数量较多,除非整个集群不可用,否则总能将流量请求转发到某个正常的可用实验实例;

若指定实验应用(app)访问,则实验流量转发模块130可以根据负载均衡策略,优先从该实验应用(app)下辖的实验实例中选择一个实验实例来进行流量请求的转发。

在实验的场景下,一个app可能只对应一个实验实例,也可能因为实验下线而导致该app没有对应具体实验实例。

在实验应用节点下没有具体实验实例,或是在已记录/已发现实验应用下的实验实例均已出现故障而导致无可用实验实例的情况下,会导致本次对该app的请求没有可用实验实例转发。

这种情况下,可以根据树状结构的树状信息,由app节点上溯到group节点,将本次对指定app的流量请求转换为对指定group的流量请求,选择归属于该指定group的其它可用实验实例。

这样,在不存在归属于所指定实验应用的可用实验实例的情况下,将对实验应用的转发请求转化为对集群的转发请求,通过高层级资源对低层级资源的兼容,优先保证流量请求不会丢失,进而保证系统服务的稳定性。

如前所述,实验流量转发模块130从名字服务获取归属信息是周期性的,在该周期内实验实例出现异常不能被及时感知。

因此,本发明还可以加入转发请求返回状态对实验实例状态的干预机制,当向某实验实例转发请求失败且确认该实验实例异常后,可以将该实例标记为异常并对树状结构进行重建。

若实验实例恢复正常后,则可在下一次重建树状结构时,在重建后的树状结构中恢复该实验实例。

由此,本发明通过服务发现机制收集下游服务资源,对其进行树状结构组织并管理。上游调用方可以将流量请求梳理成多组,分别按group或app进行访问,后续实验流量的上线并不需要上游切流配合,由此,减少了运维操作和上下游沟通成本。

请求转发过程中,三级资源管理模式能有效保证流量不被丢弃,实验下线或服务故障而导致app级别无法决策出合适的实验实例时,会自动从app所归属的group级别决策,由此,对app的转发请求可以转化为对group的转发请求,通过高层级资源对低层级资源的兼容保证了服务的稳定性,同时,能够实现实验上线流量自动分配过来,实验下线后流量自动切走的效果。

本发明的用于实验实例的流量转发方案可以实现为一种用于实验实例的流量转发方法。

图3示出了根据本发明一个实施例的流量转发方法的示意性流程图。该方法可由图1所示的由实验流量转发模块130执行该流量转发方法。

如图3所示,在步骤s310中,从名字服务获取在线实验实例的归属信息,所述归属信息包括实验实例所归属的实验应用以及实验应用所归属的集群。

这里,实验流量转发模块130周期性地从名字服务获取所述在线实验实例的归属信息。一个实验实例只归属于一个实验应用,且一个实验应用仅归属于一个集群;并且一个集群能够下辖一个或多个实验应用,一个实验应用能够下辖一个或多个实验实例。

在线实验实例在向名字服务注册的同时,向名字服务上报的元数据中包含其自身的归属信息。

实验流量转发模块130接收来自上游流量下发模块的用于实验的流量请求,该流量请求可以为指定实验应用的流量请求。

在步骤s315,判断是否存在归属于所指定的实验应用的可用实验实例。

响应于指定实验应用的流量请求,在存在归属于所指定实验应用的可用实验实例的情况下,在步骤s320中,从归属于所指定实验应用的可用实验实例中选择实验实例,并向所选择的实验实例转发所述流量请求。其中,流量请求是来自上游流量下发模块的用于实验的流量请求。

在不存在归属于所指定实验应用的可用实验实例的情况下,在步骤s330中,在归属于所指定实验应用所归属的集群的实验实例中选择实验实例,并向所选择的实验实例转发所述流量请求。

上述流量请求也可以是指定集群的流量请求,此时,响应于指定集群的流量请求,在步骤s320中,在归属于所指定集群的实验实例中选择实验实例,并向所选择的实验实例转发所述流量请求。

图4示出了根据本发明另一个实施例的流量转发方法的示意性流程图。该方法可由图1所示的由实验流量转发模块130执行该流量转发方法。

如图4所示,在步骤s410,从名字服务获取在线实验实例的归属信息,所述归属信息包括实验实例所归属的实验应用以及实验应用所归属的集群。

在步骤s420,基于所述归属信息构建树状结构,所述树状结构中,实验实例为其所归属的实验应用的子节点,实验应用为其所归属的集群的子节点,

在步骤s430,响应于指定实验应用或集群的流量请求,基于所述树状结构选择实验实例,并向选择的实验实例转发所述流量请求。

至此,已经结合附图3-4简单介绍了本发明的用于实验实例的流量转发方法的示意性流程。

另外,本发明的用于实验实例的流量转发方法还可以由一种用于实验实例的流量转发装置实现。

图5是示出了根据本发明一实施例的流量转发装置的结构框图。其中,流量转发装置500的功能模块可以由实现本发明原理的硬件、软件或硬件和软件的结合来实现。本领域技术人员可以理解的是,图5所描述的功能模块可以组合起来或者划分成子模块,从而实现上述发明的原理。因此,本文的描述可以支持对本文描述的功能模块的任何可能的组合、或者划分、或者更进一步的限定。

图5所示的流量转发装置500可以用来实现图3-4所示的流量转发方法,下面仅就流量转发装置500可以具有的功能模块以及各功能模块可以执行的操作做简要说明,对于其中涉及的细节部分可以参见上文结合图3-4的描述,这里不再赘述。

如图5所示,本发明的用于实验实例的流量转发装置500可以包括信息获取装置510、第一转发装置520和第二转发装置530。

信息获取装置510可以用于从名字服务获取的在线实验实例的归属信息,所述归属信息包括实验实例所归属的实验应用以及实验应用所归属的集群,所述归属信息是在线实验实例在向名字服务注册的同时向名字服务上报的。

第一转发装置520可以用于响应于指定实验应用的流量请求,在存在归属于所指定实验应用的可用实验实例的情况下,从归属于所指定实验应用的可用实验实例中选择实验实例,并向所选择的实验实例转发所述流量请求;

第二转发装置530可以用于在不存在归属于所指定实验应用的可用实验实例的情况下,在归属于所指定实验应用所归属的集群的实验实例中选择实验实例,并向所选择的实验实例转发所述流量请求。

在一个优选实施例中,该流量转发装置500还可以包括第三转发装置540(参见下图6)。

第三转发装置可以用于响应于指定集群的流量请求,在归属于所指定集群的实验实例中选择实验实例,并向所选择的实验实例转发所述流量请求。

应该理解的是,文中对“第一”、“第二”和“第三”的描述,旨在对描述对象加以区分,而非对其顺序和大小有任何明示或是暗示的规定。

图6示出了根据本发明另一个实施例的流量转发装置的示意性框图。

如图6所示,本发明的流量转发装置500还可以包括树状结构构建装置550。

树状结构构建装置550可以用于基于归属信息构建树状结构,所述树状结构中,实验实例为其所归属的实验应用的子节点,实验应用为其所归属的集群的子节点,其中,上述第一/第二/第三转发装置可以基于所述树状结构选择实验实例,并进行流量转发。

由此,通过上述流量转发装置向上统一接收流量请求,向下管理各实验实例并向其转发流量请求。各实验实例向名字服务注册并上报自身归属信息,流量转发装置定期从名字服务获取实验版本信息构建树状结构管理,并在信息变更后对树状结构重建,在请求到来时结合请求要求和树信息决策合适的下游节点来进行流量转发。

图7示出了根据本发明一实施例可用于实现上述流量转发方法的计算设备的结构示意图。

参见图7,计算设备700包括存储器710和处理器720。

处理器720可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器720可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(gpu)、数字信号处理器(dsp)等等。在一些实施例中,处理器720可以使用定制的电路实现,例如特定用途集成电路(asic,applicationspecificintegratedcircuit)或者现场可编程逻辑门阵列(fpga,fieldprogrammablegatearrays)。

存储器710可以包括各种类型的存储单元,例如系统内存、只读存储器(rom),和永久存储装置。其中,rom可以存储处理器720或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器710可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器710可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、minsd卡、micro-sd卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。

存储器710上存储有可执行代码,当可执行代码被处理器720处理时,可以使处理器720执行上文述及的流量装发方法。

上文中已经参考附图详细描述了根据本发明的用于实验实例的流量转发方法和装置、服务系统。

此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。

或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。

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

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

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