精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Serverless時(shí)代的微服務(wù)開發(fā)指南:華為云提出七大實(shí)踐新標(biāo)準(zhǔn)

華為DevCloud ? 來源:未知 ? 2023-01-06 08:55 ? 次閱讀

歷川:華為云 Serverless 研發(fā)專家

丙真:華為云中間件 Serverless 產(chǎn)品經(jīng)理
馮嘉:華為云中間件首席專家


背景

分散治理、數(shù)據(jù)去中心化、基礎(chǔ)設(shè)施自動(dòng)化等優(yōu)秀設(shè)計(jì)原則,使得微服務(wù)架構(gòu)在過去幾年中逐漸發(fā)展為企業(yè)應(yīng)用架構(gòu)的首選。然而,隨著應(yīng)用規(guī)模的持續(xù)增長(zhǎng)和微服務(wù)生態(tài)的成熟,新的挑戰(zhàn)也在不斷涌現(xiàn)出來。相比于傳統(tǒng) SOA 等架構(gòu), 微服務(wù)架構(gòu)給予開發(fā)者更多設(shè)計(jì)和開發(fā) “自由度”,同一應(yīng)用的各微服務(wù)模塊,可以采用不同的技術(shù)棧來實(shí)現(xiàn)獨(dú)立自治的業(yè)務(wù)邏輯。但自由也相應(yīng)增加了開發(fā)運(yùn)維的復(fù)雜度,提高了軟件開發(fā)者的認(rèn)知成本;同時(shí),微服務(wù)架構(gòu)在業(yè)務(wù)資源開銷、交付速度、擴(kuò)展性能和基礎(chǔ)設(shè)施彈性等方面,也面臨一系列新的挑戰(zhàn)。
Serverless 編程范式的興起,允許開發(fā)者聚焦業(yè)務(wù)邏輯本身,無需再感知底層運(yùn)行時(shí)細(xì)節(jié)和后端資源的維護(hù)伸縮等問題,給微服務(wù)應(yīng)用開發(fā)提供了效率更高的選擇。本文結(jié)合華為云函數(shù)工作流 FunctionGraph、事件網(wǎng)格 EventGrid 以及云應(yīng)用引擎 CAE 等在 Serverless Microservice 方面的實(shí)踐,總結(jié)提煉出包括基礎(chǔ)設(shè)施無感知、全生命周期可觀測(cè)、 狀態(tài)管理自動(dòng)化等在內(nèi)的七大 Serverless Microservice 開發(fā) “實(shí)踐標(biāo)準(zhǔn)”,為加速全域 Serverless 產(chǎn)業(yè)升級(jí)、推動(dòng)企業(yè)應(yīng)用開發(fā)框架從微服務(wù)向 Serverless 演進(jìn)提供一些思考。

微服務(wù)架構(gòu)新挑戰(zhàn)

