03.06 想知道現在golang語言怎樣,它能不能開發網站?

觀眾839


先給結論:完全可以

商用實踐:

已經通過很多大公司的商用實踐,例如B站,YY,包括字節跳動,國外更不用說了,Google,所以從這個角度上來說,已經經過大規模的實踐,所以如果你想用用於自己小網站的搭建是沒有任何問題,如果你想用於初創公司的使用,還是需要有自己的一定積累,至少有過實踐的經驗

golang周邊:

java在國內的強大,得益於它的生態,各種組件百花爭鳴,例如消息中間件rocketmq,分庫分表sharding-jdbc,spring整個生態,mybatis,jedis,elasticsearch,zookeeper,dubbo等等都非常齊全,這樣可以方便大家能夠快速地進行公司業務開發,可以減少重複造輪子

golang這幾年也開始逐漸發力,各個組件也開始完善起來,例如etcd,消息中間件nsq,從跟上解決數據量巨大問題,pingcap公司開發了線事務處理/在線分析處理的融合型數據庫產品TIDB,

web框架gin,beego,iris等等,也有各路大神提供了連接各個其他redis,elasticsearch等等組件,還是比較齊全的,rpc框架也有go-mirco,rpcx等等,只要你想要用,基本上來說,golang的生態周邊還是比較全的,方便大家使用

golang的模塊管理

java的方便還得益於它的包管理,maven,gradle,這樣大大方便了大家的使用,可以提供大家的開發效率,而golang從1.12開始也開始有了自己內嵌的包管理工具


golang的新特性

在這邊我並不是說golang好於java,但是golang畢竟屬於新一代的語言,它的併發模型CSP,和java的併發模型是有很大的區別的,併發模型的易用性,從根本上來說,是好於java的

再說golang目前最大的優勢,docker和kubernetes,是目前github上最火的前20名項目,並且都是golang寫的,所以golang和docker,kubernetes集成有天然的優勢

綜上所述,我覺得golang可以開發商用網站,不管你是做大型網站還是小型demo,都可以滿足你的要求


修煉IT基本功


作為一個golang開發人員,首先給你一個肯定的答案,這個完全沒問題。接下來將從多維度闡述我的觀點。Go作為Google2009年推出的語言,其被設計成一門應用於搭載 Web 服務器,存儲集群或類似用途的巨型中央服務器的系統編程語言。


beego框架

提到golang的web開發就不得不提beego框架。beego是一個快速開發Go應用的http框架。beego可以用來快速開發Web應用,是一個RESTFul(本人此前詳細的介紹過RESTFul,如有需要可以進我個人主頁查看。)的框架,主要設計靈感來源於tornado、sinatra、flask這三個框架,但是結合了Go本身的一些特性(interface、struct繼承等)而設計的一個框架。

架構

beego是基於八大獨立的模塊之上構建的,是一個高度解耦的框架。當初設計beego的時候就是考慮功能模塊化,用戶即使不適用beego的http邏輯,也是可以在使用這些獨立模塊,例如你可以使用cache模塊來做你的緩存邏輯,使用日誌模塊來記錄你的操作信息,使用config模塊來解析你各種格式的文件,所以不僅僅在beego開發中,你的socket遊戲開發中也是很有用的模塊,這也是beego為什麼受歡迎的一個原因。

執行邏輯

既然beego是基於這些模塊構建的,那麼他的執行邏輯是怎麼樣的呢?beego是一個典型的MVC架構,他的執行邏輯如下圖所示:

江湖地位

說起golang的江湖地位,雖然不像Java“世界第一”,但也有一席之地。國內外眾多互聯網大廠都在使用。

1、Google

這個不用多做介紹,作為開發Go語言的公司,當仁不讓。Google基於Go有很多優秀的項目。

2、Facebook

Facebook也在用,為此他們還專門在Github上建立了一個開源組織facebookgo,比如著名的是平滑升級的grace。

3、騰訊

騰訊作為國內的大公司,還是敢於嘗試的,尤其是Docker容器化這一塊,他們在15年已經做了docker萬臺規模的實踐。

目前所知的百度的使用是在運維這邊,是百度運維的一個BFE項目,負責前端流量的接入。

5、阿里

阿里巴巴具體的項目不太清楚,不過聽說其系統部門、CDN等正在招Go方面的人。

6、京東

