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

2018:Spring Cloud 的崛起

2018年剛開(kāi)始接觸 sprig cloud 的時(shí)候氯析,還不知道 分布式計(jì)算 的概念亏较,只知道 Netflix 開(kāi)源了一套 微服務(wù)框架,里面有很多組件組成:

組件名稱(chēng) 作用
eureka 服務(wù)注冊(cè)與發(fā)現(xiàn)
zuul 網(wǎng)關(guān)路由掩缓、反向代理
feign 客戶(hù)端側(cè)負(fù)載均衡
hystrix 熔斷降級(jí)
seluth & zipkin 鏈路追蹤
config 配置管理
... .......

當(dāng)時(shí)按照書(shū)上所教的雪情,搭建一個(gè)微服務(wù) demo ,就以為 微服務(wù) 不過(guò)如此你辣。興沖沖跑去面試巡通,結(jié)果遇到一個(gè)阿里出來(lái)的大佬,他說(shuō)“只會(huì)問(wèn)你懂的東西舍哄,不會(huì)問(wèn)我懂你不懂的東西”宴凉,結(jié)果就被大佬問(wèn)到 分布式鎖分布式事務(wù)分布式任務(wù)調(diào)度 要怎么解決表悬?問(wèn)得我啞口無(wú)言弥锄,只能灰溜溜地回去。蟆沫。籽暇。

后面經(jīng)過(guò)多番的學(xué)習(xí),才知道 分布式計(jì)算 是個(gè)非常龐大的體系饭庞,spring cloud 這套微服務(wù)開(kāi)發(fā)框架所包含的知識(shí)點(diǎn)只不過(guò)是很小的一部分戒悠。說(shuō)到 分布式計(jì)算 ,就不得不提 拜占庭將軍問(wèn)題舟山,業(yè)界基于這套理論衍生出很多組件:

中間件名稱(chēng) 作用
redis 分布式鎖
zookeeper 分布式鎖/同步
RocketMQ 分布式事務(wù)
xxl-job 分布式任務(wù)調(diào)度
elastic-job 分布式任務(wù)調(diào)度
... .......

說(shuō)了這么多绸狐,事實(shí)上只涵蓋 分布式計(jì)算 很小的一部分,但對(duì)于一個(gè)普通的 Java Web 開(kāi)發(fā)人員來(lái)說(shuō)捏顺,掌握這點(diǎn)知識(shí)點(diǎn)已經(jīng)足夠他在北上廣深拿一兩萬(wàn)工資六孵,過(guò)過(guò)普通日子。

然而即便如此幅骄,在實(shí)際的開(kāi)發(fā)流程中劫窒,Spring Cloud 這套框架還是暴露出它的致命弱點(diǎn):

  • 侵入性非常強(qiáng)
  • 不支持異構(gòu)應(yīng)用

首先說(shuō)說(shuō) Spring Cloud 侵入性的一面,強(qiáng)侵入性導(dǎo)致了在將以前單體應(yīng)用改造為模塊化的微服務(wù)遇到非常多的麻煩拆座,其中最大的問(wèn)題是 微服務(wù)化改造 過(guò)程非常耗時(shí)耗力主巍,卻沒(méi)有給公司帶來(lái)任何短期收益,而且占用原本的產(chǎn)品研發(fā)的人力物力挪凑。面對(duì)這種情況孕索,一般的公司都會(huì)選擇一邊交付新功能,一邊改造舊服務(wù)的策略躏碳。

其次搞旭,說(shuō)起 異構(gòu)應(yīng)用,不得不說(shuō)“明日黃花” PHP 和 “后起之秀” NodeJS

過(guò)去很多公司會(huì)采用 PHP 開(kāi)發(fā) Web應(yīng)用 肄渗,然而隨著 NodeJS 不斷崛起镇眷,業(yè)界流行起 前后端分離 浪潮,PHP 生態(tài)雖然受到一定的沖擊翎嫡,但不致命欠动。

然而,一波未平一波又起惑申,業(yè)界又興起 微服務(wù)化 的浪潮具伍,不同于以前的是,這次 PHP 徹底掉隊(duì)了圈驼。

