自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

左耳朵耗子:Go語言,Docker和新技術

開發(fā) 后端 云計算
有很多很多人問我是否要學 Go 語言,是否要學 Docker,Go 和 Docker 是否能用在生產線上,這些問題看來,對于 Go 語言和 Docker 這兩種技術,在國內的技術圈中有相當大的一部分人和群體還在執(zhí)觀望或是不信任的態(tài)度。

日前,作為 Go 語言的三位創(chuàng)始人之一,Unix 老牌黑客羅勃·派克(Rob Pike)在新文章“Go: Ten years and climbing”中,回顧了一下 Go 語言的發(fā)展過程。其中提到,Go 語言這十年的迅猛發(fā)展大到連他們自己都沒有想到,并且還成為了云計算領域中新一代的開發(fā)語言。還提到了,中國程序員對 Go 語言的熱愛完全超出了他們的想象,甚至他們都不敢相信是真的。

這讓我想起,我在 2015 年 5 月份拜訪 Docker 公司在灣區(qū)的總部時,Docker 負責人也和我表達了相似的感嘆:他們完全沒有想到居然中國有那么多人喜歡 Docker,而且還有這么多人在為 Docker 做貢獻,這讓他們感到非常意外。此外,還跟我說,中國是除了美國本土之外的另外一個如此喜歡 Docker 技術的國家,在其它國家都沒有看到。

[[208811]]

的確如他們所說,Go 語言和 Docker 這兩種技術已經成為新一代的云計算技術,而且可以看到其發(fā)展態(tài)勢非常迅猛。而中國也成為了像美國一樣在強力推動這兩種技術的國家。這的確是一件讓人感到非常高興的事,因為中國在跟隨時代潮流這件事上已經做得非常不錯了。

然而,從 2014-2015 年我在阿里推動 Docker 和 Go 語言的痛苦和失敗過程中,以及這許多年來,有很多很多人問我是否要學 Go 語言,是否要學 Docker,Go 和 Docker 是否能用在生產線上,這些問題看來,對于 Go 語言和 Docker 這兩種技術,在國內的技術圈中有相當大的一部分人和群體還在執(zhí)觀望或是不信任的態(tài)度。

所以,我想寫這篇文章,從兩個方面來論述一下我的觀點和看法。

  • 一個方面,為什么 Go 語言和 Docker 會是新一代的云計算技術。
  • 另一個方面,作為技術人員,我們如何識別什么樣的新技術會是未來的趨勢。

這兩個問題是相輔相成的,所以我會把這兩個問題揉在一起談。

雖然 Go 語言是在 2009 年底開源的,但我是從 2012 年才開始接觸和學習 Go 語言的。我只花了一個周末兩天的時間就學完了,而且在這兩天,我還很快地寫出了一個能工作很好的網頁爬蟲程序,以及一個簡單的高并發(fā)文件處理服務,用于提取前面抓取的網頁的關鍵內容。這兩個程序都很簡單,總共才寫了不到 500 行代碼。

我當時對 Go 語言有幾點體會

***,語言簡單,上手快。Go 語言的語法特性簡直是太簡單了,簡單到你幾乎玩不出什么花招,直來直去的,學習曲線很低,上手非???。

第二,并行和異步編程幾乎無痛點。Go 語言的 Goroutine 和 Channel 這兩個神器簡直就是并發(fā)和異步編程的巨大福音。像 C、C++、Java、Python 和 JavaScript 這些語言的并發(fā)和異步方式太控制就比較復雜了,而且容易出錯,而 Go 解決這個問題非常地優(yōu)雅和流暢。這對于編程多年受盡并發(fā)和異步折磨的我來說,完全就是讓我眼前一亮的感覺。

左耳朵耗子:Go語言,Docker和新技術
(圖片來自 Medium:Why should you learn Go?)

第三,Go 語言的 lib 庫麻雀雖小五臟俱全。Go 語言的 lib 庫中基本上有絕大多數常用的庫,雖然有些庫還不是很好,但我覺得不是問題,因為我相信在未來的發(fā)展中會把這些問題解決掉。

第四,C 語言的理念和 Python 的姿態(tài)。C 語言的理念是信任程序員,保持語言的小巧,不屏蔽底層且底層友好,關注語言的執(zhí)行效率和性能。而 Python 的姿態(tài)是用盡量少的代碼完成盡量多的事。于是我能夠感覺到,Go 語言想要把 C 和 Python 統(tǒng)一起來,這是多棒的一件事啊。