圖 1. 微服務(wù)應(yīng)用開發(fā)的生命周期示意
如圖 1 所示,在微服務(wù)架構(gòu)中,應(yīng)用程序由一組功能自治的小型化服務(wù)圍繞業(yè)務(wù)能力構(gòu)建,服務(wù)之間采用輕量級(jí)通信,可以獨(dú)立開發(fā)、構(gòu)建、測(cè)試、發(fā)布和監(jiān)控。微服務(wù)的目的是有效拆分應(yīng)用,實(shí)現(xiàn)敏捷開發(fā)和部署 [1]。Martin Fowler 和 James Lewis 在《Microservices: A Definition of This New Architectural Term》中,列舉了微服務(wù)架構(gòu)的九大特征,如表 1 所示 (參見 [2]),這些特征使得微服務(wù)相比于傳統(tǒng)軟件開發(fā)架構(gòu),具有更加靈活的設(shè)計(jì)開發(fā)模式,服務(wù)之間支持獨(dú)立部署和擴(kuò)展,有效提升了企業(yè)應(yīng)用的開發(fā)、迭代和運(yùn)維效率。
表 1:微服務(wù)架構(gòu)的九大特征
盡管微服務(wù)架構(gòu)秉承眾多優(yōu)秀設(shè)計(jì)原則,隨著應(yīng)用規(guī)模增長(zhǎng)、技術(shù)生態(tài)的成熟和工具鏈的多元化發(fā)展,一系列新的挑戰(zhàn)逐漸呈現(xiàn)在企業(yè)應(yīng)用開發(fā)者面前。
挑戰(zhàn)一:開發(fā)運(yùn)維的復(fù)雜性高
相比于單體(Monolithic)或 SOA(Service-Oriented Architecture)等傳統(tǒng)架構(gòu)下的 “規(guī)范標(biāo)準(zhǔn)”,微服務(wù)更提倡基于 “實(shí)踐標(biāo)準(zhǔn)” 解決分布式問題 [2];因此,對(duì)于服務(wù)注冊(cè)發(fā)現(xiàn)、負(fù)載均衡、配置和安全、事務(wù)處理等,在微服務(wù)場(chǎng)景中不再有統(tǒng)一的解決方案。例如,服務(wù)間通信方案就有數(shù)十種,包括 REST、gRPC、Thrift、Dubbo 等,服務(wù)發(fā)現(xiàn)也包含 CoreDNS、Eureka、ZooKeeper、ETCD 等多種技術(shù)選型 ; 應(yīng)用開發(fā)人員從這些各有千秋的技術(shù)中,選擇最適合自己業(yè)務(wù)場(chǎng)景的系統(tǒng)性方案,無疑是一件門檻很高的任務(wù) ; 盡管有 Spring Cloud 等一站式的全家桶工具集,對(duì)應(yīng)用設(shè)計(jì)和運(yùn)維人員來說,一攬子工具集所提供的技術(shù)組合復(fù)雜多樣,導(dǎo)致問題定位、定界效率低。
除 Spring Cloud,Kubernetes 也逐漸成為一種主流的微服務(wù)解決方案。與 Spring Cloud 相比,Kubernetes 的配置管理和服務(wù)注冊(cè)功能更加友好,且“邊車代理模式”、服務(wù)網(wǎng)格 (e.g., Istio) 等技術(shù)的提出,顯著提高了服務(wù)治理的效率;但要實(shí)現(xiàn)這類解決方案的高效利用,開發(fā)者的認(rèn)知成本和所面對(duì)的復(fù)雜性并不低;從 Spring Cloud 到 Kubernetes,復(fù)雜性沒有被減弱,更多地是被轉(zhuǎn)移。微服務(wù)架構(gòu)也需要開發(fā)者掌握并發(fā)編程框架和分布式事務(wù)一致性等技術(shù),這些技術(shù)本身具備不低的復(fù)雜性,以事務(wù)一致性為例,常見機(jī)制就包括 TCC (Try-Confirm-Cancel)、2/3PC (2/3 Phase Commit)、SAGA 等模式。
挑戰(zhàn)二:服務(wù)擴(kuò)展效率與應(yīng)用規(guī)模難平衡
盡管微服務(wù)提倡對(duì)應(yīng)用進(jìn)行拆分,但微服務(wù)的粒度仍然比較大。同一個(gè)微服務(wù)單元中,不同子功能之間的使用頻率(e.g., QPS、RPS et al.)、變更頻率等往往也不相同,因而對(duì)擴(kuò)展性的訴求也不一樣。圖 2 展示了一個(gè) Web 應(yīng)用中“用戶管理”微服務(wù)的例子 [3],該微服務(wù)包含賬號(hào)注冊(cè) API、登錄 API 和登出 API 三項(xiàng)子功能,在實(shí)際使用中,注冊(cè) API 和登錄 API 的調(diào)用頻率通常遠(yuǎn)高于登出 API,因此對(duì)擴(kuò)展性的要求也高于后者;此時(shí)雖然可以對(duì)微服務(wù)進(jìn)一步進(jìn)行拆分,但整個(gè)應(yīng)用的服務(wù)數(shù)量也可能會(huì)隨之翻倍,從而加重應(yīng)用基礎(chǔ)設(shè)施的管理負(fù)擔(dān)。
圖 2. 一個(gè) Web 應(yīng)用中“用戶管理”微服務(wù)的示例
微服務(wù)粒度較大的問題也使得單個(gè)服務(wù)的擴(kuò)容速度十分受限,在高并發(fā)場(chǎng)景下要實(shí)現(xiàn)微服務(wù)的快速?gòu)椥允且患掷щy的事;對(duì)于時(shí)延敏感型應(yīng)用,并發(fā)請(qǐng)求的擴(kuò)容訴求通常在秒級(jí)以內(nèi),甚至毫秒級(jí),但在微服務(wù)架構(gòu)下,服務(wù)彈性擴(kuò)容則通常需要秒級(jí)以上甚至分鐘級(jí)的時(shí)延。
挑戰(zhàn)三:高可用與彈性保障成本高
與服務(wù)擴(kuò)展效率和應(yīng)用規(guī)模平衡相關(guān)的另一個(gè)難題是成本問題。受限于單個(gè)服務(wù)的彈性能力,微服務(wù)架構(gòu)通常采用“多實(shí)例主備”或“多實(shí)例多活”的方案,來保障應(yīng)用的高可用性,實(shí)現(xiàn)容錯(cuò)、容災(zāi)、負(fù)載均衡等目標(biāo)。但與前文中討論的相似,同一個(gè)微服務(wù)應(yīng)用的不同子服務(wù)之間,其承載的流量大小、調(diào)用頻率等的差距也可能很大,因此對(duì)資源的橫向、縱向擴(kuò)縮容訴求也不一致,這種差距往往給企業(yè)帶來無畏的成本浪費(fèi)。圖 3 展示了一個(gè)由 6 個(gè)功能不可或缺的子服務(wù)構(gòu)建而成的微服務(wù)應(yīng)用, 每個(gè)服務(wù)運(yùn)行在虛機(jī)或容器中,圖中實(shí)線表示在給定的一段時(shí)間內(nèi)企業(yè)為每個(gè)服務(wù)所占據(jù)的虛機(jī)或容器所支付的資源成本,虛線表示服務(wù)在業(yè)務(wù)運(yùn)行中所實(shí)際消耗的資源成本。
圖 3. 一個(gè)微服務(wù)應(yīng)用的資源成本示意
在圖 3 的示例中,微服務(wù) F 由于被調(diào)用的頻率很高,其所占據(jù)的資源利用率也較高,而微服務(wù) A 則相反,其所占據(jù)的資源成本和 F 相差不大(e.g., 2u2G 的容器),但 A 被調(diào)用的頻率則相對(duì)低很多,資源利用率也相應(yīng)更低。在實(shí)際應(yīng)用開發(fā)運(yùn)維中,為保障高可用性和資源彈性,圖中實(shí)線與虛線之間通常存在較大的差距,這部分成本是企業(yè)為應(yīng)用所占據(jù)但未使用的資源付出的成本,屬于一種成本浪費(fèi);同時(shí),由于微服務(wù)架構(gòu)通常不支持(一般也不建議)單個(gè)服務(wù) “Scale-to-Zero”,且微服務(wù)應(yīng)用逐漸變得越來越 “重”,上述 “資源占而不用” 導(dǎo)致的浪費(fèi)現(xiàn)象也更加嚴(yán)重。

