速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

容器与无服务器,是竞争对手还是队友?

作者:Omer Hamerman

  • 2023-04-13
    北京
  • 本文字数:2282 字

    阅读完需:约 7 分钟

容器与无服务器,是竞争对手还是队友?

在 IT 行业,我们经常会听到诸如云计算、容器、无服务器框架等术语。

 

那么什么是云计算?容器是如何工作的?函数又如何变成无服务器的?

 

本文将尝试解读这些技术术语,并探索开发人员应该如何在技术栈中考虑采用容器或无服务器函数。

 

例如,如果你的应用程序启动时间较长,那么容器可以更好地满足你的需求。

 

需要进行大规模伸缩的高效无状态函数将从运行无服务器函数中受益。

 

容器的工作原理

 

容器是被打包好的应用程序,包含了代码以及必要的库和依赖项,可以在任何环境中运行,不管是哪种操作系统。它可以帮助开发人员轻松地构建、发布、部署和扩展应用程序。

 


图 1 虚拟机与容器之间的比较

 

以前,在容器还不是那么流行的时候,开发人员习惯于将应用程序部署在单独的虚拟机中以实现隔离。每个虚拟机都需要一个客户操作系统,需要物理硬件提供 CPU 和内存,这会导致虚拟机耗尽应用程序所需的资源。

 

采用了容器之后就不再需要客户操作系统了,因为容器引擎可以与一个或多个容器共享物理操作系统。与虚拟机相比,这是一个巨大的优势,因为现在更多的资源可用于应用程序。

 

容器镜像是由开发人员创建的,其中包含了关于容器应该如何运行的指令。然后,开发人员可以使用容器镜像来启动运行实际应用程序的容器。它包含了可以在完全隔离的环境中运行的可执行代码。应用程序的库和依赖项也打包在镜像中。Docker、Amazon ECS、Kubernetes 和 GCP Autopilot 是主要的容器化平台。

 

什么是无服务器函数

 

顾名思义,无服务器计算是计算机科学的一种范式,即开发人员不需要自己管理服务器,而由第三方服务来管理服务器,这样开发人员就可以更多地关注应用程序逻辑,不需要操心与维护服务器相关的问题。无服务器函数,一般来说,是对容器的进一步抽象,两者使用的是相同的底层技术。

 

无服务器计算的工作原理

 

如果没有物理服务器,无服务器计算是不可能实现的——只是开发人员不需要与它们交互,因为供应商(通常是像 AWS、Azure 或 GCP 这样的云供应商)承担了管理服务器的工作。通常,无服务器基础设施中是有容器的。例如,AWS 开源了他们的 Rust 项目,用于处理函数的实例化(firecracker)和用于承载容器节点的轻量级操作系统(bottlerocket)。在这种范式中,供应商为开发人员提供了一个可以编写和提交代码的环境。平台负责执行、分配物理内存、CPU 和输出,并根据应用程序运行的时间以及内存和 CPU 消耗向用户收费。这是一个巨大的优势,因为与自己运行或管理基础设施相比,它大大降低了成本。需要注意的是,无服务器函数也利用了底层的容器。在你启动无服务器函数时,云平台会启动容器,应用程序将在容器中运行。因此,底层技术是相似的,只是环境的部署、扩展和使用方式不同。

 

容器与无服务器之间的基本区别

 

你可以在下表中看到容器与无服务器函数之间的一些关键区别。


 

容器

无服务器函数

环境

用户对虚拟机、操作系统等底层基础设施拥有完全控制权;用户必须负责管理更新和补丁。

云供应商负责管理底层基础设施;用户不需要管理基础设施或补丁。

伸缩性

容器可以使用容器编排平台(如Kubernetes、ECS等)根据工作负载进行伸缩,并配置最小和最大容器数量。

由于无服务器函数更加抽象,因此与容器相比,只需要提供最少的配置。当然,为了进行节流,在用户可以定义允许多少并发调用方面存在一些限制。

启动时间

容器一直在运行应用程序,因此启动时间更短。

无服务器有冷启动和热启动的概念,如果应用程序空闲时间较长,启动时间也将更长。当长时间不使用应用程序时,应用程序会休眠或停止,因此启动时间较长。

运营成本

根据使用时间对用户收取费用——即用即付模式。

根据应用程序运行的持续时间、内存和计算对用户收取费用。内存、CPU和应用程序运行得越多,费用就越高。

 

用例

 

容器和无服务器计算有几种日常的应用场景。有些解决方案可以通过使用容器或无服务器函数来实现。不过,主要的区别在于容器和无服务器函数的定价方式、与云端其他应用程序和服务的集成以及基于负载进行伸缩的能力。

 

例如,如果你的应用程序是一个基于 IP 地址查找地理位置的短时间进程,那么它可以是无服务器的。随着请求数量的增加,无服务器函数将会自动伸缩,无需任何人工干预。如果是 Web 应用程序,需要长时间保持运行,那么容器可能更合适。

 

此外,需要更快访问存储的进程可以使用容器,因为它们可以与文件系统集成。一个例子是集成运行在Amazon ECS上的容器,这些容器可以使用高度可伸缩的EFSAzure Files进行存储。

 

下面的决策树可能有助于决定选择容器还是无服务器函数。

 


图 2 选择容器或无服务器函数的简单决策树

 

两者之间可能存在重叠,下面将讨论容器和无服务器函数的一些常见用例。

 

容器

 

编程语言支持

 

