V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Nitroethane
V2EX  ›  程序员

Go 语言选手学写 Java SpringCloud 一周的体会

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

    我组目前的技术栈是 Go + Python + C++,人数在十人以下。本人只在上大学时学过一段时间 Java 和 SpringBoot (不超过一个月)。
    因为业务需要,需要把老项目中的一个功能独立出来做成微服务。老项目是用 Python 2 写的屎山,没有微服务一说。
    这个功能很简单,目前主要有以下几点:

    • 接收客户端发送的数据,简单处理之后发送到 Kafka 中。数据量比较大,而且该功能要独立出来,所以计划用 gRPC 协议实现,且计划后续其它功能在此基础上开发。
    • 服务端给客户端实时推送配置。这个功能计划用 consul 或者 etcd 实现,每个客户端 watch 自己的 key ,value 有变动之后自动获取最新配置数据。
    • 实时监控客户端的连接状态,如果有客户端掉线,需要发送告警信息。
    • 后续还会有数据处理和数据打点相关的需求。

    因为涉及到微服务,就想到 SpringCloud 挺有名的,花了一天时间了解了下。然后觉得不错,用了三天实现了第一个需求。用 SpringCloud 的感觉真爽,比如第一个功能,只需要写一个类,就把客户端发来的数据处理后写到 Kafka 里;再写一个类实现 gRPC server ,通过 Spring 的依赖注入把前面的数据处理类注入到 gRPC server 中,就完事了。如果用 Go 写,操作 Kafka 得写一大坨,实现 gRPC Server 得写一大坨,读取配置文件得写一大坨。不仅写起来繁琐,而且还要考虑使用的三方库有没有问题,是否经常维护。
    当然不可否认的是后续会踩到一些坑。

    但是今天下午老板告诉我说 Java 不符合当前技术栈,还是用 Go 写比较好。虽然大概率得用 Go 重写,但下周我还是想再争取一下。

    另外求各位 V 友推荐下 Go 语言中是否有类似 SpringCloud 这种比较全能的微服务框架,如果老板不同意的话得用 Go 重写了。

    请不要评论「老板说什么就是什么」、「折腾这么多干嘛」之类,因为我组不存在这些问题。

    23 条回复    2023-08-09 02:05:57 +08:00
    putaozhenhaochi
        1
    putaozhenhaochi  
       278 天前 via Android
    goframe 好像走的这种路线
    lanlanye
        2
    lanlanye  
       278 天前
    都微服务了,要不整个 k8s 吧……也算 Go 技术栈,后面你说的这些需求甚至可能不怎么需要写代码就能解决了。
    Nitroethane
        3
    Nitroethane  
    OP
       278 天前
    @lanlanye 只要是我经手的项目都上 k8s ,所以这个功能做出来后肯定上 k8s 。而且我计划用微服务架构,慢慢把老项目的功能往过来迁。因为人手少,原来的老项目目前不太可能进行优化,虽然有很多问题。这个老项目也不可能上 k8s ,因为负责这个老项目的老前辈不喜欢折腾 k8s 这种东西 🙈
    lasuar
        4
    lasuar  
       278 天前   ❤️ 1
    go 框架多了,现在挺多人用 go-zero 微服务框架
    BBCCBB
        5
    BBCCBB  
       278 天前
    go 写业务代码真的一坨.
    byene
        6
    byene  
       278 天前   ❤️ 1
    kitex 吧
    JustSong
        7
    JustSong  
       278 天前 via Android   ❤️ 1
    kitex ?字节内部也在用
    Nitroethane
        8
    Nitroethane  
    OP
       277 天前
    @BBCCBB 真的是一坨,写了 Java 之后就受不了 Go 了
    Jrue0011
        9
    Jrue0011  
       277 天前
    说起来字节不是还有个 hertz 框架吗
    JustSong
        10
    JustSong  
       277 天前 via Android
    @Jrue0011 这个是 web 框架
    zetaochen
        11
    zetaochen  
       277 天前
    @lanlanye 楼主不是在问代码框架吗..跟 k8 有毛关系
    morebuff
        12
    morebuff  
       277 天前
    @Nitroethane 我就是 Java 转 go 的,Java 写业务很好,就是很多过度封装,很臃肿
    xubeiyou
        13
    xubeiyou  
       277 天前
    java 写业务还是很舒服的- -毕竟生态好 很多冗余封装了
    jjx
        14
    jjx  
       277 天前
    想法不同

    用 go/python 都是想控制每个过程 java 则是在隐藏每个过程
    jsboy
        15
    jsboy  
       277 天前
    哈哈,我一个 java 程序员,最近在学习 go
    cdx
        16
    cdx  
       277 天前
    我公司使用 kratos 和 consul 实现微服务,使用起来感觉也还行
    angryfish
        17
    angryfish  
       277 天前
    go 更适合写中间件吧,写业务代码感觉好难受。
    Nitroethane
        18
    Nitroethane  
    OP
       277 天前
    @angryfish 同意,写了一些业务代码,越写越难受

    @cdx 感觉这些框架的生态还不是很完善,怕踩到很多坑😂

    @jsboy 客户端我还是用 Go 写,只是打算把后端改成 Java 。祝你学习顺利😂

    @jjx 就是觉得有些过程可以隐藏,没必要每次都重复

    @xubeiyou @morebuff 就是看中了生态好这一点😂
    hzzhzzdogee
        19
    hzzhzzdogee  
       277 天前
    没有, 楼上说的 goframe, kratos 这些都达不到你想要的效果
    acctv2
        20
    acctv2  
       276 天前 via Android
    我觉得 go 的大规模项目的组织能力和 Python 一个量级,规模上去了就恶心
    gyt95
        21
    gyt95  
       273 天前
    不是都说 Go 大道至简吗?想起我们公司后端用 Go ,他们都还挺看不起 Java 那一套的
    Nitroethane
        22
    Nitroethane  
    OP
       271 天前
    @gyt95 是大道至简,简得什么东西全都得自己从头写,写烦了😅

    @acctv2 非常同意

    @hzzhzzdogee 是的,没办法了,只能用 Go 写了😠
    voidmnwzp
        23
    voidmnwzp  
       267 天前 via iPhone
    1.Java 基本上==Spring ,至少在目前的工业体系上是的,也就是说 Java 基本只能干 web 的活,要用 nio 还要学复杂的 netty ,go 直接一个 net 库搞定,而且还能做网络编程写写 proxy 、tunnel 很方便
    2.你说的注解方便那都是靠 spring 和 Java 强大的反射功劳,但代价是 runtime 必须靠 jvm ,无法像 go 一样编译一个二进制文件丢到服务器上就能跑,而且越写越多 maven 也会让你抓狂,只能说 spring 是 Java 的大救星,要不你看看 Javaee 的 servlet 那真是鬼见愁,我保证如果你用原生 servlet 去写,那你一定会无比想念 go 的时光,可以对标下 net/http
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   914 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:57 · PVG 06:57 · LAX 15:57 · JFK 18:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.