google-app-engine - 何时选择 App Engine 而不是 Cloud Functions?

标签 google-app-engine google-cloud-platform google-cloud-functions serverless

抱歉,如果这是一个幼稚的问题,但我看过 google 员工的一堆谈话,但仍然不明白为什么我会使用 AE 而不是 CF?

如果我没理解错的话,这两种服务的整体概念就是构建“微服务架构”。

  • CF和AE都是无状态的
  • 都假设在有限的时间内执行
  • 两者都可以与 dbs 和其他 gcp api 交互。

但是,AE 必须封装到自己的服务器中。基本上,它在与 CF 相同的功能之上利用了很多复杂性。那么,什么时候应该使用它而不是 CF?

最佳答案

Cloud Functions (CF) 和 Google App Engine (GAE) 是用于不同工作的不同工具。为工作使用正确的工具通常是个好主意。

用钳子钉钉子可能是可能的,但不如用锤子方便。类似地,使用 CF 构建复杂的应用程序可能是可能的,但使用 GAE 构建它肯定会更方便。

与 GAE 相比,CF 有几个缺点(当然是在构建更复杂的应用程序的上下文中):

  • 它们仅限于 Node.js、Python、Go、Java、.NET Core 和 Ruby。 GAE 支持其他几种流行的编程语言
  • 它们确实是为轻量级的、独立功能部分而设计的,尝试使用此类组件构建复杂的应用程序很快就会变得“笨拙”。是的,每个单独请求的相互关系上下文也必须在 GAE 上恢复,只有 GAE 受益于更方便的方法,而这在 CF 上是不可用的。例如用户 session 管理,如其他评论中所述
  • GAE 应用程序具有跨单个请求存在的应用程序上下文,而 CF 则没有。这样的上下文使 GAE 应用程序对某些 Google 服务的访问更加高效/性能(甚至可能),但对于 CF 则不然。例如 memcached
  • GAE 应用程序上下文的可用性可以为无法在 CF 上运行的其他服务支持更高效/性能更好的客户端库。例如,使用 ndb 客户端库(仅适用于标准 env GAE python 应用程序)访问数据存储可能比使用通用数据存储客户端库更高效/性能更高。
  • 与 CF 的“零售”定价(每次调用单独收费)相比,GAE 更具成本效益,因为它是“批发”定价(基于实例小时数,无论特定实例服务多少请求)<
  • GAE 应用的响应时间可能通常比 CF 短,因为处理请求的应用实例通常已经在运行,因此:
    • GAE 应用程序上下文不需要加载/恢复,它已经可用,CF 需要加载/恢复它
    • (大部分时间)处理代码已经加载; CF 的代码仍然需要加载。不太确定这个;我想这取决于底层实现。

关于google-app-engine - 何时选择 App Engine 而不是 Cloud Functions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47057770/

相关文章:

javascript - 文件元数据未在 Firestore 存储中更新

python - Google Cloud Functions - 我可以将来自不同 GCP 项目存储库的代码部署到 Cloud Functions 中吗?

go - Firestore 云函数 : Get DocumentSnapshot from the event

google-app-engine - 如何从 Google 的标准 App Engine (Python 3.7) 连接到 Redis 实例(内存存储)

android - Cloud Console 中缺少移动后端启动器

java - 使用 Google KMS 和 Entrust 证书签署 PDF 文档

sql - 如何根据同一个表中的其他列匹配替换空值

google-app-engine - 不使用 Google Apps for Business 将域添加到 Google Appengine

python - Python 模型的 Google Cloud Datastore 真实世界示例

google-cloud-messaging - 谷歌云消息传递 VS 谷歌云平台