当你将应用程序打包到容器中,它就与平台无关了。无服务器函数支持一些最常见的运行时环境,如 Java、Python、Go 等。但是,如果无服务器函数的运行时不支持应用程序所使用的编程语言,那么容器将是理想的解决方案。容器可以使用任何容器编排平台(如 Kubernetes)进行部署。

 

托管长时间运行的应用程序

 

容器更容易运行需要作为服务长时间运行的 Web 应用程序。例如,跟踪网站用户行为的跟踪应用程序就可以使用容器部署。容器可以根据生成的事件进行伸缩。我们还可以利用 Kubernetes、AWS Fargate 等流行技术来编排容器。

 

无服务器

 

API 端点

 

组织可以使用无服务器应用程序为 Web 或移动服务器部署 API 端点。这些 API 可以是无状态的和短生命周期的,可以根据事件触发。

 

物联网处理

 

随着家庭和工业自动化的发展,物联网设备的使用显著增加。这些物联网设备可以利用无服务器计算的强大功能。

 

事件流

 

在实时事件流场景中,需要根据特定条件填充或过滤事件,开发人员可以使用短生命周期的无服务器函数。然后,你可以使用这些函数检查事件是否有效,或者用人口统计信息来填充事件,等等。

 

总结

 

容器和无服务器应用程序都是可以让开发人员受益的与云无关的工具。根据经验,容器提供隔离性和灵活性,而无服务器有助于开发,并帮助你以最小的运行时成本进行自动伸缩。

 

选择使用容器还是无服务器应用程序取决于具体的用例。例如,如果需要构建一个提供快速、短时间响应的 API 服务器,那么无服务器框架会更好。如果应用程序需要始终可用和运行,那么选择容器化应用程序更合适。

 

原文链接

https://www.infoq.com/articles/containers-serverless-rivals-cohorts/


相关阅读:

通通透透看无服务器计算:由来、场景和问题

无服务器应用程序开发的最新趋势

无需服务器开发,实现设备状态缓存方案——实践类

递归无服务器函数是云端最大的计费风险?

2023-04-13 10:2411534

评论 1 条评论

发布
用户头像
不是一个维度的东西。Serverless对应的是有服务架构。容器对标的是传统的虚拟机
2023-04-18 10:19 · 上海
回复
没有更多了
发现更多内容

【等保小知识】信息系统怎么定义?等保测评多久一次?

行云管家

信息系统 等保 等保测评

TiDB连接的探活功能探索

TiDB 社区干货传送门

TiDB 源码解读 6.x 实践 数据库连接

SD-WAN技术如何优化TikTok直播网络?

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 tiktok直播 tiktok直播网络

PD虚拟机工具箱 Parallels Toolbox mac一键激活版 附永久密钥

理理

决战毫秒间!火山引擎联合奇游,竞技游戏快人一步

新消费日报

企业采购比价:品牌采购时借用淘宝商品详情接口来采购比价

tbapi

淘宝商品详情接口

如何通过SD-WAN实现多云平台的高效互联?

Ogcloud

SD-WAN 多云管理 SD-WAN组网 多云互联 多云部署

探讨拼多多商品 API 接口:运用及收益

科普小能手

拼多多 API API 接口 拼多多商品详情接口 拼多多API

山西省等保测评公司名单【2025】

行云管家

网络安全 等保 山西

HyperWorks基于 Shrink Warp Mesh 的零部件网格剖分

智造软件

仿真 仿真软件 Hypermesh

ticdc 同步延迟指标与原理解析

TiDB 社区干货传送门

6.x 实践

喜报 | XSKY 星辰天合顺利通过国家级专精特新“小巨人”复核

XSKY星辰天合

软件定义存储

携手上海证券,共同见证市场活跃背景下交易服务新趋势

非凸科技

上海证券 非凸科技

【JIT/极态云】技术文档--钉钉自建组织

武汉万云网络科技有限公司

低代码

TiDB v8.x Tiproxy组件

TiDB 社区干货传送门

8.x 实践

DR Auto-Sync:TiDB 同城两中心自适应同步复制技术解析

TiDB 社区干货传送门

新版本/特性解读

YOLOP 多任务算法详解

地平线开发者

自动驾驶 算法

【GreatSQL优化器-04】贪婪搜索算法浅析

GreatSQL

如何理解ArkTS不支持structural typing

威哥爱编程

华为 HarmonyOS Open Harmony ArkTS HarmonyOS NEXT

Presentify for mac(电子教鞭) v4.1.5激活版

理理

“老爷机”训不动Lora?一台云电脑就可以让你轻松炼丹

Finovy Cloud

LoRa 云电脑

【JIT/极态云】技术文档--标准组织

武汉万云网络科技有限公司

低代码

双 11 营销活动数量、转化率双提升,火山引擎数智平台为此都做了什么?

字节跳动数据平台

Navicat Premium:数据库管理全能王,一键掌控多元数据库世界

理理

Movist Pro:超高清视频播放引擎,流畅播放各类视频!

理理

好用的数据分析统计Minitab Express for mac激活补丁下载安装

理理

synergy for mac永久密钥 附安装教程 跨平台的键鼠共享工具

理理

Premiere Pro 2024 破解资源 PR2024中文版安装包(mac/win永久使用)

理理

淘宝API接口探索:图片搜索拍立淘与商品评论的深度挖掘

代码忍者

API 接口 pinduoduo API

TiDB基于硬件部署估算 (RU)容量功能探索

TiDB 社区干货传送门

TiDB 源码解读 新版本/特性解读

Paste for Mac高效剪切板管理器,v4.1.2中文激活版

理理

容器与无服务器,是竞争对手还是队友?_架构_InfoQ精选文章