谷歌应用程序引擎和谷歌计算引擎的区别是什么?

我想知道App Engine和amp之间有什么区别;计算引擎。谁能给我解释一下其中的区别?

158086 次浏览

应用程序引擎是一个平台即服务。这意味着您只需部署代码,平台就会为您完成其他所有工作。例如,如果你的应用变得非常成功,应用引擎会自动创建更多的实例来处理增加的容量。

阅读更多关于应用程序引擎

计算引擎是一个基础设施即服务。您必须创建并配置自己的虚拟机实例。它给你更多的灵活性,通常成本比App Engine低得多。缺点是你必须自己管理你的应用程序和虚拟机。

阅读更多关于计算引擎

如果需要,你可以混合应用程序引擎和计算引擎。它们都能很好地与谷歌云平台的其他部分一起工作。

编辑(2016年5月):

一个更重要的区别是:如果没有请求进入,在App Engine上运行的项目可以缩小到零实例。这在开发阶段是非常有用的,因为您可以在不超过慷慨的免费实例小时配额的情况下工作数周。灵活的运行时(即“托管虚拟机”)需要至少一个实例持续运行。

编辑(2017年4月):

云计算功能(目前处于测试版)是在抽象方面比App Engine更高的级别-没有实例!它允许开发人员部署一小段代码,以响应不同的事件,其中可能包括HTTP请求、云存储中的更改等。

App Engine最大的不同在于功能是以100毫秒为单位定价的,而App Engine的实例只会在不活动15分钟后关闭。另一个优点是云函数立即执行,而调用应用程序引擎可能需要一个新的实例-冷启动一个新实例可能需要几秒钟或更长的时间(取决于运行时和你的代码)。

这使得云函数非常适合(a)很少的调用——不需要为了以防发生什么事情而保持一个实例是活的,(b)在实例经常旋转和关闭的情况下快速改变负载,以及可能的更多用例。

阅读更多关于云函数

简单地说:计算引擎给你一个服务器,你可以完全控制/负责。你可以直接访问操作系统,安装你想要的所有软件,通常是web服务器、数据库等……

在应用引擎中,你不需要管理任何底层软件的操作系统。你只需要上传代码(Java, PHP, Python或Go),瞧——它就会运行……

应用引擎节省了大量的头痛,特别是对于没有经验的人,但它有2个显著的缺点: 1. 更贵(但它有一个计算引擎没有的免费配额) 2. 您的控制更少,因此某些事情是不可能的,或者只能以一种特定的方式实现(例如保存和写入文件)。< / p >

基本的区别是谷歌应用引擎(GAE)平台即服务(PaaS),而谷歌计算引擎(GCE)基础设施即服务(IaaS)

要在GAE中运行应用程序,只需要编写代码并将其部署到GAE中,没有其他麻烦。由于GAE是完全可伸缩的,因此当流量增加时,它将自动获取更多实例,当流量减少时,它将减少实例。你将为你真正使用的资源收费,我的意思是,你将为你的应用程序真正使用的Instance-Hours传输数据存储等收费。但是限制是,你只能在Python, PHP, Java, NodeJS, .NET, Ruby和**Go中创建你的应用。

另一方面,GCE以虚拟机的形式为你提供了完整的基础设施。您可以完全控制这些虚拟机的环境和运行时,因为您可以在其中编写或安装任何程序。实际上,GCE是虚拟使用谷歌数据中心的方式。在GCE中,你必须手动配置你的基础设施来使用负载均衡器来处理可伸缩性

GAE和GCE都是谷歌云平台的一部分。

2014年3月,谷歌宣布在应用引擎下推出名为托管虚拟机的新服务。托管虚拟机在应用平台、CPU和内存选项上为应用引擎应用程序提供了更多的灵活性。像GCE一样,您可以在这些虚拟机中为应用程序引擎应用程序创建自定义运行时环境。实际上,App Engine的托管虚拟机在一定程度上模糊了IAAS和PAAS之间的界限。

应用程序引擎为开发人员提供了控制谷歌计算引擎核心的能力,以及为谷歌计算引擎数据处理应用程序提供面向web的前端。

另一方面,计算引擎提供直接和完整的虚拟机操作系统管理。要呈现你的应用程序,你需要资源,而谷歌云存储是存储你的资产和数据的理想选择,无论它们是用来做什么。通过在全球各地托管,您可以快速访问数据。可靠性在99.95%的正常运行时间得到保证,谷歌还提供了备份和恢复数据的能力,信不信由你,存储是无限的。

