桔妹导读:第五届 Gopher China 大会举办在即,作为国内最大规模,最专业的 Go 语言线下技术交流大会。通过国内外 Go 语言届的大神给大家带来技术的分享,实时了解 Go 的动态、应用场景以及技术实践的细节等。会前我们将对本次大会所有的讲师一一做专访,下面是来自滴滴出行/R lab 高级专家工程师杜欢的专访。
专访内容
01/ 简单介绍下自己和您现在的工作
大家好,我是杜欢,来自滴滴出行。我加入滴滴已经将近四年,从一开始就在公司内积极参与推广 Go 相关技术栈并为公司和部门贡献了不少 Go 代码。我从 2011 年就开始关注和使用 Go,对这个技术的发展历程和内部实现原理比较了解,平时也会写一些开源项目https://github.com/huandu ,不少都跟Go 相关。我现在就职于滴滴出行的 R lab,这是一个专注于创新业务的部门,我在其中负责即时配送技术和 R lab 的基础技术架构与稳定性建设。
02/ 回忆一下与 Golang 的渊源。和 Go 结缘是什么时候?用 Go 语言实现的第一个项目是什么?运用 Go 语言截止到目前,对它最深刻的印象是什么?
截至目前,我对 Go 印象最深的是相对低的入门和维护成本。通过非常简单的培训、使用非常精炼的代码规范和合适的开发框架,我们可以让其他语言背景的开发者快速转成 Go 开发者,并且能写出可读、高效和稳定的业务代码,这相对其他语言来说是一个非常大的竞争优势,我们可以快速打造一支使用 Go 技术栈的有战斗力的团队。
03/ 2009年诞生至今,Go语言基本统治了整个云计算领域,作为最专业的Go语言专家,您认为这是由于它的哪些优雅的特性?Golang未来还会有什么样的改进和突破?Go和其他语言相比最明显的优势是什么?
我觉得“统治”还算不上吧,Java 在各方面还是挺有优势的,不过云计算确实有不少细分领域上都在大量使用 Go,比如 docker 生态中的各种工具链。
Go 作为一个后起之秀能做到这些,我觉得是因为它拥有许多恰到好处的功能。首先,Go 作为一种系统语言,可以直接操作内存和调用操作系统函数,甚至可以为特定 CPU 编写汇编,这让它能够成为新时代的 C,侵入到 Java 和各种动态语言触碰不到的领域。其次,Go 拥有非常简单易懂的语法,熟悉 Java、Python、Javascript、PHP 等语言的开发者能快速上手,不会觉得陌生,这个特性让 Go 快速获得了很多用户,相比同期出现的 Rust、Swift、Nim 等语言更容易学习理解。最后,Go 也非常幸运的抓住了云计算这个风口,它所针对的多核、高并发、低延时、虚拟化等场景恰好是近些年来发展最快的方向,填补了很多更成熟的程序语言在这些方面的短板。
Go 未来还会继续在低延时 GC、泛型、依赖管理等方面发生重大变化,并不断完善内置的基础库功能,相信后面它会在保持简洁的前提下变得更强大。我个人则非常看好针对 Go 的各种代码生成工具的未来,Go 严谨而简单的语法可以让它轻易被工具所理解,使用一些合适的工具链就能让 Go 业务代码用简单好读的代码写出复杂健壮的程序。
04/ 您是否有关注往届 Gopher China 大会,对往届 Gopher China 大会的风格以及内容的印象是怎样的?希望这届 Gopher 大会加入什么新鲜元素?
以前并没有机会亲身参与 Gopher China,这是我的第一次。我看过去年在上海的大会分享,感觉有几个分享非常扎实给力,比如 CGO 的那个主题。
对于这次大会,我希望能够增加一些 Go 方向上大趋势的介绍和讨论,我看到议程第二天有一个《Go 的未来》座谈,很期待这个环节可以给我一些启发。
05/ 对于一些即将毕业的,特别是对自己未来就业一片迷茫的 gopher,在他们未来的求职道路上有什么建议?
首先要对自己的能力有信心,如果在学校已经学习了 Go 相关技术栈的知识,并有一定的实践经验,这对于求职来说已经是一个非常硬的敲门砖了,非常有竞争力。另外,公司对于应届毕业生的技术深度和广度要求并不高,最关键的是技术基础,包括各种计算机基础、语言、基本的软件设计模式、网络编程等方面,建议 Gopher 不要仅仅实践 Go,也要多关注一些基础内容,会对自己的现在和将来都很有帮助。最后,祝大家求职顺利。
06/ 现在很多企业项目都在准备转Go,对于这些项目的负责人有没有建议和经验分享?
Go 语言上手较快,比较适合从零到一的业务大量使用,当前已经有不少开源库覆盖了微服务架构中用到的方方面面功能,已经可以在生产环境中使用。在企业中使用 Go 也有不少值得注意的坑,最大的一个是开源库质量比较参差不齐,建议设置专人来进行各种库的选型和代码梳理,确保企业对这些库的实现有充分的理解,并有能力自行解决里面的问题。我在实践过程中就遇到了好几个知名库的 bug,提交了 issue 没人回复,自己找到问题修复后提交了 PR 也没有最终合并到 master,最终不得不自己在公司内维护一个 fork 版本。
07/ 百忙之中,是什么原因促使您莅临本次大会?
这次能代表滴滴参加 Gopher China 大会挺荣幸的,说起来真的有些意外,因为滴滴为了能给大家带来一次有价值的分享还进行了内部推荐,我最开始只是抱着试一试的态度报名参加了这个活动,没想到最后被推举出来,现在倍感压力,希望所分享的内容可以给大家带来一些收获。欢迎没有到现场的 Gopher 朋友关注 Gopher China 相关网站信息,及时查收会议中分享的各种干货,相信一定会对大家带来很多启发,下次就不会不舍得花钱来看了。
08/ 选择一位 Go 语言大神作简单评价,目前和您在技术上交流最多的Go 语言大神是谁?
和我交流最多的是滴滴出行的陶文 https://github.com/taowen
他对各种技术都了如指掌,在 Go 技术栈方面也相当深入,在公司内实现了相当多基础库,业余时间也实现了很多让我很有启发的 Go 语言库,比如Modern Go Programming、plz(https://github.com/v2pro/plz)、json-iterator/go (https://github.com/json-iterator/go )等。
09/ 对于这次大会上您分享的主题简单介绍一下
我这次分享的题目是《大型微服务框架设计实践》,这是个很大的题目,也是我在滴滴内部很喜欢跟大家聊的话题。大型微服务框架和一般微服务框架的设计与实现的关注点并不一样,如果把微服务当作操作系统上的可执行程序来看,那么一般微服务框架关注的是怎么让程序开发变得简单快速,会专注于提升单个程序的开发体验,而大型微服务框架则相当于操作系统本身,需要考虑如何为各种异构程序设计一个既开放又受控的环境,可谓框架的框架。实现这样的框架并不太难,只是在设计层面上需要做很多的斟酌,并且突破一些关键技术点,在我的分享中会提到这些内容,希望能对大家有所帮助。
本文来源:Go中国微信号(id:golangchina),查看【原文链接】