• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Nitroethane
V2EX  ›  程序员

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

  •  
  •   Nitroethane · Jul 28, 2023 · 4302 views
    This topic created in 1194 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    @acctv2 非常同意

    @hzzhzzdogee 是的,没办法了,只能用 Go 写了😠
    voidmnwzp
    voidmnwzp
    Aug 9, 2023 via iPhone
    23
    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
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1718 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 17:08 · PVG 01:08 · LAX 09:08 · JFK 12:08
    ♥ Do have faith in what you're doing.