事件驅(qū)動(dòng)式 Serverless 函數(shù)架構(gòu)

云原生基礎(chǔ)設(shè)施的發(fā)展,有力促進(jìn)了事件驅(qū)動(dòng)的 Serverless 架構(gòu)的廣泛應(yīng)用。相比于微服務(wù),Serverless 提供了一種更加細(xì)粒度的應(yīng)用開發(fā)模型,以及更加便捷、輕量的應(yīng)用運(yùn)維框架。以 FaaS(Function-as-a-Service)為例,應(yīng)用開發(fā)支持以單個(gè)函數(shù)作為最小部署單元,開發(fā)者只需提供函數(shù)代碼(包括源碼文件、鏡像等)和一些配置信息,即可實(shí)現(xiàn)應(yīng)用的快速發(fā)布和上線;同時(shí),后端資源的維護(hù)及其隨流量的自適應(yīng)伸縮等復(fù)雜任務(wù),則全部被下移到 Serverless 平臺(tái)側(cè),顯著降低了開發(fā)者的認(rèn)知成本和開發(fā)、運(yùn)維門檻,如圖 4 所示;開發(fā)者只需為應(yīng)用函數(shù)所實(shí)際使用的資源時(shí)長(zhǎng)進(jìn)行付費(fèi),付費(fèi)粒度精確到毫秒級(jí);同時(shí),在應(yīng)用流量負(fù)載為零的所有時(shí)間區(qū)間中,函數(shù)實(shí)例通過“Scale-to-zero”可以有效消除成本浪費(fèi),實(shí)現(xiàn)應(yīng)用開發(fā)經(jīng)濟(jì)化。
圖 4. Serverless 應(yīng)用開發(fā)架構(gòu)的資源邊界示意
與在微服務(wù)場(chǎng)景下相似,事件驅(qū)動(dòng)式(Event-driven)也是 Serverless 函數(shù)架構(gòu)的核心特征。Serverless 函數(shù)一般由函數(shù)代碼包和事件處理程序(event handler)構(gòu)成,函數(shù)通過事件進(jìn)行觸發(fā),并對(duì)接收到的事件進(jìn)行響應(yīng)、處理。例如,F(xiàn)unctionGraph 支持多種類型的事件觸發(fā)器,滿足應(yīng)用在不同業(yè)務(wù)場(chǎng)景下的訴求;同時(shí),通過原生集成事件網(wǎng)格服務(wù) EventGrid,F(xiàn)unctionGraph 為各類云服務(wù)、自定義應(yīng)用、SaaS 應(yīng)用提供了標(biāo)準(zhǔn)化、中心化的接入方式,事件可以在不同應(yīng)用和服務(wù)之間靈活路由,幫助開發(fā)者快速構(gòu)建松耦合、分布式的事件驅(qū)動(dòng)式 Serverless 應(yīng)用,如圖 5 所示。
圖 5. EFG:基于 EventGrid 和 FunctionGraph 的事件驅(qū)動(dòng)式 Serverless 應(yīng)用模型

