当前位置: 首页 > 网络应用技术

如何在20分钟内获得相同的企业 - 级全链接灰度能力?

时间:2023-03-08 12:09:10 网络应用技术

  在今年的Double 11中,Yun的本地中间件完成了三个 - 中的开源,自我研究和商业化,并完全升级到云产品的中部。小组通过Dubbo3.0的核心业务。截至目前,该组中有50%的用户用于使用MSE微服务治理HSF和Dubbo 3.0应用程序。今天,我们将讨论MSE服务。专业版中的完整链接灰度能力以及它产生的一些场景。

  在微服务结构下,有一些需求开发,其中涉及在微服务调用链接上同时进行更改的多个微服务。有必要通过灰色发布方法更好地控制新版本的新版本的风险和爆炸半径。通常,每个微服务都有一个灰色环境或一个组以接受灰色流。我们希望通过进入进入上游灰度环境的交通环境,我们还可以进入下游灰度环境,以确保在灰色环境中始终通过一个请求。即使在此调用链接上有一些微服务,不是灰色的环境,当下游请求时,这些应用程序仍然可以返回灰色环境。通过MSE提供的完整链接灰色容量,可以轻松实现上述功能而无需修改任何业务代码。

  完全链接灰色作为MSE服务治理专业版的拳头功能,具有以下六个特征

  除了简单地根据该比例引入流量外,我们还根据规则支持春季云和Dubbo流量的引入。春季云流量可以根据请求cookie,标题,参数参数或随机百分比百分比引入。

  未标记的应用程序是基线稳定版本的应用程序,即稳定的在线环境。当我们发布相应的灰色版本代码时,我们可以配置规则以引导以介绍特定的在线流量以控制灰色代码的风险。

  自定义流量规则后,您可以根据需要,添加,删除和检查并实时生效。弄脏排水系统更加方便。

  MSE Micro -Service治理能力基于Java代理字节码的技术实施。它无缝支持市场上所有春季和达博的所有春季云和Dubbo版本。用户可以在不更改代码行的情况下使用它。无需更改业务的现有结构。它可以随时向上和下降而无需绑定。刚打开MSE Micro服务治理,在线配置的专业版本,并实时生效。

  在应用MSE Micro服务管理后,它具有在线和离线的能力。在大流量下的释放,回滚,扩展和鲁ck,可以确保流量损失。

  本文主要介绍MSE Micro -Service治理的生产降落实践的情况,在支持大型客户的过程中为大型客户提供支持。

  方案1:机器流的自动染色以实现完整链接的灰色

  方案2:将特定的标头带到流量中以实现完整的链接灰色

  通过在请求中添加环境标识的公式,将客户端转发到根据相应环境的指示代表相应环境的网关。

  方案3:完整链接的灰色通过自定义路由规则执行

  通过将指定的标头添加到灰度请求中,整个呼叫链接将通过标头,只需在相应的应用程序中配置与标题相关的路由规则,请带上指定标头的灰色请求,以输入完整的Grayscale Machine grey of Full of Full- 可以按需实现链接流量。

  我们如何能快速获得同一完整链接的上述能力?下面我将带您快速构建我们的完整链接灰度能力从0到1。

  我们假设应用程序的体系结构由后端的Ingress-nginx和弹簧云组成。后端通话链接,购物车(A),交易中心(B),库存中心(C),他们通过NACOS注册中心,客户可以通过客户端或H5页面访问后端服务,有3次跳跃。。

  安装Ingress-nginx组件

  访问容器服务控制台,打开应用程序目录,搜索ack-ingress-nginx,选择“命名空间” kube-system,单击以创建,在安装完成后,您将在中看到一个部署acry-inginx-default-efault-efault-efault-efault-default,kube-system.-controller,安装成功。

  打开MSE Micro -Service治理的专业版本

  部署演示应用程序

  将以下文件保存到intress-gray.yaml并执行kubectl应用-f intress-gray.yaml到部署应用程序。在这里,我们将部署A,B,C.A灰色版本的三个应用程序。

  手

  方案1:机器流的自动染色以实现完整链接的灰色

  有时,我们可以通过不同的域名区分在线基础和灰色环境。灰色环境有一个单独的域名来配置它。假设我们通过访问www.gray.com要求灰色环境并访问www.base.com获取基线环境。

  调用链接入口-nginx-> a-> b-> c,其中a可以是Spring-boot的应用。

  注意:灰色的基本环境和入口申请的a需要打开在MSE服务治理控制台上申请在MSE服务治理控制台上应用程序的申请,这表明当前环境的标签功能当前的环境。这样,在Ingress-nginx路由A的灰色之后,即使请求中没有标头,因为开关已打开,X-MSE-TAG:X-MSE-TAG:灰色:灰色,灰色,以后称为,是标头的价值。其中包括A应用程序配置的标签信息。如果原始请求具有X-MSE标签:灰色,它将优先考虑原始请求中的标签。

  对于入口应用程序A,配置两个K8S服务,Spring-Cloud-a bas,对应于与A的灰色版本相对应的spring-cloud-a-gray版本。

  在入口处配置入学规则,请访问www.base.com路由的基本版本到A,然后访问www.gray.com路由的灰色版本到达应用程序。

  结果验证

  此时,请访问www.base.com通往基线环境的路线

  此时,请访问www.gray.com通往灰色环境的路线

  此外,如果A在A的进口中没有灰色环境,请访问A的基本环境,并且您需要在A-> B时输入灰度环境,则可以通过添加特殊标头来实现它X-MSE标签。标题可以实现。标题值是您要获得的标签,例如灰色。

  您可以看到第一个跳跃并进入A的基本环境,但是当A-> B返回灰色环境时。

  这种使用方法的优点是配置很简单。它只需要在入口中配置规则。当某个应用程序需要灰度发布时,只需在灰色环境中部署应用程序。如果需要在一个更改中将多个应用程序呈灰色,则可以将它们添加到灰色环境中。

  最佳实践

  方案2:将特定的标头带到流量中以实现完整的链接灰色

  一些客户无法重写域名。我希望通过将不同的标头路线传递到灰色-to -gray环境。。

  此时,演示的入学规则如下。请注意,这里添加了许多与nginx.in.in.in.in.in.in.in.in.in.in.io/canary有关的规则

  结果验证

  此时,请访问www.demo.com到达基线环境的路线

  如何访问灰色环境?只需添加标头X-MSE标签:灰色:灰色:灰色:灰色。

  您可以根据此标头直接看到该入口直接路由到灰色环境。

  更远

  您也可以使用入口来实现更复杂的路线。例如,客户带来了一定的标题。它希望使用现成的标头来实现路线,而无需添加新的标头。例如,显示下图。带有100个用户ID的请求进入灰色环境。

  您只需要添加以下4个规则:

  访问时,请带一个特殊的标题以满足条件进入灰色环境

  请求不足,输入基线环境:

  与场景一的优势相比,客户端的域名是没有变化的,只需要通过请求来区分。

  有时我们不想自动传输它并自动路由,但希望在微服务调用的上游和下游上的每个应用程序都可以自定义灰度规则。例如,B应用程序希望在此处控制ITApply,并且C应用程序可能需要定义B中的不同灰度规则。此时,我现在应该如何配置?请参阅下图如下:

  请注意,最好删除场景1和2中配置的参数。

  在第一步中,您需要在应用程序A(最好是所有输入应用程序,包括灰色和基础)上添加环境变量,以添加一个环境变量:alicloud.service.header = x-user-id,x-user-ID是需要传输的标题。它的作用是识别标头并进行自动变速箱。

  请注意,您在此处不使用X-MSE标签。它是系统默认标头,具有特殊的逻辑。

  第二步是在中间的B应用程序中间的MSE控制台上配置标签路由规则

  第三步是在入口中配置路由规则。对于此步骤,请参阅场景二,并使用以下配置:

  结果验证

  测试验证,访问灰度环境,带来符合条件的标题,以及从B到B的灰色环境。

  访问灰色环境,将不满意的标题和路由到B的基础环境。

  删除入口金口配置并访问基础服务(基线环境入口应用程序需要添加alicloud.service.header环境变量),带上满足条件的标头,并将路由到B的灰色环境。

  访问基本环境,将不满意的标题带到路线B的基本环境。

  在20分钟内,完整的链接灰度能力具有巨大的技术难度,在20分钟内完成。完整链接的灰度并不难!

  根据MSE服务治理的完整链接灰度能力,我们可以迅速登陆企业 - 级别的全链接灰度能力。以上三种情况是我们在生产实践中拥有大规模降落的标准场景。当然,我们可以基于MSE服务政府的能力,可以根据自己的业务进行自定义和适应;即使在多个流量来源的背景下,您也可以根据业务自定义自定义和准确排水。

  同时,MSE服务治理专业版的可观察能力使灰烬有效性措施,灰色不是灰烬,而灰色则是“在您心中计数”。

  指定发布过程

  在每日版本中,我们经常有一些错误的想法:

  这些想法可能会使我们犯错误,并且许多错误是由直接或间接释放引起的。因此,提高发布质量并减少错误的发生是有效减少在线失败的关键链接,可以安全地释放,并可以安全地释放。我们需要调节发行版的发布。

  随着微服务的普及,越来越多的公司使用微服务框架。Micro -Service提供了更高的内部团聚和低耦合的更好的容忍度。舒展很多便利。但是,随着业务的发展,微服务变得越来越复杂,微服务的治理也变得更加头痛。

  从仅完整链接的灰色来看,以确保在应用新版本之前验证功能正确性,需要申请释放的效率。如果我们的应用程序的规模很小,我们可以直接维护多个环境以确保发布发布。,即使每项服务都由测试/灰色环境的1到2个豆荚占据,我们也需要在许多环境的环境中面对巨大的范围。

  是否有一种更简单,有效的方法来解决微服务治理问题?

  MSE Micro -Service Engine将推出专业版的服务治理版本,为打开框以使用完整而专业的微服务治理解决方案来帮助企业更好地意识到微服务治理能力。如果您的系统也可以快速获得完整的完整- 按照本文所述的链接灰色能力以及基于这种能力的进一步的微服务治理实践,不仅可以节省客观的人力和成本,而且还允许您的公司在微服务领域进行公司的企业开发更加自信。

  作者:Shimian