京東雲消息推送系統、雲存儲,以及京東商城等都有使用Go做開發。

7、小米

小米對Golang的支持,莫過於運維監控系統的開源,也就是 http://open-falcon.com/

此外,小米互娛、小米商城、小米視頻、小米生態鏈等團隊都在使用Golang。

8、360

360對Golang的使用也不少,一個是開源的日誌搜索系統Poseidon,託管在Github上,

https://github.com/Qihoo360/poseidon。

golang前景

Go 語言於 2007 年開始構思,並於 2012 年正式發佈。截止目前也只有9年的時間,完全可以說是編程界的後起之秀。隨著區塊鏈的崛起,golang也將得到迅猛的發展。下圖為12月份編程語言TOP,golang作為一個誕生七年的“小屁孩兒”,依然躍居TOP 20。

golang優勢

簡單易學

任何語言都要吹簡單易學,不然就沒人學了。此處就不過多贅述了。大家懂就行。

併發能力

golang併發能力宇宙第一,拒絕任何反駁。golang併發編程主要通過goroutines channels實現的。

goroutines 可能是 Go 的最佳特性了。它是輕量級的計算線程,與操作系統線程截然不同。

當 Go 程序執行看似阻塞 I/O 的操作時,實際上 Go 運行時掛起了 goroutine ,當一個事件指示某個結果可用時恢復它。與此同時,其他的 goroutines 已被安排執行。因此在同步編程模型下,我們具有了異步編程的可伸縮性優勢。

Goroutines 也是輕量級的:它們的堆棧 隨需求增長和收縮,這意味著有 100 個甚至 1000 個 goroutines 都不是問題。

channel 是 goroutines 的通信方式:它們提供了一個便利的編程模型,可以在 goroutines 之間發送和接收數據,而不必依賴脆弱的低級別同步基本體。channels 有它們自己的一套 用法 模式。

但是,channels 必須仔細考慮,因為錯誤大小的 channels (默認情況下沒有緩衝) 會導致死鎖。下面我們還將看到,使用通道並不能阻止競爭情況,因為它缺乏不可變性。

豐富的標準庫

Go 的 標準庫 非常豐富,特別是對於所有與網絡協議或 API 開發相關的: http 客戶端和服務器,加密,檔案格式,壓縮,發送電子郵件等等。甚至還有一個html解析器和相當強大的模板引擎去生成 text & html,它會自動過濾 XSS 攻擊(例如在 Hugo 中的使用)。

性能優越

與 Java 相比,在 原始性能基準測試 中,情況並不是那麼清晰。Go 打敗 Java 地方是內存使用和垃圾回收。

Go 的垃圾回收器的設計目的是 優先考慮延遲,並避免停機,這在服務器中尤其重要。這可能會帶來更高的 CPU 成本,但是在水平可伸縮的體系結構中,這很容易通過添加更多的機器來解決。請記住,Go 是由谷歌設計的,他們從不會在資源上面短缺。

與 Java 相比,Go 的垃圾回收器(GC)需要做的更少:切片是一個連續的數組結構,而不是像 Java 那樣的指針數組。類似地,Go maps 也使用小數組作為 buckets,以實現相同的目的。這意味著垃圾回收器的工作量減少,並且 CPU 緩存本地化也更好。

Go 同樣在命令行實用程序中優於 Java :作為本地可執行文件,Go 程序沒有啟動消耗,反之 Java 首先需要加載和編譯的字節碼。


本文的初衷為學習筆記的分享,部分圖文來源於網絡,如侵,聯刪。


曬的被人砍


已經學會了,在寫了,golang在後端開發真的好用,自己寫輪子也不難。。。現在,基本是python搞數據處理,golang開發網站,爽爆[愛慕]


任T堂達人


能,完全可以,我們公司就是go做的後端。


沉淪Yesterday


我天天用打孔機打洞,代表0和1。網站跑的溜溜的,不說了,2點了,還在幹



golang開發網站沒有php好,後端數據處理還可以


andy1993李


是可以的,go語言現在是比較流行的一種編程語言,在web應用,API應用和各類App的開發中被廣泛應用


HugoHo


可以的,golang取google的前兩個字母,起點就不一樣,我們公司在慢慢的切go,感覺前景不錯。


rongzhenlee


只要能上網的都可以


傑米尼加隆


不能


分享到:


相關文章: