为了账号安全,请及时绑定邮箱和手机立即绑定

在 GAE 中使用“golang”的成本/性能优势是什么

在 GAE 中使用“golang”的成本/性能优势是什么

Go
胡说叔叔 2021-09-13 14:43:21
就每个实例的配额/使用限制而言,在 Google appengine GAE 中使用golang而不是在 GAE 中运行的其他提供的语言(如 python、java、php 或所有这些语言的行为都相同)时,是否有任何显着的改进/优势?或者基本上任何实例,无论使用哪种语言,都以相同的方式运行,并且考虑到这更多地涉及“GAE 负载均衡器”或基础设施,而不是使用的编程语言,因此每个实例几乎可以处理相同数量的最大请求/秒,同样的逻辑可以应用于内存,cpu 使用?
查看完整描述

1 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

App Engine 没有明确的限制或限制,仅在使用特定语言时才适用。然而,这些语言及其技术可能意味着某些限制,例如,与启动 Go 的内置 Web 服务器相比,Java 虚拟机实例本身需要更多的内存和更长的启动时间(即使启用了预热请求),因此在 Java 实例的情况下,webapp 本身将保留更少的内存来分配和使用(对于特定的计划/类型和实例)。

我没有具体的措施来比较,但是(在 Go 的情况下):

“代码以源代码形式部署并在云中编译......Go 是第一个在 App Engine 上运行的真正编译语言。App Engine 上的 Go 使部署高效、CPU 密集型 Web 应用程序成为可能”。(来源)

如果你仔细想想,App Engine 中的其他语言都是解释性的(包括 Java,它是由虚拟机解释的字节码),而 Go 被编译成依赖于平台的本机代码并运行。这应该已经说明了一些关于性能的信息。

有关“案例研究”,请查看以下博客文章:

从零到 Go:24 小时内在 Google 首页上发布

该博客还包含一些有关数百万人使用的真实应用的性能报告:

//img1.sycdn.imooc.com//613ef3220001792607510186.jpg

此图表 - 直接取自 App Engine 仪表板 - 显示启动期间的平均请求延迟。如您所见,即使在负载下它也不会超过 60 毫秒,平均延迟为 32 毫秒。考虑到我们的请求处理程序正在即时进行图像处理和编码,这非常快。

App Engine 使用 Go 标准库中包含的网络服务器来为您的应用程序提供服务,这也意味着您可以轻松地将 Go 网络应用程序移植到 App Engine,并且您确切地知道从为您的应用程序提供服务的网络服务器会得到什么在 App Engine 上。

找到 Python、Java 和 Go 的官方时间比较

App Engine的系统状态可以被认为是官方和良好的比较基础。

您可以单击属于特定日期和语言的任何单元格,您可以获得静态和动态 GET 延迟(安全和不安全)、错误率、CPU 使用率/延迟的详细历史统计数据。这些统计信息是在一个已经启动并准备好提供服务的实例上测量的。

2015 年 1 月 27 日这一天的分析,以下是Go、Java和Python的结论:

  • 所有动态延迟大致相同

  • CPU的等待时间(计算33Fibonacci数)是最好的Java,然后去和最慢的是Python的。

  • 静态文件服务时间大致相同,但 Go 最快。


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信