之前我在面試的時(shí)候人芽,遇到一個(gè)唯品會(huì)出來(lái)的10年開(kāi)發(fā)經(jīng)驗(yàn)的 PHP 程序員。聽(tīng)他說(shuō)绩脆,前幾年公司招了一個(gè)技術(shù)老總啼肩,中層管理大換血,公司的主要技術(shù)棧也從 PHP 轉(zhuǎn)向 Java 衙伶,他也轉(zhuǎn)向 Java 開(kāi)發(fā)祈坠,然而還是逃不過(guò)被裁員的命運(yùn)。矢劲。赦拘。

這里腦洞大開(kāi)一下:如果 Spring Cloud 支持 異構(gòu)應(yīng)用,或許 唯品會(huì) 就不需要付出巨大代價(jià)用 Java 重寫(xiě) PHP 應(yīng)用芬沉,PHP 程序員也不用面臨大規(guī)模裁員的困境躺同。

Spring Cloud 不支持 異構(gòu)應(yīng)用 這一特點(diǎn),就是一把雙刃劍丸逸,雖然干掉宿敵 PHP蹋艺,但并不代表 Java 開(kāi)發(fā)人員就可以高枕無(wú)憂(yōu)。

Spring Cloud 的高光時(shí)刻已經(jīng)過(guò)去了黄刚,黑暗即將來(lái)臨:先是 EurekaZuul 閉源捎谨,后面雖然有 NacosGateway等代替品,但依舊沒(méi)解決 侵入性強(qiáng)不支持異構(gòu)應(yīng)用 的致命缺陷憔维。

因此面對(duì)即將來(lái)臨的 云原生時(shí)代涛救,Java 根本就沒(méi)有準(zhǔn)備好!

2019:云原生時(shí)代的曙光

過(guò)去的 2019年 可以說(shuō)是 云原生 元年业扒。

這一年里检吆,Kubernetes 擊敗了 Docker SwarmDocker ComposeMesos 等一眾對(duì)手程储,坐穩(wěn) 容器編排第一把交椅

這一年里蹭沛,Istio 擊敗了 對(duì)手 Linkerd臂寝,成為 Service Mesh 的一哥,劍指曾經(jīng)的大佬 Spring Cloud摊灭,大有取而代之的趨勢(shì)交煞。

說(shuō)起 Istio 不得不提 Service MeshService Mesh 中文意思就是 服務(wù)網(wǎng)格斟或。而在談之前,還需要討論一下 Docker集嵌。

早在 2015 年萝挤,我就聽(tīng)說(shuō) Docker 的大名。那時(shí)候我還在上大學(xué)根欧,每次因?yàn)檎n程作業(yè)或畢業(yè)設(shè)計(jì)的緣故需要安裝數(shù)據(jù)庫(kù)怜珍,而 SQL ServerMySQL 兩者經(jīng)常發(fā)生沖突,每次沖突都只能通過(guò)重裝系統(tǒng)解決凤粗,每個(gè)學(xué)期重裝一次系統(tǒng)都是家常便飯酥泛。雖然想過(guò)裝虛擬機(jī),但那個(gè)時(shí)候的固態(tài)硬盤(pán)和內(nèi)存都特別貴嫌拣,裝完虛擬機(jī)后就卡得要死柔袁。

當(dāng)聽(tīng)到 Docker 的時(shí)候,我就想用它來(lái)代替虛擬機(jī)异逐,然而 Docker 并不支持 Windows捶索,還需要安裝 Linux 虛擬機(jī)才行,所以后面就不了了之灰瞻。

我敢打包票腥例,即便到了現(xiàn)在依然很多人就跟當(dāng)年的我一樣認(rèn)為 Docker 就是一個(gè)輕量級(jí)的虛擬機(jī),所以在 容器 里運(yùn)行 MySQL 性能會(huì)遠(yuǎn)低于 原生 Mysql酝润,這其實(shí)是一個(gè)天大的 誤會(huì) 燎竖!

然而,即便到了 2019 年要销,Docker 已經(jīng)支持 Windows 容器构回,我終于可以運(yùn)行 容器化 的 SQL Server, 然而在 Windows 上運(yùn)行 Docker 還是需要安裝一個(gè)輕量級(jí) Linux 虛擬機(jī)疏咐。

原因就是 Docker 運(yùn)行容器的時(shí)候捐凭,容器之間需要 共享 宿主OS,所以沒(méi)有 Linux 虛擬機(jī)凳鬓,根本跑不了 Linux 容器茁肠。