左耳朵耗子:Go語言,Docker和新技術
(圖片來自 Medium:Why should you learn Go?)

所以,即便 Go 語言存在諸多的問題,比如垃圾回收、異常處理、泛型編程等,但相較于上面這幾個優(yōu)勢,我認為這些問題都是些小問題。于是就毫不猶豫地入坑了。

當然,一個技術能不能發(fā)展起來,關鍵還要看三點。

有沒有一個比較好的社區(qū)。像 C、C++、Java、Python 和 JavaScript 的生態(tài)圈都是非常豐富和火爆的。尤其是有很多商業(yè)機構參與的社區(qū)那就更為人氣爆棚了,比如 Linux 的社區(qū)。

有沒有一個工業(yè)化的標準。像 C、C++、Java 都是有標準化組織的。尤其是 Java,其在架構上還搞出了像 J2EE 這樣的企業(yè)級標準。

有沒有一個或多個殺手級應用。C、C++ 和 Java 的殺手級應用不用多說了,就算是對于 PHP 這樣還不能算是一個好的編程語言來說,因為是 Linux 時代的***個殺手級解決方案 LAMP 中的關鍵技術,所以,也發(fā)展起來了。

上述的這三點是非常關鍵的,新的技術只需要占到其中一到兩點就已經很不錯了,何況有的技術,比如 Java,是三點全占到了,所以,Java 的發(fā)展是如此好。當然,除了上面這三點重要的,還有一些其它的影響因素,比如:

  • 學習曲線是否低,上手是否快。這點非常重要,C++ 在這點上越做越不好了。
  • 有沒有一個不錯的提高開發(fā)效率的開發(fā)框架。如:Java 的 Spring 框架,C++ 的 STL 等。
  • 是否有一個或多個巨型的技術公司作為后盾。如:Java 和 Linux 后面的 IBM、Sun……
  • 有沒有解決軟件開發(fā)中的痛點。如:Java 解決了 C 和 C++ 的內存管理問題。

用這些標尺來量一下 Go 語言,我們可以清楚地看到:

  • Go 語言容易上手;
  • Go 語言解決了并發(fā)編程和寫底層應用開發(fā)效率的痛點;
  • Go 語言有 Google 這個世界***的技術公司在后面;
  • Go 語言的殺手級應用是 Docker,而 Docker 的生態(tài)圈在這幾年完全爆棚了。

所以,Go 語言的未來是不可限量的。當然,我個人覺得,Go 可能會吞食很多 C、C++、Java 的項目。不過,Go 語言所吞食主要的項目應該是中間層的項目,既不是非常底層也不會是業(yè)務層。

也就是說,Go 語言不會吞食底層到 C 和 C++ 那個級別的,也不會吞食到高層如 Java 業(yè)務層的項目。Go 語言能吞食的一定是 PaaS 上的項目,比如一些消息緩存中間件、服務發(fā)現、服務代理、控制系統(tǒng)、Agent、日志收集等等,沒有復雜的業(yè)務場景,也到不了特別底層(如操作系統(tǒng))的中間平臺層的軟件項目或工具。而 C 和 C++ 會被打到更底層,Java 會被打到更上層的業(yè)務層。這是我的一個判斷。

好了,我們再用上面的標尺來量一下 Go 語言的殺手級應用 Docker,你會發(fā)現基本是一樣的。

  • Docker 上手很容易。
  • Docker 解決了運維中的環(huán)境問題以及服務調度的痛點。
  • Docker 的生態(tài)圈中有大公司在后面助力。比如 Google。
  • Docker 產出了工業(yè)界標準 OCI。
  • Docker 的社區(qū)和生態(tài)圈已經出現像 Java 和 Linux 那樣的態(tài)勢。
  • ……

所以,早在 3、4 年前我就覺得 Docker 一定會是未來的技術。雖然當時的坑兒還很多,但是,相對于這些大的因素來說,那些小坑兒都不是問題。只是需要一些時間,這些小坑兒在未來 5-10 年就可以完全被填平了。

同樣,我們可以看到 Kubernetes 作為服務和容器調度的關鍵技術一定會是***的贏家。這點我在去年初就能夠很明顯地感覺到了。

關于 Docker 我還想多說幾句,這是云計算中 PaaS 的關鍵技術,雖然,這世上在出現 Docker 之前,幾乎所有的要玩公有 PaaS 的公司和產品都玩不起來,比如:

