Go 简介、应用场景
Go 簡介、應用場景
一. go語言的優勢
1.并發性能好
基于goroutine(協程) 的并發,可以將 goroutine 理解為一種虛擬線程。Go 語言運行時會參與調度 goroutine,并將 goroutine 合理地分配到每個 CPU 中,最大限度地使用CPU性能。開啟一個goroutine的消耗非常小(大約2KB的內存),你可以輕松創建數百萬個goroutine。goroutine的特點:
2.性能強悍
處理器只能理解二進制文件,Java和Python這種高級語言在運行的時候需要先將人類可讀的代碼翻譯成字節碼,然后由專門的解釋器再轉變成處理器可以理解的二進制文件。go是編譯型的語言,它直接將人類可讀的代碼編譯成了處理器可以直接運行的二進制文件,執行效率更高,性能更好。
3. 語法簡潔
4.代碼風格統一
Go 語言提供了一套格式化工具——go fmt。一些 Go 語言的開發環境或者編輯器在保存時,都會使用格式化工具進行修改代碼的格式化,這樣就保證了不同開發者提交的代碼都是統一的格式。
5.開發效率高
二. go語言的歷史
2007年9月,Rob Pike在Google分布式編譯平臺上進行C++編譯,在漫長的等待過程中,他和Robert Griesemer探討了程序設計語言的一些關鍵性問題,他們認為,簡化編程語言相比于在臃腫的語言上不斷增加新特性,會是更大的進步。隨后他們在編譯結束之前說服了身邊的Ken Thompson,覺得有必要為此做一些事情。幾天后,他們發起了一個叫Golang的項目,將它作為自由時間的實驗項目。
2008年5月 Google發現了GO語言的巨大潛力,得到了Google的全力支持,這些人開始全職投入GO語言的設計和開發。
2009年11月 GO語言第一個版本發布。2012年3月 第一個正式版本Go1.0發布。
2015年8月 go1.5發布,這個版本被認為是歷史性的。完全移除C語言部分,使用GO編譯GO,少量代碼使用匯編實現。另外,他們請來了內存管理方面的權威專家Rick Hudson,對GC進行了重新設計,支持并發GC,解決了一直以來廣為詬病的GC時延(STW)問題。并且在此后的版本中,又對GC做了更進一步的優化。到go1.8時,相同業務場景下的GC時延已經可以從go1.1的數秒,控制在1ms以內。GC問題的解決,可以說GO語言在服務端開發方面,幾乎抹平了所有的弱點。
在GO語言的版本迭代過程中,語言特性基本上沒有太大的變化,基本上維持在GO1.1的基準上,并且官方承諾,新版本對老版本下開發的代碼完全兼容。事實上,GO開發團隊在新增語言特性上顯得非常謹慎,而在穩定性、編譯速度、執行效率以及GC性能等方面進行了持續不斷的優化。
三.go語言目前的應用
- nsq:bitly開源的消息隊列系統,性能非常高,目前他們每天處理數十億條的消息
- docker:基于lxc的一個虛擬打包工具,能夠實現PAAS平臺的組建。
- k8s: 當下最流行的容器管理工具k8s也是基于go實現
- packer:用來生成不同平臺的鏡像文件,例如VM、vbox、AWS等,作者是vagrant的作者
- skynet:分布式調度框架
- Doozer:分布式同步工具,類似ZooKeeper
- Heka:mazila開源的日志處理系統
- cbfs:couchbase開源的分布式文件系統
- tsuru:開源的PAAS平臺,和SAE實現的功能一模一樣
- groupcache:memcahe作者寫的用于Google下載系統的緩存系統
- god:類似redis的緩存系統,但是支持分布式和擴展性
- gor:網絡流量抓包和重放工具
四.Go適合用來做什么
- 服務器編程,以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日志、數據打包、虛擬機處理、文件系統等。
- 分布式系統,數據庫代理器等
- 網絡編程,這一塊目前應用最廣,包括Web應用、API應用、下載應用、
- 內存數據庫,前一段時間google開發的groupcache,couchbase的部分組建
- 云平臺,目前國外很多云平臺在采用Go開發,CloudFoundy的部分組建,前VMare的技術總監自己出來搞的apcera云平臺
總結
以上是生活随笔為你收集整理的Go 简介、应用场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RouterOS-注册及申请licens
- 下一篇: 百度路书 设置autoView为true