那么在 Windows 上運(yùn)行 Windows容器 是不是就不用安裝 Linux?答案是并沒(méi)有缩举。原因是 docker 在運(yùn)行時(shí)需要運(yùn)行守護(hù)進(jìn)程 docker daemon等監(jiān)控維持容器運(yùn)行的組件垦梆,所以還是需要運(yùn)行 Linux 虛擬機(jī)匹颤。

連以兼容 類(lèi)Unix 著稱(chēng)的 Mac OS,在運(yùn)行 docker 的時(shí)候托猩,都必須安裝虛擬化軟件 Virtual Box印蓖,更遑論 以封閉著稱(chēng)的Windows

好了京腥,聊太多題外話(huà)赦肃,現(xiàn)在回歸正題。

在實(shí)踐 spring clouddocker 的微服務(wù)框架時(shí)公浪,最常見(jiàn)的問(wèn)題他宛,無(wú)非就是用 docker 部署 eureka 集群,經(jīng)常遇到 注冊(cè)中心微服務(wù) 組件網(wǎng)絡(luò)不通的問(wèn)題欠气。

這時(shí)候厅各,見(jiàn)多識(shí)廣的人會(huì)提議使用 composeswarm 來(lái)部署,這不過(guò)是還抱有 Docker 是虛擬機(jī)那種錯(cuò)誤認(rèn)識(shí)的人的無(wú)奈之舉预柒。

隨著微服務(wù)數(shù)量的不斷增多队塘,單純的手工部署和功能羸弱的 composeswarm 已經(jīng)無(wú)法勝任越來(lái)越復(fù)雜的容器編排工作。

這時(shí)候宜鸯,體量稍微大一點(diǎn)的公司都會(huì)招聘專(zhuān)業(yè)的運(yùn)維來(lái)搞定容器編排的事情憔古,就輪到 kubernetes 閃亮登場(chǎng)了。

許多連 docker 都沒(méi)整利索的開(kāi)發(fā)人員淋袖,一看到 kubernets 就心里發(fā)虛投放,這就又是個(gè)什么玩意?

但公司新來(lái)的技術(shù)總監(jiān)适贸,又給老總吹噓:硅谷的互聯(lián)網(wǎng)巨頭都開(kāi)始使用 DevOps 模式來(lái)管理研發(fā)灸芳,它可以縮短產(chǎn)品的迭代周期,提高公司競(jìng)爭(zhēng)力等等拜姿。

老總聽(tīng)完烙样,說(shuō)開(kāi)發(fā)整了個(gè) Spring Cloud 之后,天天搞重構(gòu)蕊肥,產(chǎn)品研發(fā)進(jìn)度嚴(yán)重滯后谒获,你就別給我添亂了。

技術(shù)總監(jiān)是何等人物壁却? 只見(jiàn)他眉頭一挑批狱,說(shuō)道:Spring Cloud已經(jīng)落伍了,改用Istio展东,就不用重構(gòu)以前的 PHP 項(xiàng)目赔硫,新出的 NodeJS 也支持。

老總被說(shuō)服了盐肃,反正現(xiàn)在被 Spring Cloud 整得不上不下的爪膊,就死馬當(dāng)做活馬醫(yī)吧权悟。

于是,公司上下一下子又活躍起來(lái):開(kāi)口 流水線(xiàn)推盛,閉口 滾動(dòng)升級(jí)峦阁。

那么,k8s究竟是何方神圣耘成?下面我就拿 K8S 以及 Istio 的概念和 Spring Cloud對(duì)比一下:

k8s概念 spring cloud概念 功能
pod container 部署的基本單位
service eureka 服務(wù)注冊(cè)與發(fā)現(xiàn)
ingress zuul 網(wǎng)關(guān)路由榔昔、反向代理
dns server feign 負(fù)載均衡
config map config 配置管理
istio envoy hystrix 熔斷降級(jí)
istio envoy seluth & zipkin 鏈路追蹤
deployment 災(zāi)備擴(kuò)容
StatefullSet 有狀態(tài)集群

以上的比較并不充分體現(xiàn)兩者的差異,也不完全準(zhǔn)確瘪菌,僅供參考撒会。

到這里,基本上就是大多數(shù)人公司和開(kāi)發(fā)掉進(jìn)坑里的地方控嗜。Istio 雖然好,但如何落地依然是很多人心頭的一塊大石骡显。