基于函數(shù)快速實(shí)現(xiàn) Serverless Microservice 應(yīng)用

圖 6 給出了基于 FunctionGraph 和 APIG(API Gateway)的 Serverless Microservice 簡(jiǎn)易應(yīng)用模型,整個(gè)應(yīng)用采用云上托管服務(wù)(managed services)構(gòu)建,每個(gè)微服務(wù)由函數(shù)實(shí)現(xiàn),并通過 APIG 對(duì)外暴露,函數(shù)之間采用 Workflow 進(jìn)行功能編排。在該模型基礎(chǔ)上,我們用函數(shù)快速實(shí)現(xiàn)一個(gè) Serverless Microservice 示例。
圖 6. 基于 FunctionGraph 和 APIG 的 Serverless Microservice 模型
以經(jīng)典的電商應(yīng)用為例,首先用 FunctionGraph 創(chuàng)建三個(gè)函數(shù),分別實(shí)現(xiàn) Product, Basket, Order 微服務(wù),其中,Product 實(shí)現(xiàn)商品清單及詳情瀏覽,Basket 負(fù)責(zé)加購(gòu),Order 完成下單。交易相關(guān)的狀態(tài)采用分布式緩存服務(wù) DCS(Distributed Cache Service)進(jìn)行存儲(chǔ),DCS 實(shí)例通過綁定獨(dú)立 VPC 來實(shí)現(xiàn)網(wǎng)絡(luò)私有和隔離,最后,我們?yōu)槊總€(gè)函數(shù)分別綁定一個(gè) APIG 觸發(fā)器,對(duì)外暴露服務(wù);如圖 7(1) - 7(5) 所示。
圖 7-(1). 分別創(chuàng)建三個(gè)函數(shù),實(shí)現(xiàn)微服務(wù)功能
圖 7-(2). 授權(quán) FunctionGraph 訪問 VPC 內(nèi)服務(wù) (i.e., DCS 實(shí)例)
圖 7-(3). 開啟函數(shù)訪問 VPC
圖 7-(4). 在函數(shù)中獲取對(duì)應(yīng)環(huán)境變量
圖 7-(5). 最后為每個(gè)函數(shù)綁定 APIG 觸發(fā)器
我們用 APIPost 進(jìn)行簡(jiǎn)單測(cè)試并返回函數(shù)界面查看監(jiān)控信息,如圖 8(1) – (3) 所示:
圖 8-(1). 用 APIPost 測(cè)試函數(shù)微服務(wù)
圖 8-(2). 查看日志監(jiān)控
圖 8-(3). 查看并發(fā)數(shù)等監(jiān)控信息
最后,我們通過 EventGrid 進(jìn)行異步事件解耦,并采用分布式消息服務(wù) DMS(Distributed Message Service)實(shí)現(xiàn)基于 Fan Out/Fan In 的批處理,如圖 9 所示:
圖 9. 一個(gè)基于事件驅(qū)動(dòng)的 Serverless 函數(shù)架構(gòu)的電商應(yīng)用示例
其中,EventGrid 創(chuàng)建事件訂閱時(shí),事件源選擇 DCS 實(shí)例,事件目標(biāo)選擇 FunctionGraph 函數(shù),如圖 10 所示:
圖 10. 創(chuàng)建 EventGrid 事件訂閱

云上 Serverless Microservice 實(shí)踐標(biāo)準(zhǔn)探索

