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

81 天前
 momowei

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

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

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

14427 次点击
所在节点    Go 编程语言
148 条回复
Mystery0
81 天前
@Mystery0 数据库和 redis 在单独的机器上,通过内网连进去,不在 k3s 里面
layxy
81 天前
目前 go 的生态已经很不错了,以前一般公司不太敢切到 go,轮子少,尤其是特定业务缺少轮子自己造工作量很大,现在公司用 go 的不少了,不只是服务器内存成本
error0
81 天前
/流汗 这种帖子下次还是开到个人开发者这类的吧,仅仅是剩内存不足以让企业更换技术,这个成本比内存带来的成本高得多
sagaxu
81 天前
@ipwx 一套一两千是卖 saas 吧,一般是多租户设计,点击几下就上线了,边际成本接近于零。

@wnanbei 多花一个人天就不止 1000 了。

@Jinnrry 上来就吃掉几个 G 内存的应用,用 Go 也小不了多少,按照过去经验,大概能节省 40%到 60%左右。按每个容器省 2G 算,10K 个容器就是 20T 内存,采购价约 60 万,按使用 3 年算每年才 20 万,还不到半个开发的成本。

个人玩儿票业务,跟营收支柱业务,成本敏感度差异是很大的,租办公室一个工位成本就要一两万一年了,核心区域一个工位一年成本要五万。让个人掏这个钱,体感要命了一样。

如果省内存收益巨大,哪个公司砸点钱用 Rust 或 C++重写包括 hadoop 在内的一大把基础设施,应该不愁销路。
momowei
81 天前
@sagaxu 你说这么多,我想说啥列,让一个人写 java 的人写 go 并不是啥难事,之所以是 go ,是因为他上手很快,你说的什么 rust,c++这些上手门槛和 crud 效率跟 go 和 java 都差太多了
zhady009
81 天前
最大堆给小点用轻量级的框架 Java 也可以比较小,用 Vertx HttpServer 压测最大堆给 32M 压测结果
➜ ~ wrk -t10 -c100 -d10s http://localhost:8080
Running 10s test @ http://localhost:8080
10 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.33ms 2.94ms 74.85ms 98.96%
Req/Sec 9.05k 2.01k 11.63k 82.97%
909414 requests in 10.10s, 8.51GB read
Requests/sec: 90003.95
Transfer/sec: 861.95MB

整个应用加上一些非堆的占用实际用 100M ,只想说要根据应用多方面的因素来选型
aLazarus
81 天前
每次看到这种帖子,我都想把我的服务器换成 go ,可惜没时间去学啊
qcbf111
81 天前
我还是选择 c#性能和内存双收,美滋滋。
wxf666
81 天前
@zhady009 #26

连 wrk 都能用 10 线程,Vertx 本身是用了二三十个线程吗?

100 个 TCP 连接,占不了啥内存吧。。每个 4KB ,也就是 400 KB 这样?
zhady009
81 天前
@qcbf111 还有开发体验
zhady009
81 天前
@wxf666 只是简单做个演示,很多人对 Java 有刻板印象应用一启动就要用多少 G 内存不根据自身的需求做一些选择调整
helone
81 天前
说大厂不在乎服务器成本的我真不知道哪个大厂,字节跳动连 Go 的 HTTP 框架和 RPC 协议都要自己实现,然后洋洋洒洒写了一堆报告,分析更换后节省了多少内存和 CPU
happy32199
81 天前
有做信创的吗?据说 90%的项目只认 JAVA 有这个说法吗?
yuezhiyuan
81 天前
我运维,投 go 一票太方便了
资源占用低,二进制运行。打包完的 apline 容器只有 2-30m
importmeta
81 天前
我主要写 Node 的, 相比而言 Java 内存确实多, 代替 Java 上云确实能省钱, 个人项目选 Node 肯定不选 Java, 现在 Node 世界有个新运行时叫 Bun, 用 Zig 写的, Benchmark 吊打 Gin Spring, 以后哪天说不定就火了.
luckyrayyy
81 天前
不懂想问,生态方面劣势大吗? Java 写业务代码门槛太低了。
timothyye
81 天前
go 也挺适合单打独斗搞私活,最小化服务器成本
PopRain
81 天前
@happy32199 医疗系统很多都是.net c# 开发的,前不久,一群不搞 HIS 的人, 给卫生局出了一个去 A 调研报告(原来网上有,被投诉撤掉了),就是认为 JAVA 是安全可控的,c# 是要去 A 的..... 屁股决定大脑
tt67wq
81 天前
@newaccount 现在 go 培训班都批发多少轮了,不能说一抓一把也能说并不稀缺
zoharSoul
81 天前
@helone #32 京东, 部门费用摊分计费只算核数, 所以 2c16g 和 2c1g 实际上是一个钱, 这样算下来 go 反而因为性能是亏得

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

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

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

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

© 2021 V2EX