2020 Serverless 后浪

前面提到疆栏, 2019年很多公司剛從 Spring Cloud 的坑里爬出來(lái),又遇到 Istio 的這個(gè)攔路虎惫谤。

然而壁顶,時(shí)代的滾輪不斷向前,不會(huì)因?yàn)槿魏我粋€(gè)人或者組織團(tuán)體而停下

營(yíng)銷(xiāo)大師 馬云 提出 中臺(tái) 就是 云原生 的終極形態(tài)溜歪,忽悠了一大批互聯(lián)網(wǎng)企業(yè)的高管若专。一時(shí)間,中臺(tái) 成為互聯(lián)網(wǎng)行業(yè)的 皇帝新衣蝴猪,問(wèn)誰(shuí)都說(shuō)知道 中臺(tái) 是什么调衰,但深究起來(lái),卻沒(méi)幾個(gè)人能準(zhǔn)確回答上來(lái)自阱。

后面大佬們回過(guò)神來(lái)嚎莉,原來(lái) 中臺(tái) 就是 云原生時(shí)代應(yīng)用商店 。不愧是互聯(lián)網(wǎng)界的忽悠大師沛豌!

隨之而來(lái)趋箩,還有 邊緣計(jì)算,折騰大半年得出一個(gè)由 K8S 閹割而來(lái)的 K3S加派,美其名曰 輕量級(jí)K8S叫确。

2020開(kāi)年就是一場(chǎng)突如其來(lái)的疫情,轉(zhuǎn)眼間 2020年 已經(jīng)過(guò)了大半芍锦,互聯(lián)網(wǎng)行業(yè)能炒作的噱頭都炒完了竹勉,只剩下 Serverless 這個(gè)后浪還能堅(jiān)持到最后。

Serverless 出來(lái)到現(xiàn)在娄琉,都跟 中臺(tái) 概念一樣饶米,人人都在談桨啃,但沒(méi)有人能夠準(zhǔn)確地說(shuō) Serverless 到底是什么,直到后起之秀 NodeJS祭出終極大殺招 WASM檬输,一時(shí)間幾乎所有語(yǔ)言生態(tài)都想分一杯羹照瘾。紛紛放出將自家的 WASM轉(zhuǎn)換 工具,亞馬遜也宣布旗下開(kāi)源的 Serverless 運(yùn)行時(shí) firecracker 支持 WASM丧慈。

至此析命,業(yè)界才知道誰(shuí)才是真正的 后浪

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逃默,一起剝皮案震驚了整個(gè)濱河市鹃愤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌完域,老刑警劉巖软吐,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異吟税,居然都是意外死亡凹耙,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)肠仪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肖抱,“玉大人,你說(shuō)我怎么就攤上這事异旧∫馐觯” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵吮蛹,是天一觀的道長(zhǎng)荤崇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)潮针,這世上最難降的妖魔是什么天试? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮然低,結(jié)果婚禮上喜每,老公的妹妹穿的比我還像新娘。我一直安慰自己雳攘,他們只是感情好带兜,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著吨灭,像睡著了一般刚照。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喧兄,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天无畔,我揣著相機(jī)與錄音啊楚,去河邊找鬼。 笑死浑彰,一個(gè)胖子當(dāng)著我的面吹牛恭理,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播郭变,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼颜价,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了诉濒?” 一聲冷哼從身側(cè)響起周伦,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎未荒,沒(méi)想到半個(gè)月后专挪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡片排,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年寨腔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片划纽。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脆侮,死狀恐怖锌畸,靈堂內(nèi)的尸體忽然破棺而出勇劣,到底是詐尸還是另有隱情,我是刑警寧澤潭枣,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布比默,位于F島的核電站,受9級(jí)特大地震影響盆犁,放射性物質(zhì)發(fā)生泄漏命咐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一谐岁、第九天 我趴在偏房一處隱蔽的房頂上張望醋奠。 院中可真熱鬧,春花似錦伊佃、人聲如沸窜司。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)塞祈。三九已至,卻和暖如春帅涂,著一層夾襖步出監(jiān)牢的瞬間议薪,已是汗流浹背尤蛮。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斯议,地道東北人产捞。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捅位,于是被迫代替她去往敵國(guó)和親轧葛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容