2018 到 2020 :從 Spring Cloud 到 Cloud Native,再到 Serverless

2018:Spring Cloud 的崛起

2018年剛開始接觸 sprig cloud 的時候,還不知道 分佈式計算 的概念,只知道 Netflix 開源了一套 微服務框架,裏面有不少組件組成:程序員

組件名稱 做用
eureka 服務註冊與發現
zuul 網關路由、反向代理
feign 客戶端側負載均衡
hystrix 熔斷降級
seluth & zipkin 鏈路追蹤
config 配置管理
... .......

當時按照書上所教的,搭建一個微服務 demo ,就覺得 微服務 不過如此。興沖沖跑去面試,結果遇到一個阿里出來的大佬,他說「只會問你懂的東西,不會問我懂你不懂的東西」,結果就被大佬問到 分佈式鎖分佈式事務分佈式任務調度 要怎麼解決?問得我啞口無言,只能灰溜溜地回去。。。面試

後面通過多番的學習,才知道 分佈式計算 是個很是龐大的體系,spring cloud 這套微服務開發框架所包含的知識點只不過是很小的一部分。說到 分佈式計算 ,就不得不提 拜占庭將軍問題,業界基於這套理論衍生出不少組件:redis

中間件名稱 做用
redis 分佈式鎖
zookeeper 分佈式鎖/同步
RocketMQ 分佈式事務
xxl-job 分佈式任務調度
elastic-job 分佈式任務調度
... .......

說了這麼多,事實上只涵蓋 分佈式計算 很小的一部分,但對於一個普通的 Java Web 開發人員來講,掌握這點知識點已經足夠他在北上廣深拿一兩萬工資,過過普通日子。spring

然而即使如此,在實際的開發流程中,Spring Cloud 這套框架仍是暴露出它的致命弱點:sql

  • 侵入性很是強
  • 不支持異構應用

首先說說 Spring Cloud 侵入性的一面,強侵入性致使了在將之前單體應用改造爲模塊化的微服務遇到很是多的麻煩,其中最大的問題是 微服務化改造 過程很是耗時耗力,卻沒有給公司帶來任何短時間收益,並且佔用本來的產品研發的人力物力。面對這種狀況,通常的公司都會選擇一邊交付新功能,一邊改造舊服務的策略。docker

其次,提及 異構應用,不得不說「明日黃花」 PHP 和 「後起之秀」 NodeJS數據庫

過去不少公司會採用 PHP 開發 Web應用 ,然而隨着 NodeJS 不斷崛起,業界流行起 先後端分離 浪潮,PHP 生態雖然受到必定的衝擊,但不致命。後端

然而,一波未平一波又起,業界又興起 微服務化 的浪潮,不一樣於之前的是,此次 PHP 完全掉隊了。網絡

以前我在面試的時候,遇到一個惟品會出來的10年開發經驗的 PHP 程序員。聽他說,前幾年公司招了一個技術老總,中層管理大換血,公司的主要技術棧也從 PHP 轉向 Java ,他也轉向 Java 開發,然而仍是逃不過被裁人的命運。。。負載均衡

這裏腦洞大開一下:若是 Spring Cloud 支持 異構應用,或許 惟品會 就不須要付出巨大代價用 Java 重寫 PHP 應用,PHP 程序員也不用面臨大規模裁人的困境。

Spring Cloud 不支持 異構應用 這一特色,就是一把雙刃劍,雖然幹掉宿敵 PHP,但並不表明 Java 開發人員就能夠高枕無憂。

Spring Cloud 的高光時刻已通過去了,黑暗即未來臨:先是 EurekaZuul 閉源,後面雖然有 NacosGateway等代替品,但依舊沒解決 侵入性強不支持異構應用 的致命缺陷。

所以面對即未來臨的 雲原生時代Java 根本就沒有準備好!

2019:雲原生時代的曙光

過去的 2019年 能夠說是 雲原生 元年。

這一年裏,Kubernetes 擊敗了 Docker SwarmDocker ComposeMesos 等一衆對手,坐穩 容器編排第一把交椅

這一年裏,Istio 擊敗了 對手 Linkerd,成爲 Service Mesh 的一哥,劍指曾經的大佬 Spring Cloud,大有取而代之的趨勢。

提及 Istio 不得不提 Service MeshService Mesh 中文意思就是 服務網格。而在談以前,還須要討論一下 Docker

早在 2015 年,我就據說 Docker 的大名。那時候我還在上大學,每次由於課程做業或畢業設計的緣故須要安裝數據庫,而 SQL ServerMySQL 二者常常發生衝突,每次衝突都只能經過重裝系統解決,每一個學期重裝一次系統都是屢見不鮮。雖然想過裝虛擬機,但那個時候的固態硬盤和內存都特別貴,裝完虛擬機後就卡得要死。

當聽到 Docker 的時候,我就想用它來代替虛擬機,然而 Docker 並不支持 Windows,還須要安裝 Linux 虛擬機才行,因此後面就不了了之。

