谷歌云的Cloud Run与无情技术的可扩展性有何不同?

时间:2019-04-16 12:53:09

标签: amazon-web-services docker google-cloud-platform devops serverless

正如Google宣布的那样,它的新服务云在Google云平台上运行。谷歌表示,这可以作为无服务器技术进行扩展。它与无服务器技术有何不同以及如何可扩展?

2 个答案:

答案 0 :(得分:0)

Cloud Run是基于Knative(开源的无服务器平台)构建的无服务器产品。它与大多数无服务器技术不同,因为它没有任何编程语言限制(请参见docs)。

托管Cloud Run(而非GKE上的Cloud Run)的扩展基于concurrency或服务可以同时处理的多个并发请求。

您还只为实例正在处理任何请求的时间付费。如果您的实例在10秒钟内响应了100个请求,则仅在这10秒钟内向您收费。 (但是,如果只有1个请求在10秒钟内运行,则还会向您收取10秒钟的费用,因此请谨慎使用实例扩展)。 (pricing

这是第一个发行版,因此仍然存在许多限制(例如无法使用connect to Cloud SQL which I wrote an article about)。您可以查看支持的服务的完整列表here

答案 1 :(得分:0)

我刚刚看到了这个答案,并想纠正它:Google的Cloud Run是使用Google内部的无服务器技术(不是Knative OSS实现)对Knative API的重新实现。

Google的内部技术在很大程度上依赖于其他非OSS功能(Stubby,Borg,LOAS等),但还具有经过验证的多租户和扩展功能,这意味着我们(Google)采用了两管齐下的方法-在当今的基础架构上构建OSS界面和实现,同时还提供一种更接近Lambda体验的托管服务。 Google还提供了GKE上的Cloud Run,可以运行来运行OSS软件,该软件打包后可以很好地适合GCP。请参阅Cloud Run marketing page上的选择适合您的平台部分,以了解两者之间的功能比较。

Cloud Run的定价模型基于实例CPU秒数和RAM使用率;您可以选择(对于Knative和Cloud Run)每个容器可以运行多少个并发请求-这确定将创建多少个实例来处理请求。 (请注意,Lambda基本上将这个数字强制为1-不允许并发。)

如果您每秒有100个请求,每个请求都花3秒钟,那么在不同的并发下您将拥有以下实例计数:

  • ConcurrencyCount = 1:300个实例
  • ConcurrencyCount = 10:30个实例
  • ConcurrencyCount = 80:4个实例(默认)
  • ConcurrencyCount = 200:2个实例
  • ConcurrencyCount = 300:1个实例

您应根据应用程序可以处理的请求数量(不立即降低延迟)来设置ConcurrencyCount;这可能需要一些实验。对于大多数从一个或两个数据库中获取数据然后进行少量处理的应用程序,默认设置效果很好。如果您正在接收视频,然后在本地对其进行代码转换,则像1或2这样的代码会更有意义。