当前位置: 首页 > 知识库问答 >
问题:

什么时候选择应用引擎而不是云功能?

汪庆
2023-03-14

抱歉,如果这是一个天真的问题,但我已经看了谷歌员工的一系列谈话,仍然不明白为什么我会使用AE而不是CF?

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

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

然而,AE必须封装到自己的服务器中。基本上,它在与CF相同的功能基础上利用了许多复杂性。那么,我应该什么时候使用它来代替CF呢?

共有3个答案

云宾鸿
2023-03-14

谷歌云函数是简单的、单一用途的函数,在观看事件时触发。

这些功能将消除构建自己的应用服务器以处理轻量级API的需要。

主要用例:

  1. 数据处理/ETL:监听并响应云存储事件,例如创建、更改或删除的文件)

App Engine用于在完全托管的无服务器平台上构建高度可扩展的应用程序。它将帮助您更加专注于代码。基础架构和安全性将由AE提供

它将支持许多流行的编程语言。您可以通过提供docker容器为应用引擎带来任何框架。

用例:

  1. 现代化的Web应用程序,以零配置部署和零服务器管理快速到达客户。

请参阅云功能和应用程序引擎的官方文档页面

张积厚
2023-03-14

应用引擎更适合应用程序,应用程序有许多功能以各种相互关联(甚至不相关)的方式运行,而云功能更具体地说是响应某些事件并执行某些特定操作的单一目的功能。

App Engine提供多种语言选择和更多管理选项,而云功能在这些领域受到限制。

你可以很容易地在应用引擎上复制云功能,但是使用一堆离散的能功能复制一个大规模的应用引擎应用程序会很复杂。例如,Spotify的后端是基于应用引擎的。

另一种说法是,对于一个非常大的应用程序,从一个更复杂的系统开始,比如应用引擎,可以产生一个不那么复杂的代码库,或者至少更容易管理或理解。

最终,这两者都在谷歌相似的底层架构体系上运行,由你来决定哪一个适合手头的任务。此外,没有什么能阻止你在一个项目中混合两者的元素。

能远
2023-03-14

云功能(CFs)和谷歌应用引擎(GAE)是不同工作的不同工具。为工作使用合适的工具通常是个好主意。

用钳子钉钉子是可能的,但它不像用锤子那么方便。同样,使用CFs构建一个复杂的应用程序也是可能的,但使用GAE构建它肯定会更方便。

与GAE相比,CFs有几个缺点(当然,在构建更复杂的应用程序时):

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

 类似资料:
  • 问题内容: 流式XML解析器(例如SAX和StAX)比构建像DOM解析器之类的树结构的解析器更快,内存效率更高。SAX是推送分析器,这意味着它是观察者模式(也称为侦听器模式)的实例。SAX首先出现,然后是StAX- 拉式解析器,这意味着它基本上像迭代器一样工作。 您可以找到在任何地方都偏爱StAX而不是SAX的原因,但是通常可以归结为:“更易于使用”。 在JAXP上的Java教程中,StAX被模糊

  • 谷歌云的功能似乎非常有趣,因为它是无服务器和零维护的解决方案。但是,什么时候在谷歌应用程序引擎上使用谷歌云功能合适呢?

  • 问题内容: 我是一名C ++程序员,偶尔使用MySQL处理数据库,但是我的SQL知识非常有限。但是,我当然愿意改变这一点。 目前,我正尝试仅通过SQL查询对数据库中的数据进行分析(!)。但是我将放弃,而是将数据导入C 并使用C 代码进行分析。 我已经与同事讨论了这一点,他们也促使我使用C ++,他说SQL并不是用于复杂的分析,而是主要用于导入(从现有表中)和导出(到新表中)数据,还有更多内容。例如

  • 我已经知道如何使用Sizzle CSS选择器引擎。 这是语法: 所以现在我的问题是:Sizzle CSS选择器引擎有什么用?

  • 我看到越来越多的软件组织在其面向服务的架构中使用gRPC,但人们也仍然在使用REST。在什么用例中使用gRPC是有意义的,什么时候使用REST进行服务间通信是有意义的? 有趣的是,我遇到过同时使用REST和GRPC的开源项目。例如,Kubernetes和Docker Swarm都在某种程度上使用gRPC来进行集群协调,但也公开了REST API来与主/主节点进行接口。为什么不上下使用gRPC?

  • 问题内容: 在本文中, Nick Coghlan讨论了PEP 435类型的 一些设计决策,以及如何将其子类化以提供不同的体验。 但是,我给出的建议(我是stdlib的主要作者)关于使用元类的建议是,在没有充分好的理由的情况下不应该这样做- 例如,无法使用类装饰器或专用工具来完成所需的工作隐藏任何丑陋的功能;而在我自己的工作,我已经能够做到我需要什么简单的使用,在创建时,和/或正常类/实例方法类: