容器 vs 无服务器 vs 虚拟机

Containers vs Serverless vs Virtual Machines

我对容器、无服务器和虚拟机进行了一些研究,所有这些都有其自身的优势,如成本、部署、可靠性等。但我仍然很困惑何时使用它们,以及在什么样的情况下使用它们。

虚拟机(管理程序)

这直接模拟了 OS,主机的 OS 为虚拟化提供了预定义的资源量。

可靠性:高

成本:高

优点:

  • 更加孤立(HyperVisor + OS),使得在虚拟机被劫持的情况下更难破坏主机。手动分配资源的数量可以有多少。

缺点:

  • 它们在开机时会从主机消耗一定数量的资源,从而增加成本

  • 由于上述

  • ,部署和编排它们有点棘手

容器

它们模拟 OS,但是它们 运行 直接在主机 OS 的进程下,并且被构建为具有单一目的的轻量级。

可靠性:高

成本:中等

优点:

  • 可以使用编排非常轻松地启动、停止、冻结和整体控制它们,从而更优化地使用主机中的资源。
  • 它们非常灵活,这意味着您可以为您想要的特定类型的操作创建一个容器,并为任何给定任务调用它。
  • 通过上述方式进行疯狂的快速部署,从而减少在不使用主机时关闭主机的痛苦。

缺点:

  • 它们的隔离度较低,这意味着漏洞在入侵时更容易危及主机。

无服务器

这是一个小众概念,与其名称相反,它仍然涉及服务器。然而,它的部署方式是它的优势,专注于简单但数量众多的微小请求。

可靠性:是?

成本:非常低到离谱的高

优点:

  • 其背后的想法是执行一个与现有系统集成的微小功能。客户端向网关发送请求,然后触发无服务器功能,然后他们得到响应。
  • 无服务器可以处理原本会占用专用服务器来接收和执行的非常便宜的请求。
  • 您按执行这些功能所用的时间付费,执行速度应该非常快,因此扩展性非常好。

缺点:

  • 与其他东西一起工作,所以它无论如何都不是灵丹妙药。
  • 功能优化不佳,甚至需求考虑不周都会迅速增加成本。
  • 有限的技术可用性(提供商规定您可以在无服务器中调用哪些技术,其他任何技术都是 "jury-rig")