1
guyeu 4 天前
我觉得这俩思路和语言关系不是很大。
golang 因为比较新,它出来的时候 Kubernetes 就是微服务的事实标准,服务网格也方兴未艾,所以很多工具直接就走这一套,其实现在用 golang 写的注册中心、配置中心也不老少。 Java/Spring 太古老了,几乎能在里面找到历史上所有微服务解决方案的影子,搞到今天这个地步,复杂度我觉得是已经到了离谱的程度,有识之士基本上都在另起炉灶( micronaut quarkus helidon, etc )。 对有靠谱运维且技术栈较新的团队,还是别用 spring 那套了。 |
3
guyeu 3 天前
@5261 那我就直接点,你列的这堆 AI 写的东西,不是 golang 和 java 语言的差异,更不是 golang 比 java 更优的地方,充其量是典型 Google 技术栈和典型 Spring 技术栈的差异,而且这段东西暗示的 golang 更优这件事情是不存在的。
你不是很懂 Kubernetes ?你列的 golang 这堆平台能力就没有哪了是能离得了 Kubernetes 的,你不懂 Kubernetes 咋用它们?就“云原生”“用平台”听起来很帅气?一点成本都没有的吗? 自己不懂 Kubernetes 也没有靠谱的运维团队帮你玩转这一套,就“用平台”,“移出代码”? 有运维提供平台能力,spring 这一套确实臃肿不堪,但是 Java 生态那么多框架,为啥指着 spring 的不足就要转 golang 呢? --- golang 简洁无糖的语法,天然的协程支持,简洁好用的并发同步机制( channel ),极小的运行时,某种程度上更优的跨平台能力这些东西你不夸,还你写的代码有这味,咋的你能把平台能力封装进 golang 的框架呗 |
5
guyeu 3 天前
@5261 我的观点是要用 golang 写上规模的微服务,是必须结合 k8s 的平台能力,这不是优点,是 golang 语言生态的缺失,当然这个路子很多公司在走,也很顺畅。
golang 还可以用来写单体服务,写客户端应用,甚至写游戏,这个语言绝对是一个设计优秀的语言,没有 k8s 也能用它做很多事情。 |
7
guyeu 2 天前 @5261 不会。
golang 程序员经常吐槽的 spring/java 味通常是指冗长低效的逻辑嵌套,比如封装 Accessor Methods ,堆叠套用各种工厂模式,还有屁大点事都要 New 一个对象。 这些是代码里的坏味道,但这是程序员的问题,不是面向对象的问题,假如有人看到面向对象的东西,就说这是 java 味,那是这个人的问题,不是代码的问题。 使用 fx 这样的 DI 框架,你首先就需要接受面向对象这个编程范式,这是个好东西,绝对可以帮你们消除混乱的全局状态,管理好应用的生命周期。 如果你们团队里有比较好的 Java 积累,我估计你们大概率确实会在 golang 里复刻一些在 java 里很常见的设计模式,这可以说是 spring 味或者 java 味,我觉得不是坏事,用 golang 的语法大概率可以写出更地道的代码,但能被大家理解,能解决问题,足够稳定的代码就已经是好代码了。 |