一种流量调拨方法、装置、服务器及存储介质与流程

文档序号:33127494发布日期:2023-02-01 05:54阅读:22来源:国知局
一种流量调拨方法、装置、服务器及存储介质与流程

1.本发明实施例涉及网络技术领域,尤其是涉及一种流量调拨方法、装置、服务器及存储介质。


背景技术:

2.目前,云原生技术已经在各行各业的数字化转型中形成了一些行之有效的应用方案,其中的云原生单元化架构(后文可简称为单元化架构)是如今解决系统扩容、多数据中心容灾和异地访问等方面问题的较佳解决方案。
3.需要说明的是,单元化架构是对现有架构的一种技术演进,对于大流量和大体量的应用程序来说,如何实现流量从现有架构到单元化架构的平滑过渡,即如何实现流量从云下到云上的平滑过渡,从而尽可能降低因为流量切换而给用户带来的影响,这是亟待解决的技术问题。


技术实现要素:

4.本发明实施例提供了一种流量调拨方法、装置、服务器及存储介质,以实现流量从云下到云上的平滑过渡。
5.根据本发明的一方面,提供了一种流量调拨方法,应用于流量调拨服务,流量调拨服务位于应用系统中,应用系统还包括域名服务层以及部署在云上的服务单元,该方法包括:
6.响应于流量调拨指令,接收由应用客户端发送的服务请求,并从服务请求中获取到应用客户端的登录用户的用户标识,其中,流量调拨指令基于与服务请求对应的一级域名生成;
7.根据用户标识以及预先配置的上云流量粒度,从预先配置的至少一个候选二级域名中确定目标二级域名,其中,上云流量粒度用于表示全局流量中预计调拨至云上的流量的比例;
8.将目标二级域名以及服务请求发送给域名服务层,以使域名服务层对目标二级域名进行解析,并在根据得到的解析结果确定云上响应服务请求的情况下,将服务请求转发给服务单元,以由服务单元响应服务请求。
9.根据本发明的另一方面,提供了一种流量调拨装置,配置于流量调拨服务,该流量调拨服务位于应用系统中,应用系统还包括域名服务层及部署在云上的服务单元,该装置包括:
10.用户标识获取模块,用于响应于流量调拨指令,接收由应用客户端发送的服务请求,并从服务请求中获取到应用客户端的登录用户的用户标识,其中,流量调拨指令基于与服务请求对应的一级域名生成;
11.目标二级域名确定模块,用于根据用户标识以及预先配置的上云流量粒度,从预先配置的至少一个候选二级域名中确定出目标二级域名,其中,上云流量粒度用于表示全
局流量中预计调拨至云上的流量的比例;
12.流量调拨模块,用于将目标二级域名以及服务请求发送给域名服务层,以使域名服务层对目标二级域名进行解析,在根据得到的解析结果确定云上响应服务请求的情况下,将服务请求转发给服务单元,以由服务单元响应服务请求。
13.根据本发明的另一方面,提供了一种流量调拨服务器,可以包括:
14.至少一个处理器;以及
15.与至少一个处理器通信连接的存储器;其中,
16.存储器存储有可被至少一个处理器执行的计算机程序,计算机程序被至少一个处理器执行,以使至少一个处理器执行时实现本发明任意实施例所提供的流量调拨方法。
17.根据本发明的另一方面,提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令用于使处理器执行时实现本发明任意实施例所提供的流量调拨方法。
18.本发明实施例的技术方案,流量调拨服务通过响应于流量调拨指令,接收经由应用客户端发送的服务请求,并从服务请求中获取应用客户端的登录用户的用户标识,该流量调拨指令基于与服务请求对应的一级域名生成;进一步,根据用户标识及预先配置的用于表示全局流量中预计调拨至云上的流量的比例的上云流量粒度,从预先配置的至少一个候选二级域名中确定目标二级域名;然后,将目标二级域名以及服务请求发送给dns层,以使dns层对目标二级域名进行解析,并在根据得到的解析结果确定云上响应服务请求的情况下,将服务请求转发给部署在云上的服务单元,以基于服务单元响应服务请求。上述技术方案,通过采用多级域名(即一级域名和二级域名)优化技术,将独立的流量调拨服务前置至dns层,从而可以在不改变业务原有架构(即现有架构)的前提下,实现流量从云下到云上的平滑过渡,即实现流量从现有架构到单元化架构的平滑过渡,或说应用系统从现有架构到单元化架构的顺滑迁移,由此可以尽可能降低因为流量切换而给用户带来的影响,用户体验较佳。
19.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或是重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
20.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1是根据本发明实施例提供的一种流量调拨方法的流程图;
22.图2是根据本发明实施例提供的另一种流量调拨方法的流程图;
23.图3是根据本发明实施例提供的另一种流量调拨方法的流程图;
24.图4是根据本发明实施例提供的另一种流量调拨方法中的应用系统的架构示意图;
25.图5是根据本发明实施例提供的一种流量调拨装置的结构框图;
26.图6是实现本发明实施例的流量调拨方法的流量调拨服务器的结构示意图。
具体实施方式
27.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
28.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。“目标”、“原始”等的情况类似,在此不再赘述。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
29.图1是本发明实施例中所提供的一种流量调拨方法的流程图。本实施例可适用于流量调拨的情况,尤其适用于将流量从云下平滑调拨到云上的情况。该方法可以应用于流量调拨服务,该流量调拨服务位于应用系统中,该应用系统还包括域名服务层及部署在云上的服务单元,即该应用系统的整体架构可包括调拨服务、域名服务层及服务单元。该方法可以由本发明实施例所提供的流量调拨装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在流量调拨服务器中。
30.参见图1,本发明实施例的方法具体包括如下步骤:
31.s110、响应于流量调拨指令,接收经由应用客户端发送的服务请求,并从服务请求中获取应用客户端的登录用户的用户标识,其中,流量调拨指令基于与服务请求对应的一级域名生成。
32.其中,流量调拨指令可以理解为用于将流量调拨至云上或是云下的指令,具体来说可以是用于将流量调拨至云上的某个服务单元或是云下的某个机房的指令。应用客户端可理解为用于实现某应用程序的相关功能的客户端,该应用客户端也可以作为应用系统中的一部分。服务请求可以理解为经由该应用客户端发送的用于调用至少一个微服务中的某微服务的请求,该至少一个微服务可以理解为用于实现该应用程序的相关功能的微服务。在此基础上,该流量调拨指令可以基于与该服务请求对应的一级域名生成,即可以通过该一级域名触发流量调拨服务,从而基于该流量调拨服务执行后续步骤。
33.响应于流量调拨指令,接收服务请求,并从该服务请求中获取应用客户端的登录用户的用户标识,该登录用户可以理解为登录至该应用客户端上的用户,该用户标识可以理解为该登录用户的唯一标识。
34.s120、根据用户标识及预先配置的上云流量粒度,从预先配置的至少一个候选二级域名中确定出目标二级域名,其中,上云流量粒度用于表示全局流量中预计调拨至云上的流量的比例。
35.其中,上云流量粒度可以理解为预先配置的用于表示全局流量中预计调拨至云上的流量的比例,例如20%、50%或是80%等,其可以根据需求进行配置,在此未做具体限定。示例性的,在初始将流量由云下调拨(即切换)至云上,即初始将现有架构向单元化架构迁
移的情况下,此时云上的响应情况不确定,因此可以通过配置较小的上云流量粒度进行测试;随着时间推移,在确定云上的响应情况较佳的情况下,可以配置更大的上云流量粒度,从而将更多的流量调拨至云上;当然,在云上的响应情况变差的情况下,还可调小上云流量粒度,从而实现流量在单元化架构和现有架构之间的快速切换。由此保障业务连续性,尽可能减少因流量切换而给用户带来的影响。上述全局流量也可称为全部流量。
36.候选二级域名可以是预先配置的用于表示将流量调拨至云上或云下的二级域名,即对应于云上或是云下的二级域名,这里的二级域名是相对于s110中的一级域名而言的。候选二级域名的数量可以是一个、两个或是多个。在此基础上,根据用户标识和上云流量粒度,从该至少一个候选二级域名中确定出目标二级域名,以便基于该目标二级域名确定本次的流量调拨方向。
37.s130、将目标二级域名以及服务请求发送给域名服务层,以使域名服务层对目标二级域名进行解析,并在根据得到的解析结果确定云上响应服务请求的情况下,将服务请求转发给服务单元,以由服务单元响应服务请求。
38.其中,域名服务(domain name server,dns)层可以理解为用于实现域名解析的服务端,将目标二级域名和服务请求发送给该dns层,从而基于该dns层对该目标二级域名进行解析,并且在根据得到的解析结果确定于云上响应该服务请求的情况下,可以通过该dns层将该服务请求转发给部署在云上的服务单元来完成流量调拨,进而还可以通过该服务单元响应该服务请求,从而实现流量调拨后的该服务请求的有效响应。在实际应用中,可选的,在根据得到的解析结果确定于云下响应该服务请求的情况下,可通过该dns层将该服务请求转发给部署在云下的某机房内的某台机器,从而基于该机器响应该服务请求。
39.本发明实施例的技术方案,流量调拨服务通过响应于流量调拨指令,接收经由应用客户端发送的服务请求,并从服务请求中获取应用客户端的登录用户的用户标识,该流量调拨指令基于与服务请求对应的一级域名生成;进一步,根据用户标识及预先配置的用于表示全局流量中预计调拨至云上的流量的比例的上云流量粒度,从预先配置的至少一个候选二级域名中确定目标二级域名;然后,将目标二级域名以及服务请求发送给dns层,以使dns层对目标二级域名进行解析,并在根据得到的解析结果确定云上响应服务请求的情况下,将服务请求转发给部署在云上的服务单元,以基于服务单元响应服务请求。上述技术方案,通过采用多级域名(即一级域名和二级域名)优化技术,将独立的流量调拨服务前置至dns层,从而可以在不改变业务原有架构(即现有架构)的前提下,实现流量从云下到云上的平滑过渡,即实现流量从现有架构到单元化架构的平滑过渡,或说应用系统从现有架构到单元化架构的顺滑迁移,由此可以尽可能降低因为流量切换而给用户带来的影响,用户体验较佳。
40.一种可选的技术方案,上述流量调拨方法,还可以包括:获取预先配置的至少一个数值区间,以及针对至少一个数值区间中的各个数值区间预先分别配置的候选二级域名;根据用户标识以及预先配置的上云流量粒度,从预先配置的至少一个候选二级域名中确定出目标二级域名,包括:对用户标识进行哈希计算,得到哈希值,并基于预先配置的上云流量粒度对哈希值进行取模计算,得到取模值;从至少一个数值区间中确定出取模值所在的目标区间,并将针对目标区间预先配置的候选二级域名作为目标二级域名。换言之,至少一个数值区间与至少一个候选二级域名间存在一一对应关系,这可以通过预先配置得到。示
例性的,假设存在如下四个数值区间:[0,24]、[25,49]、[50,74]以及[75,99],其中的[0,24]对应于候选二级域名a,[25,49]对应于候选二级域名b,[50,74]对应于候选二级域名c,以及[75,99]对应于候选二级域名d。在此基础上,基于用户标识以及上云流量粒度计算出取模值,假设该取模值为35,那么其所在的数值区间为[25,49],则将b作为目标二级域名。上述技术方案,通过多级域名的配置,可以按照实际需求,实时动态对调拨至云上和云下的流量的比例进行调整,从而实现从现有架构向单元化架构的小流量逐步平缓的迁移过渡。
[0041]
在此基础上,可选的,上述流量调拨方法,还可以包括:响应于第一域名删除事件,针对与至少一个数值区间对应的至少一个候选二级域名,确定至少一个候选二级域名中的待删除二级域名及除待删除二级域名之外的可保留二级域名,并得到可保留二级域名的数量;确定至少一个数值区间涵盖的数值范围,并根据数量对数值范围进行划分,根据划分结果更新至少一个数值区间;基于数量的可保留二级域名更新至少一个候选二级域名,并基于至少一个候选二级域名,为各个数值区间分别分配候选二级域名。这样一来,在任意的候选二级域名因为出现问题而无法继续应用(即存在删除需求)的情况下,可以不再为该候选二级域名分配数值区间,从而达到了停止应用该候选二级域名的效果。
[0042]
为了更好地理解上述技术方案,下面继续以上述示例为例,对其进行示例性说明。至少一个数值区间包括[0,24]、[25,49]、[50,74]及[75,99],与之对应的至少一个候选二级域名包括a、b、c及d。在此基础上,假设待删除二级域名为b,则a、c及d均为可保留二级域名,可保留二级域名的数量是3。由于至少一个数值区间的数值范围是0-99,则可以基于3对0-99进行划分,例如在均匀划分的情况下,可以划分为[0,32]、[33,65]及[66,99];再如在非均匀划分的情况下,这里以按照比例划分为例,假设比例是40:25:35,则可以划分为[0,39]、[40,64]及[65,99]等,在此未做具体限定。进一步,将[0,32]、[33,65]及[66,99]作为至少一个数值区间,并且将a、c及d作为至少一个候选二级域名,由此将a、c及d分配给[0,32]、[33,65]及[66,99],例如将a分配给[0,32],b分配给[33,65],以及c分配给[66,99],当然,也可以采用其余的分配方式,在此未做具体限定。
[0043]
另一种可选的技术方案,上述流量调拨方法,还可以包括:获取标识域名映射关系,其中,标识域名映射关系用于表示在接收到服务请求之前接收到的先前请求中的先前标识及至少一个候选二级域名中与先前标识对应的候选二级域名间的映射关系;根据用户标识以及预先配置的上云流量粒度,从预先配置的至少一个候选二级域名中确定出目标二级域名,包括:在标识域名映射关系中的各先前标识中未包含用户标识的情况下,根据用户标识及预先配置的上云流量粒度,从预先配置的至少一个候选二级域名中确定出目标二级域名;上述流量调拨方法,还可以包括:在标识域名映射关系中的各先前标识中包含用户标识的情况下,将标识域名映射关系中的与用户标识对应的候选二级域名作为目标二级域名。
[0044]
其中,先前请求可以理解为在接收到服务请求之前接收到的服务请求,在实际应用中,可选的,发送该先前请求的应用客户端与发送该服务请求的应用客户端可能相同或是不同,这与实际应用场景有关,在此未做具体限定。先前标识可以理解为从该先前请求中获取到的用户标识。在确定至少一个候选二级域名中的与该先前标识对应的候选二级域名的情况下,可以将该先前标识与该候选二级域名记录下来,从而形成标识域名映射关系。在此基础上,在得到某用户标识的情况下,可以确定在该标识域名映射关系中是否存在与该
用户标识对应的先前标识,如果是,则可以直接从该标识域名映射关系中得到目标二级域名;否则,可以基于上述步骤为该用户标识确定目标二级域名,在此基础上,可选的,还可以将该用户标识与该目标二级域名作为一对,记录在该标识域名映射关系中,以便后续获取到该用户标识时,可以直接从该标识域名映射关系中得到其对应的目标二级域名。
[0045]
上述技术方案,针对登录用户通过应用客户端首次发送的服务请求,可以为该服务请求中的用户标识确定目标二级域名,后续登录用户再通过应用客户端发送服务请求时,无需再次确定目标二级域名,可以直接应用先前确定出的目标二级域名,从而保证了同一登录用户每次访问时对应的目标二级域名一致,即保证了同一登录用户的全部服务请求均会被转发至云下或是云上(具体说是云上的同一服务单元)来响应,由此满足了单元化管控的需求。
[0046]
又一种可选的技术方案,服务单元的数量是至少两个,在根据得到的解析结果确定云上响应服务请求的情况下,将服务请求转发给服务单元,以由服务单元响应服务请求,可以包括:在根据得到的解析结果,确定位于云上的至少两个服务单元中的目标单元用于响应服务请求的情况下,将服务请求转发给目标单元,以由目标单元响应服务请求。上述技术方案,由于至少一个候选二级域名中的各个候选二级域名可以分别对应于云下或是云上的某服务单元,因此基于这些候选二级域名可以实现粒度更细的流量调拨效果。
[0047]
图2是本发明实施例中提供的另一种流量调拨方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,上述流量调拨方法,还可以包括:针对至少一个候选二级域名中的每个候选二级域名,将用于探测候选二级域名的可用性的域名探测请求发送给域名服务层;接收域名服务层针对域名探测请求返回的域名解析数据,根据解析数据确定候选二级域名的可用性。其中,与上述各实施例相同或相应的术语的解释在此不再赘述。
[0048]
参见图2,本实施例的方法具体可以包括如下步骤:
[0049]
s210、响应于流量调拨指令,接收经由应用客户端发送的服务请求,并从服务请求中获取应用客户端的登录用户的用户标识,其中,流量调拨指令基于与服务请求对应的一级域名生成。
[0050]
s220、根据用户标识及预先配置的上云流量粒度,从预先配置的至少一个候选二级域名中确定出目标二级域名,其中,上云流量粒度用于表示全局流量中预计调拨至云上的流量的比例。
[0051]
s230、将目标二级域名以及服务请求发送给域名服务层,以使域名服务层对目标二级域名进行解析,并在根据得到的解析结果确定云上响应服务请求的情况下,将服务请求转发给服务单元,以由服务单元响应服务请求。
[0052]
s240、针对至少一个候选二级域名中的每个候选二级域名,将用于探测候选二级域名的可用性的域名探测请求发送给域名服务层。
[0053]
其中,域名探测请求可以理解为用于探测候选二级域名的可用性的请求,在实际应用中,可选的,该域名探测请求可以通过ping、tcp或是http(s)等方式进行表示,在此未做具体限定。将该域名探测请求发送给dns层,这样一来,dns层可以确定与该域名探测请求所表征的候选二级域名的域名解析数据,该域名解析数据可以理解为在解析该候选二级域名时产生的相关数据,进一步将该域名解析数据进行返回。实际应用中,可选的,可以定时
发送域名探测请求,遍历每个候选二级域名,以便得到每个候选二级域名的可用性。
[0054]
s250、接收域名服务层针对域名探测请求返回的域名解析数据,根据解析数据确定候选二级域名的可用性。
[0055]
其中,接收dns层针对域名探测请求返回的域名解析数据,从而可以根据该域名解析数据确定相应的候选二级域名的可用性。在实际应用中,可选的,可以根据该域名解析数据计算相关指标,例如丢包率、响应时间、失败比例和连续失败次数等,从而基于这些指标来检测该候选二级域名的可用性(即健康状态)。上述的可用性探测过程可以认为是流量调拨服务实现的主动探测服务。
[0056]
本发明实施例的技术方案,针对至少一个候选二级域名中的每个候选二级域名,通过将用于探测该候选二级域名的可用性的域名探测请求发送给dns层,然后基于dns层针对该域名探测请求返回的域名解析数据来确定该候选二级域名的可用性,从而实现了候选二级域名这个维度的可用性的主动探测。
[0057]
一种可选的技术方案,上述流量调拨方法,还可包括:得到至少一个候选二级域名中的各个候选二级域名的可用性;在根据各个候选二级域名的可用性,确定至少一个候选二级域名均不可用的情况下,对域名服务层进行主备切换;在根据各个候选二级域名的可用性,确定至少一个候选二级域名中的部分候选二级域名不可用的情况下,生成用于删除该部分候选二级域名的第二域名删除事件,以通过响应第二域名删除事件来停止应用部分候选二级域名。其中,在某候选二级域名不可用的情况下,可能是该候选二级域名出现问题,也可能是用于实现域名解析的dns层出现问题,因此在确定出至少一个候选二级域名中的部分候选二级域名不可用的情况下,可根据全部候选二级域名的可用性确定问题出现在dns层上,还是出现在该部分候选二级域名上。如果是前者,可以实现dns层的主备切换,即从主dns层切换至备dns层上,以便后续基于该备dns层进行域名解析,由此保证服务请求的连续性响应;如果是后者,可以通过响应用于删除该部分候选二级域名的第二域名删除事件来停止应用该部分候选二级域名,具体实现过程可参见上文中的相关方案,在此不再赘述。上述技术方案,实现了dns层的容灾切换,这有助于更精准化的流量调拨。
[0058]
图3是本发明实施例中提供的另一种流量调拨方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,服务单元中部署有至少一个微服务,将服务请求转发给服务单元,以由服务单元响应服务请求,包括:将服务请求转发给至少一个微服务中的被服务请求所请求的目标服务,以由目标服务响应服务请求。其中,与上述各实施例相同或相应的术语的解释在此不再赘述。
[0059]
参见图3,本实施例的方法具体可以包括如下步骤:
[0060]
s310、响应于流量调拨指令,接收经由应用客户端发送的服务请求,并从服务请求中获取应用客户端的登录用户的用户标识,其中,流量调拨指令基于与服务请求对应的一级域名生成。
[0061]
s320、根据用户标识及预先配置的上云流量粒度,从预先配置的至少一个候选二级域名中确定出目标二级域名,其中,上云流量粒度用于表示全局流量中预计调拨至云上的流量的比例。
[0062]
s330、将目标二级域名以及服务请求发送给域名服务层,以使域名服务层对目标二级域名进行解析,并在根据得到的解析结果确定云上响应服务请求的情况下,将服务请
求转发给目标服务,以由目标服务响应服务请求,其中,该目标服务是部署在服务单元中的至少一个微服务中的被服务请求所请求的服务。
[0063]
其中,服务单元中部署有至少一个微服务,该至少一个微服务中的每个微服务均可用于实现上文中提及的应用程序的某些功能,各个微服务可用于实现的功能存在差异。目标服务可以是该至少一个微服务中的被服务请求所请求的微服务,即被该服务请求所请求调用的微服务,因此dns层可以将该服务请求转发给该目标服务,以由该目标服务来响应该服务请求。
[0064]
本发明实施例的技术方案,针对部署在服务单元上的至少一个微服务中的被服务请求所请求的目标服务,通过将服务请求转发给目标服务,以通过目标服务来响应服务请求,由此实现了服务请求的准确响应的效果。
[0065]
一种可选的技术方案,上述流量调拨方法,还包括:针对至少一个微服务中的每个微服务,接收内嵌在微服务中的服务边车针对微服务发送的服务数据,并根据服务数据确定微服务的可用性,以得到至少一个微服务中的各个微服务的可用性;在根据各个微服务的可用性确定至少一个微服务均不可用的情况下,生成用于删除目标二级域名的第三域名删除事件,以通过对第三域名删除事件进行响应来停止应用目标二级域名所对应的服务单元。
[0066]
其中,服务边车可以理解为内嵌在微服务(或是说该微服务所在的微服务层)中的用于从日志等渠道中探测该微服务在提供服务过程中产生的相关数据,这里将该相关数据称为服务数据。该服务边车可以将自己探测的服务数据发送给流量调拨服务,因此流量调拨服务可以根据接收到的服务数据确定该微服务的可用性。在此基础上,在至少一个微服务中的部分微服务不可用的情况下,可能是该部分微服务出现问题,也可能是其所在的服务单元出现问题,因此可根据全部微服务的可用性确定问题出现在该服务单元上,还是出现在该部分微服务上。如果是前者,这说明该服务单元完全不可用,则可通过响应用于删除该服务单元所对应的目标二级域名的第三域名删除事件来停止应用该服务单元,具体实现过程可参见上文中的相关方案,在此不再赘述。在此基础上,可选的,如果是后者,在部署在该服务单元上的各个微服务存在主备的情况下,可以对该部分微服务进行主备切换。上述技术方案,实现了微服务层(即应用层)的容灾切换,这有助于更精准化的流量调拨。
[0067]
为了从整体上更好地理解上述的各个技术方案,下面结合具体示例,对其进行示例性说明。示例性的,参见图4,这里以手机银行(应用客户端的具体示例)所在的应用系统为例,其可以实现如下功能:
[0068]
1、从现有架构到单元化架构(即从传统部署到云原生部署)的平滑过渡。具体的,登录用户每次启动手机银行后,在经由手机银行发送首笔服务请求时,通过一级域名触发流量调拨服务,流量调拨服务通过多级域名计算模块,根据服务请求中的用户标识进行哈希计算,并对得到的哈希值按照设定的上云流量粒度进行取模计算,根据从域名负载分配模块中得到的域名负载分配配置(即各数值区间和各候选二级域名之间的对应关系),计算得到目标二级域名。然后,通过服务请求转发模块将服务请求和目标二级域名转发给dns层。dns层对接收到的目标二级域名进行解析,由此实现流量分发至对应的服务单元或现有架构。因此,同一登录用户在每次访问节点时,通过算法计算出来的目标二级域名是一样的。通过多级域名的配置,能够按照需要,实时动态的调整云上和云下的流量比例配置,从
而实现从传统部署向云原生部署的小流量逐步平缓的迁移过渡,可适用于系统迁移上云或架构调整过渡阶段的通用的轻量级迁移。
[0069]
2、通过主动探测和服务边车这两种方式实现多层次实时检测机制,从而为实现更精准化的流量调拨能力以及为智能容灾切换能力提供基础支撑。具体的,主动探测服务可以通过数据搜集模块,基于ping、tcp或http(s)等方式主动探测候选二级域名的可用性。服务边车可以借助手机银行的ci/cd平台,通过流水线内嵌入各微服务层中,这些微服务层可覆盖网关层服务、应用层服务和持久化层服务,从上到下一体化检测服务实时状态,从应用服务状态、资源信息和个性化指标等多维度实时上报服务数据,实现了更为全面和精准的检测体系。
[0070]
3、智能容灾切换,从而保障业务的连续性,减少因为故障带来的业务影响。具体的,通过上述的多层次实时检测机制,将检测到的各类数据上报给可用性计算模块,以便通过可用性计算模块按照丢包率、响应时间、失败比例和连续失败次数等指标来检测候选二级域名的健康状态(即可用性)以及微服务层的健康状态,并将检测结果下发至决策干预模块,以通过决策干预模块确定是否需要对域名负载分配配置进行修改。在需要修改的情况下,配置检测模块可以基于检测到的修改结果对域名负载分配模块中的域名负载分配配置进行更新,由此实现了更精准化的流量调拨控制。这样一来,出现设备故障时,能够实时进行动态的候选二级域名切换,从而达到流量无痕切换至其他服务单元的效果。
[0071]
上述技术方案,通过采用多级域名优化技术,在常规的单元化架构体系中增加了独立的流量调拨服务,并将流量调拨服务前置至dns层,从而在不改变业务原有架构的前提下,实现了全局流量管控。同时基于现有架构,扩展服务边车功能,用于实时数据检测获取,主要负责健康检测、实时反馈和确保集群流量的动态调配,效果较好。
[0072]
图5为本发明实施例所提供的流量调拨装置的结构框图,该装置用于执行上述任意实施例所提供的流量调拨方法。该装置与上述各实施例的流量调拨方法属于同一个发明构思,在流量调拨装置的实施例中未详尽描述的细节内容,可以参考上述流量调拨方法的实施例。参见图5,该装置配置于流量调拨服务,流量调拨服务位于应用系统中,应用系统还包括域名服务层以及部署在云上的服务单元,该装置具体可以包括:用户标识获取模块410、目标二级域名确定模块420和流量调拨模块430。其中,
[0073]
用户标识获取模块410,用于响应于流量调拨指令,接收经由应用客户端发送的服务请求,并从服务请求中获取应用客户端的登录用户的用户标识,其中,流量调拨指令基于与服务请求对应的一级域名生成;
[0074]
目标二级域名确定模块420,用于根据用户标识以及预先配置的上云流量粒度,从预先配置的至少一个候选二级域名中确定目标二级域名,其中,上云流量粒度用于表示全局流量中预计调拨至云上的流量的比例;
[0075]
流量调拨模块430,用于将目标二级域名以及服务请求发送给域名服务层,以使域名服务层对目标二级域名进行解析,并在根据得到的解析结果确定云上响应服务请求的情况下,将服务请求转发给服务单元,以由服务单元响应服务请求。
[0076]
可选的,上述流量调拨装置,还可以包括:
[0077]
候选二级域名配置模块,用于获取预先配置的至少一个数值区间,及针对至少一个数值区间中的各个数值区间预先分别配置的候选二级域名;
[0078]
目标二级域名确定模块420,可以包括:
[0079]
取模计算单元,用于对用户标识进行哈希计算,得到哈希值,并基于预先配置的上云流量粒度对哈希值进行取模计算,得到取模值;
[0080]
目标二级域名第一确定单元,用于从至少一个数值区间中确定出取模值所在的目标区间,并将针对目标区间预先配置的候选二级域名作为目标二级域名。
[0081]
在此基础上,可选的,上述流量调拨装置,还可以包括:
[0082]
数量得到模块,用于响应于第一域名删除事件,针对与至少一个数值区间对应的至少一个候选二级域名,确定至少一个候选二级域名中的待删除二级域名及除待删除二级域名之外的可保留二级域名,并得到可保留二级域名的数量;
[0083]
数值区间更新模块,用于确定至少一个数值区间涵盖的数值范围,并根据数量对数值范围进行划分,根据划分结果更新至少一个数值区间;
[0084]
候选二级域名分配模块,用于基于数量的可保留二级域名来更新至少一个候选二级域名,并基于至少一个候选二级域名,为各个数值区间分别分配候选二级域名。
[0085]
可选的,上述流量调拨装置,还可以包括:
[0086]
标识域名映射关系获取模块,用于获取标识域名映射关系,其中,标识域名映射关系用于表示在接收到服务请求之前接收到的先前请求中的先前标识以及至少一个候选二级域名中与先前标识对应的候选二级域名间的映射关系;
[0087]
目标二级域名确定模块420,可以包括:
[0088]
目标二级域名第二确定单元,用于在标识域名映射关系中的各先前标识中未包含用户标识的情况下,根据用户标识及预先配置的上云流量粒度,从预先配置的至少一个候选二级域名中确定出目标二级域名;
[0089]
上述流量调拨装置,还可以包括:
[0090]
目标二级域名得到模块,用于在标识域名映射关系中的各先前标识中包含用户标识的情况下,将标识域名映射关系中与用户标识对应的候选二级域名作为目标二级域名。
[0091]
可选的,服务单元的数量是至少两个,流量调拨模块430,可以包括:
[0092]
服务请求响应单元,用于在根据得到的解析结果,确定位于云上的至少两个服务单元中的目标单元用于响应服务请求的情况下,将服务请求转发给目标单元,以由目标单元响应服务请求。
[0093]
可选的,上述流量调拨装置,还可以包括:
[0094]
域名探测请求发送模块,用于针对至少一个候选二级域名中的每个候选二级域名,将用于探测候选二级域名的可用性的域名探测请求发送给域名服务层;
[0095]
可用性确定模块,用于接收域名服务层针对域名探测请求返回的域名解析数据,并根据解析数据确定候选二级域名的可用性。
[0096]
在此基础上,可选的,上述流量调拨装置,还可以包括:
[0097]
域名可用性得到模块,用于得到至少一个候选二级域名中的各个候选二级域名的可用性;
[0098]
域名服务层主备切换模块,用于在根据各个候选二级域名的可用性,确定至少一个候选二级域名均不可用的情况下,对域名服务层进行主备切换;
[0099]
候选二级域名停止应用模块,用于在根据各个候选二级域名的可用性确定至少一
个候选二级域名中的部分候选二级域名不可用的情况下,生成用于删除部分候选二级域名的第二域名删除事件,以通过响应第二域名删除事件来停止应用部分候选二级域名。
[0100]
可选的,流量调拨模块430,可以包括:
[0101]
服务请求转发单元,用于将服务请求转发给至少一个微服务中被服务请求所请求的目标服务,以由目标服务响应服务请求。
[0102]
在此基础上,可选的,上述流量调拨装置,还可以包括:
[0103]
微服务可用性得到模块,用于针对至少一个微服务中的每个微服务,接收内嵌在微服务中的服务边车针对微服务发送的服务数据,并根据服务数据确定微服务的可用性,以得到至少一个微服务中的各个微服务的可用性;
[0104]
服务单元停止应用模块,用于在根据各个微服务的可用性确定至少一个微服务均不可用的情况下,生成用于删除目标二级域名的第三域名删除事件,以通过对第三域名删除事件进行响应来停止应用目标二级域名所对应的服务单元。
[0105]
本发明实施例提供的流量调拨装置,流量调拨服务通过用户标识获取模块响应于流量调拨指令,接收经由应用客户端发送的服务请求,并从服务请求中获取应用客户端的登录用户的用户标识,该流量调拨指令基于与服务请求对应的一级域名生成;进而,通过目标二级域名确定模块根据用户标识及预先配置的用于表示全局流量中预计调拨至云上的流量的比例的上云流量粒度,从预先配置的至少一个候选二级域名中确定目标二级域名;然后,通过流量调拨模块将目标二级域名及服务请求发送给dns层,以使dns层对目标二级域名进行解析,并在根据得到的解析结果确定云上响应服务请求的情况下,将服务请求转发给部署在云上的服务单元,以基于服务单元来响应服务请求。上述装置,通过采用多级域名(即一级域名以及二级域名)优化技术,将独立的流量调拨服务前置至dns层,从而可以在不改变业务原有架构(即现有架构)的前提下,实现了流量从云下到云上的平滑过渡,即实现了流量从现有架构到单元化架构的平滑过渡,或说应用系统从现有架构到单元化架构的顺滑迁移,由此可以尽可能降低因为流量切换而给用户带来的影响,用户体验较佳。
[0106]
本发明实施例所提供的流量调拨装置可执行本发明任意实施例所提供的流量调拨方法,具备执行方法相应的功能模块和有益效果。
[0107]
值得注意的是,上述流量调拨装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0108]
图6示出了可以用来实施本发明的实施例的流量调拨服务器10的结构示意图。流量调拨服务器旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。流量调拨服务器还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
[0109]
如图6所示,流量调拨服务器10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(rom)12、随机访问存储器(ram)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(rom)12中的计算机程序或从存储单元18加载到随机访问存储器(ram)13中的计算机程序,来执行
各种适当的动作和处理。在ram 13中,还可存储流量调拨服务器10操作所需的各种程序和数据。处理器11、rom 12以及ram 13通过总线14彼此相连。输入/输出(i/o)接口15也连接至总线14。
[0110]
流量调拨服务器10中的多个部件连接至i/o接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许流量调拨服务器10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0111]
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如流量调拨方法。
[0112]
在一些实施例中,流量调拨方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由rom 12和/或通信单元19而被载入和/或安装到流量调拨服务器10上。当计算机程序加载到ram 13并由处理器11执行时,可以执行上文描述的流量调拨方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行流量调拨方法。
[0113]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、以及至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、以及该至少一个输出装置。
[0114]
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或是其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行并且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0115]
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0116]
为了提供与用户的交互,可以在流量调拨服务器上实施此处描述的系统和技术,该流量调拨服务器具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给流量调拨服务器。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0117]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
[0118]
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
[0119]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
[0120]
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1