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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 快速学习微服务应用如何实现无损上下线

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

课程地址: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

无损上线相关功能结束。

相关文章
|
1天前
|
Kubernetes Cloud Native 持续交付
构建高效稳定的云原生应用:容器编排与微服务治理实践
【5月更文挑战第14天】 随着企业数字化转型的深入,云原生技术以其弹性、敏捷和可扩展的特性成为现代应用开发的首选模式。本文将探讨如何通过容器编排工具如Kubernetes以及微服务架构的有效治理,构建和维护高效且稳定的云原生应用。我们将分析容器化技术的优势,并结合案例讨论在多云环境下实现持续集成、持续部署(CI/CD)的最佳实践,同时解决微服务带来的分布式复杂性问题。通过本文的阐述,读者将获得一套提升系统可靠性和业务连续性的策略框架。
4 0
|
9天前
|
监控 负载均衡 API
微服务架构在现代企业中的应用与挑战
微服务架构已成为现代企业构建灵活且可扩展软件系统的首选。然而,随着其应用的普及,企业也面临着一系列新的挑战。本篇文章将探讨微服务架构的优势、实施时遇到的问题以及解决这些问题的策略。
|
9天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:Kubernetes与微服务架构的融合
【5月更文挑战第6天】 在数字化转型的浪潮中,企业正迅速采纳云原生技术以实现敏捷性、可扩展性和弹性。本文深入探讨了如何利用Kubernetes这一领先的容器编排平台,结合微服务架构,构建和维护高效、可伸缩的云原生应用。通过分析现代软件设计原则和最佳实践,我们提出了一个综合指南,旨在帮助开发者和系统架构师优化云资源配置,提高部署流程的自动化水平,并确保系统的高可用性。
29 1
|
15天前
|
消息中间件 PHP 数据库
【PHP开发专栏】PHP在微服务架构中的应用
【4月更文挑战第29天】微服务架构将大型应用拆分成独立小服务,PHP在其中可作为API网关、微服务提供者,参与服务发现、消息队列处理和事件驱动。最佳实践包括选择合适PHP框架、使用容器化技术、定义服务契约、采用分布式缓存、实现服务发现、监控和日志收集、优化数据库设计以及注重安全性。遵循这些实践,PHP开发者能构建高效、可扩展的微服务应用。
|
17天前
|
Kubernetes 负载均衡 Docker
【专栏】构建高效微服务架构:Docker和Kubernetes在构建微服务架构中的应用
【4月更文挑战第27天】本文介绍了Docker和Kubernetes在构建微服务架构中的应用。Docker是开源容器引擎,用于打包和分发应用,实现隔离和封装,提升可扩展性和可维护性。Kubernetes是容器编排平台,自动化部署、扩展和管理容器,提供负载均衡和故障转移。二者结合,能高效支持微服务架构。文中通过实例展示了如何将用户、商品和订单服务用Docker打包,再用Kubernetes部署和管理,确保微服务稳定运行。
|
17天前
|
敏捷开发 运维 监控
【专栏】微服务架构,以敏捷、灵活著称,通过拆分大型应用为小型自治服务,简化开发运维
【4月更文挑战第27天】微服务架构,以敏捷、灵活著称,通过拆分大型应用为小型自治服务,简化开发运维。本文探讨其基本概念、起源,核心优势(如敏捷开发、高可伸缩性)及挑战(系统复杂度、数据一致性),并分享实施策略(服务划分、技术选型、CI/CD)与实践案例(Netflix、Uber、Spotify),展示微服务如何重塑软件开发,并成为未来复杂应用系统的基础。
|
20天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:容器化与微服务架构的融合
【4月更文挑战第24天】 随着云计算的不断演进,云原生技术已成为企业数字化转型的核心动力。本文深入探讨了如何通过容器化技术和微服务架构的融合,构建高效、可扩展且易于管理的云原生应用。我们分析了容器化带来的隔离性和可移植性优势,以及微服务架构在提升系统灵活性和促进团队协作方面的重要作用。文章还提供了实施策略,包括选择合适的容器平台、确保服务间通信的安全性以及持续集成/持续部署(CI/CD)的实践,以帮助企业实现敏捷开发和快速迭代。
|
1天前
|
负载均衡 持续交付 API
构建高效微服务架构的五大关键技术
【5月更文挑战第13天】在当前软件开发领域,微服务架构已经成为一种流行趋势。本文将探讨构建高效微服务架构的五大关键技术,包括容器化部署、服务发现与注册、API网关、负载均衡以及持续集成与持续部署。这些技术可以帮助开发团队更快速、更可靠地构建和部署微服务应用,提高系统的可扩展性和可维护性。
|
1天前
|
负载均衡 JavaScript Java
构建高效微服务架构:后端开发的新视角
【5月更文挑战第13天】在现代软件开发中,微服务架构已经成为一种流行趋势。它通过将应用程序拆分为一组小型、独立的服务来提高可扩展性、弹性和可维护性。本文将探讨如何构建一个高效的微服务架构,包括选择合适的技术栈、设计良好的服务接口、确保数据一致性以及实现有效的服务发现和负载均衡。
|
1天前
|
监控 Java 开发者
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第13天】随着现代应用的复杂性日益增加,传统的单体应用架构已不足以满足快速迭代和可扩展性的需求。本文将探讨如何通过微服务架构来提升后端开发的效率和系统的可靠性,涵盖微服务设计原则、技术栈选择、部署策略以及维护实践。我们将分析微服务的优势与挑战,并提供一系列实施建议,帮助开发者在构建和维护分布式系统时做出明智决策。