Serverless 时代下微服务应用全托管解决方案

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 云原生应用平台-捌哥

Serverless 时代下微服务应用全托管解决方案

——捌哥

云原生应用平台

一、Serverless时代下微服务发展与挑战

image.png

在业务规模比较简单的早期,大多团队采用单体应用,彼时单体应用已经能够很好地满足团队的业务需求,并且在较小规模的业务研发团队中能够快速迭代。


随着业务规模的不断增长,系统变得越来越复杂,单体应用逐渐无法满足线上生产的问题。比如电商应用中,如果将交易、商品支付功能都集中在单体应用里,发布简单查询功能也可能会影响到交易,从而对整个电商系统产生影响,给企业造成损失。


因此,单体应用逐渐被微服务应用替代,微服务应用的优势能够在生产效率上不断迭代。比如从原来单体复杂的 spring MVC 架构,演变为微服务应用中成熟的 Dubbo 框架,让开发更轻量化。能够将商品团队应用的发布与交易团队解耦,保证商品团队在发布过程中不会影响交易。


随着业务进一步发展,系统愈加复杂,加之新技术的到来,比如云原生时代下 K8S 成了标准以及 Docker 容器镜像,再次加速了微服务化的过程。


世界上不存在完美的架构。根据复杂守恒性定律,虽然在单体应用环节解决了一部分系统的复杂性,但是随着业务规模的不断发展以及新技术的引入,新增了诸多复杂性,也会对现有的方式造成影响,主要体现在以下三个方面:

image.png

1.效率:随着应用规模的扩张,新的研发团队需要面临很多开发和测试中的复杂性问题。在团队协作上,不同应用团队之间如何更好地形成稳定的调用链路,在几十几百甚至上千个应用的场景下如何进行调用链路的快速部署亟待解决。此外,流量的处理、调用链路的跟踪和服务鉴权也非常影响效率。


2.稳定:微服务化之后,会出现调用链路上某核心环节出现问题,导致其他环节发生雪崩,且难以定位到具体问题所在环节。需要可视化、可观测性的工具来帮助快速定位分析问题。


3.成本:单体应用一般只需部署几台机器;到了微服务时代,随着应用数的剧增,出于可用性的考虑需要为每个应用保持一些冗余,比如一次大促中,一个调用链路会涉及到十几个应用,为了稳定性以及调用链路的安全,会进行整个链路应用的扩容,而实际上很多应用可能长时间没有流量,服务器空闲,导致巨大的成本浪费。


image.png


针对以上问题,我们总结了云原生 Serverless 时代下微服务发展的几个趋势解:


后端服务的 BaaS 化。将 DBMQ配置中心以及服务治理中心等后端微服务中间件相关的应用独立出来,做成一个后端服务,让研发人员将更多中心放在核心的业务逻辑。


客户端轻量化。将与业务无关相关的服务治理逻辑、服务注册发现逻辑沉淀到 Java agent Sidecar 等第三方的应用上,对业务更透明,方便业务快速上云。同时也能让业务团队将重心集中在业务研发的逻辑上,从而提升研发效率。


业务侧 Serverless 化。很多业务可以将应用完全托管在 SAE 这样的云原生 Serverless 平台上,对其进行全生命周期的管理,包括应用的启停、发布、回滚等。在一些流量高峰场景下能进行快速自动扩缩容,能够根据业务的流量或者指标满足整个链路的安全健康水位。另外,通过集成可观测组件,完善日志、 metrics 以及 tracing 等全调用链路的分析,提高整体应用的可观测性,能够帮助业务快速发现问题、定位问题。


因此,针对微服务场景,我们不仅限于提供资源的平台,更多的是希望与微服务已有架构更好地融合,并利用云上的服务与平台自身的应用进行最佳协同,从而达到降本增效的功能。


二、SAE微服务应用全托管解决方案介绍


image.png


SAE 是面向微服务应用的Serverless PaaS 平台。作为云平台,它能够为微服务进行全生命周期的赋能。它能将一些标准化的微服务应用以及 Serverless K8S本身的红利集中在一起,让微服务应用快速上线。以产品化的形式快速提供给用户,开箱即用,以解决用户常见的微服务问题,提升研发效率。


image.png


SAE 提供了包含但不限于 CI/CD 流水线、微服务框架、Spring CloudDubbo 、共享注册中心、K8S 容器以及诸多运维相关的功能,包含调用链、日志、告警、性能监控、流量的治理以及自动弹性等。它提供了无服务 Serverless 框架与微服务进行深度结合的最佳实践的平台。


   功能一:微服务治理增强。

image.png


Serverless 时代下,微服务的趋势是客户端越来越薄,其中与服务治理、业务逻辑无关的部分被沉淀在Java agent等组件里,通过字节码的方式集成到业务中,业务无侵入、无感知,并在过程中提供了丰富的微服务治理能力。比如流量管理相关的无损上下线、金丝雀发布、可视化数据上报等能力。


针对非 Java 场景,Java agent 也能够与不同的微服务框架进行通信。此外,与 Sidecar 之间的通信也正在不断完善建设中。


功能二:无损下线。

image.png

比如某个业务 APP 后端的服务需要升级做发布,它的服务提供者被发布重启之后,消费者无法短时间内感知服务发布的变化,导致会将流量打到错误的 IP 上,造成业务报错。


SAE 的无损上下线功能能够很好地解决上述问题,它对原有的基于注册中心的服务上下线过程进行了增强。首先在业务调研过程中,提供者主动向数字中心进行注销,同时通知消费者服务发生变化需要更新本地的服务列表信息,从而及时感知到最新上线的服务以及最新下线的服务,以选择正确的服务列表进行调用。


