2

开源go-zero作者描述自己从Java到Go语言经历 - Reddit

 2 years ago
source link: https://www.jdon.com/59671
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

开源go-zero作者描述自己从Java到Go语言经历 - Reddit

我写代码已经超过20年了。在使用Go之前,我使用过很多编程语言,包括C、C++、C#、Java。2013年初,我决定学习Go。

我花了一天时间来阅读Go的语法和关键词,又花了几天时间来阅读官方文档和博客。强烈推荐Effective Go 。之后,我开始写一个小的爬虫项目,发现写Go代码非常舒服。

然后我开始用Go重写我们的生产服务,这些服务是用Java和PHP写的。而在2015年,我们所有的生产服务都采用了Go语言。我们有3000多万用户,日活跃用户超过300万。与Java和PHP相比,我们节省了大约50%的服务器/云计算成本。

2018年,我加入了另一家公司,超过5000万用户,约700万日活跃用户。由于大量的服务停机,我决定用Go和我的框架重写服务。我们花了大约5个月的时间,我们得到了比99.99%更好的正常运行时间。此外,我们还开发了一些开发工具,帮助我们提高了工作效率。

所有的框架和工具将在2020年下半年在GitHub上开源。到目前为止,大量的用户和反馈帮助我们改善了很多。在1年半的时间里,有15.6万颗星星和2.2万个分叉。

https://github.com/zeromicro/go-zero

去年,我在github上做了~2k贡献。我还开放了其他一些项目的源代码,所有这些努力对我的技术能力和工作机会都有很大帮助。

其他Reddit网友:

为什么我决定从 Java 转移到 Go 是出于以下考虑:

  1. 我们现有的所有代码都是用 Java 编写的,没有人知道它是如何组织的。当服务器挂起时,每个人都告诉重新启动,大多数问题都没有根本原因。
  2. 我决定重写整个系统,并改用另一种编程语言,以避免从以前的代码库中复制/粘贴。
  3. 我们有数千万用户,服务器成本是 Java 的一个非常重要的问题。

以及其他一些次要的考虑。

回复:我不得不怀疑这其中有多少是由于缺乏对JVM的了解,缺乏适当的调整,缺乏可观察性,等等。

当然,我认为也有Java的错,由于容器化,这一代人更喜欢更简单的运行时,不断地移动(Nodejs,Python,Go coroutines)。

另外,这个故事有多少是公司(或你)"重写了整个系统 "的事实,所以当然现在对你来说更容易理解。下一个人也会是这样吗?Go的生态系统、堆栈痕迹、剖析工具,仅仅是由于年代久远,还没有达到Java的水平。

我在 Go 中的工作效率比在 Java 中要高得多。

我认为不同的人使用不同的语言很好。在 Java 世界工作了 20 年后,我非常确信 Java 中的大多数“最佳实践”与维护和生产力是对立的。但是不可能衡量开发人员的生产力,所以这只是一个基于意见的陈述。

我认为说 Java 是 go 的对立面很有用。我个人的感觉是,Go 程序倾向于只解决手头的问题,并让你的架构不断发展以适应需求。Java,一直到 getter 和 setter 的普遍使用,都是关于通过过度工程来解决明天的问题。

Go 无疑是对 90/00 年代面向对象的膨胀和复杂性的回应,也是对过程化编程的回潮。Java 是对 C/C++ 带来的安全性和开发人员生产力伤痕的回应。它的目标永远不是让你更快地离开地面,而是随着时间的推移提高生产力。

我并不是要否定任何人的经验,我只是很难相信真正的衡量Go 对开发人员的生产力是否更好。当人们开始继承这些遗留的 Go 系统并需要将高度过程化的领域逻辑拼凑在一起时,这些逻辑分布在数十个微服务中。也许它确实是当今系统中更好的工具。但我也倾向于同意 Kelsey Hightower 的观点,即单体很快就会重新流行起来;)。

我的论点是面向对象的语言在较大的代码库中大放异彩,作为一种管理复杂性的工具,过程方法在较小的代码库中变得更具吸引力。随着时间的推移,Granted Go 正在获得更多传统的 OO 支持。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK