来源 | 《云原生架构白皮书》

【导读】今日,由阿里云 20+ 位云原生技术专家共同编撰的《云原生架构白皮书》正式对外发布。作为业界第一本全方位构建云原生架构规划与实践全景图的白皮书,本书在详细阐述云原生架构定义的同时,完整展示云原生架构应用所需的演进路径与设计规则,旨在帮助企业更好地理解与应用云原生架构,助力企业数字化转型升级。(文末有惊喜)

以下为 Serverless 章节内容:

随着以 Kubernetes 为代表的云原生技术成为云计算的容器界面,Kubernetes 成为云计算的新一代操作系统。面向特定领域的后端云服务(BaaS)则是这个操作系统上的服务 API,存储、数据库、中间件、大数据、AI 等领域的大量产品与技术都开始提供全托管的云形态服务,如今越来越多用户已习惯使用云服务,而不是自己搭建存储系统、部署数据库软件。

当这些 BaaS 云服务日趋完善时,Serverless 因为屏蔽了服务器的各种运维复杂度,让开发人员可以将更多精力用于业务逻辑设计与实现,而逐渐成为云原生主流技术之一。

技术特点

Serverless 计算包含以下特征:

  • 全托管的计算服务,客户只需要编写代码构建应用,无需关注同质化的、负担繁重的基于服务器等基础设施的开发、运维、安全、高可用等工作;

  • 通用性,结合云 BaaS API 的能力,能够支撑云上所有重要类型的应用;

  • 自动的弹性伸缩,让用户无需为资源使用提前进行容量规划;

  • 按量计费,让企业使用成本得有效降低,无需为闲置资源付费。

函数计算(Function as a Service)是 Serverless 中最具代表性的产品形态。它通过把应用逻辑拆分多个函数,每个函数都通过事件驱动的方式触发执行,例如当对象存储(OSS)中产生的上传 / 删除对象等事件,能够自动、可靠地触发 FaaS 函数处理,且每个环节都是弹性和高可用的,客户能够快速实现大规模数据的实时并行处理。同样的,通过消息中间件和函数计算的集成,客户可以快速实现大规模消息的实时处理。

目前函数计算这种 Serverless 形态在普及方面仍存在一定困难,例如:

  • 函数编程以事件驱动方式执行,这在应用架构、开发习惯方面,以及研发交付流程上都会有比较大的改变;

  • 函数编程的生态仍不够成熟,应用开发者和企业内部的研发流程需要重新适配;

  • 细颗粒度的函数运行也引发了新技术挑战,比如冷启动会导致应用响应延迟,按需建立数据库连接成本高等。

针对这些情况,在 Serverless 计算中又诞生出更多其他形式的服务形态,典型的就是和容器技术进行融合创新,通过良好的可移植性,容器化的应用能够无差别地运行在开发机、自建机房以及公有云环境中;基于容器工具链能够加快解决 Serverless 的交付。云厂商如阿里云提供了弹性容器实例(ECI)以及更上层的 Serverless 应用引擎(SAE),Google 提供了 CloudRun 服务,这都帮助用户专注于容器化应用构建,而无需关心基础设施的管理成本。此外 Google 也开源了基于 Kubernetes 的 Serverless 应用框架 Knative。

相对函数计算的编程模式,这类 Serverless 应用服务支持容器镜像作为载体,无需修改即可部署在Serverless 环境中,可以享受到 Serverless 带来的全托管免运维、自动弹性伸缩、按量计费等优势。下面是传统的弹性计算服务、基于容器的 Serverless 应用服务和函数计算的对比:

常见场景

近两年来 Serverless 近年来呈加速发展趋势,用户使用 Serverless 架构在可靠性、成本和研发运维效率等方面获得显著收益。

小程序 /Web/Mobile/API 后端服务

在小程序、Web/Moible 应用、API 服务等场景中,业务逻辑复杂多变,迭代上线速度要求高,而且这类在线应用,资源利用率通常小于 30%,尤其是小程序等长尾应用,资源利用率更是低于 10%。Serverless 免运维,按需付费的特点非常适合构建小程序 /Web/Mobile/API 后端系统,通过预留计算资源 + 实时自动伸缩,开发者能够快速构建延时稳定、能承载高频访问的在线应用。在阿里内部,使用 Serverless 构建后端服务是落地最多的场景,包括前端全栈领域的 Serverless For Frontends,机器学习算法服务,小程序平台实现等等。

大规模批处理任务

在构建典型任务批处理系统时,例如大规模音视频文件转码服务,需要包含计算资源管理、任务优先级调度、任务编排、任务可靠执行、任务数据可视化等一系列功能。如果从机器或者容器层开始构建,用户通常使用消息队列进行任务信息的持久化和计算资源分配,使用 Kubernetes 等容器编排系统实现资源的伸缩和容错,自行搭建或集成监控报警系统。而通过 Serverless 计算平台,用户只需要专注于任务处理逻辑的处理,而且 Serverless 计算的极致弹性可以很好地满足突发任务下对算力的需求。

