Golang 的創(chuàng)建是為了實(shí)現(xiàn)最大的用戶效率和編碼效率。已經(jīng)熟悉 Java 或 PHP 的程序員可以在幾周內(nèi)接受 Go 的培訓(xùn)(許多人最終會更喜歡它)。在本文中,Dewet Diener 探討了 Golang 的優(yōu)缺點(diǎn),以及它的測試驅(qū)動開發(fā) (TDD) 如何完美契合。
成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、唐河網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價格優(yōu)惠性價比高,為唐河等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
Golang 由 Google 開發(fā)和設(shè)計(jì),于 2009 年作為一種綜合性編程語言首次出現(xiàn),旨在最大限度地提高編碼效率。創(chuàng)建該語言的目的是修正其他已建立語言的缺陷。盡管 Golang(或簡稱為“Go”)是一門年輕的語言,但已經(jīng)積累了大量的開發(fā)人員,因此我們想分享為什么在 Curve 我們喜歡 Golang,以及我們?nèi)绾尾捎盟鼇韺?shí)現(xiàn)我們移動銀行業(yè)務(wù)的目標(biāo)到云端。
Go 是一種精致的編程語言:它支持“所見即所得”的原則,這意味著清晰易讀的代碼和更少的復(fù)雜抽象。該語言本身易于使用且易于訓(xùn)練。盡管如此,作為一個相對較新的生態(tài)系統(tǒng),要找到對 Go 具有廣泛預(yù)先知識的工程師可能會很棘手。
然而,與其他編程語言不同,Go 的創(chuàng)建是為了最大限度地提高用戶效率。因此,具有 Java 或 PHP 背景的開發(fā)人員和工程師可以在幾周內(nèi)獲得使用 Go 的技能和培訓(xùn)——根據(jù)我們的經(jīng)驗(yàn),他們中的許多人最終更喜歡它。
在 Curve,我們大力提倡測試驅(qū)動開發(fā) (TDD),Go 的框架與這種方法保持一致。通過簡單地命名一個文件 foo_test.go 并在該文件中添加結(jié)構(gòu)化測試函數(shù),Go 將快速有效地運(yùn)行您的單元測試。這一創(chuàng)新功能提高了生產(chǎn)力,因?yàn)樗梢愿訉W⒂跍y試驅(qū)動的開發(fā)和改進(jìn)的同行評審機(jī)會。
Golang 具有出色的生產(chǎn)優(yōu)化品質(zhì),例如內(nèi)存占用小,這支持其在大型項(xiàng)目中作為構(gòu)建塊的能力,以及開箱即用的與其他架構(gòu)的輕松交叉編譯。由于 Go 代碼被編譯為單個靜態(tài)二進(jìn)制文件,因此它可以輕松進(jìn)行容器化,并且通過擴(kuò)展,將 Go 部署到任何高可用性環(huán)境(例如 Kubernetes)中幾乎是微不足道的。
它提供了一種機(jī)制來保護(hù)工作負(fù)載,通過擁有非常纖薄的生產(chǎn)容器而沒有任何無關(guān)的依賴項(xiàng)。這使得構(gòu)建、部署和維護(hù)基于 Go 的資產(chǎn)更加直接和安全,并為希望建立或發(fā)展其微服務(wù)戰(zhàn)略的公司提供了可靠的選擇。
Go 是專門為滿足我們快速發(fā)展的技術(shù)生態(tài)系統(tǒng)的需求而創(chuàng)建的。例如,Go 可以滿足您構(gòu)建 API 所需的一切,并將其作為其標(biāo)準(zhǔn)庫的一部分。它使用簡單,高性能的 http 服務(wù)器消除了團(tuán)隊(duì)設(shè)計(jì)新項(xiàng)目時經(jīng)常發(fā)生的一些常見的 探索 和設(shè)計(jì)癱瘓問題——這對于一些其他流行語言(如 Java 和 Node.js)來說太常見了。
Golang 還通過其內(nèi)置于語言本身的自動格式化程序巧妙地解決了代碼格式化分歧。這完全消除了格式爭議,進(jìn)而提高了團(tuán)隊(duì)的生產(chǎn)力和注意力。
盡管我是 Go 的擁護(hù)者,但它顯然也不是沒有缺陷。一個爭論不休的特性是 Go 沒有顯式接口,這是許多開發(fā)人員習(xí)慣的概念。雖然不是有害的,但它可以使選擇最適合您的結(jié)構(gòu)的接口成為一項(xiàng)任務(wù)。這是因?yàn)槟粫裨谄渌餍械木幊陶Z言中那樣編寫 X 實(shí)現(xiàn) Y,但您很快就會接受。
依賴管理也是另一個不屬于 Google Golang 開發(fā)團(tuán)隊(duì)原始設(shè)計(jì)的功能。開源社區(qū)介入并創(chuàng)建了 Glide 和 Dep,最初的努力并沒有完全解決問題。從 Go 1.11 開始,添加了對模塊的支持,這似乎已成為官方的依賴管理工具。這些挑戰(zhàn)并沒有削弱 Go 作為一種高效編程語言的獨(dú)創(chuàng)性,并且它繼續(xù)為我們提供優(yōu)于其他編程語言的顯著優(yōu)勢。
Golang 吸引了全球敏銳的開發(fā)人員的注意,并且圍繞它的興奮繼續(xù)增長。開源社區(qū)因有趣的項(xiàng)目而蓬勃發(fā)展;最著名的是 Docker 和 Kubernetes。
正是這種新鮮、有創(chuàng)意但又簡單的包裝吸引了我們?nèi)o:它是一種令人興奮的編碼語言,可以幫助我們在 Curve 中快速開發(fā)以構(gòu)建更好的產(chǎn)品。
Go語言由Google公司開發(fā),并于2009年開源,相比Java/Python/C等語言,Go尤其擅長并發(fā)編程,性能堪比C語言,開發(fā)效率肩比Python,被譽(yù)為“21世紀(jì)的C語言”。
Go語言在云計(jì)算、大數(shù)據(jù)、微服務(wù)、高并發(fā)領(lǐng)域應(yīng)用應(yīng)用非常廣泛。BAT大廠正在把Go作為新項(xiàng)目開發(fā)的首選語言。
Go語言應(yīng)用范圍:
1、服務(wù)端開發(fā):以前你使用C或者C++做的那些事情,用Go來做很合適,例如日志處理、文件系統(tǒng)、監(jiān)控系統(tǒng)等;
2、DevOps:運(yùn)維生態(tài)中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go語言開發(fā);
3、網(wǎng)絡(luò)編程:大量優(yōu)秀的Web框架如Echo、Gin、Iris、beego等,而且Go內(nèi)置的 net/http包十分的優(yōu)秀;
4、Paas云平臺領(lǐng)域:Kubernetes和Docker Swarm等;
5、分布式存儲領(lǐng)域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;
6、區(qū)塊鏈領(lǐng)域:區(qū)塊鏈里面有兩個明星項(xiàng)目以太坊和fabric都使用Go語言;
7、容器虛擬化:大名鼎鼎的Docker就是使用Go語言實(shí)現(xiàn)的;
8、爬蟲及大數(shù)據(jù):Go語言天生支持并發(fā),所以十分適合編寫分布式爬蟲及大數(shù)據(jù)處理。
Go作為Google2009年推出的語言,其被設(shè)計(jì)成一門應(yīng)用于搭載 Web 服務(wù)器,存儲集群或類似用途的巨型中央服務(wù)器的系統(tǒng)編程語言。
對于高性能分布式系統(tǒng)領(lǐng)域而言,Go 語言無疑比大多數(shù)其它語言有著更高的開發(fā)效率。它提供了海量并行的支持,這對于 游戲 服務(wù)端的開發(fā)而言是再好不過了。
到現(xiàn)在Go的開發(fā)已經(jīng)是完全開放的,并且擁有一個活躍的社區(qū)。
=================================
哪些大公司在使用Go語言:
1、Google
這個不用多做介紹,作為開發(fā)Go語言的公司,當(dāng)仁不讓。Google基于Go有很多優(yōu)秀的項(xiàng)目,比如: ,大家也可以在Github上 查看更多Google的Go開源項(xiàng)目。
2、Facebook
Facebook也在用,為此他們還專門在Github上建立了一個開源組織facebookgo,大家可以通過 訪問查看facebook開源的項(xiàng)目,比如著名的是平滑升級的grace。
3、騰訊
騰訊作為國內(nèi)的大公司,還是敢于嘗試的,尤其是Docker容器化這一塊,他們在15年已經(jīng)做了docker萬臺規(guī)模的實(shí)踐,具體可以參考
4、百度
目前所知的百度的使用是在運(yùn)維這邊,是百度運(yùn)維的一個BFE項(xiàng)目,負(fù)責(zé)前端流量的接入。他們的負(fù)責(zé)人在2016年有分享,大家可以看下這個
5、阿里
阿里巴巴具體的項(xiàng)目不太清楚,不過聽說其系統(tǒng)部門、CDN等正在招Go方面的人。
6、京東
京東云消息推送系統(tǒng)、云存儲,以及京東商城等都有使用Go做開發(fā)。
7、小米
小米對Golang的支持,莫過于運(yùn)維監(jiān)控系統(tǒng)的開源,也就是
此外,小米互娛、小米商城、小米視頻、小米生態(tài)鏈等團(tuán)隊(duì)都在使用Golang。
8、360
360對Golang的使用也不少,一個是開源的日志搜索系統(tǒng)Poseidon,托管在Github上,
==================================
Go適合做什么?為何這么多人偏愛Go語言?
Go強(qiáng)大的開發(fā)團(tuán)隊(duì)
1、自由高效:組合的思想、無侵入式的接口
Go語言可以說是開發(fā)效率和運(yùn)行效率二者的完美融合,天生的并發(fā)編程支持。Go語言支持當(dāng)前所有的編程范式,包括過程式編程、面向?qū)ο缶幊桃约昂瘮?shù)式編程。程序員們可以各取所需、自由組合、想怎么玩就怎么玩。
2、強(qiáng)大的標(biāo)準(zhǔn)庫
這包括互聯(lián)網(wǎng)應(yīng)用、系統(tǒng)編程和網(wǎng)絡(luò)編程。Go里面的標(biāo)準(zhǔn)庫基本上已經(jīng)是非常穩(wěn)定了,特別是我這里提到的三個,網(wǎng)絡(luò)層、系統(tǒng)層的庫非常實(shí)用。
3、部署方便:二進(jìn)制文件、Copy部署
我相信這一點(diǎn)是很多人選擇Go的最大理由,因?yàn)椴渴鹛奖懔耍袁F(xiàn)在也有很多人用Go開發(fā)運(yùn)維程序。
4、簡單的并發(fā)
它包含了降低心智的并發(fā)和簡易的數(shù)據(jù)同步,我覺得這是Go最大的特色。之所以寫正確的并發(fā)、容錯和可擴(kuò)展的程序如此之難,是因?yàn)槲覀冇昧隋e誤的工具和錯誤的抽象,Go可以說這一塊做的相當(dāng)簡單。
5、穩(wěn)定性
Go擁有強(qiáng)大的編譯檢查、嚴(yán)格的編碼規(guī)范和完整的軟件生命周期工具,具有很強(qiáng)的穩(wěn)定性,穩(wěn)定壓倒一切。那么為什么Go相比于其他程序會更穩(wěn)定呢?這是因?yàn)镚o提供了軟件生命周期(開發(fā)、測試、部署、維護(hù)等等)的各個環(huán)節(jié)的工具,如go tool、gofmt、go test。
================================
我們?yōu)槭裁催x擇GO語言
選擇GO語言,主要是基于兩方面的考慮
1. 執(zhí)行性能 縮短API的響應(yīng)時長,解決批量請求訪問超時的問題。在Uwork的業(yè)務(wù)場景下,一次API批量請求,往往會涉及對另外接口服務(wù)的多次調(diào)用,而在之前的PHP實(shí)現(xiàn)模式下,要做到并行調(diào)用是非常困難的,串行處理卻不能從根本上提高處理性能。而GO語言不一樣,通過協(xié)程可以方便的實(shí)現(xiàn)API的并行處理,達(dá)到處理效率的最大化。 依賴Golang的高性能HTTP Server,提升系統(tǒng)吞吐能力,由PHP的數(shù)百級別提升到數(shù)千里甚至過萬級別。
2. 開發(fā)效率 GO語言使用起來簡單、代碼描述效率高、編碼規(guī)范統(tǒng)一、上手快。 通過少量的代碼,即可實(shí)現(xiàn)框架的標(biāo)準(zhǔn)化,并以統(tǒng)一的規(guī)范快速構(gòu)建API業(yè)務(wù)邏輯。 能快速的構(gòu)建各種通用組件和公共類庫,進(jìn)一步提升開發(fā)效率,實(shí)現(xiàn)特定場景下的功能量產(chǎn)。
Go語言近兩年的發(fā)展速度還是非常快的,一方面Go語言有強(qiáng)大的行業(yè)背書,另一方面Go語言在設(shè)計(jì)時充分考慮了當(dāng)前的編程環(huán)境,加強(qiáng)了大數(shù)據(jù)量、高并發(fā)等應(yīng)用場景的處理能力,強(qiáng)調(diào)編程語言自身對于處理性能的追求,相信Go語言在未來大數(shù)據(jù)和人工智能相關(guān)技術(shù)逐漸落地應(yīng)用的背景下,會有一個較為廣闊的發(fā)展空間。
網(wǎng)頁題目:go語言容器化,go微服務(wù)入門到容器化實(shí)踐
文章起源:http://vcdvsql.cn/article20/hsshco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、服務(wù)器托管、移動網(wǎng)站建設(shè)、商城網(wǎng)站、App開發(fā)、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)