抱歉,如果这是一个幼稚的问题,但我已经看过谷歌员工的一堆谈话,但仍然不明白为什么我会使用 AE 而不是 CF?
如果我理解正确的话,这两个服务的整个概念都是构建“微服务架构”。
- CF 和 AE 都是无状态的
- 两者都假设在有限的时间内执行
- 两者都可以与 dbs 和其他 gcp api 交互。
不过,AE 必须封装到自己的服务器中。基本上,它在与 CF 相同的功能之上利用了许多复杂性。那么,我什么时候应该使用它而不是 CF?
抱歉,如果这是一个幼稚的问题,但我已经看过谷歌员工的一堆谈话,但仍然不明白为什么我会使用 AE 而不是 CF?
如果我理解正确的话,这两个服务的整个概念都是构建“微服务架构”。
不过,AE 必须封装到自己的服务器中。基本上,它在与 CF 相同的功能之上利用了许多复杂性。那么,我什么时候应该使用它而不是 CF?
Cloud Functions (CF) 和 Google App Engine (GAE) 是用于不同工作的不同工具。为工作使用正确的工具通常是个好主意。
用钳子打钉子是可能的,但不如用锤子方便。同样,使用 CF 构建复杂的应用程序可能是可能的,但使用 GAE 构建它肯定会更方便。
与 GAE 相比,CF 有几个缺点(当然,在构建更复杂的应用程序的情况下):
ndb
客户端库(仅适用于标准 env GAE python 应用程序)访问数据存储可能比使用通用数据存储客户端库更高效/高性能。App Engine 更适合应用程序,这些应用程序具有许多功能以各种相互关联(甚至不相关)的方式运行,而云功能更具体地是响应某些事件并执行某些特定操作的单一用途功能。
App Engine 提供多种语言选择和更多管理选项,而云功能在这些领域受到限制。
您可以轻松地在 App Engine 上复制 Cloud Functions,但使用一堆离散的 Can Functions 复制大型 App Engine 应用程序会很复杂。例如,Spotify 的后端是基于 App Engine 的。
另一种说法是,对于一个非常大的应用程序,从一个更复杂的系统(如 App Engine)开始可以导致代码库不那么复杂,或者至少更容易管理或理解。
最终,它们都运行在 Google 类似的底层基础架构上,由您决定哪一个适用于手头的任务。此外,没有什么能阻止您在一个项目中混合两者的元素。
Google Cloud Functions是在观看事件时触发的简单、单一用途的函数。
这些功能将消除构建您自己的应用程序服务器来处理轻量级 API 的需要。
主要用例:
App Engine旨在在完全托管的无服务器平台上构建高度可扩展的应用程序。它将帮助您更多地关注代码。基础设施和安全将由 AE 提供
它将支持许多流行的编程语言。您可以通过提供 docker 容器将任何框架引入应用引擎。
用例:
由于 Cloud Functions 和 App Engine 都是无服务器服务,这就是我的感受。
对于微服务——我们可以使用 CF 或 App Engine。不过我更喜欢CF。
对于单体应用程序- 应用程序引擎非常适合。
@Cameron 指出的主要区别在于云功能可靠地响应事件。例如,如果您想对云存储桶中的更改执行脚本,则有一个专门的云函数触发器。在 GAE 中复制这种逻辑会更加麻烦。Firestore 集合更改也是如此。
此外,GAE 的 B 机器(用于基本或手动扩展的后端机器)具有长达 24 小时的方便运行时间。云功能目前最多只能运行 9 分钟。此外,GAE 允许您将 cron 作业封装为应用程序代码旁边的 yaml。这使得开发一个服务器较少的事件驱动服务更加干净。
当然,其他答案比我的更能涵盖这些方面。但我想指出 Cloud Functions 的主要优势是触发选项。如果您希望功能或服务相互通信,GAE 可能是更好的选择。