爲什麼使用Go語言做後端開發[轉

爲什麼使用Go語言做後端開發[轉]?

簡單高效:幾乎所有主流的編程語言如Java、C++、PHP、Python、JavaScript等等都是可以用於服務端開發的,Go語言作爲後起之秀,在語言層面具有語法簡潔、執行效率高(底層語言)的特點;相比之下,Java和Python、PHP都顯得低效,C++則太過麻煩,而Go則可以做到簡單與高效兼顧;

Go語方特點

  • 高併發:Go語言是主打併發、爲併發而生的,其出發點即是瞄準大數據+雲計算時代背景下的高併發、分佈式應用場景;
  • 跨平臺:可以在不同平臺直接編譯生成可執行程序,基礎內存佔用很少,小應用佔用幾M大型應用佔用個幾十M就能很好運行,這使得golang可以在樹莓派之類的小設備上很好的運行,這一點表現比java要好的多;
  • 容器化、分佈式、微服務化是服務端發展的潮流,在這幾個方向上:

下面我們來看下這幾個領域有哪些成功的開源項目。

  • 容器化:容器領域Go語言是絕對的霸主,大家所熟知的Docker和Kubernets(K8S)就是使用Go語言開發的;
  • 分佈式:最好的例證就是以太坊,因爲區塊鏈即分佈式賬本;
  • 微服務:Go語言支持微服務的最好例證是今日頭條,今日頭條當前後端服務超過80%的流量是跑在 Go 構建的服務上。微服務數量超過100個,高峯 QPS 超過700萬,日處理請求量超過3000億,可能是業內最大規模的Go應用。

Go語言成功案例

Docker(容器)
到現在,Docker幾乎是Go再難找到也難以複製的一個成功案例。Docker項目在2014年9月份就拿到了C輪4000萬美元融資,版本迭代速度超快,目前從GitHub看到已有78個版本,而它僅僅是再2013年初才正式開始的一個項目而已。目前,國內Docker技術推廣也進行的如火如荼,比如 Docker中文社區,CSDN也建立了 Docker專區。
Docker團隊之所以喜歡用Go語言,主要是Go具有強大的標準庫、全開發環境、跨平臺構建的能力。

Kubernetes(容器)
Kubernetes是2014年夏天Google推出的Kubernetes,基於Docker,其目的是讓用戶通過Kubernetes集羣來進行雲端容器集羣的管理,而無需用戶進行復雜的設置工作。系統會自動選取合適的工作節點來執行具體的容器集羣調度處理工作。其核心概念是Container Pod(容器倉)。

Etcd & Fleet(分佈式數據庫)
etcd是由CoreOS開發並維護鍵值存儲系統,它使用Go語言編寫,並通過Raft一致性算法處理日誌複製以保證強一致性。目前,Google的容器集羣管理系統Kubernetes、開源PaaS平臺Cloud Foundry和CoreOS的Fleet都廣泛使用了etcd。
Fleet則是一個分佈式的初始化系統。它們之所以選擇使用Go語言,則是因爲Go語言對跨平臺的良好支持,以及其背後的強大社區。

Deis(雲服務平臺)
Deis是一個基於Docker和CoreOS的開源PaaS平臺,旨在讓部屬和管理服務器上的應用變得輕鬆容易。它可以運行在AWS、GCE以及Openstack平臺下。

Flynn(雲服務平臺)
Flynn是一個使用Go語言編寫的開源PaaS平臺,可自動構建部署任何應用到Docker容器集羣上運行。Flynn項目受到Y Combinator的支持,目前仍在開發中,被稱爲是下一代的開源PaaS平臺。

Lime(桌面應用)
相對上面的幾款Go語言在雲端和服務器端之外,Lime則顯得比較特殊。Lime則是一款用Go語言寫的桌面編輯器程序,被看做是著名編輯器Sublime Text的開源實現。

Revel(Web框架)
Revel是一個高生產力的Go語言Web框架。Revel框架支持熱編譯,當編輯、保存和刷新源碼時,Revel會自動編譯代碼和模板;全棧特性,支持路由、參數解析、緩存、測試、國際化等功能。

InfluxDB(分佈式數據庫)
一個Go語音編寫的開源分佈式的時序、事件和指標數據庫,無需外部依賴。其設計目標是實現分佈式和水平伸縮擴展。

Syncthing(雲盤)
一款用Go語言編寫的開源雲存儲和同步服務工具,用戶的數據將由自己完全控制,所有的通信全都加密,每個訪問節點都用加密證書驗證。該項目被認爲是Dropbox和 BitTorrent Sync的開源替代,Syncthing之所以選擇Go語言,也是出於跨平臺考慮。

Gogs(自助Git服務)
Gogs則是一款由國人無聞( GitHub)開發的自助Git服務項目。Gogs的目標是打造一個最簡單、最快速和最輕鬆的方式搭建自助Git服務。據作者稱,之所以選擇使用Go語言開發,就是Go允許Gogs可以通過獨立的二進制分發,且對跨平臺有良好支持。

原文鏈接:https://blog.csdn.net/u010986776/article/details/87276303

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章