在基于事件驅(qū)動(dòng)式 Serverless 函數(shù)架構(gòu)開發(fā)應(yīng)用的過程中,遵循一定的設(shè)計(jì) / 開發(fā)原則或“實(shí)踐標(biāo)準(zhǔn)”,有利于開發(fā)者構(gòu)建更加高效、經(jīng)濟(jì)和穩(wěn)健的企業(yè)應(yīng)用。本文結(jié)合華為云 FunctionGraph、EventGrid 以及 CAE 等云服務(wù)在 Serverless 領(lǐng)域的最佳實(shí)踐,總結(jié)并提煉出 Serverless microservice 應(yīng)用開發(fā)的七類實(shí)踐標(biāo)準(zhǔn),為開發(fā)者的架構(gòu)決策提供參考;如表 2 所示。
表 2. 云上 Serverless Microservice 應(yīng)用開發(fā)的實(shí)踐標(biāo)準(zhǔn)探索
基礎(chǔ)設(shè)施無感知(Infra-less):基礎(chǔ)設(shè)施無感知幫助開發(fā)者更快、更高效地構(gòu)建應(yīng)用程序,并顯著降低應(yīng)用運(yùn)維的成本和復(fù)雜性。除服務(wù)器無感知外,基礎(chǔ)設(shè)施無感知具有更廣泛的含義。包括開發(fā)者對(duì)平臺(tái)底層操作系統(tǒng)、分布式運(yùn)行時(shí)以及硬件的有限制訪問,開發(fā)者無需感知 FunctionGraph 平臺(tái)是如何架構(gòu)的,其它云服務(wù)與 FunctionGraph 的集成由華為云統(tǒng)一管理,只公開少量配置選項(xiàng)給開發(fā)者,開發(fā)者也無需感知函數(shù)在任何時(shí)間點(diǎn)被調(diào)用時(shí)實(shí)例資源位于哪個(gè)可用區(qū)(Available Zone, AZ),等等;這種抽象允許開發(fā)者專注于應(yīng)用程序本身的功能開發(fā)、數(shù)據(jù)流設(shè)計(jì)和業(yè)務(wù)邏輯優(yōu)化,從而更聚焦地為應(yīng)用的終端用戶提供價(jià)值。
全生命周期可觀測(cè)(Deep Observability):基礎(chǔ)設(shè)施無感知在提供便捷性的同時(shí),也在開發(fā)者的“心智模型”方面降低了透明性,因此,全生命周期、深度、實(shí)例級(jí)的可觀測(cè)性,對(duì)于開發(fā)者實(shí)現(xiàn)對(duì)應(yīng)用的自主掌控具有關(guān)鍵作用。Serverless 可觀測(cè)性包含鏈路追蹤,日志,和指標(biāo)三類,主要服務(wù)于異常監(jiān)控、性能調(diào)測(cè)、故障定位、問題定界等。例如,F(xiàn)unctionGraph 通過內(nèi)置對(duì)接云日志服務(wù) LTS,為應(yīng)用函數(shù)提供日志監(jiān)控能力,包括高級(jí)日志分析能力(e.g., loginsight)等;通過對(duì)接應(yīng)用性能管理服務(wù) APM,提供指標(biāo)豐富的函數(shù)實(shí)例級(jí)監(jiān)控;同時(shí),支持全鏈路調(diào)用鏈管理等。開發(fā)者無需復(fù)雜的配置,即可享受應(yīng)用函數(shù)全生命周期的深度可觀測(cè)性能力。
流式編排(Flow Orchestration):編排是 Serverless 的核心概念之一,狹義的編排主要指工作流編排,如 FunctionGraph Workflow,在 Serverless microservice 應(yīng)用開發(fā)中,開發(fā)者應(yīng)盡量避免在單個(gè)函數(shù)中定制化地開發(fā)應(yīng)用的各類分支邏輯及其異常處理程序,應(yīng)盡可能采用函數(shù)工作流編排來實(shí)現(xiàn),工作流編排提供了一種更加便捷的分支路由、錯(cuò)誤捕獲以及異常處理方法,能夠增強(qiáng)應(yīng)用邏輯的穩(wěn)健性并提高全鏈路可觀測(cè)性 [4]。廣義的編排還包括服務(wù)流編排(Service Flow),應(yīng)用架構(gòu)所依賴的三方功能,如網(wǎng)關(guān)、消息、緩存等,也應(yīng)盡可能采用云上托管服務(wù),通過配置驅(qū)動(dòng)、服務(wù)流編排的方式進(jìn)行組裝式構(gòu)建,從而盡可能減少定制化代碼的開發(fā)和維護(hù),降低應(yīng)用運(yùn)維的負(fù)擔(dān)。FunctionGraph 原生支持開發(fā)者集成云上其它服務(wù),表 3 列出了在 Serverless microservice 開發(fā)中最常用的幾類云服務(wù)。
表 3:Serverless microservice 應(yīng)用程序開發(fā)中常用的幾類云服務(wù)
事件驅(qū)動(dòng)(Event-driven):事件,表示狀態(tài)的變化。采用事件驅(qū)動(dòng)的方式構(gòu)建應(yīng)用的優(yōu)點(diǎn)在于松耦合、獨(dú)立擴(kuò)縮容、良好的擴(kuò)展性等。在狀態(tài)查詢、數(shù)據(jù)存取、函數(shù)調(diào)用等場(chǎng)景中,優(yōu)先采用事件來代替?zhèn)鹘y(tǒng)應(yīng)用開發(fā)中常用的輪詢、Webhook 等機(jī)制,可以有效降低應(yīng)用的復(fù)雜性、提高系統(tǒng)性能、或降低應(yīng)用成本 [5]。以輪詢?yōu)槔?,由于系統(tǒng)狀態(tài)的更新在時(shí)間維度上不一定是規(guī)律且連續(xù)的,使得輪詢類策略往往是低效或非經(jīng)濟(jì)的;Webhook 機(jī)制則在被集成的服務(wù)之間不一定能夠得到廣泛的支持。同時(shí),輪詢和 webhook 機(jī)制在支持應(yīng)用按需擴(kuò)縮容方面也存在較大挑戰(zhàn)。采用事件驅(qū)動(dòng)模式,開發(fā)者既可以很方便地構(gòu)建實(shí)時(shí)系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)按需流動(dòng)并避免過量的批處理任務(wù);也可以通過將事件發(fā)布到 DMS 等消息服務(wù),利用彈性緩沖區(qū)實(shí)現(xiàn)異步解耦,然后利用 EventGrid 對(duì)事件進(jìn)行過濾和路由,從而增強(qiáng)應(yīng)用在流量激變情形下的可伸縮性。
交互式控制(Interactive Autopilot):交互式控制主要解決如何通過廣義的自動(dòng)駕駛技術(shù)(autopilot)[7] 實(shí)現(xiàn)應(yīng)用迭代和生產(chǎn)的高性能、低成本;對(duì)于 Serverless 函數(shù)而言,自動(dòng)駕駛主要包括函數(shù)代碼包瘦身、源碼優(yōu)化、資源規(guī)格選擇、并發(fā)度調(diào)優(yōu)等問題。以函數(shù)資源規(guī)格選擇為例,過去主要依賴于開發(fā)者的工程經(jīng)驗(yàn)和其對(duì)自身業(yè)務(wù)場(chǎng)景的理解進(jìn)行設(shè)定,但經(jīng)驗(yàn)性配置往往具有誤差大、靜態(tài)性、黑盒化等缺點(diǎn);因此,F(xiàn)unctionGraph 提出在線式資源消耗感知與規(guī)格動(dòng)態(tài)推薦等 autopilot 技術(shù),配合離線式最佳規(guī)格調(diào)優(yōu)(power tuning),最大限度幫助用戶實(shí)現(xiàn)應(yīng)用函數(shù) FinOps 效果,讓開發(fā)者能夠真正享受到 Economical Serverless 的福利 [8];開發(fā)者無需感知應(yīng)用自動(dòng)駕駛技術(shù)的實(shí)現(xiàn)細(xì)節(jié),但整個(gè)過程 “處處可觀察、 實(shí)時(shí)可干預(yù)”。
狀態(tài)管理自動(dòng)化(Automatic State Management):盡管 Serverless 提倡無狀態(tài)優(yōu)先,但在多數(shù)分布式應(yīng)用中,狀態(tài)管理是無法回避且復(fù)雜度很高的任務(wù)。隨著數(shù)據(jù)密集型應(yīng)用逐漸成為云上應(yīng)用的主流,如大規(guī)模機(jī)器學(xué)習(xí)、大數(shù)據(jù)與流處理、實(shí)時(shí)交互型應(yīng)用、多人協(xié)作類應(yīng)用等,Serverless 編程框架對(duì)支持有狀態(tài)的訴求越來越強(qiáng)烈。FunctionGraph 作為業(yè)界首個(gè)支持有狀態(tài)的 Serverless 平臺(tái),為開發(fā)者提供多種狀態(tài)一致性模型和自動(dòng)化的并發(fā)處理機(jī)制,開發(fā)者通常只需要對(duì)函數(shù)中的簡(jiǎn)單結(jié)構(gòu)體進(jìn)行操作,即可實(shí)現(xiàn)狀態(tài)數(shù)據(jù)的快速存取,整個(gè)狀態(tài)管理過程由平臺(tái)內(nèi)置提供,無需與外部存儲(chǔ)服務(wù)之間進(jìn)行頻繁交互,顯著減少了涉及大量狀態(tài)數(shù)據(jù)操作的網(wǎng)絡(luò)訪問次數(shù),具有自動(dòng)化、高性能、高可用等特點(diǎn)。
伸縮原子輕量化(Lightweight Scaling Unit):伸縮原子,指最小可伸縮的運(yùn)行單元,如單個(gè)函數(shù)。在 Serverless microservice 應(yīng)用開發(fā)中,函數(shù)應(yīng)盡可能小型化,功能上保持邏輯內(nèi)聚,以響應(yīng)外部事件為主,對(duì)應(yīng)用全局邏輯弱感知;伸縮原子的輕量化,不僅能夠支持快速的獨(dú)立擴(kuò)縮容以及高并發(fā)下的快速?gòu)椥阅芰?,也能夠最大限度地保證應(yīng)用的各個(gè)微服務(wù)函數(shù)能夠“按需擴(kuò)縮容”,從而在保障應(yīng)用負(fù)載 QoS 的前提下,實(shí)現(xiàn)極致成本。

