发明内容
基于此,本发明提供一种ABtest平台的分流方法及系统,能够基于树型分流模型,简单快捷的实现多个业务分流。
本发明采用以下技术方案:
本发明一方面提供一种ABtest平台的分流方法,包括:
分流节点接收用户访问请求;
获取所述用户访问请求对应的频道号;根据预设的所述分流节点的频道管理池中频道号与链接值的第一对应关系,得到所述用户访问请求对应的链接值;根据预设的所述链接值与流入节点的第二对应关系,得到所述用户访问请求对应的流入节点;
将所述用户访问请求发送到对应的流入节点。
其中,所述获取所述用户访问请求对应的频道号之前还包括:
建立分流节点的频道管理池,所述频道管理池中包含若干频道和若干链接值,每个频道有各自的频道号;
设置所述频道号与链接值的第一对应关系,设置所述链接值与流入节点的第二对应关系,且不同链接值对应不同流入节点。
其中,所述分流节点包括一级分流节点和二级分流节点,所述一级分流节点的频道管理池中包含第一频道和第二频道,且所述第一频道和第二频道的频道号分别对应不同的链接值;
所述获取所述用户访问请求对应的频道号,包括:
如果所述分流节点为一级分流节点,判断所述用户访问请求的用户是否属于预定用户群组,如果是,把所述第一频道的频道号作为所述用户访问请求对应的频道号,否则,把所述第二频道的频道号作为所述用户访问请求对应的频道号;
如果所述分流节点为二级分流节点,获取所述用户访问请求的访问ID信息,通过预设的Hash算法,计算出所述访问ID信息对应的数值,将所述数值作为所述用户访问请求对应的频道号。
其中,所述通过预设的Hash算法,计算出所述访问ID信息对应的数值,将所述数值作为所述用户访问请求对应的频道号,包括,
将所述访问ID信息转换为对应的int类型数值;
对所述int类型数值与当前分流节点频道管理池中的频道号数量进行求余运算,将得到的数值作为所述用户访问请求对应的频道号。
其中,所述流入节点为二级分流节点和/或终节点;
将所述用户访问请求发送到所述流入节点之后还包括,
若所述流入节点属于所述二级分流节点,则将所述流入节点作为新的分流节点,通过新的分流节点将所述用户访问请求发送给新的流入节点。
本发明另一发明提供一种ABtest平台的分流系统,包括:
接收模块,用于控制分流节点接收用户访问请求;
链接确定模块,用于获取所述用户访问请求对应的频道号;根据预设的所述分流节点的频道管理池中频道号与链接值的第一对应关系,得到所述用户访问请求对应的链接值;根据预设的所述链接值与流入节点的第二对应关系,得到所述用户访问请求对应的流入节点;
发出模块,用于将所述用户访问请求发送到对应的流入节点。
其中,还包括,
设置模块,用于建立所述分流节点的频道管理池,所述频道管理池中包含若干频道和若干链接值,每个频道有各自的频道号;设置所述频道号与链接值的第一对应关系,设置所述链接值与流入节点的第二对应关系,且不同链接值对应不同流入节点。
其中,所述分流节点包括一级分流节点和二级分流节点,所述一级分流节点的频道管理池中包含第一频道和第二频道,且所述第一频道和第二频道的频道号分别对应不同的链接值;
所述链接确定模块还包括,
第一分流单元,用于如果所述分流节点为一级分流节点,判断所述用户访问请求的用户是否属于预定用户群组,如果是,把所述第一频道的频道号作为所述用户访问请求对应的频道号,否则,把所述第二频道的频道号作为所述用户访问请求对应的频道号;
或者,第二分流单元,用于如果所述分流节点为二级分流节点,获取所述用户访问请求的访问ID信息,通过预设的Hash算法,计算出所述访问ID信息对应的数值,将所述数值作为所述用户访问请求对应的频道号。
其中,所述第二分流单元,具体用于获取所述用户访问请求的访问ID信息,将所述访问ID信息转换为int类型数值;对所述int类型数值与当前分流节点频道管理池中的频道号数量进行求余运算,将得到的数值作为所述用户访问请求对应的频道号。
其中,所述流入节点为二级分流节点和/或终节点;
所述ABtest平台的分流系统还包括,
更新模块,用于将所述用户访问请求发送到所述流入节点之后,若所述流入节点为所述二级分流节点,则将所述流入节点作为新的分流节点,通过新的分流节点将所述用户访问请求发送给的新的流入节点。
实施本发明的上述技术方案的有益效果包括:通过定义分流节点与流入节点的链接,分流节点接收用户访问请求;获取所述用户访问请求对应的频道号;根据预设的所述分流节点的频道管理池中频道号与链接值的第一对应关系,得到所述用户访问请求对应的链接值;根据预设的所述链接值与流入节点的第二对应关系,得到所述用户访问请求对应的流入节点;将所述用户访问请求发送到对应的流入节点;将分流节点和流入节点作为整个分流模型中的一个单元,基于此可灵活扩展为各种类型的树型分流模型,基于这样的树型分流模型可简单快捷的实现不同业务的分流;并且,由于在树型分流模型中,不同分流节点处的分流策略可不一样,且所述分流节点和流入节点还可作为其它业务的分流节点或流入节点,因此便于根据需要对已有的分流模型进行扩展和复用,减低了开发难度,节省了开发时间和开发成本。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种ABtest平台的分流方法,本发明实施例还提供相应的ABtest平台的分流系统。以下分别进行详细说明。
图2为本发明一实施例的ABtest平台的分流方法的示意性流程图。如图2中所示,所述方法包含以下步骤S101至步骤S103,详细说明如下:
步骤S101,分流节点接收用户访问请求;
本实施例中,定义的最小分流模型单元为:两个节点(Page)以及所述两个节点的链接(Link)。进一步地,还将所有节点预先定义为两种类型的节点(Page)。其中一种类型为分流节点(ABPage),每个分流节点至少有一个流出Link。另一种类型为终节点(ENDPage),每个终节点至少有一个流入Link,但终节点没有流出Link。即终节点相当于树型结构中的叶子节点,有至少一个父节点,但没有子节点,分流节点相当于树型结构中的中间节点,其可以为叶子节点的父节点,或者作为其它中间节点的父节点或子节点。
如图3中,节点1、节点2、节点3、节点4均有对应的流出Link,因此均为分流节点;节点1的流出Link对应的流入节点为节点A,节点2的流出Link对应的流入节点包括节点B和节点C,节点3的流出Link对应的流入节点包括节点4和节点D,同时节点4还作为节点E的分流节点;节点A、节点B、节点C、节点D和节点E均无流出Link,因此均为终节点。
本实施例中,定义最小分流模型单元中两个节点的一个作为分流节点(ABpage),另一个作为输入节点,作为分流节点必须有至少一个流出Link。作为输入节点,至少有一个流入Link,即输入节点至少对应一个分流节点。
需要说明的是,若所述分流节点还是接收用户访问请求的初始节点,则所述分流节点可以没有流入Link,若所述分流节点同时还作为流入节点接收其它分流节点发送的用户访问请求,则所述分流节点还应当至少有一个流入Link。
基于上述分流节点、流入节点及其链接构成的最小分流模型单元,可得到任意结构和规模的树型分流模型。
步骤S102,获取所述用户访问请求对应的频道号;根据预设的所述分流节点的频道管理池中频道号与链接值的第一对应关系,得到所述用户访问请求对应的链接值;根据预设的所述链接值与流入节点的第二对应关系,得到所述用户访问请求对应的流入节点;
本实施例中,在最小分流模型单元构成的树型分流模型中,每个节点都有自己唯一的ID号(PageId),且在整个树型分流模型中每个节点的PageId具有唯一性。如图4所示,节点2的PageId可为100400,其流出Link对应的节点B和节点C的PageId分别为100401、100402。另外,每个ENDPage都有一个标签(PageName),可以重名。
优选地,本步骤之前还需建立分流节点的频道管理池(Channels),所述频道管理池包含若干个频道(频道),还需建立分流节点的频道与流出链接的对应关系。由于各频道有对应的频道号,因此建立分流节点的频道与流出链接的对应关系的实现方式可包括:设置频道号与链接值的第一对应关系,设置所述链接值与流入节点的第二对应关系,且不同链接值对应不同流入节点。
其中,各分流节点的频道管理池中频道数量可自定义,最少1个,频道编号可从0开始;并且每个频道都有一个关联的Link值,频道与Link值可为一一对应的关系,也可以是多个不同频道的Link值相同。
如图4所示,分流节点2的频道管理池中包含10个频道,所述10个频道对应2个Link值,所述10个频道中,频道0、频道1关联的Link值均为L1,频道2~频道9关联的Link值均为L2。并且,L1的值为100401,与节点B的PageId相同,即L1关联节点B,相当于分流节点2通过频道0、频道1关联的流入节点为节点B;L2的值为100402,与节点C的PageId相同,即L2关联节点C,相当于分流节点2通过频道2~频道9关联的流入节点为节点C。
所述用户访问请求以用户的CookiesID作为标记,则流经分流节点2的两个的流入节点的用户访问请求是等比例量。因此,进一步的,在每个分流节点可设置一个流量管理器(Manager),用于对频道管理池进行划分,以确定频道管理池中频道与各Link值对应的比例。
例如,分流节点2的流量管理器可将频道管理池划分为:20%的频道对应的Link值为L1,80%的频道对应的Link值为L2。根据实际情况,还可对频道管理池中频道与各Link值对应的比例进行调整。
基于分流节点的频道管理池及所述第一对应关系和第二对应关系,步骤S102中获取所述用户访问请求对应的频道号的具体方式可为:获取所述用户访问请求的访问ID信息,通过预设的Hash算法,计算出所述访问ID信息对应的数值,将所述数值作为所述用户访问请求对应的频道号。具体地,可设置每个分流节点的HashManager(Hash算法管理器),每个用户访问请求到分流节点都会带有相应的ID信息(例如cookieid),HashManager包含一个Hash算法,将传入值(一个cookieid,String类型)传入HashManager,先转换为一个对应的int类型数值,再通过预设的Hash算法,对所述int类型数值与当前分流节点的频道管理池中频道数量进行求余运算,将得到的数值作为所述用户访问请求对应的频道号,即将所述int类型数值Mod频道管理池中的频道数量,将得到一个整数,例如整数5,由此得到用户访问请求对应频道5,根据所述第一对应关系,可得到频道5对应的链接值为L2,再根据第二对应关系,可得到用户访问请求对应的流入节点为节点C。
步骤S103,将所述用户访问请求发送到对应的流入节点。
本实施例中,所述流入节点还可为其它节点的分流节点,此时步骤S103之后还包括,将所述流入节点作为新的分流节点,通过新的分流节点将所述用户访问请求发送给新的流入节点。由此可实现由若干最小分流模型单元构成的树型分流模型。需要说明的是,上述步骤S101~S103的执行主体可为树型分流模型中的各分流节点.
通过本发明上述实施例的ABtest平台的分流方法,在实现不同业务的分流控制时,可快速通过最小分流模型单元组成的对应结构的分流树,其中各分流节点分别通过hash方式实现分流,互不干扰,降低了分流模型的研发难度,缩短了开发时间。
作为另一优选实施方式,在上述两类节点的基础上,还可做进一步的改进,以实现按照用户群组分流等高级功能的分流控制。具体实现方式包括:进一步的,将所述分流节点设置为一级分流节点(USERABPage)和二级分流节点(ABPage)两类,其中一级分流节点为二级分流节点的上级节点,即用户访问请求流经一级分流节点再到二级分流节点。一级分流节点是在对上述实施例的分流节点的改造,以通过一级分流节点判断符合设定的群体人群的用户访问请求。特别的,一级分流节点的频道管理池中频道数量为2个,频道编号分别为0和1,且两个频道分别关联不同的Link值.
在一级分流节点中,用UserCheck模块取代Hash计算管理器模块,UserCheck模块主要用于逻辑判断,表示接收到用户访问请求是否满足指定的群组的条件,因此UserCheck模块输出的结果为0或1,分别对应频道管理池中两个频道号。
如图5所示,节点2属于二级分流节点,节点USERABPage属于一级分流节点,节点USERABPage与节点2之间可包含若干二级分流节点;一级分流节点USERABPage的频道管理池中包含第一频道和第二频道,且所述第一频道和第二频道的频道号分别对应不同的链接值。
一级分流节点接收用户访问请求后,可通过UserCheck模块判断所述用户访问请求的用户是否属于预定用户群组,如果是,输出结果1,即把频道管理池中第一频道的频道号1作为所述用户访问请求对应的频道号,否则,输出结果0,把所述分流节点的频道管理池中第二频道的频道号0作为所述用户访问请求对应的频道号,由此实现了基于用户群组的分流。
需要说明的是,基于一级分流节点、二级分流节点和终节点三类节点构建的树型分流模型,上述步骤S101中,分流节点接收用户访问请求后,还应当包括步骤:判断所述分流节点是否属于一级分流节点,若是,判断所述用户访问请求的用户是否属于预定用户群组,如果是,把所述分流节点的频道管理池中第一频道的频道号作为所述用户访问请求对应的频道号,否则,把所述分流节点的频道管理池中第二频道的频道号作为所述用户访问请求对应的频道号;若所述分流节点属于二级分流节点,则获取所述用户访问请求的访问ID信息,通过预设的Hash算法,计算出所述访问ID信息对应的数值,将所述数值作为所述用户访问请求对应的频道号。
对应的,步骤S101~步骤S103中所述的流入节点还可为其它节点的分流节点,即所述流入节点本身可为二级分流节点或终节点。因此,将所述用户访问请求发送到所述流入节点之后,若所述流入节点为二级分流节点,则将所述流入节点作为新的分流节点,通过新的分流节点将所述用户访问请求发送给对应的新的流入节点。由此可构成树型分流模型,且该树型分流模型中包含三种类型的节点,具体结构如图6所示。
根据本发明的上述实施例的分流模型,可以根据业务的复杂程度随意组合,是一种树型结构可以方便扩张的分流模型,解决了矩形分流模型实现复杂业务时需要复杂的开发过程的问题,节省了开发时间。此外,通过树型分流,研发人员可以更直观的了解到分流的走向,降低了实现难度。
需要说明的是,对于前述的方法实施例,为了简便描述,将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
以下对可用于执行上述ABtest平台的分流方法的本发明实施例的ABtest平台的分流系统进行说明。图7为本发明实施例的ABtest平台的分流系统的示意性结构图,为了便于说明,图中仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图中示出的系统结构并不构成对系统的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
图7示例的ABtest平台的分流系统包括:接收模块710、链接确定模块720和发出模块730,其中:
接收模块710,用于控制分流节点接收用户访问请求;
本实施例中,定义的最小分流模型单元为:两个节点(Page)以及所述两个节点的链接(Link)。进一步地,还将所有节点预先定义为两种类型的节点(Page)。其中一种类型为分流节点(ABPage),每个分流节点至少有一个流出Link。另一种类型为终节点(ENDPage),每个终节点至少有一个流入Link,但终节点没有流出Link。即终节点相当于树型结构中的叶子节点,有至少一个父节点,但没有子节点,分流节点相当于树型结构中的中间节点,其可以为叶子节点的父节点,或者作为其它中间节点的父节点或子节点。
如图3中,节点1、节点2、节点3、节点4均有对应的流出Link,因此均为分流节点;节点1的流出Link对应的流入节点为节点A,节点2的流出Link对应的流入节点包括节点B和节点C,节点3的流出Link对应的流入节点包括节点4和节点D,同时节点4还作为节点E的分流节点;节点A、节点B、节点C、节点D和节点E均无流出Link,因此均为终节点。
本实施例中,定义最小分流模型单元中两个节点的一个作为分流节点(ABpage),另一个作为输入节点,作为分流节点必须有至少一个流出Link。作为输入节点,至少有一个流入Link,即输入节点至少对应一个分流节点。
需要说明的是,若所述分流节点还是接收用户访问请求的初始节点,则所述分流节点可以没有流入Link,若所述分流节点同时还作为流入节点接收其它分流节点发送的用户访问请求,则所述分流节点还应当至少有一个流入Link。
基于上述分流节点、流入节点及其链接构成的最小分流模型单元,可得到任意结构和规模的树型分流模型。
链接确定模块720,用于获取所述用户访问请求对应的频道号;根据预设的所述分流节点的频道管理池中频道号与链接值的第一对应关系,得到所述用户访问请求对应的链接值;根据预设的所述链接值与流入节点的第二对应关系,得到所述用户访问请求对应的流入节点;
本实施例中,在最小分流模型单元构成的树型分流模型中,每个节点都有自己唯一的ID号(PageId),且在整个树型分流模型中每个节点的PageId具有唯一性。如图4所示,节点2的PageId可为100400,其流出Link对应的节点B和节点C的PageId分别为100401、100402。另外,每个ENDPage都有一个标签(PageName),可以重名。
优选地,本步骤之前还需建立分流节点的频道管理池(Channels),所述频道管理池包含若干个频道(频道),还需建立分流节点的频道与流出链接的对应关系。由于各频道有对应的频道号,因此建立分流节点的频道与流出链接的对应关系的实现方式可包括:设置频道号与链接值的第一对应关系,设置所述链接值与流入节点的第二对应关系,且不同链接值对应不同流入节点。其中,各分流节点的频道管理池中频道数量可自定义,最少1个,频道编号可从0开始;并且每个频道都有一个关联的Link值,频道与Link值可为一一对应的关系,也可以是多个不同频道的Link值相同。
如图4所示,分流节点2的频道管理池中包含10个频道,所述10个频道对应2个Link值,所述10个频道中,频道0、频道1关联的Link值均为L1,频道2~频道9关联的Link值均为L2。并且,L1的值为100401,与节点B的PageId相同,即L1关联节点B,相当于分流节点2通过频道0、频道1关联的流入节点为节点B;L2的值为100402,与节点C的PageId相同,即L2关联节点C,相当于分流节点2通过频道2~频道9关联的流入节点为节点C。
所述用户访问请求以用户的CookiesID作为标记,则流经分流节点2的两个的流入节点的用户访问请求是等比例量。因此,进一步的,所述设置模块740,还可用于在每个分流节点可设置一个流量管理器(Manager),用于对频道管理池进行划分,以确定频道管理池中频道与各Link值对应的比例。
例如,分流节点2的流量管理器可将频道管理池划分为:20%的频道对应的Link值为L1,80%的频道对应的Link值为L2。根据实际情况,还可对频道管理池中频道与各Link值对应的比例进行调整。
所述发出模块730,用于将所述用户访问请求发送到对应的流入节点。
作为一优选实施方式,本实施例上述分流节点可包括一级分流节点和二级分流节点,特别的是,所述一级分流节点的频道管理池中有2个频道,频道号分别为第一频道号和第二频道号,且不同频道号对应不同链接值。
基于此,所述链接确定模块720可具体包括:第一分流单元或第二分流单元。
其中,上述第一分流单元,用于若所述分流节点为一级分流节点,判断所述用户访问请求的用户是否属于预定用户群组,如果是,把所述第一频道号作为所述用户访问请求对应的频道号,否则,把所述第二频道号作为所述用户访问请求对应的频道号;
上述第二分流单元,用于若所述分流节点为二级分流节点,则获取所述用户访问请求的访问ID信息,通过预设的Hash算法,计算出所述访问ID信息对应的数值,将所述数值作为所述用户访问请求对应的频道号。
优选的,所述第二分流单元,具体可用于获取所述用户访问请求的访问ID信息,将所述访问ID信息转换为int类型数值;计算所述int类型数值与当前分流节点的频道管理池中频道号数量的余,将得到的数值作为所述用户访问请求对应的频道号。
进一步的,本实施例上述的流入节点可为二级分流节点和/或终节点;本实施例的ABtest平台的分流系统还可包括:更新模块750,用于将所述用户访问请求发送到所述流入节点之后,若所述流入节点为所述二级分流节点,则将所述流入节点作为新的分流节点,通过新的分流节点将所述用户访问请求发送给新的流入节点。
根据在上述的ABtest平台的分流系统实施例,可以根据业务的复杂程度随意组合,是一种树型结构可以方便扩张的分流模型,解决了以往矩形分流模型实现复杂业务时需要复杂的工程开发过程的问题,便于节省开发时间。此外,通过树型分流,研发人员可以更直观的了解到分流的走向,降低了实现难度。
需要说明的是,上述实施例中各模块/单元之间的信息交互、执行过程等内容,由于与本发明前述方法实施例基于同一构思,其带来的技术效果与本发明前述方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
此外,上述示例的ABtest平台的分流系统的实施方式中,各功能模块的逻辑划分仅是举例说明,实际应用中可以根据需要,例如出于相应硬件的配置要求或者软件的实现的便利考虑,将上述功能分配由不同的功能模块完成,即将所述ABtest平台的分流系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本发明所提供的ABtest平台的分流方法及系统的描述,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。