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


当前回答

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

其他回答

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

谷歌计算引擎-> AWS EC2

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

谷歌云函数-> AWS Lambda函数

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

Compute Engine: If you are do-it-yourself person or have an IT team and you just want to rent a computer on cloud that has specific OS (for example linux), you go for the Compute Engine. You have to do everything by yourself. App Engine: If you are (for example) a python programmer and you want to rent a pre-configured computer on cloud that has Linux with a running web-server and the latest python 3 with necessary modules and some plug-ins to integrate with other external services, you go for the App Engine. Serverless Container (Cloud Run): If you would like to deploy the exact image of your local setup environment (for example: python 3.7+flask+sklearn) but you do not want to deal with server, scaling, etc. You create a container on your local machine (through docker) and then deploy it to Google Run. Serverless Microservice (Cloud Functions): If you want to write bunch of APIs (functions) that do specific job, you go for google Cloud Functions. You just focus on those specific functions, the rest of the job (server, maintenance, scaling, etc.) is done for you in order to expose your functions as microservices.

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

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

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

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

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

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

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

阅读更多关于计算引擎的信息

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

编辑(2016年5月):

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

编辑(2017年4月):

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

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

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

阅读更多关于云功能的信息

In addition to the App Engine vs Compute Engine notes above the list here also includes a comparison with Google Kubernete Engine and some notes based on experience with a wide range of apps from small to very large. For more points see the Google Cloud Platform documentation high level description of features in App Engine Standard and Flex on the page Choosing an App Engine Environment. For another comparison of deployment of App Engine and Kubernetes see the post by Daz Wilkin App Engine Flex or Kubernetes Engine.

应用引擎标准

Pros

Very economical for low traffic apps in terms of direct costs and also the cost of maintaining the app. Auto scaling is fast. Autoscaling in App Engine is based on lightweight instance classes F1-F4. Version management and traffic splitting are fast and convenient. These features are built into App Engine (both Standard and Flex) natively. Minimal management, developers need focus only on their app. Developers do not need to worry about managing VMs in a reliable, as in GCE, or learning about clusters, as with GKE. Access to Datastore is fast. When App Engine was first released, the runtime was co-located with Datastore. Later Datastore was split out as the standalone product Cloud Datastore but the co-location of App Engine Standard serving with Datastore remains. Access to Memcache is supported. The App Engine sandbox is very secure. Compared with development on GCE or other virtual machines, where you need to do your own diligence to prevent the virtual machine from being taken over at the operating system level, the App Engine Standard sandbox is relatively secure by default.

Cons

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

App Engine Flex

Pros

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

Cons

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

谷歌Kubernetes引擎

Pros

Native integration with containers allows custom runtimes and greater control over cluster configuration. Embodies many best practices working with virtual machines, such as immutable runtime environments and easy ability to roll back to previous versions Provides a consistent and repeatable deployment framework Based on open standards, notably Kubernetes, for portability between clouds and on-premises. Version management can accomplished with Docker containers and the Google Container Registry

Cons

Traffic splitting and management is do-it-yourself, possibly leveraging Istio and Envoy Some management overhead Some time to ramp up on Kubernetes concepts, such as pods, deployments, services, ingress, and namespaces Need to expose some public IPs unless using Private Clusters, now in beta, eliminate that need but you still need to provide access to locations where kubectl commands will be run from. Monitoring integration not perfect While L3 internal load balancing is supported natively on Kubernetes Engine, L7 internal load balancing is do-it-yourself, possibly leveraging Envoy

计算引擎

Pros

Easy to ramp up - no need to ramp up on Kubernetes or App Engine, just reuse whatever you know from previous experience. This is probably the main reason for using Compute Engine directly. Complete control - you can leverage many Compute Engine features directly and install the latest of all your favorite stuff to stay on the bleeding edge. No need for public IPs. Some legacy software may be too hard to lock down if anything is exposed on public IPs. You can leverage the Container-Optimized OS for running Docker containers

Cons

Mostly do-it-yourself, which can be challenging to do adequately for reliability and security, although you can reuse solutions from various places, including the Cloud Launcher. More management overhead. There are many management tools for Compute Engine but they will not necessarily understand how you have deployed your application, like the App Engine and Kubernetes Engine monitoring tools do Autoscaling is based on GCE instances, which can be slower than App Engine Tendency is to install software on snowflake GCE instances, which can be some effort to maintain

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

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

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