1. 程式人生 > >雲原生時代 來看看十年前李彥巨集、馬化騰和馬雲對雲端計算的評價

雲原生時代 來看看十年前李彥巨集、馬化騰和馬雲對雲端計算的評價

在容器、Kubernetes、DevOps,以及微服務等技術的推動下,2020年雲原生勢不可擋。 .NET Core 也非常契合 雲原生對應用執行時的不同需求,.NET Core和kubernetes 同年誕生髮展, 2018年kubernetes 已經奠定了在容器編排領域的王者地位,2019年越來越多的企業選擇基於雲原生的技術或管理方法,把業務生於雲或遷移到雲平臺,從而享受雲的高效和持續的服務能力。幾年前火熱的Spring Cloud面臨Kubernetes的革命,如今.NET Core在雲原生方面完成的蛻變:

  • 體積更小:對於微服務分散式架構而言,更小的體積意味著更少的下載頻寬,更快的分發下載速度,.NET Core 的映象體積都很小,alpine的映象更小,帶上應用程式通常80M。

  • 啟動速度更快:對於傳統單體應用,啟動速度與執行效率相比不是一個關鍵的指標。原因是,這些應用重啟和釋出頻率相對較低。然而對於需要快速迭代、水平擴充套件的微服務應用而言,更快的的啟動速度就意味著更高的交付效率,和更加快速的回滾。尤其當你需要釋出一個有數百個副本的應用時,緩慢的啟動速度就是時間殺手。對於Serverless 應用而言,端到端的冷啟動速度則更為關鍵,即使底層容器技術可以實現百毫秒資源就緒,如果應用無法在 500ms 內完成啟動,使用者就會感知到訪問延遲。這裡我拿AWS Lambda來舉例,因為各大雲廠商都是以AWS是模仿的目標,AWS Lambda中可用的所有語言都是高階的,而不是像Assembler,C / C ++或Objective C那樣。從指令碼語言到JavaScript和Python,再到像Java和C#到Go這樣被編譯為二進位制檔案的託管執行時的語言,所有語言都是他們有自己的長處。在基準測試中,最重要的.NET Core是 冠軍,具體參看https://react-etc.net/entry/aws-lambda-benchmarks-node-js-python-java-c-go-dotnet-core

  • 佔用資源更少:執行時更低的資源佔用,意味著更高的部署密度和更低的計算成本。.NET Core的 CLR啟動速度非常快,降低啟動時資源消耗,可以減少資源爭搶,更好保障其他應用 SLA。

  • 支援水平擴充套件:.NET Core 預設更好的支援Docker資源限制,官方團隊也在努力讓.NET Core成為真正的容器執行時,使其在低記憶體環境中具有容器感知功能並高效執行。隨著記憶體成本的下降和虛擬化的流行,大記憶體配比已經成為趨勢。所以我們一般是採用水平擴充套件的方式,同時部署多個應用副本,在一個計算節點中可能執行一個應用的多個副本來提升資源利用率。

上面說了.NET Core在雲原生方面所完成的蛻變,很多人可能會以Java生態豐富來說明Java的種種優勢,所以這裡我想一起來看看十年前李彥巨集、馬化騰和馬雲對雲端計算的評價:

站在現在的位置往回看,七年前李彥巨集、馬化騰的觀點確實是挺幼稚的。一個犯了商業判斷上的錯誤,認為用公有云(雖然這個會上談的是雲端計算,但指的是AWS、阿里雲這樣的公有云)方式賺點錢會比較累,商業價值不大;一個犯了技術判斷上的錯誤, 認為要大規模地,像水和電那樣提供計算資源,技術上要做到沒這麼快,需要時間。 但是公有云此後的高速發展,即證明了自身的巨大的商業價值,也證明了現有技術的能力和潛力。

經過8年的發展,公有云已經不僅僅像李彥巨集說的,支撐一些網際網路應用這麼簡單,而是巨大的,充滿希望和想象的平臺。現在我們所說的雲原生已經不侷限於AWS,阿里雲,騰訊雲這樣的公有云,也不是僅僅侷限於私有云,而是我們在開始設計應用的時候就考慮到應用將來是執行在雲環境裡面的,要充分利用雲資源的優點。但從不同的角度,你能夠看到這個平臺不一樣的威力。

