first commit

This commit is contained in:
张乾
2024-10-16 13:06:13 +08:00
parent 2393162ba9
commit c47809d1ff
41 changed files with 9189 additions and 0 deletions

View File

@ -0,0 +1,43 @@
因收到Google相关通知网站将会择期关闭。相关通知内容
10 自动化 CI&CD 与灰度发布
环境管理和自动化部署
当我们从传统开发迁移到 Serverless 下,对于环境和部署的管理思路也会有所不同。当用户转到 Serverless ,可以轻松地提供更多的环境,而这个好处常被忽略。
当我们开发项目时,通常需要一个生产环境,然后需要预发环境,还有一些测试环境。但通常每个环境都需要消耗资源和成本,以保持服务在线。而大多数时候非生产环境上的访问量非常少,为此付出大量的成本很不划算。
但是,在 Serverless 架构中,我们可以为每位开发人员提供一个准生产环境。做 CI/CD 的时候,可以为每个功能分支创建独立的演示环境。
当团队成员在开发功能或者修复 bug 时,想要预览新功能,就可以立即部署,而不需要在自己机器上模拟或者找其他同事协调测试环境的使用时间。
这一切都受益于 Serverless我们不需要为空闲资源付费。当我们去部署那些基本没有访问量的环境时成本是极低的。
由于部署新环境变得很容易,对于自动化部署的要求就变高了。当然无论是否采用 Serverless 架构,自动化部署都很重要。能否自动化地构建、部署和创建整个环境是判断开发团队优秀与否的重要因素。在 serverless 场景,这种能力尤为重要,因为只有这样才能充分利用平台的优势。
后面的课程我们会了解到,借助于函数计算平台提供的 Funcraft 工具,开发人员可以用从前做不到的方式在准生产环境中轻松部署和测试代码。
灰度发布
由于 Serverless 提供的弹性机制,没有访问量的时候能自动缩容到零,极大地节约了部署的多环境的成本。然而在同一套环境内的多个不同的版本也可以受益于这套机制。
传统应用虽然也支持在一个环境中并存多个版本,但相比于 Serverless 更加困难。首先每个版本都需要相对独立的运行环境,会消耗更多的资源。其次需要解决多个版本之间流量的分配问题。
在 FaaS 上这些问题已经被版本和别名机制完美的解决。由于没有流量就不消耗计算资源,所以发布一个版本的成本极低,每次发布都可以形成一个版本。然后通过别名进行版本的切换和流量分配。
基于 FaaS 的这套抽象,让灰度发布和 A/B 测试变得非常的简单。不再需要像 K8s 那样复杂的基础设置,开发者也能轻松地享受到平滑升级和快速验证的高级特性。
结语
Serverless 让开发和部署都变得更加的简单。希望您能继续探索其他 Serverless 和函数计算的内容,更多相关的资料可以访问函数计算的产品页 https://www.aliyun.com/product/fc

View File

@ -0,0 +1,39 @@
因收到Google相关通知网站将会择期关闭。相关通知内容
24 Serverless 应用如何管理日志&持久化数据
实时日志
首先SAE 支持查看应用实例分组下各个 Pod 的实时日志。当应用出现异常情况时,可以通过查看 Pod 的实时日志定位问题。当应用运行时,可以在【控制台 - 日志管理菜单下 - 实时日志子菜单】方便地看到应用实例的实时日志。
文件日志
SAE 将业务文件日志(不包含 stdout 和 stderr 日志)收集并输入 SLS 中,实现无限制行数查看日志、自行聚合分析日志,方便业务日志对接,并按日志使用量计费。
您可以在部署应用时配置日志收集服务,填入需要采集的日志源,对于滚动日志的场景,可以填入通配符进行解决。
当配置完成后,可以在【控制台 - 日志管理菜单 - 文件日志子菜单】方便地看到采集的文件日志。
NAS 持久化存储
由于存储在容器中数据是非持久化的SAE 支持了 NAS 存储功能,解决了应用实例数据持久化和实例间多读共享数据的问题。
您可以通过部署应用来配置持久化存储,选择创建好的 NAS并填入容器中对应的挂载路径即可。
当配置完成后,可以通过 cat /proc/mount | grep nfs 命令查看是否挂载成功,或者可以准备 2 个应用实例A 和 B分别挂载 NAS。对 A 执行写入命令 echo “hello” > tmp.txt对 B 执行读取命令 cat tmp.txt。如果 B 中能够读取到在 A 中写入的 hello表示 NAS 挂载成功。

