go 的内存优势在部分场景比想象中多

1 天前
 momowei

不是吵架帖子,但经常看 go 和 java 比较的时候,经常有人说,go 节省点的内存跟程序员相比根本不值得一提,我越想越觉得不对劲,对于最常规的 crud 来说,不得不说 java 确实比 go 还是要一些的,不过事实是 java 或者 php 程序员转 go 其实狠快根本没那么难,而且现在环境下程序员不一定就很贵了。

go 和 java 我自己都在写,一般来说对于不差钱的国企和政府以及企业市场,java 确实是最适合的,但是我也自己做一些小产品和项目给一些小公司,我能感觉到 java 和 go 对你拿单的成本影响是很大的,比如我有一个订票(城际定制商务车业务)小程序,有时候是我自己提供云服务器,我不得不说物理机的内存确实狠便宜,可是云服务器的内存真的很贵,新用户还不明显,老用户续费狠明显,在一台 2 核 4g 的云服务器上,我一般自建数据库和 redis,然后再配合 go 的应用,因为可能面对好几个客户,会有一些自定义需求,所以部署个五六个是狠轻松的,因为每个应用的访问量并不大,但如果是 java 是很难这样子搞得,这样给了自己很大得利润空间以及拿单成本。

说了这么多,我只能说 go 其实更适合个人开发者和成本敏感型得小团队,因为一般这样团队,都自己写程序,最大得成本就是云服务得开支了,最后再说一句云服务器得内存,cpu,宽带真得很贵,动不动类似 spring 全家桶那样得架构真得狠费机器。

9185 次点击
所在节点    Go 编程语言
125 条回复
issakchill
1 天前
sprinboot 换成 quarkus 会不会好点呢?
chendy
1 天前
2c4g 的服务,本地数据库 redis ,跑五六个实例
没干过私活的再次感觉眼界打开了
Hookery
1 天前
狠轻松的 go ,又有什么理由不用呢?
liaohongxing
1 天前
同感 ,我一个 go 写的物联网项目 ,实时 300 个设备在线 + 大量消息 + webapi 才 25M 内存, 太省了。已稳定运行 3 周
newaccount
1 天前
把写 go 的开了换成 java 的,省下来的工资够买多少台服务器了
realpg
1 天前
@chendy #2
2c4g, 6 个机器 跑 10Kqps 还空余 大量资源
MoYi123
1 天前
@newaccount 买服务器不是花钱就行的, 服务器越多运维的成本就越高, 架构也可能要重新设计.
DandelionFlowers
1 天前
感觉狠赞
lambdaq
1 天前
一方面,你说云主机内存贵,很有道理。jvm 就是费钱

另一方面,你都 redis 了。。不肯拿个 2G 4G 容量的 redis 吧。。。。所以还是得费内存
lambdaq
1 天前
不可能拿个 2G 4G 容量的云主机跑 redis 吧 —— 结果还真是 2C4G 。。。你赢了。。。
csys
1 天前
说内存效率不重要的基本都是大厂吧
对于小厂来说,java 的效率可太吃成本了
bthulu
1 天前
大厂可能无所谓, 像我这种部署到客户厂里的, go 我只要一台几百块的口袋机就行了, java 那可不行.
billzhuang
1 天前
你的 redis 是用来做分布式锁还是做缓存用的?
sagaxu
1 天前
2c4g 和 2c16g 每个月就差 100 快钱而已,什么业务成本能敏感到这种程度?

业务量大的自己找机房托管,单个开发的成本,足够均摊 20 台 40 核 256G 内存的费用了。
ipwx
1 天前
@sagaxu 据说现在的外包,都卷到了一套系统一两千,还带一年服务器的。
dobelee
1 天前
@ipwx 卧槽开眼了。
wnanbei
1 天前
@sagaxu 2c4g 160 ,2c16g 280 ,这成本快翻倍了吧
Jinnrry
1 天前
主要是 jvm 、spring 这一套太重了。在目前家家降本增笑的背景下,大厂照样在乎成本了。微服务、容器化的架构下,java 应用上来 jvm 就吃掉几个 G 的内存,几千上万个容器开销就非常大了。
maxwellz
1 天前
我要笑死了🤣,7 个”很“和 7 个”狠“
Mystery0
1 天前

刚刚去 k3s 截了个图
自己买云厂商活动机组的 k3s ,普遍是 2c4g ,所以对内存很敏感,一旦全部跑在一台机器上面之后,内存爆了机器都连不上

部署的这些东西,除了 python 那个和 halo ,其他都是我自己写的,用 go 写的请求量超大的服务,占用内存也比那几个 java 老服务没流量占用的内存小一大半。
绿色框的 java 服务设置了 jvm 内存限制为 1G ,它的请求量大,占用内存多没得说;蓝色框的两个老服务,基本上没什么流量了,现在设置的 jvm 内存限制是 512M ,再低就起不来了


现在你问我写新东西要用 java 还是 go ?你觉得我该选什么?
从图上看,go 写的东西无论是 cpu 还是内存都比 java 低太多了


————————
FAQ:

1.为什么不加钱上大机器?
A:钱不是大风刮来的,就这一堆,算下来一年都要好几千块钱呢

2.为什么这么多 java 服务?
A:有些是以前写的,为了降低占用,我都把里面的代码改了很多了,老服务做兼容的逻辑,以前是查库,现在我改成了返回死数据。如果时间够,我是真的想把这堆东西全部用 go 重写

3.这是 pod 的占用,有些两个容器的是不是其他容器占用大
A:有两个容器的,第二个容器都是 categraf ,用来采集 promethus 数据上报监控的,没有这个监控,我连哪台机器内存爆了都不知道

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1080790

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX