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