震聞:2021年 微服務(wù) 即將被這個取代了!误趴!

“Serverless 能取代微服務(wù)嗎霹琼?” 這是知乎上 Serverless 分類的高熱話題。

有人說微服務(wù)與 Serverless 是相背離的凉当,雖然我們可以基于 Serverless 后端來構(gòu)建微服務(wù)枣申,但在微服務(wù)和 Serverless 之間并不存在直接的路徑。

也有人說看杭,因為 Serverless 內(nèi)含的 Function 可以視為更小的忠藤、原子化的服務(wù),天然地契合微服務(wù)的一些理念楼雹,所以 Serverless 與微服務(wù)是天作之合烘豹。

馬上就要 2021 年了,Serverless 是否終將取代微服務(wù)?從微服務(wù)到 Serverless 需要經(jīng)過怎樣的路徑昌跌? 在我們深入探討細(xì)節(jié)之前,先別急著“站隊”裕坊,不妨先基于你團(tuán)隊的實際情況,真實的去思考是否適合使用微服務(wù),千萬不要因為 "這是趨勢 "而去做選擇得问。

微服務(wù)在 Serverless 中的優(yōu)勢

Serverless

1.可選擇的可擴展性和并發(fā)性

Serverless 讓管理并發(fā)性和可擴展性變得容易膏萧。在微服務(wù)架構(gòu)中曹锨,我們最大限度地利用了這一點。每一個微服務(wù)都可以根據(jù)自己的需求對并發(fā)性/可擴展性進(jìn)行設(shè)置。從不同的角度來看這非常有價值:比如減輕 DDoS 攻擊可能性,降低云賬單失控的財務(wù)風(fēng)險拧抖,更好地分配資源......等等擦盾。

2.細(xì)粒度的資源分配

因為可擴展性和并發(fā)性可以自主選擇腐碱,用戶可以細(xì)粒度控制資源分配的優(yōu)先級芋肠。在 Lambda functions 中吭净,每個微服務(wù)都可以根據(jù)其需求文兢,擁有不同級別的內(nèi)存分配兼呵。比如懂昂,面向客戶的服務(wù)可以擁有更高的內(nèi)存分配铲敛,因為這將有助于加快執(zhí)行時間先鱼;而對于延遲不敏感的內(nèi)部服務(wù)闹蒜,就可以用優(yōu)化的內(nèi)存設(shè)置來進(jìn)行部署。

這一特性同樣適用于存儲機制荣月。比如 DynamoDB 或 Aurora Serverless 數(shù)據(jù)庫就可以根據(jù)所服務(wù)的特定(微)服務(wù)的需求婴程,擁有不同級別的容量分配届搁。

3.松耦合

這是微服務(wù)的一般屬性,并不是 Serverless 的獨有屬性恕齐,這個特性讓系統(tǒng)中不同功能的組件更容易解耦确镊。

4.支持多運行環(huán)境

Serverless 功能的配置、部署和執(zhí)行的簡易性采呐,為基于多個運行時的系統(tǒng)提供了可能性会通。

雖然 Node.js (JavaScript 運行時)是后端 Web 應(yīng)用最流行的技術(shù)之一鹃彻,但它不可能成為每一項任務(wù)的最佳工具笋粟。對于數(shù)據(jù)密集型任務(wù)、預(yù)測分析和任何類型的機器學(xué)習(xí)析蝴,你可能選擇 Python 作為編程語言害捕;像 SageMaker 這樣的專用平臺更適合大項目。

有了 Serverless 基礎(chǔ)架構(gòu)嫌变,你無需在操作方面花費額外的精力就可以直接為常規(guī)后端 API 選擇 Node.js吨艇,為數(shù)據(jù)密集型工作選擇 Python躬它。顯然腾啥,這可能會給你的團(tuán)隊帶來代碼維護(hù)和團(tuán)隊管理的額外工作。

5.開發(fā)團(tuán)隊的獨立性

不同的開發(fā)者或團(tuán)隊可以在各自的微服務(wù)上工作冯吓、修復(fù) bug倘待、擴展功能等,做到互不干擾组贺。比如 AWS SAM凸舵、Serverless 框架等工具讓開發(fā)者在操作層面更加獨立。而 AWS CDK 構(gòu)架的出現(xiàn)失尖,可以在不損害高質(zhì)量和運維標(biāo)準(zhǔn)的前提下,讓開發(fā)團(tuán)隊擁有更高的獨立性。

