Golang grpc:它的可扩展性如何?

Golang grpc: how scalable is it?

GRPC on Go 的可扩展性如何?

我可以 运行 为每个连接到我的服务器应用程序的物联网设备提供一个 GRPC 服务器吗? IE。每个进程有 10-20k 个 GRPC 服务器?

你的意思是每个服务一个新的grpc监听TCP端口? Go 无法修复它的可扩展性;大量 TCP 侦听器在操作系统范围内存在可伸缩性问题。

如果你的意思是一个 TCP 侦听器对数千个其他设备进行反向代理,那么 Go 非常适合。 Go 擅长的是便宜 "threads",因为他们不必分配完整的线程堆栈。在 Go 中,产生一个 "goroutine" 的成本约为 4k,而不是与真实线程相比最少 1MB 的损失。

grpc 旨在通过 http2 传输并有效地重用套接字,并有效地打包数据。