您可以使用谷歌云存储管理您的资产,存储,检索,显示和删除它们。您还可以快速读写保存在云存储中的平面数据表。谷歌云阵容中的下一个是BigQuery。使用BigQuery,你可以在几秒钟内分析大量数据,我们说的是数百万条记录。访问是通过直接的UI或具象状态传输或REST接口来处理的。

正如您可能怀疑的那样,数据存储不是问题,而且可以扩展到数百TB。BigQuery可以通过一系列客户端库访问,包括Java、。net、Python、Go、Ruby、PHP和Javascript的客户端库。可以通过这些客户端库或web用户界面访问类似sql的语法NoSQL。最后,让我们谈谈谷歌云平台数据库选项,云SQL和云数据存储。

这里有一个主要的区别。云SQL适用于关系数据库,主要是MySQL,而云数据存储适用于使用noSQL的非关系数据库。使用Cloud SQL,您可以选择在美国、欧洲或亚洲托管,每个数据库实例有100gb的存储空间和16gb的RAM。

云数据存储免费提供每月最多50 K的读/写指令和每月存储1 GB的数据。但是,如果您超过了这些配额,就需要支付费用。App Engine还可以与谷歌云平台的其他不太知名、更有目标的成员合作,包括用于创建API后端的云端点,用于数据分析和趋势预测的谷歌预测API,或用于多语言输出的谷歌翻译API。

虽然你可以用App Engine自己做相当多的事情,但当你考虑到它能够轻松高效地与其他谷歌云平台服务一起工作时,它的潜力就会飙升。

或者让它更简单(因为有时我们无法区分GAE Standard和GAE Flex):

计算引擎类似于一个虚拟PC,例如,你可以在其中部署一个小型网站+数据库。您可以管理所有内容,包括对已安装磁盘驱动器的控制。如果你部署一个网站,你要负责设置DNS等。

谷歌应用程序引擎(标准)就像一个只读的沙箱文件夹,你可以在其中上传要执行的代码,而不用担心其他(是的:只读-有一组固定的库为你安装,你不能随意部署第三方库)。DNS /子域等更容易映射。

谷歌应用引擎(灵活)实际上就像一个完整的文件系统(不仅仅是一个锁定的文件夹),在这里您拥有比标准引擎更大的能力,例如,您有读/写权限,(但与计算引擎相比较少)。在GAE标准中,您已经为您安装了一组固定的库,并且您不能随意部署第三方库。在Flexible环境中,你可以安装你的应用所依赖的任何库,包括自定义构建环境(比如Python 3)。

尽管GAE Standard处理起来非常麻烦(尽管谷歌使它听起来很简单),但在压力下它的伸缩性非常好。这很麻烦,因为您需要测试并确保与锁定环境的兼容性,并确保您使用的任何第三方库不会使用您不知道的可能无法在GAE标准上工作的任何其他第三方库。在实践中需要更长的时间来设置它,但从长期来看,简单的部署可能会更有回报。

除了上面的应用程序引擎与计算引擎的注释之外,这里还包括与谷歌Kubernete引擎的比较,以及一些基于从小到大的广泛应用的经验的注释。欲了解更多要点,请参阅选择应用程序引擎环境页上谷歌云平台文档对应用程序引擎标准和Flex功能的高级描述。关于应用引擎和Kubernetes部署的另一个比较,请参阅Daz Wilkin 应用引擎Flex或Kubernetes引擎的帖子。

应用引擎标准

优点

    对于低流量的应用程序来说,就直接成本而言非常经济 还有维护应用程序的成本
  • 自动缩放速度快。自动缩放在应用程序引擎是基于 李轻量级实例类F1-F4。< / >
  • 版本管理和流量分裂是快速方便的。这些特性被内置到App Engine(包括Standard和Flex)中。
  • 最小化管理,开发者只需专注于他们的应用。 开发人员不需要担心在一个可靠的虚拟机管理 在GCE,或学习集群,如GKE。
  • 数据存储访问速度快。当App Engine第一次发布时,运行时与数据存储位于同一位置。后来数据存储被拆分 作为独立产品云数据存储,但应用引擎标准与数据存储的共存仍然存在
  • 支持访问Memcache。
  • 应用引擎沙箱是非常安全的。与上的发展相比 GCE或其他虚拟机,其中您需要自己做 时防止虚拟机被接管 操作系统级别,应用引擎标准沙盒是相对的
  • .默认安全

