中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Serverless中微服務的優缺點和最佳實踐分析

發布時間:2022-01-12 16:36:36 來源:億速云 閱讀:179 作者:柒染 欄目:云計算

這篇文章將為大家詳細講解有關Serverless中微服務的優缺點和最佳實踐分析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

Serverless是一種構建和管理基于微服務架構的完整流程,允許你在服務部署級別而不是服務器部署級別來管理你的應用部署。

它與傳統架構的不同之處在于,完全由第三方管理,由事件觸發,存在于無狀態(Stateless)、暫存(可能只存在于一次調用的過程中)計算容器內。構建無服務器應用程序意味著開發者可以專注在產品代碼上,而無須管理和操作云端或本地的服務器或運行時。Serverless真正做到了部署應用無需涉及基礎設施的建設,自動構建、部署和啟動服務。

微服務的概念非常適合Serverless功能的結構,可以輕松實現不同服務在部署和運行時隔離。在數據存儲方面,使用諸如DynamoDB之類的數據庫,還使得每個微服務都能擁有獨立的數據庫,并在需要獨立擴展它們時變得更加容易。

在我們深入研究細節之前,請考慮微服務對于你的特定項目和團隊而言,其好處是否大于其缺點。請不要因為“微服務是趨勢”,就要必須選擇它。單體架構(Monolith)也有他的適用場景。

Serverless中微服務的優勢

1. 選擇性地可伸縮性和并發性

Serverless功能使管理應用程序的并發性和可伸縮性變得容易。在微服務架構中,我們充分利用了這一點,每個微服務都可以根據需要具有自己的并發/可伸縮性設置。
這是有價值的:減輕DDoS攻擊的可能性,減少無法控制的云賬單的財務風險,更好地分配資源等等。

2. 細粒度的資源分配

通過選擇性的可伸縮性和并發性,可以對資源分配優先級進行詳細控制。
每個(微)服務可以根據其需求和目的具有不同級別的內存分配。面向客戶的服務可以分配更高的內存,因為它將有助于縮短執行時間,提高響應速度。可以通過優化的內存設置來部署對延遲不敏感的內部服務。
存儲機制也是如此,DynamoDB或Aurora Serverless等數據庫可以根據(微)服務的需求而具有不同級別的容量分配。

3. 松耦合

這是微服務的基本屬性,這樣它可以使具有不同用途的系統組件更容易解耦。

4. 支持多運行時環境

Serverless功能配置,部署和執行的簡便性為基于多個運行時的系統提供了可能性。
盡管Node.js是后端Web應用程序中最流行的技術之一,但它不可能成為每個任務的最佳工具。但,對于數據密集型任務,預測分析和任何形式的機器學習,Python可能會成為你的選擇。專用平臺(例如SageMaker)則更適合于大型項目。
借助Serverless基礎架構,在運維方面,你無需再花額外的精力就可以為常規后端項目選擇Node.js,為數據密集型選擇Python。當然,這將在代碼維護和團隊管理方面增加一些工作。

5. 開發團隊的獨立性

不同的開發人員或團隊可以在各自的(微)服務上工作,修復錯誤,擴展功能等。
AWS SAM,Serverless之類的工具使得在操作方面也具有更大的獨立性。AWS CDK constructs 可實現更大的獨立性,而無需犧牲更高級別的質量和運維標準。

Serverless中微服務的缺點

1. 難以監視和調試

Serverless帶來的許多挑戰中,監視和調試是最有難度的。因為計算和存儲系統分散在許多不同節點中,更不用說緩存等的其他服務了。
但是,有專業平臺可以解決所有這些問題。

2. 可能會經歷更多的冷啟動

調用功能時,Lambda會檢查microVM是否已激活。如果有空閑的microVM可用,它將用于服務新的傳入請求。在這種特殊情況下,沒有啟動時間,因為microVM已經啟動并且代碼包已在內存中。這稱為 熱啟動。

相反的方法-必須從頭開始提供新的microVM來滿足傳入的請求-被稱為 冷啟動。

