微服务应用如何实现无损上下线|学习笔记(二)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 快速学习微服务应用如何实现无损上下线

开发者学堂课程【微服务应用如何实现无损上下线:微服务应用如何实现无损上下线】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/974/detail/14895


微服务应用如何实现无损上下线

(6) Mse 无损上线的产品化的能力:

正常发布上线的实例的流量,随时间缓慢增加,用到了就绪检查关联服务预热,在服务预热之后,可通过。

通过修改服务的预热模型,预热时间两个图是一样,大约两分钟,但是此图,刚开始应用启动时候流量增加的更缓慢,下图高阶的预热模型更适合复杂的场景。

图片1.pngMse 实现应用无损上下线的最佳时间 demo 进行演示

前提条件:

开启MSE微服务治理

(1).已创建Kubernetes集群,请参见创建Kubernetes托管版集群。

(2).已开通MSE微服务治理专业版,请参见开通MSE微服务治理。

准备工作:

本实践所使用的 Agent 目前还在灰度中,需要对应用 Agent进行灰度升级,升级文档:

https://help.aliyun.com/document_detail/392373.html

应用部署在不同的 Region  (暂时仅支持国内 region )请使用对应的Agent 下载地址:

http://arms-apm-cnbeijing.oss-cn-[regionid].aliyuncs.com/2.7.1.3-mse-beta/,注意替换地址中的 [regionld] ,regionld 是阿里云 regionld,

例如Region北京Agent地址为:

http://arms-apm-cn-beijing.oss-cn-beijing.aliyuncs.com/2.7.1.3-mse-beta/

演示:

1. 需要mse 专业版的ack 集群。

2. 灰度升级 ack 集群应用 Agent

(1) 登录容器服务控制台,在左侧导航栏单击集群。

(2)在集群列表页面单击目标集群名称。

(3)由于当前ack 集群没有pllot 实例,所以应对ack 集群进行 pllot Agent的灰度升级;

左侧导航栏选择工作负载>无状态,然后选择命名空间,然后选择 mse-pllot

假如是最新的用户去创建 ack 集群开通 mse ,可能命名空间名字是 ack-onepllot。

步骤:在集群详情页面,左侧导航栏选择工作负载>无状态,命名空间选择ack-onepilot,

(4)选择命名空间后,可以看到界面有pllot实例(ack-onepllo-tack-onepllot),点击编辑

(5) mse 的配置 Agent 的灰度(pllot 增加新下载的 Agent 环境变量) 然后单击右上方的更新。

变量名称:ARMS_INIT_ARMS_AGENT_DOMNLOAD_URL

变量值:edas-public.oss-cn-hangzhou.aliyun.com/xxxxxx/

下载地址:

应用部署在不同的 Region  (暂时仅支持国内 region )请使用对应的Agent 下载地址:

http://arms-apm-cnbeijing.oss-cn-[regionid].aliyuncs.com/2.7.1.3-mse-beta/,注意替换地址中的 [regionld] ,regionld 是阿里云 regionld,

例如Region杭州Agent地址为:

http://arms-apm-cn-Zhangjiakou.oss-cn-Zhangjiakou.aliyuncs.com/2.7.1.3-mse-beta/

图片2.png

(6)灰度升级 ack 集群应用 Agent完成:

图片3.png

2.部署应用实例

(1)拷贝文件内容

(2)使用 yaml 直接创建

(3)创建成功

图片4.png

(4)介绍应用架构:

由 Zuul网关以及后端的微服务应用实例(Spring cCloud)微服务调用链路构成。

网关会分别向A应用的正常版本或灰度版本定时发送流量 ,灰度版本流量从SC_A 到 SC_B 到 SC_C ;正常版本流量从 SC_A 到 SC_B 到SC_C;

在正常版本里,demo 会从未达标的版本 SC_B 的无损上线关掉,在进行定时扩缩容时,可以在 SC_A 的可观测的页面看到有流量的损耗,然后 SC_ C 也做了定时扩缩容,为了演示应用上线过程中的服务预热相关功能。