馬化騰說雲端計算難做, 短期內很難做好的觀點,雖說太悲觀, 但也是說出了廣大後臺程式猿的心聲。 從個人研發的經歷而言, 我們有兩種完全不一樣的開發,一種是單機軟體的開發,另一種是分散式後臺開發。單機軟體開發, 更多的是專注於業務本身, 計算和儲存資源的獲取很輕鬆地搞定、模組間通訊無比簡潔美好根本不用操什麼心,見過大量的.NET程式設計師開發的都是這種單機軟體開發,他們的系統做個叢集都難;而分散式後臺開發,在計算資源、儲存資源或業務邏輯單元在做了 “分” 這個操作後, 就變得無比揪心,你會發現做後臺的業務簡單,但做一個穩定高效能的架構難,做一個能夠扛住海量使用者和請求,還能夠動態生長以應對業務變化需求的後臺更是難上加難。

海量後臺服務研發方法論方面在這個世界上也有騰訊海量服務之道和Google 的另一套後臺哲學:

騰訊對後臺開發的理解是這樣的:放棄建立一個統一模型,按照這個模型去套各種業務,就能夠為業務建立一個完善的架構,而且這個架構能夠適應業務後續的發展。 而是用動態生長的眼光,以小步快跑的方式,用柔性的手段去處理和和各種分散式問題周旋,最終成功支撐業務向前發展。

Google的另一套後臺哲學: 根據自身業務抽象出幾大基礎後臺系統(比如GFS、BigTable、Spanner、Brog 、Tensorflow 等), 支撐業務的開發,從而業務可以專注於自身邏輯, 不需要關注底層分散式細節,這個對技術人要求就非常高,微軟也是這樣的一個套路。由於我沒有在Google呆過,對Google不太瞭解,只能從Google 在10幾年的引領技術潮流的技術做個概括。

這兩套方法論,目標相同,但是思路相反。個人認為, 能夠解決問題,幫助業務往前走的發展都是好方法,除此之外, 並沒有一個標準能夠用來評判哪個好哪個不好。 兩種典型的後臺價值觀,分別支撐起排名前幾的兩家網際網路公司,就足以說明其成功之處。但是從中我們可以看出, 做後臺特別是海量服務的後臺之難。 由此不難理解馬化騰所說, 需要等到阿凡達的時代,像水和電一樣的雲端計算才能夠實現。

時代的潮流滾滾向前,我現在來到了雲原生時代,在容器化的世界裡,Kubernetes是環境的管理和部署引擎。使用Kubernetes的最基本功能,使用者就可以輕鬆地在物理硬體或者虛擬機器上排程並且執行應用程式。Kubernetes的更多高階用法讓開發人員可以徹底擺脫主機為中心的世界,而進入容器為中心的環境裡。

應用程式是如今大多數業務的生命線。公司需要快速的部署和高質量的應用程式。這些需求正是開發人員轉向容器的原因。隨著容器的發展,Kubernetes平臺有很多的可能性,但是規模大了的話它也很難管理。雲原生時代一定要擁抱,這是雲原生時代給予.NET Core的機會,我希望大家能夠抓住。

說到這裡,這裡特別要和你分享一件事情是2018年的11月我有幸參觀訪問了肖偉宇所在的公司校寶線上,當時我也是剛從騰訊離職從事.NET Core的諮詢服務工作,當時他們正是在進行.NET向.NET Core遷移的關鍵時期,他們同時處在阿里巴巴大本營的杭州(在最近我做的一個調查中很多杭州兄弟都提到了這一點),而且當時阿里巴巴已經投資了校寶線上,坊間一直流傳著這麼一個梗:被阿里巴巴投資的公司都轉向了Java,可想而知,校寶線上作為杭州地區最大的一家.NET技術公司 的兄弟們面臨多大的壓力,在經過了一年多時間的探索,肖偉宇作為校寶線上的架構師帶領.NET兄弟成功走向.NET Core雲原生的道路,這是非常值得分享的一件事情,而且難能可貴的是肖偉宇把這個探索道路上的艱難險阻總結提煉成這樣一門視訊課程。這裡我非常推薦大家購買肖偉宇結合自己的經驗精心提煉的視訊課程。


使用優惠口令「dotnet123」到手僅¥89,限前200人

△掃碼免費試看課程