當FaaS(Function as a Services)平臺(例如Lambda)需要啟動新的虛擬機來運行功能代碼時,就會發生冷啟動。如果你的應用對延遲很敏感,則它們可能會出現問題,因為冷啟動會在總啟動時間中增加幾百毫秒到幾秒鐘。
因為在完成一個請求后,FaaS平臺通常會將microVM閑置一段時間,然后在10-60分鐘后關閉。因此,函數執行的頻率越高,microVM越有可能運行傳入的請求(避免冷啟動)。
當我們將應用程序分散在數百或數千個(微)服務中時,我們還可能分散每個服務的調用時間,從而導致每個功能的調用頻率降低,可能會經歷更多的冷啟動。

3. 其他缺點

微服務概念本身還具有其他固有的缺點。這些并不是與Serverless固有的聯系。盡管如此,每個采用這種架構的團隊都應努力降低其潛在的風險和成本:
  • 確定服務邊界并非易事

  • 更廣泛的攻擊面

  • 服務編排開銷

  • 同步計算和存儲并不容易

Serverless微服務的挑戰和最佳實踐

1. Serverless中微服務應該是多大

微服務(MicroService)是軟件架構領域業另一個熱門的話題。如果說微服務是以專注于單一責任與功能的小型功能塊為基礎,利用模組化的方式組合出復雜的大型應用程序,那么我們還可以進一步認為Serverless架構可以提供一種更加“代碼碎片化”的軟件架構范式,我們稱之為Function as a Services(FaaS)。

而所謂的“函數”(Function)提供的是相比微服務更加細小的程序單元。例如,可以通過微服務代表為某個客戶執行所有CRUD操作所需的代碼,而FaaS中的“函數”可以代表客戶所要執行的每個操作:創建、讀取、更新,以及刪除。當觸發“創建賬戶”事件后,將通過AWS Lambda函數的方式執行相應的“函數”。從這一層意思來說,我們可以簡單地將Serverless架構與FaaS概念等同起來。

在Serverless中,經常會將“Function as a Services(FaaS)”的概念與你所選擇的編程語言中的函數語句混淆。
我們正在進入一個無法畫出完美界限的領域,但是經驗表明,使用非常小的Serverless功能并不是一個好主意。
你應該記住的一件事是,當決定將(微)服務分拆為單獨的功能時,你將不得不應對Serverless困境。只要有可能,將相關邏輯保持在單個功能中就會有很多好處。
決策過程也應考慮到擁有單獨的微服務的優勢。
如果我分拆這個微服務,
  • 這將使不同的團隊獨立工作嗎?
  • 我可以從細粒度的資源分配或選擇性可伸縮性功能中受益嗎?
如果不是,則應該考慮將該服務與所需的組件等捆綁在一起。

2. 松耦合你的架構

通過組成Serverless功能來協調微服務的方法有很多。
當需要同步通信時,可以進行直接調用(即AWS Lambda RequestResponse調用方法),但這會導致高度耦合的架構。更好的選擇是使用Lambda Layers或HTTP API,這使得以后可以在不中斷客戶端請求的情況下,修改或遷移服務成為可能。
對于異步通信,我們有幾種選擇:消息隊列(SQS),主題通知(SNS),Event Bridge或者DynamoDB Streams。

3. 組件隔離

理想情況下,微服務不應將實現細節暴露給用戶。
諸如Lambda之類的Serverless平臺已經提供了隔離功能的API。但這本身就會導致實現細節泄漏,理想情況下,我們將在功能之上添加一個不可知的HTTP API層,以使其真正隔離。

4. 使用并發限制策略

為了減輕DDoS攻擊,在使用AWS API Gateway等服務時,請確保為每個面向公眾的終端節點設置單獨的并發限制策略。
此類服務在云平臺中具有針對全局并發配額。如果你沒有基于端點的限制,則攻擊者只需將一個端點作為目標即可耗盡你的資源配額并使整個系統癱瘓。

關于Serverless中微服務的優缺點和最佳實踐分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南丹县| 霞浦县| 舟山市| 苍梧县| 博客| 延安市| 淮南市| 曲周县| 日土县| 秭归县| 沁源县| 泽库县| 凤台县| 临夏县| 汤原县| 雷山县| 文水县| 厦门市| 卢湾区| 安顺市| 朝阳区| 芜湖县| 盐亭县| 丽江市| 军事| 乐东| 杭锦后旗| 南平市| 社旗县| 孝昌县| 江永县| 乐安县| 南通市| 景泰县| 临西县| 兴义市| 东宁县| 阿拉善盟| 清涧县| 永春县| 晴隆县|