图片5.png

3.Demo的实际效果:

针对其中的 SC_B 应用和 SC_C 应用,都开了相应的定时扩缩容,模拟应用的上下线过程

(1)演示Demo的ploot在阿里云服务ack 中创建好后

在mse 控制台观察应用是否都正常接入mse,查看应用 mse 中应用接入的情况可通过 mse 的微服务治理中心->应用列表

(2)接入到 mse 当中的应用情况,从列表里面看到有五类应用

第一个是 Spring-Cloud-zuwl,是一个实例;符合我们预期。

第二个和第三个,是应用 Spring-Cloud-A 和Spring-Cloud-B ,都部署了两个不同的版本,每个版本有两 pllot ,一共4个,也符合预期。

Spring-Cloud-C 只有一个版本,两个实例,也符合预期。

Nacos_server

应用能正常接入 mse 微服务应用治理中心

(3)无损下线的相关功能:

对Spring-Cloud-B的未达标版本关闭了无损下线的功能,所以理想的情况是在 Spring-Cloud-A 应用的 qps 中看,可以看到请求下游的过程中会出现流量的损失。

图片6.png

在 mse 控制台看是否符合预期。

图片7.png

因为 Spring-Cloud-B 的应用不停的定时扩缩容模拟无损下线的效果,在 Spring-Cloud-A 调用Spring-Cloud-B 未达标的版本的过程中,会出现请求报错,但是灰度版本开启了无损下线的功能,所以上游的 Spring-Cloud-A 调用下游 Spring-Cloud-B 的过程中没有流量的损耗,验证无损下线功能生效。

对比来看,因为 Spring-Cloud-C 开启了无损下线功能,可以看 Spring-Cloud-B调用 Spring-Cloud-C 的过程中是否会出现流量有损。通过应用的观测页面可以看到,因为 Spring-Cloud-C 开通了无损下线的功能,所以上游调用下游的过程中没有流量损耗。

无损下线功能演示结束,无损下线在 mse 里面就是只要接入 mse 的应用,是给应用默认开启了无损下线功能。

(4)mse无损上线的功能:

通过微服务治理中心的无损上下线的菜单栏,进入界面。

界面的左侧,是接入mse应用的列表。

在选择具体的应以后,右上角是应用的无损上线的配置栏。

点击配置的按钮,可以做配置,配置是无损上线的小流量预热的预热时长,预曲线,延迟注册时间的参数设置,服务注册关联k8s的就绪检查以及服务预热关联k8s就绪检查等等的配置。

在进入之后有提供默认的配置,默认的配置通过开关开启之后,默认的配置会生效,如果开关接入,默认关闭,尽管这些默认配置有值,但是无损上线的功能没有开启。

图片8.png

当前应用的哪些事件完成统计的可观测图,因为应用一直在模拟上下线过程,实际有服务注册,还有无损下线的事件的条形图,其他几个功能,对Spring-Cloud相关的功能没开启,主要通过

Spring-Cloud-C的这个应用去模拟应用的无损上线的过程,

图片9.png

Spring-Cloud-C预热时间是120秒,预约曲线2次,因为无损上线小流量预热是通过在消费端的利用特定的预约小流量均衡算法进行流量再分配,因此使用小流量预热功能,需要把这个上游的消费者的无损上线的配置总开关开启,观察Spring-Cloud-C应用启动过程中,流量是否符合小流量预热曲线的效果;

通过可观测的列表,可看到Spring-Cloud-C的应用实例一直在重启,应用ip和pid,然后每一条分别代表一个pllot的事件以及这些事件发生的过程中的QPS 的值,在不断重启的过程中,可以看到QPS 符合预热效果,预热时间大概是两分钟。

图片10.png

无损上线相关功能结束。

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
7天前
|
运维 Kubernetes Docker
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
23 1
|
21天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
22天前
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
20天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
20天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
22天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
81 6
|
22天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
33 1
|
3月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
3月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
4月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。