總結(jié)和展望

以事件驅(qū)動(dòng)式函數(shù)架構(gòu)為代表的 Serverless 編程模型,正在成為微服務(wù)應(yīng)用開發(fā)的新一代標(biāo)準(zhǔn)框架。本文結(jié)合華為云 FunctionGraph 和 EventGrid 等在 Serverless 微服務(wù)方面的最佳實(shí)踐,總結(jié)并提煉出七大 Serverless Microservice 實(shí)踐標(biāo)準(zhǔn), 為推動(dòng)全域 Serverless 產(chǎn)業(yè)升級(jí)提供一些思考。
更進(jìn)一步地,華為云事件網(wǎng)格服務(wù) EventGrid 將于近期正式轉(zhuǎn)商用,并聯(lián)合 FunctionGraph 推出事件驅(qū)動(dòng)式函數(shù)應(yīng)用開發(fā)模型 EFG(EventGrid-FunctionGraph); 同時(shí),基于七大實(shí)踐標(biāo)準(zhǔn)并結(jié)合豐富的客戶實(shí)踐,EFG 將推出 Serverless Microservice 參考架構(gòu),為開發(fā)者構(gòu)建事件驅(qū)動(dòng)式 Serverless 解決方案提供可視化的架構(gòu)抽象和優(yōu)秀的業(yè)務(wù)建模支持。

