V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hardtopickname
V2EX  ›  问与答

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

  •  
  •   hardtopickname · 261 天前 · 1402 次点击
    这是一个创建于 261 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    现在有几个问题:

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

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

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

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

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

    感谢大家的回复,综合考虑,决定用 go 啦,项目已启动。非常感谢大家🙏🙏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2940 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:25 · PVG 22:25 · LAX 06:25 · JFK 09:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.