当前位置: 代码迷 >> 综合 >> Gopher China 2021 讲师专访之曾庆国 在热门的技术方向,都有Go的身影
  详细解决方案

Gopher China 2021 讲师专访之曾庆国 在热门的技术方向,都有Go的身影

热度:50   发布时间:2023-12-06 01:15:06.0

曾庆国

好雨科技-技术负责人

从事容器云计算领域,先后于就职多家互联网公司云计算部门,现任北京好雨科技有限公司技术负责人, 云原生领域开源项目 Rainbond 的总架构师和开源社区负责人。在微服务架构、分布式计算、服务网格等技术领域有较深的研究。

最初如何与 Go 结识的?在此之前,有无接触过其他语言?谈谈他们的优缺点。

 

在15年的时候,研究 docker 在离线环境下的编译和部署,首次接触到 Go 语言。快速上手、内存占用少、跨平台编译简单等特性吸引了我,后来在研究并二次开发 Prometheus 时开始正式使用Go语言。在这之前写过Java、PHP、NodeJS、Python。Java 优势很多,我认为最大的劣势就是资源消耗大。PHP 原来主要用来实现一些简单网站,开发效率很高,但网络编程能力弱,扩展复杂。NodeJS 也主要拿来做了些微站,可以跟前端有些复用,但包管理差,性能差。Python 由于历史项目原因我们依然在使用,Python在数据处理领域很强大,但是我们使用其开发平台业务,经常出现的运行时问题让人很头大。不过这也不是 Python 独有的问题,非编译类语言都很难避免。

 

Go 语言中最看好哪种特性,谈一谈理由以及你希望它改进的方面

 

之前版本 Release 的Go Module的特性很舒服,终于解决了依赖包版本管理问题,再也不用vendor目录带上一堆依赖包了,本地开发代码结构也不同约束在GoPath里了。现在最大的问题就是 if err!=nil 代码太多。不过如果像其他语言一样抛异常的方式也不好,错误很容易没有被处理从而导致运行时异常。包括现在呼声比较大的 泛型 也是,有了泛型确实处理很多问题代码会简洁很多,但其带来的问题就是复杂和慢。没想明白之前,“简单”很重要。

 

Go 语言对大厂和创业公司来说分别有什么优越性?

 

拥抱 Go 最主要的原因我认为有三点:处在云原生体系中;追求更好的业务性能+开发效率;实现网络或工具类软件;目前阶段使用Go 来开发企业纯业务、管理系统类服务我认为依然不是最优选择,出于用人成本和体系成熟度考虑。目前 Go 语言开发者的需求大、候选人少,在招聘市场上,涉及云原生经历的 Go工程师基本上出来一个抢一个。然而比较好的一点是Java工程师 或者是 PHP工程师都很容易转移到Go开发上来,因为其上手真的很容易。我所在团队就是创业公司,因为主要做 Rainbond 云原生开源项目,必然选择 Go 作为主要开发语言,团队目前的 Go 开发者基本上都是从其他开发语言经过内部培养转移过来的。由于我们有开发者基础,因此其他一些业务我们也采用Go语言,为我们带来的就是资源消耗成本很低。

 

Go 有没有帮助解决公司的实际问题?

 

就如上个问题的回答一样,我们属于云原生领域的公司,Go语言成为我们的必选。在研发效率、服务性能、减少运维成本方面都效果显著。

 

对众多大厂转 Go 提一些建议吧,在选型上 Go 语言适用什么场景,不适用什么场景?

 

多些大厂转Go,对Go开发者社区的发展至关重要。引导开发者学习的方向,使Go开发者人群进一步扩大。至于场景在问题4中有所回答。

 

谈一谈 Go 的未来,将在哪些领域有更深的应用

 

我是很看好Go语言的,并且很愿意推广这个语言。它可以在云原生领域、中间件领域、物联网行业大放光彩。可以这么说,目前火热的技术方向,都有Go的身影。

 

介绍下本次分享的议题吧

本次分享的议题是“云原生技术在2B软件交付的实践”。做 Rainbond 这个开源项目多年,主要在2B软件交付领域踏坑。云原生技术它的根本就是解决软件的交付问题,当然就包括了2C业务的持续交付运维和2B业务的交付。而且我认为在2B交付场景中更为重要,因为在2B中面临的交付问题是N倍放大(N代表客户数量)。本次分享的内容主体就是跟大家探讨一种符合2B需求的标准化软件交付模式和实践方式。我们的愿景就是以后2B软件交付领域可以继保持超强的企业自定义性、又继承现在SaaS服务的交付效率。

 

分享一下如何快速掌握一门新的编程语言,分享一些经验给新gopher吧。学习go的最佳实践是什么? 推荐一些书吧!

一句老话:“任何开发语言根本上都是一样的,只是语法表达不同”。这句话真不是夸大其词。当开发者真正掌握了软件设计模式、基础结构、逻辑思路。使用任何语言都是可行的。所以当开发者学习新语言时,一定要将您过去对于软件的理解带到新开发语言中,然后再尽快掌握其语法和关键性设计模式,融会贯通即可。以Go语言为例,除了基础语法以外,最重要的就是要掌握好其 启动模式特点、channel特点、gorouting特点,基本就入门了。然后结合一些标杆性开源项目进行深入学习,比如:Beego、Gin、Prometheus、etcd等。

 

你是第几次参加 GopherChina,对GopherChina大会有何期待?

作为讲师还是第一次,很荣幸。GopherChina 大会组织国内的Go开发者进行深入的分享和聚会,使开发者可以了解目前Go 语言在各行各业的应用场景。最重要的就是壮大Go开发者人群。

想和各位技术大佬们同台见面嘛?

那就赶快点击下方「阅读原文」报名参加呀!

  相关解决方案