缺点

  • 通常比其他环境约束更强 小。虽然这对快速自动缩放很有好处,但许多应用程序都可以 受益于更大的实例,例如GCE实例大小可达96 李芯。< / >
  • 网络没有与GCE集成
  • 不能把应用引擎放在谷歌云负载均衡器后面。局限于 支持的运行时:Python 2.7, Java 7和8,Go 1.6-1.9和PHP 5.5. 在Java中,有一些对servlet的支持,但不支持完整的J2EE标准

App Engine Flex

优点

  • 可以使用自定义运行时吗
  • 本机集成GCE网络
  • 版本和流量管理方便,与标准相同
  • 较大的实例大小可能更适合大型复杂应用程序,特别是可能使用大量内存的Java应用程序

缺点

  • 网络集成不完善——没有与内部负载均衡器或共享虚拟私有云集成
  • 对托管Memcache的访问通常不可用

谷歌Kubernetes引擎

优点

  • 与容器的本机集成允许自定义运行时或更大 对集群配置的控制
  • 体现了许多与虚拟机工作的最佳实践,如不可变运行时环境和容易回滚到以前版本的能力
  • 提供一致且可重复的部署框架
  • 基于开放标准,特别是Kubernetes,实现云和内部部署之间的可移植性。
  • 版本管理可以通过Docker容器和 李谷歌集装箱注册处 < / >

缺点

    流量划分和管理可能是自己做的 使用Istio和Envoy
  • 一些管理开销
  • 需要一些时间来学习Kubernetes的概念,比如pod、部署、服务、入口和名称空间
  • 需要暴露一些公共ip,除非使用私人集群,现在是测试版,消除了这一需求,但你仍然需要提供访问 kubectl命令运行的位置
  • 监控集成不完善
  • 虽然L3内部负载平衡在Kubernetes引擎上原生支持,但L7内部负载平衡是自己做的,可能利用Envoy

计算引擎

优点

  • 容易上手-不需要在Kubernetes或应用程序引擎上上手, 只要重用你从以前的经验中知道的东西。这是 可能是直接使用计算引擎的主要原因
  • 完全控制-您可以利用许多计算引擎特性 直接和安装最新的所有您最喜欢的东西留在
  • 不需要配置公网ip。一些遗留软件可能难以锁定
  • . .
  • 您可以利用容器优化的操作系统来运行Docker 李容器< / >

缺点

    大多数情况下都是自己做,要做到足够有挑战性 可靠性和安全性,尽管您可以重用解决方案
  • 更多的管理开销。有许多用于计算引擎的管理工具,但它们不一定了解您如何部署应用程序,就像应用程序引擎和Kubernetes引擎监控工具一样
  • 自动伸缩基于GCE实例,可能比App慢 李引擎< / >
  • 倾向于在雪花GCE实例上安装软件,这可以 需要一些努力来维持

谷歌计算引擎(GCE)是基础设施即服务(IaaS),而谷歌应用程序引擎(GAE)是平台即服务(PaaS)。你可以检查下面的图表,以更好的方式理解差异(取自并更好地解释在这里) -

云计算类型

< p > 谷歌计算引擎 < br > GCE是谷歌云平台(GCP)提供的一项重要服务,因为大多数GCP服务使用管理层以下的GCE实例(vm)(不确定哪个不是)。这包括应用程序引擎,云函数,Kubernetes引擎(早期的容器引擎),云SQL等。GCE实例是最可自定义的单元,因此只能在应用程序不能在任何其他GCP服务上运行时使用。大多数情况下,人们使用GCE将他们的On-Prem应用程序转移到GCP,因为它只需要最小的更改。之后,他们可以选择为他们的应用程序的单独组件使用其他GCP服务 < p > 谷歌应用引擎 < br > GAE是GCP提供的第一个服务(早在谷歌进入云业务之前)。它从0自动扩展到无限实例(它在下面使用GCE)。它有标准环境和灵活环境两种口味。< / p >

