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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,182元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 快速学习微服务治理实践之金丝雀发布

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

课程地址: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的概率。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1223 5
|
10月前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
543 86
|
5月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
338 12
|
10月前
|
监控 持续交付 API
深入理解云计算中的微服务架构:原理、优势与实践
深入理解云计算中的微服务架构:原理、优势与实践
463 83
|
7月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
8月前
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
424 17
|
7月前
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
|
10月前
|
弹性计算 持续交付 API
构建高效后端服务:微服务架构的深度解析与实践
在当今快速发展的软件行业中,构建高效、可扩展且易于维护的后端服务是每个技术团队的追求。本文将深入探讨微服务架构的核心概念、设计原则及其在实际项目中的应用,通过具体案例分析,展示如何利用微服务架构解决传统单体应用面临的挑战,提升系统的灵活性和响应速度。我们将从微服务的拆分策略、通信机制、服务发现、配置管理、以及持续集成/持续部署(CI/CD)等方面进行全面剖析,旨在为读者提供一套实用的微服务实施指南。
|
9月前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
9月前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
526 5