工作中用到 golang 的同学能帮忙解答下问题吗

64 天前
 hardtopickname

背景: 目前几个小伙伴,准备做一个新的项目,我负责后端,项目启动资金靠自己,所以尽量节省成本; Java SpringBoot 应用启动一个大几百 m 的内存,听说 GoLang 内存占用小,所以打算用 Go 来实现我们的服务逻辑。

现在有几个问题:

  1. 实现一个同样逻辑的服务,一般情况下 golang 进程是否会比 jvm 进程内存占用小呢(我目前的理解是的),为什么
  2. go 的世界,一般是怎么操作 mysql 数据库的,要手写 sql 吗?是否有类似 jpa 的工具能快速开发?
  3. 如果我要服务化,进程间通信,一般使用什么协议呢?有现成框架吗?如果没有这边可能会考虑 http

希望能有经验的同学能帮忙解答下,非常感谢~

985 次点击
所在节点    问与答
12 条回复
kaifang
64 天前
1. 小,具体可百度
2. 可通过 gorm
3. grpc
seth19960929
64 天前
1. 小, 二进制运行, 不需要虚拟机
2. mysql 连接池, gorm 可以, gogen
3. go-zero, goframe 都可以
march1993
64 天前
1. 因为没有虚拟机层; 2. 也是靠 ORM ,比如 gorm ; 3. 不清楚,个人觉得 http 挺好,"net/rpc" 是个简单的实现,也可以考虑 gRPC
yeqizhang
64 天前
内存不值钱,节省资金没省到关键点吧
FarmerChillax
64 天前
1. 小,编译运行
2. jpa 这类工具叫 ORM ,可以自行搜索别的语言的 ORM ,go 中用的比较多的有 gorm 、ent 等
3. 进行间通信属于操作系统知识,根据你的描述我猜你需要的是 rpc ,那么现成的框架有 grpc (不止 go 能用,Java 也可以),但是也是比较毛胚,完整点的可以考虑 kratos (完整的服务治理,当然也重很多)
sunqb
63 天前
既然新项目,能省则省吧,直接用 java 生态别折腾了。用 go 你得🈶极客精神
IndexOutOfBounds
63 天前
小项目直接简单点,http 呗
singer
63 天前
类似八股文了
1. java 为什么大,首先是虚拟机,再一个是进程占用资源。请求大了线程多,资源占用多。go 没有虚拟机,go 处理请求用 goroutine ,每个 goroutine 默认占用 2kb 内存。goroutine 是用户态线程,上下文切换调度开销也小一点。
2. gorm ,配合上 gormt 自动生成表,基本上不用写 sql 了。
3. 语言不熟悉建议先 http 。等业务做上去了再考虑别的,不然踩了语言的坑就麻烦了。

写 go 代码,请求处理过程中,尽量避开用请求可以修改的全局变量可以避免很多坑。
lsk569937453
63 天前
java 换 golang 不会有任何提升。

golang 只是启动内存小,压力上来了内存一样暴涨。性能方面更不用说了五五开。
jonsmith
63 天前
语言层能节省多少成本,Java 生态远优于 go ,开发效率更高。
duluosheng
60 天前
go 上手快,内存占用很小。常用的框架这些年已经丰富很多,不用担心生态问题。
hardtopickname
44 天前
@kaifang
@seth19960929
@march1993
@yeqizhang
@FarmerChillax
@sunqb
@IndexOutOfBounds
@singer
@lsk569937453
@jonsmith
@duluosheng

感谢大家的回复,综合考虑,决定用 go 啦,项目已启动。非常感谢大家🙏🙏

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

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

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

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

© 2021 V2EX