- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
阿里流量隔离方案 Dpath 护航双十一新零售
在今年的双11预备期间,业务同学提出要针对新零售进行特殊的保障,期望新零售过来的流量,单独进入到一批机器,和其他一般流量隔离开来,这对新零售系统稳定性提出更高的要求。
需求总结下来就是:
针对特殊流量可以在链路上按需选择一些应用,从全部机器(公共集群)里圈定一些机器作为特殊流量的专属机器,以便对特殊流量进行特殊支持。
一般流量不进入专属服务器,特殊流量可以按需使用一般服务器
假如链路上某个应用app_x没有划出专属机器,那么特殊流量和一般流量公用app_x的全部机器(我们称之为公共集群)。
假如app_x划了专属机器,但是这些机器由于某种缘由不行达,那么特殊流量可以依据配置的failover策略打算能否使用公共集群。
整个链路上各个应用的划出来的专属机器组成了特殊流量的专属通道,类似公交公用道。
我们的RPC框架已有的路由功能是在单次调用上生效,基于单次调用的路由功能实现全链路的路由会格外麻烦。所以我们提出了一个全链路上的做流量隔离的方案Dpath(Dedicated path)。
方案工作机制
我们分三步来说明Dpath如何工作:
圈定专属服务器
识别特殊流量
在链路上引导流量到对应的服务器
圈定专属机器
简约来说,我们需要的信息就是一个专属环境里包含哪些应用的哪些机器。该信息以JSON方式存放在配置中心,样本如下:
上述配置申明白一个名为newRetail的专属环境,里边包含app1,app2,app3,newRetailEntryApp四个应用以及对应的机器。
Dpath工具包会订阅该配置,各个两头件使用Dpath工具包即可获知所需的信息。
识别流量
Dpath通过trace模块(全链路的trace功能,可以在链路上传递数据)携带的dpath_env属性来识别当前流量属于哪一个专属环境。具体如何依据恳求信息映射到一个专属环境是业务规律,由业务同学完成。这个识别动作可以放在如下三个地方:
Nginx
可以依据http恳求信息来识别流量。依据业务规章实现恳求到dpath_env的映射,通过Nginx模块生成将env信息添加到trace模块的上下文
入口应用
两头件取环境信息假如为空,默认会使用当前机器所属的环境。所以假如入口应用确定,那么将整个入口应用划到专属环境即可。目前新零售都是这种模式。
业务代码
业务代码可以依据需要设置trace模块上下文中的的dpath_env,随时转变流量所属的环境。
引导流量
dpath只定义了机器,环境,以及流量的关系,并没有规定如何引导流量。引导流量由各个两头件自行实现。
这里只以rpc为例说明如何基于Dpath的规章来引导流量到对应的服务器。
为了便利理解,先忽视RPC其他的路由规律,看最简约情况下,单次调用的处理。没有Dpath功能时,RPC客户端就是从注册中心拿到service对应的服务器列表,然后随机调用。如下图所示:
添加Dpath功能之后,服务名到服务器的映射两头插入了一个dpath_env的规律。RPC客户端先依据恳求上下文中的环境信息选中对应环境的地址,然后随机调用。如下图所示:
整个链路上,一个专属环境里全部应用的专属服务器串起来构成了特殊流量的专属路径。如下图所示:
newRetailEntryApp进入的newRetail流量使用专属机器
链路上没有划机器给newRetail的应用,使用公共集群
RPC之外,消息等两头件,都用各自的方式达到了类似的隔离效果。这里不再赘述细节。下面只供应一个RPC和消息支持Dpath的效果简图:
野流量隔离
依据上面的描述,RPC的隔离规律是在客户端生效。那么假如客户端没升级的话(很难快速协调全部客户端统一升级),就会有未知流量打到专属服务器,老客户端过来的不符合规章的流量我们称之为野流量。
为了处理野流量问题。注册中心的同学在发布订阅功能的基础上,供应了一个namespace功能。我们会把专属服务器的服务发布到Dpath这个namespace下,一般服务器默认发布到default这个namespace。新版本的客户端会订阅default+dpath两个namespace的数据,相当于拿到全量地址。而注册中心保证老的客户端只能看到default空间下的数据,这样就不会有野流量达到专属服务器了。
总结
Dpath是一个通用的流量隔离方案,可以支持一些需要隔离或者引导流量的场景,比如全链路常态隔离,灰度测试,蓝绿发布等。
目前业务方次要是在全链路上按业务属性进行常态流量隔离,已经在几个新零售场景线上使用,并且经受了双11的考验。
以下列举一些业务流量隔离的好处:
业务方可以依据业务属性的不同做不同的支持:共性的配置,更全的监控等。
重要业务不受其他流量影响,不会由于其他流量突增而导致load高
文档评论(0)