标准环境非常快,当没有人使用你的应用程序时,可以缩小到0个实例,在几秒钟内扩大和缩小,并有专用的谷歌服务和库用于缓存,身份验证等。标准环境的警告是,它是非常限制性的,因为它运行在沙箱中。您必须仅针对特定的编程语言使用托管运行时。最近添加的是Node.js (8.x)和Python 3.x。旧的运行时可用于Go, PHP, Python 2.7, Java等。

Flexible Environment更加开放,因为它允许您在使用docker容器时使用自定义运行时。因此,如果您的运行时在提供的运行时中不可用,您总是可以为执行环境创建自己的dockerfile。需要注意的是,它要求至少有一个实例在运行,即使没有人在使用你的应用,再加上放大和缩小需要几分钟。

不要将GAE flexible与Kubernetes Engine混淆,因为后者使用了实际的Kubernetes,并提供了更多的自定义和特性。当您需要无状态容器并且应用程序仅依赖HTTP或HTTPS协议时,GAE Flex非常有用。对于其他协议,Kubernetes Engine (GKE)或GCE是您唯一的选择。查看我的另一个答案以获得更好的解释。

我会用一种对我来说有意义的方式来解释:

  • 计算引擎:如果你是一个自己动手的人或有一个IT团队,你只是想在云上租一台具有特定操作系统(例如linux)的计算机,你就选择计算引擎。你什么事都得自己做。

  • /strong>:如果你是(例如)一个python程序员,你想在云上租一台预先配置好的计算机,它有运行的web服务器的Linux和最新的python 3,以及必要的模块和一些插件,以与其他外部服务集成,你选择应用程序引擎。

  • 无服务器容器(云运行):如果你想部署本地设置环境的确切映像(例如:python 3.7+flask+sklearn),但你不想处理服务器,扩展等。在本地机器上(通过docker)创建一个容器,然后将其部署到谷歌Run。

  • 无服务器微服务(云函数):如果你想写一堆api(函数)来做特定的工作,你去谷歌云函数。你只需专注于那些特定的功能,其余的工作(服务器、维护、扩展等)都是为你完成的,以便将你的功能公开为微服务。

随着深入,你会失去一些灵活性,但你不必担心不必要的技术方面。你也多花了一点,但你节省了时间和成本(IT部分):其他人(谷歌)正在为你做这件事。

如果你不想关心负载平衡、伸缩性等,将你的应用程序分割成一堆“无状态”的web服务是至关重要的,这些服务将任何持久化的内容写入单独的存储(数据库或blob存储)。然后你会发现云运行和云函数是多么棒。

就我个人而言,我发现谷歌Cloud Run是一个很棒的解决方案,在开发中绝对自由(只要是无状态的),将其作为web服务公开,docker您的解决方案,与Cloud Run一起部署。让谷歌成为你的IT和DevOps,你不需要关心扩展和维护。

我已经尝试了所有其他的选择,每一个都适合不同的目的,但谷歌运行只是棒极了。对我来说,它是真正的无服务器,而不会失去开发的灵活性。

谷歌计算引擎(GCE)

托管在云中的虚拟机(vm)。在云技术出现之前,这些服务器通常被称为虚拟专用服务器(VPS)。您可以像使用物理服务器一样使用这些服务器,在其中安装和配置操作系统,安装应用程序,安装数据库,保持操作系统的最新状态,等等。这被称为基础设施即服务(IaaS)。

当您在数据中心的VM或服务器上运行现有应用程序,并希望轻松地将其迁移到GCP时,VM最有用。

谷歌应用引擎

App Engine托管并运行你的代码,而不需要你处理操作系统、网络,以及许多你必须在物理服务器或VM上管理的其他事情。可以把它看作一个运行时,它可以自动部署、版本化和扩展应用程序。这被称为平台即服务(PaaS)。

当你想要自动部署和自动扩展你的应用程序时,App Engine是最有用的。除非应用程序需要自定义操作系统配置,否则App Engine通常比手动配置和管理虚拟机更有优势。

如果你熟悉其他流行的服务:

谷歌计算引擎-> AWS EC2

谷歌应用程序引擎-> Heroku或AWS弹性豆茎

谷歌云函数-> AWS Lambda函数

云服务提供了从完全托管到较少托管的一系列选项。管理较少的服务为开发人员提供了更多的控制。计算和应用引擎的区别也是一样的。下面的图片更详细地说明了这一点 enter image description here < / p >

App Engine是一个虚拟服务器。 计算引擎-它就像一个完整的服务器。