所以我知道 goroutine 的开销很低,但我想知道它们有多好。如果我有一个处理传入消息的服务器,与使用带有通道的标准生产者/消费者模型相比,创建一个新的 go 例程来处理每个传入消息如何?
就像拥有一个高性能的 go 服务器来为任何传入的请求生成新的 go 例程是合理的。
噜噜哒
浏览 206回答 2
2回答
呼唤远方
我们实际上是在用类似的方法进行压力测试。我们为每个 http 请求生成了新线程。并发性非常好,在 10 秒内我们就达到了 100,000 个请求。您可能面临的唯一瓶颈是内存,因为如果所有处理都不够快,那么您可能会用完该进程的内存。我很确定有一个解决方法,但这就是为什么你想要限制而不产生无限的 go 例程的原因之一。我们面临的问题是我们试图从另一个 API 获取数据,而该 API 无法跟上这种并发水平。因此,之前的节流建议。