大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

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

作者: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:2413441

评论 1 条评论

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

舞台LED显示屏与传统LED显示屏的区别

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏 舞台表演

SD-WAN对金融行业的重要性

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

商品评价聚合:利用API从多个来源获取数据的详细指南

Noah

超越传统:人工智能赋能加持下的自动化测试

霍格沃兹测试开发学社

一次投入,多倍回报,英特尔vPro驱动全新商用AI PC

E科讯

拼多多API助力商家提升销售效果和市场竞争力

技术冰糖葫芦

API 接口

WiMinet 评说1.1:多跳无线网络的现状

Geek_ab1536

SD-WAN网络搭建技术:企业降本增效的首选

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

探秘闲鱼商品详情关键词搜索电商API接口,让你轻松找到心仪的宝贝!

联讯数据

测试开发名企定向培养训练营,快速提升核心竞争力!

霍格沃兹测试开发学社

为什么您的网站需要美国主机CDN加速?一文解答所有疑问

一只扑棱蛾子

美国主机

如何利用Allure报告提升你的测试效率?

霍格沃兹测试开发学社

Web3.0区块链技术全流程方案:DApp项目开发、推广以及运营

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

聚道云助力时尚巨头打通数据孤岛,实现全渠道管理升级!

聚道云软件连接器

案例分享

云桌面跟远程桌面有什么区别?

青椒云云电脑

云桌面 云桌面方案 云桌面系统

陆海×微帧,在海洋卫星传输环境下的极限视频压缩

微帧Visionular

视频编码 视频压缩

SD-WAN助力企业数据传输安全

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

国内行业桌面云解决方案哪家比较强?

青椒云云电脑

桌面云 云桌面 云桌面方案

揭秘「 B 站最火的 RAG 应用」是如何炼成的

Zilliz

AI Milvus Zilliz LLM rag

2024-02-28:用go语言,有一个由x轴和y轴组成的坐标系, “y下“和“y上“表示一条无限延伸的道路,“y下“表示这个道路的下限,“y上“表示这个道路的上限, 给定一批长方形,每一个长方形有(

福大大架构师每日一题

福大大架构师每日一题

KaiwuDB 拿下 “物联之星” 双项殊荣

KaiwuDB

数据库 物联网

云桌面系统厂家-青椒云

青椒云云电脑

云桌面 云桌面厂家 云桌面方案 云桌面系统

火山引擎弹性容器实例:从节点中心转型 Serverless 化架构的利器

极客天地

MES系统中的手动排产和自动排产-助力生产效率

万界星空科技

制造业 mes 万界星空科技 生产管理 自动排班

HFT算力合约模式系统开发丨技术详情开发

l8l259l3365

如何生成速卖通平台的API密钥?

技术冰糖葫芦

API 接口

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