參考資料
[1] Introduction to Microservices. https://www.nginx.com/blog/introduction-to-microservices/
[2] 周志明,《鳳凰架構(gòu):構(gòu)筑可靠的大型分布式系統(tǒng)》
[3] 劉方明, 李林峰, 王磊, 《華為 Serverless 核心技術(shù)與實(shí)踐》.
[4] Understanding event-driven architecture – Part 1https://aws.amazon.com/blogs/compute/operating-lambda-design-principles-in-event-driven-architectures-part-2/
[5] Design principles in event-driven architectures – Part 2https://aws.amazon.com/cn/blogs/compute/operating-lambda-design-principles-in-event-driven-architectures-part-2/
[6] Anti-patterns in event-driven architectureshttps://aws.amazon.com/cn/blogs/compute/operating-lambda-anti-patterns-in-event-driven-architectures-part-3/
[7] Rzadca, K., Findeisen, P., Swiderski, J., Zych, P., Broniek, P., Kusmierek, J., ... & Wilkes, J. (2020, April). Autopilot: workload autoscaling at google. In Proceedings of the Fifteenth European Conference on Computer Systems (pp. 1-16).
[8] 歷川, 平山, 馮嘉, Serverless 遇到 FinOps: Economical Serverless,https://www.infoq.cn/article/ckibtiofxn4whycfjt8b


原文標(biāo)題:Serverless時(shí)代的微服務(wù)開發(fā)指南:華為云提出七大實(shí)踐新標(biāo)準(zhǔn)

文章出處:【微信公眾號(hào):華為DevCloud】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 華為
    +關(guān)注

    關(guān)注

    215

    文章

    34325

    瀏覽量

    251215

原文標(biāo)題:Serverless時(shí)代的微服務(wù)開發(fā)指南:華為云提出七大實(shí)踐新標(biāo)準(zhǔn)

