微服务治理实践之金丝雀发布|学习笔记(二)

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 快速学习微服务治理实践之金丝雀发布

开发者学堂课程【微服务治理实践之金丝雀发布微服务治理实践之金丝雀发布】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/972/detail/14893


3.EDAS 金丝雀部署

针对上述问题, 总结了该部署的优点如下:

(1)简单易用的应用部署流程。

有一个非常简单的应用部署的流程。

(2)控制台修改规则灰度动态生效。

在控制台上面直接配一些规则,如head中有什么,或可以配一个比例。

(3)完善的监控体系。

有非常完善的监控的体系,可以看发布前后,如 qbs 是多少,kbs 比例是多少,凑了比例是多少,是开元层面完全没有的。

(4)ECS & K8S 场景全部覆盖。

无论是在 ecs 还是 K8S 场景下都是覆盖的,因为如基于固定IP的,其实在 K8S 这个产品是不能服用的。

(5)基于 Agent 技术无需修改代码。覆盖dubbo  2.5.0 ,spring cloud D 以上。

第五点是基于 Agent 的技术做的,契约型的技术类如 dubbo 不同的版本,可能规则不一样,同样Spring cloud ,如果是通过 Agent 技术去做,则不用关心因为 Agent 把所有事情都解决,不需要修改一行的代码。

(6)使用有问题?功能不够?微服务团队帮你解决。

如果认为 EDAS 金丝雀部署功能不够强,微服务团队会帮解决这些问题。

下面演示一下 EDAS 金丝雀部署,应用列表里可以新建一个应用。如可以基于Kubernetes 集群创建一个 JAVA 应用。应用名叫 canary-provider ,需要上传对应的加包,已经准备好了,是一个 Spring cloud G版本的 provider ,版本先选1.0,pod 先选两个,金丝雀灰度一半。

可以简单的看一下应用部署的详情,如可以看有多少监控信息,总需求量,平均响应时间包括错误数,full GC 的次数,微服务中对应的服务,具体的监控信息,这一套监控信息提供的是非常详细的。

image.png

把 Canary-consumer 也创建

image.png

此时因为选了两个 pod ,会自动帮我们分配两个 pod ,有对应的 IP 。

image.png

provider 有一个服务查询的界面,可以看 provider 部署了哪个服务。如 Spring cloud ,刚才部署了一个canary-provider ,里面有个服务叫 canary-service-provider ,对应的是两个IP,可以通过服务查询去看在各个框架上分别部署了哪些服务。

image.png

Consumer 创建好了,可以进入pod ,可以简单的尝试部署有没有成功,端口是18091 user rest 。调成功后返回 IP 为144和83,因为内部会有默认的负载策略。

image.png

144和83的 provider 就是144和83。

image.png

此时如果要做金丝雀部署,应用界面里的部署

image.png

点进去之后有多种部署方式,如分批部署就是一开始介绍过的,即每次部署一批直到部署所有人,分批部署也是支持的。另外一个是金丝雀发布。

image.png

用金丝雀发布演示一下,用2.0版本,出于简便包不改变,因为里面返回的是 IP 。

image.png

看代码,如 consumer 刚才调的,调了user rest ,会传一个 name 参数,会调provider ,把 name 参数传进去。

@Autowired

private Provider1 providerl;

@Autowired

private DiscoveryClient discoveryClient;

@RequestMapping(value = "/user/rest", method = RequestMethod.GET)

public String rest(HttpServletRequest request) {

String name = request .getParameter(s:”name”);

if(stringutiis,isEmpty(name) ) {

name ="gg";

}

String str1 = restTemplate . getForObject ( url:"http://canary-service-prow

String.class);

return str1;

}