微服務(wù)在 Serverless 中的劣勢

Serverless

1.難 ****以監(jiān)控和調(diào)試

在 Serverless 帶來的眾多挑戰(zhàn)中勒葱,監(jiān)控和調(diào)試可能是最有難度的共苛。因為計算和存儲系統(tǒng)分散在許多不同的功能和數(shù)據(jù)庫中,更不用說隊列仪吧、緩存等其他服務(wù)了庄新,這些問題都是由微服務(wù)本身引起的。不過,目前已經(jīng)有專業(yè)的平臺可以解決所有這些問題择诈。那么械蹋,專業(yè)的開發(fā)團(tuán)隊是否要引入這些專業(yè)平臺也應(yīng)該基于成本進(jìn)行考量。

2.可能經(jīng)歷更多冷啟動

當(dāng) FaaS 平臺(如 Lambda)需要啟動一個新的虛擬機來運行函數(shù)代碼時羞芍,就會發(fā)生冷啟動哗戈。如果你的函數(shù) Workload 對延遲敏感,就很可能會遇到問題荷科。因為冷啟動會在總啟動時間中增加幾百毫秒到幾秒的時間谱醇,當(dāng)一個請求完成后,F(xiàn)aaS 平臺通常會讓 microVM 空閑一段時間步做,等待下一個請求副渴,然后在 10-60 分鐘后關(guān)閉(是的,變化很大)全度。結(jié)果是:你的功能執(zhí)行的越頻繁煮剧,microVM 就越有可能為傳入的請求而啟動并運行(避免冷啟動)。

當(dāng)我們將應(yīng)用分散在數(shù)百個或數(shù)千個微服務(wù)中時将鸵,我們可能在每個服務(wù)中分散調(diào)用時間勉盅,導(dǎo)致每個函數(shù)的調(diào)用頻率降低。注意 “可能會分散調(diào)用”顶掉。根據(jù)業(yè)務(wù)邏輯和你的系統(tǒng)行為方式草娜,這種負(fù)面影響可能很小,或者可以忽略不計痒筒。

3.其 ****他缺點

微服務(wù)概念本身還存在其他固有的缺點宰闰。這些并不是與 Serverless 有內(nèi)在聯(lián)系的。盡管如此簿透,每一個采用這種類型架構(gòu)的團(tuán)隊都應(yīng)該謹(jǐn)慎移袍,以降低其潛在的風(fēng)險和成本。

  • 確定服務(wù)邊界并非易事老充,可能會招致架構(gòu)問題葡盗。

  • 更廣泛的攻擊面

  • 服務(wù)編排費用問題

  • 同步計算和存儲(在需要的時候)是不容易做到高性能和可擴展

微服務(wù)在 Serverless 中的挑戰(zhàn)和實踐

Serverless

1.Serverless 中微服務(wù)應(yīng)該多大?

人們在理解 Servrless 時啡浊," Function as a Services(FaaS) " 的概念很容易與編程語言中的函數(shù)語句相混淆觅够。目前,我們正在處在一個沒有辦法劃出完美界限的時期巷嚣,但經(jīng)驗表明喘先,使用非常小的 Serverless 函數(shù)并不是一個好主意。

當(dāng)你決定將一個(微)服務(wù)分拆成獨立的功能時涂籽,你就將不得不面對 Serverless 難題苹祟。因此,在此提醒,只要有可能树枫,將相關(guān)的邏輯保持在一個函數(shù)中會好很多直焙。

當(dāng)然,決策過程也應(yīng)該考慮擁有一個獨立的微服務(wù)的優(yōu)勢

你可以這樣設(shè)想:“如果我把這個微服務(wù)分拆出來......”

  • 它能讓不同的團(tuán)隊獨立工作嗎砂轻?

  • 能否從細(xì)粒度的資源分配或選擇性的擴展能力中獲益奔誓?

如果不能,你應(yīng)該考慮將這個服務(wù)與另一個需要類似資源搔涝、上下文關(guān)聯(lián)并執(zhí)行相關(guān) Workload 的服務(wù)捆綁在一起厨喂。