Google 的 GAE,國內的各種 XAE,如淘寶的 TAE,新浪的 SAE 等。但我還是想說,PaaS 是一個被世界或是被產業(yè)界嚴重低估的平臺。

PaaS 層是承上啟下的關鍵技術,任何一個不重視 PaaS 的公司,其技術架構都不可能讓這家公司成長為一個大型的公司。因為 PaaS 層的技術主要能解決下面這些問題。

軟件生產線的問題。持續(xù)集成和持續(xù)發(fā)布,以及 DevOps 中的技術必需通過 PaaS。

分布式服務化的問題。分布式服務化的服務高可用、服務編排、服務調度、服務發(fā)現、服務路由,以及分布式服務化的支撐技術完全是 PaaS 的菜。

提高服務的可用性 SLA。提高服務可用性 SLA 所需要的分布式、高可用的技術架構和運維工具,也是 PaaS 層提供的。

軟件能力的復用。軟件工程中的核心就是軟件能力的復用,這一點也***地體現在 PaaS 平臺的技術上。

老實說,這些問題的關鍵程度已經到了能判斷一家依托技術的公司的研發(fā)能力是否靠譜的程度。沒有這些技術,依托技術拓展業(yè)務的公司幾乎沒有可能發(fā)展得規(guī)模很大。

在后面,我會另外寫幾篇文章詳細地講一下分布式服務化和 PaaS 平臺的重要程度。

***,我還要說一下,為什么要早一點地進入這些新技術,而不是等待這些技術成熟了后再進入。原因有這么幾個。

技術的發(fā)展過程非常重要。我進入 Go 和 Docker 的技術不能算早,但也不算晚,從 2012 年學習 Go,到 2013 年學習 Docker 到今天,我清楚地看到了這兩種技術的生態(tài)圈發(fā)展過程。讓我收獲***的并不是這些技術本身,而是一個技術的變遷和行業(yè)的發(fā)展。

從中,我看到了非常具體的各種思潮和思路,這些東西比起 Go 和 Docker 來說更有價值。因為,這不但讓我重新思考我已掌握的技術以及如何更好地解決已有的問題,而且還讓我看到了未來。我不但有了技術優(yōu)勢,而且這些知識還讓我的技術生涯多了很多的可能性。

這些關鍵新技術,可以讓你拿到技術的先機。這些對一個需要技術領導力的個人或公司來說都是非常重要的。

一個公司或是個人能夠占有技術先機,就會比其它公司或個人有更大的影響力。一旦未來行業(yè)需求引爆,那么這個公司或是個人的影響力就會形成一個比較大的護城河,并可以快速地產生經濟利益。

近期,在與中國移動、中國電信以及一些股份制銀行進行交流的過程中,我已看到通訊行業(yè)、金融行業(yè)對于 PaaS 平臺的理解已經超過了互聯網公司,而我近 3 年來在這些技術上的研究讓我也從中受益非淺。

所以,Go 語和 Docker 作為 PaaS 平臺的關鍵技術前途是***的,我很慶幸趕上了這個浪潮,也很慶幸在 3 年前我就看到了這個趨勢,現在我也在用這些技術開發(fā)相關的技術產品,助力于為高速成長的公司提供這些關鍵技術。

責任編輯:未麗燕 來源: 極客時間App
相關推薦

2023-05-15 15:10:25

開發(fā)技術

2019-01-28 11:12:43

技術激光聲音

2015-08-17 15:12:56

新技術語言框架

2016-06-13 13:06:49

云計算云存儲

2009-03-31 18:59:51

Vmware虛擬化IT

2022-04-13 08:20:32

DockerGo項目

2012-08-16 13:31:06

陳皓架構師

2019-12-18 23:06:48

TF架構網絡連接

2022-06-22 09:24:30

云原生Go 語言

2016-08-29 17:10:17

JavascriptHtmlCSS

2023-05-24 09:31:51

CGo

2022-02-09 16:02:26

Go 語言ArraySlice

2018-03-12 22:13:46

GO語言編程軟件

2018-04-19 14:54:12

2023-03-29 08:03:53

2020-06-02 16:33:52

Serverless 云函數Node

2013-09-16 14:23:19

2012-08-23 09:44:32

面試面試題算法

2015-05-07 11:24:13

DockerIT技術評價新技術

2021-04-26 09:20:24

蜜罐網絡安全網絡攻擊
點贊
收藏

51CTO技術棧公眾號