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

2024-03-05 19:57:23 +08:00
 hardtopickname

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

现在有几个问题:

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

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

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

写 go 代码,请求处理过程中,尽量避开用请求可以修改的全局变量可以避免很多坑。
lsk569937453
2024-03-06 09:36:26 +08:00
java 换 golang 不会有任何提升。

golang 只是启动内存小,压力上来了内存一样暴涨。性能方面更不用说了五五开。
jonsmith
2024-03-06 09:37:40 +08:00
语言层能节省多少成本,Java 生态远优于 go ,开发效率更高。
duluosheng
2024-03-09 19:27:12 +08:00
go 上手快,内存占用很小。常用的框架这些年已经丰富很多,不用担心生态问题。
hardtopickname
2024-03-25 15:10:42 +08:00
@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