我敢打包票,即使到了如今依然不少人就跟當年的我同樣認爲 Docker 就是一個輕量級的虛擬機,因此在 容器 裏運行 MySQL 性能會遠低於 原生 Mysql,這實際上是一個天大的 誤會

然而,即使到了 2019 年,Docker 已經支持 Windows 容器,我終於能夠運行 容器化 的 SQL Server, 然而在 Windows 上運行 Docker 仍是須要安裝一個輕量級 Linux 虛擬機。

緣由就是 Docker 運行容器的時候,容器之間須要 共享 宿主OS,因此沒有 Linux 虛擬機,根本跑不了 Linux 容器。

那麼在 Windows 上運行 Windows容器 是否是就不用安裝 Linux?答案是並無。緣由是 docker 在運行時須要運行守護進程 docker daemon等監控維持容器運行的組件,因此仍是須要運行 Linux 虛擬機。

連以兼容 類Unix 著稱的 Mac OS,在運行 docker 的時候,都必須安裝虛擬化軟件 Virtual Box,更遑論 以封閉著稱的Windows

好了,聊太多題外話,如今迴歸正題。

在實踐 spring clouddocker 的微服務框架時,最多見的問題,無非就是用 docker 部署 eureka 集羣,常常遇到 註冊中心微服務 組件網絡不通的問題。

這時候,見多識廣的人會提議使用 composeswarm 來部署,這不過是還抱有 Docker 是虛擬機那種錯誤認識的人的無奈之舉。

隨着微服務數量的不斷增多,單純的手工部署和功能羸弱的 composeswarm 已經沒法勝任愈來愈複雜的容器編排工做。

這時候,體量稍微大一點的公司都會招聘專業的運維來搞定容器編排的事情,就輪到 kubernetes 閃亮登場了。

許多連 docker 都沒整利索的開發人員,一看到 kubernets 就內心發虛,這就又是個什麼玩意?

但公司新來的技術總監,又給老總吹噓:硅谷的互聯網巨頭都開始使用 DevOps 模式來管理研發,它能夠縮短產品的迭代週期,提升公司競爭力等等。

老總聽完,說開發整了個 Spring Cloud 以後,每天搞重構,產品研發進度嚴重滯後,你就別給我添亂了。

技術總監是何等人物? 只見他眉頭一挑,說道:Spring Cloud已經落伍了,改用Istio,就不用重構之前的 PHP 項目,新出的 NodeJS 也支持。

老總被說服了,反正如今被 Spring Cloud 整得不上不下的,就死馬當作活馬醫吧。

因而,公司上下一會兒又活躍起來:開口 流水線,閉口 滾動升級

那麼,k8s到底是何方神聖?下面我就拿 K8S 以及 Istio 的概念和 Spring Cloud對比一下:

k8s概念 spring cloud概念 功能
pod container 部署的基本單位
service eureka 服務註冊與發現
ingress zuul 網關路由、反向代理
dns server feign 負載均衡
config map config 配置管理
istio envoy hystrix 熔斷降級
istio envoy seluth & zipkin 鏈路追蹤
deployment 災備擴容
StatefullSet 有狀態集羣
以上的比較並不充分體現二者的差別,也不徹底準確,僅供參考。

到這裏,基本上就是大多數人公司和開發掉進坑裏的地方。Istio 雖然好,但如何落地依然是不少人心頭的一塊大石。

2020 Serverless 後浪

前面提到, 2019年不少公司剛從 Spring Cloud 的坑裏爬出來,又遇到 Istio 的這個攔路虎。

然而,時代的滾輪不斷向前,不會由於任何一我的或者組織團體而停下

營銷大師 馬雲 提出 中臺 就是 雲原生 的終極形態,忽悠了一大批互聯網企業的高管。一時間,中臺 成爲互聯網行業的 皇帝新衣,問誰都說知道 中臺 是什麼,但深究起來,卻沒幾我的能準確回答上來。

後面大佬們回過神來,原來 中臺 就是 雲原生時代應用商店 。不愧是互聯網界的忽悠大師!

隨之而來,還有 邊緣計算,折騰大半年得出一個由 K8S 閹割而來的 K3S,美其名曰 輕量級K8S

2020開年就是一場突如其來的疫情,轉眼間 2020年 已通過了大半,互聯網行業能炒做的噱頭都炒完了,只剩下 Serverless 這個後浪還能堅持到最後。

Serverless 出來到如今,都跟 中臺 概念同樣,人人都在談,但沒有人可以準確地說 Serverless 究竟是什麼,直到後起之秀 NodeJS祭出終極大殺招 WASM,一時間幾乎全部語言生態都想分一杯羹。紛紛放出將自家的 WASM轉換 工具,亞馬遜也宣佈旗下開源的 Serverless 運行時 firecracker 支持 WASM

至此,業界才知道誰纔是真正的 後浪

相關文章
相關標籤/搜索