View File

@ -0,0 +1,98 @@
因收到Google相关通知网站将会择期关闭。相关通知内容
28 如何通过压测工具+ SAE 弹性能力轻松应对大促
传统大促挑战
一次常见的大促活动,技术人员通常会从下面几个方面着手,进行准备工作:
架构梳理:对参与大促的服务,进行系统性的架构梳理;
容量规划:结合架构梳理,确定系统 SLA 指标,形成容量模型,帮助业务进行评估;
性能测试:核心系统的单机容量评估,与核心链路全链路压测,可以验证容量模型,发现系统存在的问题;
应用/数据库优化:对发现的系统问题,譬如热点、死锁或慢 SQL 等,进行优化,确保系统可以支撑大促;
准备扩容方案:通过容量规划与性能测试,可以确定一套满足活动需求的扩容方案,既保障业务,又降低成本;
应急预案准备:当遇到突发情况如何应对,譬如业务降级,砍掉非核心逻辑,或者限流降级,保障核心链路稳定;
大促在线应急保障:专人专项,对问题进行响应,执行应急预案。
要完成上述准备工作,经常会遇到如下痛点:
系统核心全链路,缺少全局关系视角。需要花大量时间,整理依赖关系。
链路上下游问题、定位问题比较耗时。压测与在线应急保障过程中,汇总链路上下游问题,定位问题比较耗时,缺少快速定位分析工具。
业务开发迭代快,需要常态化压测支持。大量重复性人力投入,给大家造成很大负担。
预留资源成本高,需要频繁扩缩容。需要产品化支持自动弹性伸缩,降低自建机房等高成本高闲置的固定投入。
SAE 大促解决方案
首先SAE 是一款面向应用的 Serverless PaaS 平台,在传统 PaaS 功能之外,提供了完备的全链路监控、微服务管理等能力,并借助 Serverless 能力,最大程度进行快速扩缩容、降低手工运维成本。
SAE 提供的解决方案,将从三方面入手:
指标可视化:借助应用监控 ARMS 提供丰富的 JVM、全链路 Tracing 、慢 SQL 等功能,便捷地评估水位、定位问题;
应用高可用:借助 AHAS 限流降级能力,流量激增时,保护核心服务,保障可用性不完全跌 0
性能压测:借助压测工具如 PTS模拟单机压测或全链路压测验证容量规划、发现应用问题。
快速压测验证
那么如何通过 SAE ,进行一次快速的大促压测验证呢?下面将进行一次完整的展示:
第一步:观察应用监控指标,大致拟定弹性/压测/限流降级
通过观察应用监控,对日常业务的监控指标,有一个大致的概念。以一个典型的电商类应用为例。
从监控情况看:
该应用为 HTTP 微服务应用;
应用依赖大量 HTTP 微服务调用,少量使用 Redis / MySQL 服务,适合使用单机 + 分布式压测工具,分别进行压测;
QPS 指标,相比 CPU、MEM 和 RT 指标,对业务更敏感,更适合作为弹性策略指标。
第二步:选择合适的压测工具
根据业务诉求,可以选择快速使用的工具,或功能完整的压测工具。
譬如单机 HTTP 压测工具 ab、wrk可以提供简单快速的压测方式但只支持单机、不支持上下文。
如果我们需要支持 WebSocket 、常态化压测,云产品 PTS 可以提供较为完整的服务,相比自建成本更低。
第三步:配置 SAE 弹性伸缩策略 + AHAS 限流降级策略
无需精准设置,选择一些合适的指标,配置 SAE 弹性伸缩策略,或额外配置 AHAS 限流策略 / ARMS 告警。
对 API 类型,可通过对 API QPS、SQL QPS 等指标进行限流,保障超过系统水位的请求,快速 failover降低对容量内业务的 SLA并选择应用监控指标 QPS、RT配置弹性规则让系统进行弹性伸缩
对于计算型应用,则可选择更敏感的指标,如 CPU、Memory 对应用进行扩缩容。
第四步:执行压测 观察结果 优化代码 调整策略配置
1根据压测与监控结果看是否有必要优化代码或调整 SAE 弹性伸缩策略、AHAS 限流策略。 2执行压测查看压测结果发现存在失败请求。 3查看监控异常发现存在 GC 异常。通过 SAE 控制台,优化 JVM 参数解决。 4再次压测验证问题是否解决。 5如此重复一两轮解决其中发现的主要问题可以更从容地面对大促。
详细演示过程请点击【视频课链接】进行观看。