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

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

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

课程地址: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搭建和管理企业级网站应用
相关文章
|
13天前
|
API 持续交付 开发者
后端开发中的微服务架构实践与挑战
在数字化时代,后端服务的构建和管理变得日益复杂。本文将深入探讨微服务架构在后端开发中的应用,分析其在提高系统可扩展性、灵活性和可维护性方面的优势,同时讨论实施微服务时面临的挑战,如服务拆分、数据一致性和部署复杂性等。通过实际案例分析,本文旨在为开发者提供微服务架构的实用见解和解决策略。
|
14天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####
|
2天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
19 5
|
6天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
21天前
|
Kubernetes 负载均衡 Docker
构建高效后端服务:微服务架构的探索与实践
【10月更文挑战第20天】 在数字化时代,后端服务的构建对于任何在线业务的成功至关重要。本文将深入探讨微服务架构的概念、优势以及如何在实际项目中有效实施。我们将从微服务的基本理念出发,逐步解析其在提高系统可维护性、扩展性和敏捷性方面的作用。通过实际案例分析,揭示微服务架构在不同场景下的应用策略和最佳实践。无论你是后端开发新手还是经验丰富的工程师,本文都将为你提供宝贵的见解和实用的指导。
|
4天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####
|
6天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
7天前
|
监控 API 持续交付
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势、面临的挑战以及最佳实践策略。不同于传统的单体应用,微服务通过细粒度的服务划分促进了系统的可维护性、可扩展性和敏捷性。文章首先概述了微服务的核心概念及其与传统架构的区别,随后详细阐述了构建微服务时需考虑的关键技术要素,如服务发现、API网关、容器化部署及持续集成/持续部署(CI/CD)流程。此外,还讨论了微服务实施过程中常见的问题,如服务间通信复杂度增加、数据一致性保障等,并提供了相应的解决方案和优化建议。总之,本文旨在为开发者提供一份关于如何在现代后端系统中有效采用和优化微服务架构的实用指南。 ####
|
9天前
|
消息中间件 设计模式 运维
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过实际案例分析,揭示了其在提升系统灵活性、可扩展性及促进技术创新方面的显著优势。同时,文章也未回避微服务实施过程中面临的挑战,如服务间通信复杂性、数据一致性保障及部署运维难度增加等问题,并基于实践经验提出了一系列应对策略,为开发者在构建高效、稳定的微服务平台时提供有价值的参考。 ####
|
9天前
|
消息中间件 监控 数据管理
后端开发中的微服务架构实践与挑战####
【10月更文挑战第29天】 在当今快速发展的软件开发领域,微服务架构已成为构建高效、可扩展和易于维护应用程序的首选方案。本文探讨了微服务架构的核心概念、实施策略以及面临的主要挑战,旨在为开发者提供一份实用的指南,帮助他们在项目中成功应用微服务架构。通过具体案例分析,我们将深入了解如何克服服务划分、数据管理、通信机制等关键问题,以实现系统的高可用性和高性能。 --- ###
32 2