我想知道应用程序引擎和计算引擎之间的区别是什么。谁能给我解释一下其中的区别?


当前回答

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

To run your application in GAE you just need to write your code and deploy it into GAE, no other headache. Since GAE is fully scalable, it will automatically acquire more instances in case the traffic goes higher and decrease the instances when traffic decreases. You will be charged for the resources you really use, I mean, you will be billed for the Instance-Hours, Transferred Data, Storage etc your app really used. But the restriction is, you can create your application in only Python, PHP, Java, NodeJS, .NET, Ruby and **Go.

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

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

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

其他回答

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

Google Compute Engine GCE is an important service provided from Google Cloud Platform (GCP) since most of the GCP services use GCE instances (VMs) beneath the management layer (not sure which one don't). This includes App Engine, Cloud Functions, Kubernetes Engine (Earlier Container Engine), Cloud SQL, etc. GCE instances are the most customisable unit there and thus should only be used when your application can't run on any other GCP services. Most of the time people use GCE to transfer their On-Prem applications to GCP, since it requires minimal changes. Later, they can choose to use other GCP services for separate component of their apps.

谷歌应用引擎 GAE是GCP提供的第一个服务(早在谷歌进入云业务之前)。它从0自动扩展到无限实例(它在下面使用GCE)。它有标准环境和灵活环境两种口味。

标准环境非常快,当没有人使用你的应用程序时,可以缩小到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是您唯一的选择。看看我的另一个答案,你会有更好的解释。

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

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

计算引擎是一种基础设施即服务。您必须创建并配置自己的虚拟机实例。它给你更多的灵活性,通常成本比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. 您的控制更少,因此某些事情是不可能的,或者只能以一种特定的方式实现(例如保存和写入文件)。

谷歌计算引擎(GCE)

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

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

谷歌应用引擎

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

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