@RequestMapping(value = “/service", method = RequestMethod.GET)

"ovider1;

ient discoveryclient;

je = "/user/rest", method =RequestMethod.GET) ittpServletRequest request ) {  

equest.getParameter( s:“name");

isEmpty(name)) {

estTemplate.getForObject( url:"http://canary-service-provider/usename=" + name.

如传一个 name ,叫 test 。

每次返回 IP 是对应 provider 上的两个pod ,是正常现象,因为现在还没做部署。

image.png

此时做一次金丝雀部署,因是一个parameter ,名字是 name ,等于 test 之后就是一个灰度,即满足了这个条件之后会路由到灰度的节点。

image.png

此时做一个部署,继续调因为还在部署,完全下线,所以仍一直返回这两个 IP 。

image.png

直到只返回了83,说明金丝雀生效了。

image.png

如果再改一下对应的参数,因为设置的为 name 等于 test 时会路由到灰度的节点,那如果为 testi 。

image.png

85是第一次部署灰度

image.png

因为85还没上线,所以 Agent 会有无损参与的保护措施。所以第一次部署的是85,一个灰度节点。到灰度结点以后 test 是满足的,所以一直返回的是85。

image.png

可以看对应的监控,因为永远返回的是85,所以新老版本的对比是100:0。

image.png

运行一段时间后看对比会不会变化。现在永远都是新版本。

image.png

再开一个窗口去调老版本,叫 test1 ,会调不是85的那一台,会调到83。

 image.png

一个是永远返回非灰度的实例,一个是永远返回灰度的一个实力。一个是85,一个是83。微后看一监控会不会变化。因为监控有延迟,里面可以比较新老版本的错误数、RT等,会精确到对应的接口。因为代码中访问的是 user ,所以会自动解析出 pass 请求的数据。由图新老版本一个是62,一个37。

image.png

因为一开始是较早跑的,所以数据会稍大一点,若跑久了,大概是5:5的概率。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
106 3
|
2月前
|
消息中间件 API 持续交付
后端开发中的微服务架构实践####
【10月更文挑战第21天】 本文深入探讨了微服务架构在后端开发中的应用,从基本概念出发,详细阐述了微服务的核心优势、设计原则及关键技术。通过实际案例分析,揭示了微服务如何助力企业应对复杂业务需求,提升系统的可扩展性、灵活性与可靠性。同时,也指出了实施微服务过程中可能面临的挑战,并提供了相应的解决方案和最佳实践。 ####
41 3
|
15天前
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
65 16
|
2月前
|
弹性计算 持续交付 API
构建高效后端服务:微服务架构的深度解析与实践
在当今快速发展的软件行业中,构建高效、可扩展且易于维护的后端服务是每个技术团队的追求。本文将深入探讨微服务架构的核心概念、设计原则及其在实际项目中的应用,通过具体案例分析,展示如何利用微服务架构解决传统单体应用面临的挑战,提升系统的灵活性和响应速度。我们将从微服务的拆分策略、通信机制、服务发现、配置管理、以及持续集成/持续部署(CI/CD)等方面进行全面剖析,旨在为读者提供一套实用的微服务实施指南。
|
2月前
|
存储 监控 API
深入解析微服务架构及其在现代应用中的实践
深入解析微服务架构及其在现代应用中的实践
89 12
|
1月前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
1月前
|
算法 NoSQL Java
微服务架构下的接口限流策略与实践#### 一、
本文旨在探讨微服务架构下,面对高并发请求时如何有效实施接口限流策略,以保障系统稳定性和服务质量。不同于传统的摘要概述,本文将从实际应用场景出发,深入剖析几种主流的限流算法(如令牌桶、漏桶及固定窗口计数器等),通过对比分析它们的优缺点,并结合具体案例,展示如何在Spring Cloud Gateway中集成自定义限流方案,实现动态限流规则调整,为读者提供一套可落地的实践指南。 #### 二、
73 3
|
1月前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
179 5
|
1月前
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
53 1
|
1月前
|
监控 安全 持续交付
构建高效微服务架构:策略与实践####
在数字化转型的浪潮中,微服务架构凭借其高度解耦、灵活扩展和易于维护的特点,成为现代企业应用开发的首选。本文深入探讨了构建高效微服务架构的关键策略与实战经验,从服务拆分的艺术到通信机制的选择,再到容器化部署与持续集成/持续部署(CI/CD)的实践,旨在为开发者提供一套全面的微服务设计与实现指南。通过具体案例分析,揭示如何避免常见陷阱,优化系统性能,确保系统的高可用性与可扩展性,助力企业在复杂多变的市场环境中保持竞争力。 ####
53 2