文章出處:【微信號(hào):華為DevCloud,微信公眾號(hào):華為DevCloud】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    BQ7690x軟件開發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《BQ7690x軟件開發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-07 10:19 ?0次下載
    BQ7690x軟件<b class='flag-5'>開發(fā)指南</b>

    MSP430? MCU開發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《MSP430? MCU開發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-06 09:57 ?0次下載
    MSP430? MCU<b class='flag-5'>開發(fā)指南</b>

    微服務(wù)架構(gòu)與容器的關(guān)系與區(qū)別

    微服務(wù)架構(gòu)與容器密切相關(guān)又有所區(qū)別。微服務(wù)將大型應(yīng)用拆分為小型、獨(dú)立的服務(wù),而容器基于容器技術(shù),為
    的頭像 發(fā)表于 10-21 17:28 ?175次閱讀

    MSP430 MCU開發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《MSP430 MCU開發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 10-10 17:19 ?1次下載

    PGA460軟件開發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《PGA460軟件開發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 10-09 10:30 ?0次下載
    PGA460軟件<b class='flag-5'>開發(fā)指南</b>

    華為全域 Serverless 8 月更新盤點(diǎn)

    【摘要】 近年來,華為持續(xù)構(gòu)筑全域 Serverless 服務(wù),推出了一系列競(jìng)爭(zhēng)力領(lǐng)先的 Serve
    的頭像 發(fā)表于 09-27 00:06 ?648次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b>全域 <b class='flag-5'>Serverless</b> 8 月更新盤點(diǎn)

    LVGL開發(fā)指南介紹

    電子發(fā)燒友網(wǎng)站提供《LVGL開發(fā)指南介紹.pdf》資料免費(fèi)下載
    發(fā)表于 09-09 10:24 ?15次下載

    RA/RX電機(jī)應(yīng)用開發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《RA/RX電機(jī)應(yīng)用開發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 08-15 09:44 ?0次下載
    RA/RX電機(jī)應(yīng)用<b class='flag-5'>開發(fā)指南</b>

    華為 Serverless 應(yīng)用中心:一鍵開啟 AI 文生圖新時(shí)代,引領(lǐng)行業(yè)創(chuàng)新浪潮

    隨著數(shù)字化時(shí)代的快速發(fā)展,AI 技術(shù)已成為推動(dòng)行業(yè)創(chuàng)新的關(guān)鍵動(dòng)力。華為緊跟時(shí)代步伐,全新上線 Serverless 應(yīng)用中心,為用戶提供海
    的頭像 發(fā)表于 03-19 22:57 ?441次閱讀

    迅為RK3568開發(fā)板驅(qū)動(dòng)開發(fā)指南-輸入子系統(tǒng)

    迅為RK3568開發(fā)板驅(qū)動(dòng)開發(fā)指南-輸入子系統(tǒng)
    的頭像 發(fā)表于 02-23 15:11 ?800次閱讀
    迅為RK3568<b class='flag-5'>開發(fā)</b>板驅(qū)動(dòng)<b class='flag-5'>開發(fā)指南</b>-輸入子系統(tǒng)

    鴻蒙原生應(yīng)用元服務(wù)實(shí)戰(zhàn)-Serverless華為賬戶認(rèn)證登錄需盡快適配

    一、ArkTS\\\\API9,服務(wù)器端基于serverless開發(fā)的應(yīng)用與元服務(wù)華為賬號(hào)注冊(cè)登錄功能暫時(shí)是不支持的 二、3月1日后的審核
    發(fā)表于 02-20 10:14

    鴻蒙應(yīng)用/元服務(wù)開發(fā)實(shí)戰(zhàn)-Serverless存儲(chǔ)沒法創(chuàng)建處理方式

    新賬戶,Serverless存儲(chǔ)沒法創(chuàng)建 ,沒法進(jìn)行下一步。 解決方式 請(qǐng)按照這個(gè)方式修改一下就能正常創(chuàng)建了,瀏覽器中打開控制臺(tái)輸入 window.top.cfpConfig.cloudStorageSwitch=‘off’ 后再創(chuàng)建桶
    發(fā)表于 02-19 11:21

    RA家族QE電機(jī)應(yīng)用開發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《RA家族QE電機(jī)應(yīng)用開發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 01-31 09:57 ?0次下載
    RA家族QE電機(jī)應(yīng)用<b class='flag-5'>開發(fā)指南</b>

    keil arm軟件開發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《keil arm軟件開發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 01-26 15:51 ?7次下載

    華為 CodeArts?開源治理服務(wù),解鎖軟件安全新標(biāo)準(zhǔn)

    在數(shù)字化時(shí)代,軟件的安全性日益受到關(guān)注,而開源軟件的快速發(fā)展也帶來了新的挑戰(zhàn)。再次背景下,華為開源治理服務(wù)華為
    的頭像 發(fā)表于 12-10 21:00 ?943次閱讀
    <b class='flag-5'>華為</b><b class='flag-5'>云</b> CodeArts?開源治理<b class='flag-5'>服務(wù)</b>,解鎖軟件安全<b class='flag-5'>新標(biāo)準(zhǔn)</b>