无损上下线能可将原先发布过程中的报错率降低 90%


功能三:前后端全链路灰度。

image.png

在实际的业务开发过程中,可能需要通过业务请求的 cookie header 甚至一些内部 IP 灰度到新发布的实例或功能上,并基于功能做一些流量验证或基本的灰度验证。


SAE 打通了此类前后端调用的 http 请求,通过网关以及微服务体系下的服务发现者和服务消费者,基于 Java agent 组件进行规则的过滤,用户通过白屏化的配置即可实现前后端的全链路灰度。


功能四:可观测。

image.png

在微服务发展过程中,服务快速定位的问题可以通过可观测功能得以解决。可观测功能包括MetricsTracing Logging ,它们 SAE 里进行了深度集成。SAE通过打通阿里云的ARMS 云监控、SLS 以及普罗米修斯等可观测性产品,在以上三方面都提供了非常完整的解决方案,能够很好地帮助开发者解决微服调用过程中的痛点。


针对基础监控调用链、实时日志的追踪以及具体的调用事件,能够快速定位问题,帮助用户在复杂的微服务场景下快速止损,维持正常的系统运行。


三、SAE 上微服务功能最佳实践


在微服务开发过程中,开发人员往往希望在测试环境有主干的稳定版本,能够在主干上进行快速回归。同时,在开发新功能时,也希望在本地的开发机器上能够快速运行并验证,因此希望将本地的正常流量和测试流量区分开。


SAE 能够轻松满足上述要求。主要应用了两个基础功能:基于端云联调的能力和针对微服务飞度的能力。分为以下四步:

image.png

步骤一:将应用部署在 SAE 测试环境。此处需要独立的注册中心。


image.png

步骤二:配置端云联调互联。需要购买 ECS 代理服务器(带公网IP),能够帮助打通本地的开发环境和 SAE 的测试环境。对中心进行打标,并且下载 agent 到本地。


image.png

步骤三:快速启动本地测试应用,进行联调验证。


image.png

步骤四:发起流量调用验证。针对正常流量以及需要测试的流量,做基于 header 的区分。


Demo演示

第一步:首先将 SAE 应用通过控制台部署到单独的测试环境,包括将应用连接到购买的注册中心上。

image.png


第二步:进行端云联调的设置。购买代理器,并在 IDE 环境下进行配置。选择购买的注册中心、带有公网 IP 的地址,并在本地环境做 local 打标。完成以上准备工作以后,即可在本地启动应用。

image.png


第三步,验证环节。正常流量会通过网关打到 A 路径上,返回路径上对应的测试环主干链路的应用 IP 可以看到 A 应用是170B 应用是161C 应用是 162 只需要将对应的测试流量标加上“--head 以及将mse-tag 设置为此前在 IDE 里做好的标志“local”即可调用。

image.png


返回的是127.0.0.1接口,说明流量已经在 A 应用和 B 应用上都已打到本地的 A C’两个实例上, C应用依然走主干,实现了开发和测试环境流量隔离的效果。


四、客户案例

image.png

广州小迈步是以数字化领先为优势的互联网科技公司。它在 SAE 上部署了十几款流量巨大的游戏 App ,后端应用也在 SAE 上进行了微服务化部署,充分利用了 SAE 上的微服务能力。


针对游戏场景的客户的个性化需求,比如系统的稳定性以及针对平台进行快速扩缩容、灰度发布以及无损上下线, SAE 提供的微服务能力能够很好地提供解决方案,为用户简化运维、降低成本并提升效率,帮助用户在短时间内快速上线新游戏,带来很好的客户价值。


未来,SAE 在微服务场景下也会持续保持能力增强。希望能够提供端到端的终极解决方案,帮助用户降低微服务开发过程中的门槛,提供新的、高阶的微服务功能,比如故障注入、全链路压测等。我们也会在运维好微服务应用的同时,不断持续投入,打造核心能力。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
12天前
|
运维 Kubernetes Docker
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
28 1
|
26天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
27天前
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
25天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
25天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
运维 Cloud Native 关系型数据库
活动回顾|阿里云 Serverless 技术实战与创新成都站回放&PPT下载
7月29日“阿里云 Serverless 技术实战与创新”成都站圆满落幕。可免费下载成都站|阿里云 Serverless 沙龙演讲 PPT。
|
人工智能 弹性计算 运维
阿里云宣布 Serverless 应用引擎 SAE2.0 将公测上线,多款产品全新升级
阿里云宣布 Serverless 应用引擎 SAE2.0 将公测上线,多款产品全新升级
70432 53
|
人工智能 弹性计算 运维
阿里云容器服务 Serverless 版(ACK Serverless)全新升级
阿里云容器服务 Serverless 版(ACK Serverless)全新升级
1612 10
|
人工智能 Serverless 开发者
阿里云丁宇:云上开发成为主流,Serverless 定义新范式
阿里巴巴研究员、阿里云智能云原生应用平台总经理丁宇,在阿里云峰会·粤港澳论坛上的发言。
阿里云丁宇:云上开发成为主流,Serverless 定义新范式
|
弹性计算 人工智能 运维
阿里云宣布 Serverless 应用引擎SAE2.0 将公测上线
7月31日,阿里云智能云原生应用平台负责人丁宇宣布,Serverless 应用引擎 SAE2.0 将于8月7日公测上线,开源版将于9月30日发布。本次升级围绕极简体验、标准开放、极致弹性三大优势展开,应用冷启动全面提效,支持缩容到 0,应用成本下降 40% 以上。
阿里云宣布 Serverless 应用引擎SAE2.0 将公测上线

热门文章

最新文章

相关产品

  • 函数计算