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