我想知道应用程序引擎和计算引擎之间的区别是什么。谁能给我解释一下其中的区别?
当前回答
或者让它更简单(因为有时我们无法区分GAE Standard和GAE Flex):
计算引擎类似于虚拟PC,例如,你可以在其中部署一个小型网站+数据库。您可以管理所有内容,包括对已安装磁盘驱动器的控制。如果你部署一个网站,你要负责设置DNS等。
谷歌应用程序引擎(标准)就像一个只读的沙箱文件夹,你可以上传代码来执行,不用担心其他的(是的:只读-有一组固定的库为你安装,你不能随意部署第三方库)。DNS /子域等更容易映射。
谷歌应用程序引擎(灵活)实际上就像一个完整的文件系统(不仅仅是一个锁定的文件夹),在那里你有更多的权力比标准引擎,例如,你有读/写权限,(但比计算引擎少)。在GAE标准中,您已经为您安装了一组固定的库,并且您不能随意部署第三方库。在Flexible环境中,你可以安装你的应用所依赖的任何库,包括自定义构建环境(比如Python 3)。
尽管GAE Standard处理起来非常麻烦(尽管谷歌使它听起来很简单),但在压力下它的伸缩性非常好。这很麻烦,因为您需要测试并确保与锁定环境的兼容性,并确保您使用的任何第三方库不会使用您不知道的可能无法在GAE标准上工作的任何其他第三方库。在实践中需要更长的时间来设置它,但从长期来看,简单的部署可能会更有回报。
其他回答
App Engine是一个虚拟服务器。 计算引擎——它就像一个完整的服务器。
谷歌计算引擎(GCE)
托管在云中的虚拟机(vm)。在云技术出现之前,这些服务器通常被称为虚拟专用服务器(VPS)。您可以像使用物理服务器一样使用这些服务器,在其中安装和配置操作系统,安装应用程序,安装数据库,保持操作系统的最新状态,等等。这被称为基础设施即服务(IaaS)。
当您在数据中心的VM或服务器上运行现有应用程序,并希望轻松地将其迁移到GCP时,VM最有用。
谷歌应用引擎
App Engine托管并运行你的代码,而不需要你处理操作系统、网络,以及许多你必须在物理服务器或VM上管理的其他事情。可以把它看作一个运行时,它可以自动部署、版本化和扩展应用程序。这被称为平台即服务(PaaS)。
当你想要自动部署和自动扩展你的应用程序时,App Engine是最有用的。除非应用程序需要自定义操作系统配置,否则App Engine通常比手动配置和管理虚拟机更有优势。
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
基本区别是谷歌应用程序引擎(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之间的界限。
如果你熟悉其他流行的服务:
谷歌计算引擎-> AWS EC2
谷歌应用程序引擎-> Heroku或AWS弹性豆茎
谷歌云函数-> AWS Lambda函数