通过将对象存储和 Serverless 计算平台集成的方式,能实时响应对象创建、删除等操作,实现以对象存储为中心的大规模数据处理。用户既可以通过增量处理对象存储上的新增数据,也可以创建大量函数实例来并行处理存量数据。

基于事件驱动架构的在线应用和离线数据处理

典型 Serverless 计算服务通过事件驱动的方式,可以广泛地与云端各种类型服务集成,用户无需管理服务器等基础设施和编写集成多个服务的“胶水”代码,就能够轻松构建松耦合、基于分布式事件驱动架构的应用。

通过和事件总线的集成,无论是一方 BaaS 云服务,还是三方的 SaaS 服务,或者是用户自建的系统,所有事件都可以快速便捷地被函数计算处理。例如通过和 API 网关集成,外部请求可以转化为事件,从而触发后端函数处理。通过和消息中间件的事件集成,用户能快速实现对海量消息的处理。

开发运维自动化

通过定时触发器,用户用函数的方式就能够快速实现定时任务,而无须管理执行任务的底层服务器。通过将定时触发器和监控系统的时间触发器集成,用户可以及时接收机器重启、宕机、扩容等 IaaS 层服务的运维事件,并自动触发函数执行处理。

技术关注点

计算资源弹性调度

为了实现精准、实时的实例伸缩和放置,必须把应用负载的特征作为资源调度依据,使用“白盒”调度策略,由Serverless 平台负责管理应用所需的计算资源。平台要能够识别应用特征,在负载快速上升时,及时扩容计算资源,保证应用性能稳定;在负载下降时,及时回收计算资源,加快资源在不同租户函数间的流转,提高数据中心利用率。因此更实时、更主动、更智能的弹性伸缩能力是函数计算服务获得良好用户体验的关键。通过计算资源的弹性调度,帮助用户完成指标收集、在线决策、离线分析、决策优化的闭环。

在创建新实例时,系统需要判断如何将应用实例放置在下层计算节点上。放置算法应当满足多方面的目标:

  • 容错:当有多个实例时,将其分布在不同的计算节点和可用区上,提高应用的可用性。

  • 资源利用率:在不损失性能的前提下,将计算密集型、I/O 密集型等应用调度到相同计算节点上,尽可能充分利用节点的计算、存储和网络资源。动态迁移不同节点上的碎片化实例,进行“碎片整理”,提高资源利用率。

  • 性能:例如复用启动过相同应用实例或函数的节点、利用缓存数据加速应用的启动时间。

  • 数据驱动:除了在线调度,系统还将天、周或者更大时间范围的数据用于离线分析。离线分析的目的是利用全量数据验证在线调度算法的效果,为参数调优提供依据,通过数据驱动的方式加快资源流转速度,提高集群整体资源利用率。

负载均衡和流控

资源调度服务是 Serverless 系统的关键链路。为了支撑每秒近百万次的资源调度请求,系统需要对资源调度服务的负载进行分片,横向扩展到多台机器上,避免单点瓶颈。分片管理器通过监控整个集群的分片和服务器负载情况,执行分片的迁移、分裂、合并操作,从而实现集群处理能力的横向扩展和负载均衡。

在多租户环境下,流量隔离控制是保证服务质量的关键。由于用户是按实际使用的资源付费,因此计算资源要通过被不同用户的不同应用共享来降低系统成本。这就需要系统具备出色的隔离能力,避免应用相互干扰。

安全性

Serverless 计算平台的定位是通用计算服务,要能执行任意用户代码,因此安全是不可逾越的底线。系统应当从权限管理、网络安全、数据安全、运行时安全等各个维度全面保障应用的安全性。轻量安全容器等新的虚拟化技术实现了更小的资源隔离粒度、更快的启动速度、更小的系统开销,使数据中心的资源使用变得更加细粒度和动态化,从而更充分地利用碎片化资源。

以上内容出自阿里云出品的《云原生架构白皮书》。

本报告共分为七大章节,涵盖为什么需要云原生架构、云原生架构定义、主要云原生技术、阿里巴巴云原生架构设计、阿里云云原生产品介绍、云原生架构实践案例、云原生架构未来发展趋势几部分,详细阐述了云原生领域的整体落地应用及未来发展趋势。

还想了解更多云原生干货知识?立即扫描二维码或点击阅读原文下载阅读吧!

