Senorsen
2022-03-05 12:42:21 +08:00
如果是高并发服务的话,go 确实香,跑在老 i5 Mac 笔记本单机 QPS 20w+,内存占用 50M 可能还不到,静态编译体积几 M ,Docker 镜像只需要 from scratch 或 busybox/alpine ,也就是 jiM 到十几 M 大小( hello world 应用 json 返回,fiber 框架)。
同样的服务用大家最熟悉的 Java Spring Boot ,可能只能几百一千 QPS 吧,内存占用几🐔,镜像体积至少小几百 M (即使只有 JRE+应用也挺大了)。
当然肯定会有人说,用 Spring Boot 比不公平,应该用 Vertx 之类的异步框架。不过现在主流 Java 版本写异步可能还是没那么顺手的,至少不像 go 那么顺手和自然。不然的话,可能 QPS 几 w 单机也还是行的,内存占用稍多些,JVM 本身启动开销大点。
如果不是高并发服务,而是业务复杂些的 2B 应用,go 因为设计比较简洁,写起来可能会非常啰嗦,语法糖各种没 JVM 系的 Spring 框架及 Kotlin 语言那么顺手。收益反而也比较小。( go 开发难度增加很多,部署和运行时带来的收益可忽略不计)