2.松耦合的架構(gòu)

通過組成 Serverless 函數(shù)來協(xié)調(diào)微服務(wù)的方法有很多。

當(dāng)需要同步通信時庄呈,可以直接調(diào)用(即 AWS Lambda RequestResponse 調(diào)用方法)蜕煌,但這會導(dǎo)致高度耦合的架構(gòu)。更好的選擇是使用 Lambda Layers 或 HTTP API诬留,這樣可以讓以后的修改或遷移服務(wù)對客戶端不構(gòu)成影響斜纪。

對于接受異步通信模型,我們有幾種選擇文兑,如隊列(SQS)盒刚、主題通知(SNS)、Event Bridge 或者 DynamoDB Streams绿贞。

3.跨組件隔離

理想情況下因块,微服務(wù)不應(yīng)向使用者暴露細(xì)節(jié)。像 Lambda 這樣的 Serverless 平臺會提供一個 API 來隔離函數(shù)籍铁。但這本身就是一種實現(xiàn)細(xì)節(jié)的泄露涡上,理想情況下,我們會在函數(shù)之上添加一個不可知的 HTTP API 層寨辩,使其真正隔離吓懈。

4.使用并發(fā)限制和節(jié)流策略的重要性

為了減輕 DDoS 攻擊歼冰,在使用 AWS API Gateway 等服務(wù)時靡狞,一定要為每個面向公眾的終端設(shè)置單獨的并發(fā)限制和節(jié)流策略。這類服務(wù)一般在云平臺中會為整個區(qū)域設(shè)置全局并發(fā)配額隔嫡。如果你沒有基于端點的限制甸怕,攻擊者只需要將一個單一的端點作為攻擊目標(biāo),就可以耗盡你的配額腮恩,并讓你在該區(qū)域的整個系統(tǒng)癱瘓梢杭。

推薦閱讀

手撕Spring源碼系列】帶你從入門到精通

程序員50W年薪的知識體系與成長路線。

為什么阿里巴巴的程序員成長速度這么快

看完三件事??

如果你覺得這篇內(nèi)容對你還蠻有幫助秸滴,我想邀請你幫我三個小忙:

點贊武契,轉(zhuǎn)發(fā),有你們的 『點贊和評論』,才是我創(chuàng)造的動力咒唆。

關(guān)注公眾號 『 Java斗帝 』届垫,不定期分享原創(chuàng)知識。

同時可以期待后續(xù)文章ing??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末全释,一起剝皮案震驚了整個濱河市装处,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浸船,老刑警劉巖妄迁,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異李命,居然都是意外死亡登淘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門封字,熙熙樓的掌柜王于貴愁眉苦臉地迎上來形帮,“玉大人,你說我怎么就攤上這事周叮”绯牛” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵仿耽,是天一觀的道長合冀。 經(jīng)常有香客問我,道長项贺,這世上最難降的妖魔是什么君躺? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮开缎,結(jié)果婚禮上棕叫,老公的妹妹穿的比我還像新娘。我一直安慰自己奕删,他們只是感情好俺泣,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著完残,像睡著了一般伏钠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谨设,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天熟掂,我揣著相機與錄音,去河邊找鬼扎拣。 笑死赴肚,一個胖子當(dāng)著我的面吹牛素跺,可吹牛的內(nèi)容都是我干的誉券。 我是一名探鬼主播亡笑,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼横朋!你這毒婦竟也來了仑乌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤琴锭,失蹤者是張志新(化名)和其女友劉穎晰甚,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體决帖,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡厕九,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了地回。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扁远。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖刻像,靈堂內(nèi)的尸體忽然破棺而出畅买,到底是詐尸還是另有隱情,我是刑警寧澤细睡,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布谷羞,位于F島的核電站,受9級特大地震影響溜徙,放射性物質(zhì)發(fā)生泄漏湃缎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一蠢壹、第九天 我趴在偏房一處隱蔽的房頂上張望嗓违。 院中可真熱鬧,春花似錦图贸、人聲如沸蹂季。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乏盐。三九已至,卻和暖如春制恍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背神凑。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工净神, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留何吝,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓鹃唯,卻偏偏與公主長得像爱榕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子坡慌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

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