业界首发|云原生领域首本架构白皮书重磅发布相关推荐

  1. 云原生领域首本架构白皮书,你Get到了吗?

    来源 | <云原生架构白皮书> [导读]近日,由阿里云 20+ 位云原生技术专家共同编撰的<云原生架构白皮书>正式对外发布.作为业界第一本全方位构建云原生架构规划与实践全景图的 ...

  2. 大数据云原生能力成熟度模型,重磅发布!

    为了分享过去一年云原生产业联盟(CNIA)在标准建设.评估测试.技术研究.实践合作等方面的工作成果.探索行业最新趋势动态,云原生产业联盟于2023年1月9日举办了2022年度线上年会,发布了" ...

  3. 云原生编程挑战赛落幕,阿里云推出云原生领域首本《应用多活技术白皮书》

    1 月 11 日,以"原生万物,云上创新"为主题的云原生实战峰会暨第二届云原生编程挑战赛决赛颁奖典礼在上海圆满落幕,来自阿里云.毕马威.作业帮.韵达.分众传媒等企业实战派代表分享了 ...

  4. 解析云原生2.0架构设计的8大关键趋势

    摘要:在云原生2.0阶段,我们到底需要构建一个什么样的架构?华为云首席架构师为你一一解答. 本文分享自华为云社区<华为云首席架构师独家分享:云原生2.0架构设计的8大关键趋势>,作者:技术 ...

  5. 什么是云原生中台业务架构?

    什么是云原生中台业务架构? 最近公司说要做中台架构,业务中台,技术中台,数据中台,很谦虚的请教一下,什么是业务中台?业务中台是什么样子的,它是一个什么样的产品,是一个个的业务系统吗,业务中台还有没有后 ...

  6. 精彩回顾 | 苏州农商银行新一代云原生信息科技架构体系实践

    11月18日,2022年第五届中国金融科技产业大会暨第四届中新(苏州)数字金融应用博览会"基础软件与云原生系统软件"分论坛成功举办.该论坛由由中国计算机学会CTO CLUB(苏州) ...

  7. 云原生大数据架构中实时计算维表和结果表的选型实践

    简介: 随着互联网技术的日渐发展.数据规模的扩大与复杂的需求场景的产生,传统的大数据架构无法承载. 作者 | 志羽 来源 | 阿里技术公众号 一 前言 传统的大数据技术起源于 Google 三架马车 ...

  8. 指数级暴增、复杂场景下,揭秘百度云原生湖仓架构等系列数据产品

    9月28日,百度智能云2021"云智技术论坛"智能大数据专场在上海举办.本次会议以"云智一体,让大数据发挥大价值"为主题,百度副总裁谢广军携百度多位资深技术专家 ...

  9. 博云入选 Gartner 中国云原生领域代表性厂商

    近日,Gartner 发布了<2022 年版中国 ICT 技术成熟度曲线报告>(以下简称报告).博云凭借在云原生领域长期积累的丰富产品和解决方案,连续三年入选该报告,被列为中国云原生领域代 ...

最新文章

  1. winform程序读取和改写配置文件App.config元素的值
  2. 「镁客·请讲」智加科技刘万千:技术与生态的成熟将推动自动驾驶的落地应用...
  3. 怎么将计算机网络设置家庭,“windows无法在此计算机上设置家庭组”问题如何解决...
  4. 数据结构之Treap
  5. Android L Settings 简要分析
  6. C语言的编译器常见的有哪些?
  7. 二叉树的遍历:前序、中序、后序、层次遍历(仅例题)
  8. RS(2)--从文本数据到用户画像
  9. ReentrantLock学习
  10. Python(pycharm)在windows下路径 ( ' / ' 与' \ ' )的问题
  11. Windows Phone 7 利用计时器DispatcherTimer创建时钟
  12. SQLServer之深度分析Insert
  13. 刹车时到底要不要踩离合器?
  14. Eclipse — 快速生成提示代码和快速导包
  15. http工作原理和机制
  16. texstudio语法检查
  17. MySQL无法启动,服务没有报告任何错误
  18. 计算机网络nic,NIC,什么是NIC,NIC介绍--电子百科词库--科通芯城,IC及其他电子元器件交易型电商平台100%正品保证...
  19. 计算机学院学生王鹏,王鹏-计算机与控制工程学院
  20. 单端口和双端口的优势_双端口测量和 S参数 - 灵活应用网络分析仪

热门文章

  1. 探秘手淘高可用平台(三)——热修复和开发流程
  2. python-基于UDP通信的套接字,socketserver模块的使用
  3. 20172331 《Java程序设计》第3周学习总结
  4. 【Swing/文本组件】定义自动换行的文本域
  5. (爱加密系列教程十二) 如何防止jd-gui查看代码
  6. Learning SQL--多表查询
  7. jQuery页面滚动 动态加载图片等元素
  8. 《Linux编程》学习笔记 ·000【Linux介绍】
  9. [Git] 多个分支修改相同文件
  10. php排列组合1004无标题,PHP的排列组合有关问题