Gopher China 2021 講師專訪之曾慶國(guó) 在熱門的技術(shù)方向,都有Go的身影
曾慶國(guó)
好雨科技-技術(shù)負(fù)責(zé)人
從事容器云計(jì)算領(lǐng)域,先后于就職多家互聯(lián)網(wǎng)公司云計(jì)算部門,現(xiàn)任北京好雨科技有限公司技術(shù)負(fù)責(zé)人, 云原生領(lǐng)域開源項(xiàng)目 Rainbond 的總架構(gòu)師和開源社區(qū)負(fù)責(zé)人。在微服務(wù)架構(gòu)、分布式計(jì)算、服務(wù)網(wǎng)格等技術(shù)領(lǐng)域有較深的研究。
最初如何與 Go 結(jié)識(shí)的?在此之前,有無接觸過其他語(yǔ)言?談?wù)勊麄兊膬?yōu)缺點(diǎn)。
在15年的時(shí)候,研究 docker 在離線環(huán)境下的編譯和部署,首次接觸到 Go 語(yǔ)言。快速上手、內(nèi)存占用少、跨平臺(tái)編譯簡(jiǎn)單等特性吸引了我,后來在研究并二次開發(fā) Prometheus 時(shí)開始正式使用Go語(yǔ)言。在這之前寫過Java、PHP、NodeJS、Python。Java 優(yōu)勢(shì)很多,我認(rèn)為最大的劣勢(shì)就是資源消耗大。PHP 原來主要用來實(shí)現(xiàn)一些簡(jiǎn)單網(wǎng)站,開發(fā)效率很高,但網(wǎng)絡(luò)編程能力弱,擴(kuò)展復(fù)雜。NodeJS 也主要拿來做了些微站,可以跟前端有些復(fù)用,但包管理差,性能差。Python 由于歷史項(xiàng)目原因我們依然在使用,Python在數(shù)據(jù)處理領(lǐng)域很強(qiáng)大,但是我們使用其開發(fā)平臺(tái)業(yè)務(wù),經(jīng)常出現(xiàn)的運(yùn)行時(shí)問題讓人很頭大。不過這也不是 Python 獨(dú)有的問題,非編譯類語(yǔ)言都很難避免。
Go 語(yǔ)言中最看好哪種特性,談一談理由以及你希望它改進(jìn)的方面
之前版本 Release 的Go Module的特性很舒服,終于解決了依賴包版本管理問題,再也不用vendor目錄帶上一堆依賴包了,本地開發(fā)代碼結(jié)構(gòu)也不同約束在GoPath里了。現(xiàn)在最大的問題就是 if err!=nil 代碼太多。不過如果像其他語(yǔ)言一樣拋異常的方式也不好,錯(cuò)誤很容易沒有被處理從而導(dǎo)致運(yùn)行時(shí)異常。包括現(xiàn)在呼聲比較大的 泛型 也是,有了泛型確實(shí)處理很多問題代碼會(huì)簡(jiǎn)潔很多,但其帶來的問題就是復(fù)雜和慢。沒想明白之前,“簡(jiǎn)單”很重要。
Go 語(yǔ)言對(duì)大廠和創(chuàng)業(yè)公司來說分別有什么優(yōu)越性?
擁抱 Go 最主要的原因我認(rèn)為有三點(diǎn):處在云原生體系中;追求更好的業(yè)務(wù)性能+開發(fā)效率;實(shí)現(xiàn)網(wǎng)絡(luò)或工具類軟件;目前階段使用Go 來開發(fā)企業(yè)純業(yè)務(wù)、管理系統(tǒng)類服務(wù)我認(rèn)為依然不是最優(yōu)選擇,出于用人成本和體系成熟度考慮。目前 Go 語(yǔ)言開發(fā)者的需求大、候選人少,在招聘市場(chǎng)上,涉及云原生經(jīng)歷的 Go工程師基本上出來一個(gè)搶一個(gè)。然而比較好的一點(diǎn)是Java工程師 或者是 PHP工程師都很容易轉(zhuǎn)移到Go開發(fā)上來,因?yàn)槠渖鲜终娴暮苋菀住N宜趫F(tuán)隊(duì)就是創(chuàng)業(yè)公司,因?yàn)橹饕?Rainbond 云原生開源項(xiàng)目,必然選擇 Go 作為主要開發(fā)語(yǔ)言,團(tuán)隊(duì)目前的 Go 開發(fā)者基本上都是從其他開發(fā)語(yǔ)言經(jīng)過內(nèi)部培養(yǎng)轉(zhuǎn)移過來的。由于我們有開發(fā)者基礎(chǔ),因此其他一些業(yè)務(wù)我們也采用Go語(yǔ)言,為我們帶來的就是資源消耗成本很低。
Go 有沒有幫助解決公司的實(shí)際問題?
就如上個(gè)問題的回答一樣,我們屬于云原生領(lǐng)域的公司,Go語(yǔ)言成為我們的必選。在研發(fā)效率、服務(wù)性能、減少運(yùn)維成本方面都效果顯著。
對(duì)眾多大廠轉(zhuǎn) Go 提一些建議吧,在選型上 Go 語(yǔ)言適用什么場(chǎng)景,不適用什么場(chǎng)景?
多些大廠轉(zhuǎn)Go,對(duì)Go開發(fā)者社區(qū)的發(fā)展至關(guān)重要。引導(dǎo)開發(fā)者學(xué)習(xí)的方向,使Go開發(fā)者人群進(jìn)一步擴(kuò)大。至于場(chǎng)景在問題4中有所回答。
談一談 Go 的未來,將在哪些領(lǐng)域有更深的應(yīng)用
我是很看好Go語(yǔ)言的,并且很愿意推廣這個(gè)語(yǔ)言。它可以在云原生領(lǐng)域、中間件領(lǐng)域、物聯(lián)網(wǎng)行業(yè)大放光彩。可以這么說,目前火熱的技術(shù)方向,都有Go的身影。
介紹下本次分享的議題吧
本次分享的議題是“云原生技術(shù)在2B軟件交付的實(shí)踐”。做 Rainbond 這個(gè)開源項(xiàng)目多年,主要在2B軟件交付領(lǐng)域踏坑。云原生技術(shù)它的根本就是解決軟件的交付問題,當(dāng)然就包括了2C業(yè)務(wù)的持續(xù)交付運(yùn)維和2B業(yè)務(wù)的交付。而且我認(rèn)為在2B交付場(chǎng)景中更為重要,因?yàn)樵?B中面臨的交付問題是N倍放大(N代表客戶數(shù)量)。本次分享的內(nèi)容主體就是跟大家探討一種符合2B需求的標(biāo)準(zhǔn)化軟件交付模式和實(shí)踐方式。我們的愿景就是以后2B軟件交付領(lǐng)域可以繼保持超強(qiáng)的企業(yè)自定義性、又繼承現(xiàn)在SaaS服務(wù)的交付效率。
分享一下如何快速掌握一門新的編程語(yǔ)言,分享一些經(jīng)驗(yàn)給新gopher吧。學(xué)習(xí)go的最佳實(shí)踐是什么? 推薦一些書吧!
一句老話:“任何開發(fā)語(yǔ)言根本上都是一樣的,只是語(yǔ)法表達(dá)不同”。這句話真不是夸大其詞。當(dāng)開發(fā)者真正掌握了軟件設(shè)計(jì)模式、基礎(chǔ)結(jié)構(gòu)、邏輯思路。使用任何語(yǔ)言都是可行的。所以當(dāng)開發(fā)者學(xué)習(xí)新語(yǔ)言時(shí),一定要將您過去對(duì)于軟件的理解帶到新開發(fā)語(yǔ)言中,然后再盡快掌握其語(yǔ)法和關(guān)鍵性設(shè)計(jì)模式,融會(huì)貫通即可。以Go語(yǔ)言為例,除了基礎(chǔ)語(yǔ)法以外,最重要的就是要掌握好其 啟動(dòng)模式特點(diǎn)、channel特點(diǎn)、gorouting特點(diǎn),基本就入門了。然后結(jié)合一些標(biāo)桿性開源項(xiàng)目進(jìn)行深入學(xué)習(xí),比如:Beego、Gin、Prometheus、etcd等。
你是第幾次參加 GopherChina,對(duì)GopherChina大會(huì)有何期待?
作為講師還是第一次,很榮幸。GopherChina 大會(huì)組織國(guó)內(nèi)的Go開發(fā)者進(jìn)行深入的分享和聚會(huì),使開發(fā)者可以了解目前Go 語(yǔ)言在各行各業(yè)的應(yīng)用場(chǎng)景。最重要的就是壯大Go開發(fā)者人群。
想和各位技術(shù)大佬們同臺(tái)見面嘛?
那就趕快點(diǎn)擊下方「閱讀原文」報(bào)名參加呀!
