如何解决无服务器如 Google Cloud Run上的并发是否毫无意义?
据我所知,默认情况下,在 Google Cloud 上以及大概在其他地方,每个 vCPU = 1 hyperthread。 (介绍中的第 3 段)从我的角度来看,这表明除非将此设置更改为 2 或 4 个 vCPU,否则在 docker 映像上运行的代码中的并发性将一事无成。我是否缺少一些多线程知识,这意味着单个超线程上的并发可以完成某些事情?扩展 vCPU 数量并不是很有吸引力,因为最小内存设置已经被强制 2GB for 4 vCPUs
这个问题是基于 Google Cloud 技术堆栈提出的,但旨在涵盖所有提供商。
无服务器解决方案真的从并发中受益吗?
编辑:
接受的答案是一个很好的第一眼,但我意识到我的上述假设忽略了上下文切换空闲时间。例如:
如果我们希望编写一个与数据库对话的后端,我们的大量计算时间可能会用于等待数据库请求结果。在这种情况下,上下文切换到下一个请求将使我们能够更有效地填充 CPU 负载。
因此,根据用例,即使在单线程 vCPU 上,我们的无服务器应用程序也可以从并发中受益
解决方法
我写了this。根据我的经验,是的,您可以并行处理多个线程,并且性能会随着 CPU 的数量而增加。但是,您需要有一个支持多线程的进程。
在 Cloud Run 的情况下,每个请求都可以在一个线程中处理,并行化很容易。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。