成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何將微服務(wù)體系結(jié)構(gòu)運用于嵌入式系統(tǒng)?

譯文
系統(tǒng)
微服務(wù)體系結(jié)構(gòu)是Facebook、Netflix和優(yōu)步等跨國企業(yè)發(fā)布的分布式應(yīng)用系統(tǒng)的基礎(chǔ)。精細(xì)化隔離服務(wù),然后將它們聚合起來協(xié)同工作,這使得分布式系統(tǒng)比單體式系統(tǒng)更易于管理。但是對于嵌入式系統(tǒng)而言,情況就有點不同了。

譯者 | 布加迪

審校 | 重樓

微服務(wù)體系結(jié)構(gòu)是FacebookNetflix優(yōu)步跨國企業(yè)發(fā)布的分布式應(yīng)用系統(tǒng)的基礎(chǔ)。精細(xì)化隔離服務(wù),然后將它們聚合起來協(xié)同工作,這使得分布式系統(tǒng)比單體式系統(tǒng)更易管理。但是對于嵌入式系統(tǒng)而言,情況就有點不同了。

不像在數(shù)據(jù)中心內(nèi)和跨數(shù)據(jù)中心運行的面向服務(wù)的體系結(jié)構(gòu)(MOA,嵌入式系統(tǒng)往往在硬件和用例方面是專——比如運行在工業(yè)裝配廠中操作的一群機器人工人或控制自動駕駛汽車。

面向服務(wù)的體系結(jié)構(gòu)可以運用于這些類型的環(huán)境,但是需要特別注意出現(xiàn)問題時,您不能僅僅啟動另一個容器來替換失的容器。要做的工作不止這些

為嵌入式系統(tǒng)編面向服務(wù)的體系結(jié)構(gòu)需要一種不同的設(shè)計和實施方法。

面向服務(wù)的體系結(jié)構(gòu)簡介

在深入討論將MOA運用于嵌入式系統(tǒng)的細(xì)節(jié)之前,不妨先大致了解這種體系結(jié)構(gòu)的基本要素。

面向服務(wù)的體系結(jié)構(gòu)旨在將應(yīng)用程序的行為分解為一群獨立存在但一致行動的離散服務(wù)。MOA的工作方式是將離散服務(wù)分發(fā)到眾多遠(yuǎn)程位置。

通常,這些服務(wù)使用一種眾所周知的傳輸協(xié)議(比如TCPUDPHTTP發(fā)送和接收數(shù)據(jù)。某類型的組織、前端客戶端機制(比如在桌面或移動設(shè)備上運行的網(wǎng)頁或原生代碼將各種服務(wù)聚集在一起,形成整個應(yīng)用程序的統(tǒng)一表示。然而如前所述,組成MOA的每個服務(wù)都是遠(yuǎn)程托管的。

應(yīng)用程序的前端調(diào)用遠(yuǎn)程路由/控制器服務(wù)。路由/控制器服務(wù)知道組成應(yīng)用程序的微服務(wù)的位置,并根據(jù)作為調(diào)用代碼一部分的某種標(biāo)識符將調(diào)用轉(zhuǎn)發(fā)到適當(dāng)?shù)姆?wù)。微服務(wù)處理調(diào)用并將結(jié)果發(fā)回路由器/控制器進(jìn)一步處理——或者如果某個調(diào)用完成,則將響應(yīng)發(fā)回調(diào)用客戶端。

圖1. 面向微服務(wù)的體系結(jié)構(gòu)的基本模式圖1. 面向微服務(wù)的體系結(jié)構(gòu)的基本模式

應(yīng)用程序分成托管在遠(yuǎn)程位置的功能這個想法始于遠(yuǎn)程過程調(diào)用RPCMOA通過添加一組常規(guī)需求來增強RPC模式。在MOA下,每個微服務(wù)

  • 支持單個關(guān)注點
  • 是離散的
  • 承載自己的數(shù)據(jù)
  • 可以傳輸
  • 是短暫的

以下是這每一項要求的含義

持單個關(guān)注點

微服務(wù)應(yīng)該將其行為限制在單個關(guān)注點上,比如登錄服務(wù)、訂購服務(wù)、購買、處理信用卡交易的服務(wù)、支持客戶配置文件的服務(wù)、執(zhí)行稅收計算的服務(wù)或日志記錄服務(wù)。

一個微服務(wù)可以使用另一個微服務(wù),比如采購服務(wù)可以使用稅收計算服務(wù)來確定訂單的總金額。然而,不應(yīng)該將兩個服務(wù)組合到一個代碼庫或單個部署單元中。

離散的

微服務(wù)應(yīng)該是離散的,因為它應(yīng)該被限制在單個部署單元中,并在網(wǎng)絡(luò)上有清晰的邊界。該部署單元可能是Linux容器,也可能是代碼工件,比如Java .jar文件、.NET DLL或Rust二進(jìn)制文件。嵌入式系統(tǒng)為例,部署單元可能是一實際的硬件。

微服務(wù)的內(nèi)部組件應(yīng)該是私有的,公眾無法訪問。然而,公共訪問應(yīng)該由定義良好的API提供。

承載自己的數(shù)據(jù)

微服務(wù)承載自己的數(shù)據(jù),除了通過API外,不與另一微服務(wù)共享數(shù)據(jù)。通常,微服務(wù)有自己的數(shù)據(jù)庫或數(shù)據(jù)庫中隔離良好的表。雖然微服務(wù)之間可能出現(xiàn)數(shù)據(jù)冗余,但這種情是可以接受的,也是微服務(wù)維護(hù)自己的操作狀態(tài)和邊界所必需的。

可以傳輸

微服務(wù)必須能夠在任何時候傳輸?shù)饺魏瓮泄墉h(huán)境。當(dāng)微服務(wù)在一臺發(fā)生故障(比如斷電)的機器上運行必須重新部署到另一臺正常運行的機器上時,可傳輸性非常重要。

是短暫的

微服務(wù)必須能夠按需創(chuàng)建或銷毀。在微服務(wù)執(zhí)行高強度計算只需要滿足暫時需求的情況下,這一點尤為重要。比如說,微服務(wù)對特定的視頻文件執(zhí)行特效處理。

面向嵌入式設(shè)備的MOA有何特別之處

與為數(shù)據(jù)中心應(yīng)用程序編寫MOA相比,為嵌入式環(huán)境實施MOA需要不同的方法。

首先,大多數(shù)數(shù)據(jù)中心使用Linux操作系統(tǒng)來驅(qū)動機器。Linux是一個功能齊全的操作系統(tǒng),占用大量的內(nèi)存和磁盤空間。即使是Alpine之類精簡版的Linux發(fā)行版(只有一些基本功能,這個操作系統(tǒng)也占用5MB的存儲空間。

許多嵌入式芯片(比如EPS32)搭載大約520KB的內(nèi)部內(nèi)存,其中一些容量專用于非易失性存儲。使用特殊配置時,一些芯片可能擁有高達(dá)4MB內(nèi)存和2MB到16MB的閃存。

不過,當(dāng)嵌入式設(shè)備的存儲量有限小于4MB時,Linux無法工作。相反,嵌入式設(shè)備通常使用某種版本的實時操作系統(tǒng)RTOS。ESP32芯片組上使用的FreeRTOS操作系統(tǒng)只需要5 KB到10KB的代碼存儲,內(nèi)存使用低至300 KB。正如您所,與數(shù)據(jù)中心中運行的機器相比,嵌入式設(shè)備的系統(tǒng)需求非常小。

此外,雖然Linux支持容器,允許多個微服務(wù)在虛擬機集群中運行,但在嵌入式系統(tǒng)中,容器支持更多的是一種例外,而不是常態(tài)。通常,微服務(wù)將在專用的嵌入式微處理器上運行。微服務(wù)和運行微服務(wù)的硬件之間的一對一關(guān)系影響了部署和升級微服務(wù)的方式。

這不是使用Kubernetes之類的容器管理框架來重新部署容器的問題。相反,要進(jìn)行升級,需要直接連接到嵌入式處理器,并且在許多情況下需要停用作為升級目標(biāo)的設(shè)備。

比如說,升級運行汽車制動系統(tǒng)的微服務(wù)需要汽車沒有在路上行駛、處于靜止?fàn)顟B(tài)。

而言之,為嵌入式系統(tǒng)部署和升級微服務(wù)的過程高度依賴系統(tǒng)硬件的物理狀態(tài)但是還有另一個重要的限制因素:數(shù)據(jù)交換。

嵌入式設(shè)備之間的數(shù)據(jù)交換最好使用二進(jìn)制數(shù)據(jù)格式來實施。嵌入式處理器的空間和帶寬容量有限,因此基于文本的格式(比如XML和JSON不能很好地工作。

相反,像協(xié)議緩沖區(qū)這樣的二進(jìn)制格式或自定義二進(jìn)制格式更適合MOA場景中的通信,在這種場景中,體系結(jié)構(gòu)中的每個微服務(wù)都托管在嵌入式處理器上。

然而本身在特定設(shè)備(比如汽車)內(nèi)運行的嵌入式處理器和外部設(shè)備(比如手機之間進(jìn)行數(shù)據(jù)交換需要特別考慮。大多數(shù)嵌入式處理器迷你板上搭載其他芯片,如圖2所示。

圖2. ESP32迷你板支持藍(lán)牙和Wi-Fi通信圖2. ESP32迷你板支持藍(lán)牙和Wi-Fi通信

這些迷你板內(nèi)置藍(lán)牙和Wi-Fi功能。嵌入式芯片組可以使用這些功能與板外設(shè)備進(jìn)行通信。在嵌入式芯片組根據(jù)已知格式與已知外部設(shè)備通信的情況下,使用二進(jìn)制格式進(jìn)行通信仍然是切實可行的。

在某些情況下,比如使用HTTP與遠(yuǎn)程Web API通信時,較笨拙的基于文本的數(shù)據(jù)格式是規(guī)定的數(shù)據(jù)交換方式。考慮到芯片存儲和內(nèi)存方面的限制,讓每個嵌入式芯片組參與基于文本的通信可能是個問題。

另一種方法是使用專用代理芯片組與外部設(shè)備進(jìn)行通信,該芯片組支持HTTP,并擁有增強的存儲和內(nèi)存功能。專用代理負(fù)責(zé)管理來自其他板載嵌入式處理器的外部目標(biāo)的通信。參見圖3。

圖3. 外部目標(biāo)的專用代理使嵌入式芯片組能夠有效地通信圖3. 外部目標(biāo)的專用代理使嵌入式芯片組能夠有效地通信

服務(wù)路由是另一個需要考慮的問題。正如數(shù)據(jù)中心中運行的MOA需要API網(wǎng)關(guān)將流量路由到指定的微服務(wù)一樣,嵌入式環(huán)境中運行的MOA也需要這樣的路由器/控制器機制。在一輛汽車中,路由器/控制器是在汽車控制器局域網(wǎng)CAN運行的電子控制單元ECU參見圖4。

圖4. 汽車中的CAN使用電子控制單元ECU來協(xié)調(diào)嵌入式設(shè)備上運行的微服務(wù)之間的數(shù)據(jù)交換

ECU可以感知汽車內(nèi)運行的所有組件,并據(jù)此制定路由路線。此外,ECU還可以維護(hù)全局狀態(tài)的控制點。

許多傳統(tǒng)的分布式應(yīng)用程序可以在不需要應(yīng)用程序中的每個微服務(wù)立即了解應(yīng)用程序整體狀態(tài)的情況下運行。然而,了解系統(tǒng)的整體狀態(tài)對于在嵌入式系統(tǒng)中運行的微服務(wù)非常重要。

比如說,當(dāng)自動駕駛汽車中的傳感器看到道路上的障礙物時,制動系統(tǒng)需要知道車輛處于危險的全局狀態(tài),以便做出相應(yīng)的反應(yīng),因此需要普遍感知全局狀態(tài)。

飛行控制系統(tǒng)FCS樓宇管理系統(tǒng)BMS也有維護(hù)和報告全局狀態(tài)的機制。在FCS中,控制機制名為飛行管理系統(tǒng)或飛行管理計算機。

在BMS中,該組件名為樓宇自動化控制器或樓宇自動化系統(tǒng)控制器。樓宇自動化控制器報告樓宇中所有子系統(tǒng)的狀態(tài),比如暖通空調(diào)、照明、安全、電梯、電氣系統(tǒng)和消防安全設(shè)備。

需要理解的重要一點是,任何嵌入式系統(tǒng)都需要一種路由機制來協(xié)調(diào)組成系統(tǒng)的各種設(shè)備之間的流量和數(shù)據(jù)交換。

它們組合起來

從智能家居自動駕駛汽車到機器人運行的工廠,物聯(lián)網(wǎng)和智能設(shè)備爆炸式增長為精通面向服務(wù)體系結(jié)構(gòu)的軟件開發(fā)人員提供了處理嵌入式系統(tǒng)的更多機會。

將面向服務(wù)的體系結(jié)構(gòu)運用于嵌入式系統(tǒng)需要一些新知識,還需要與用于創(chuàng)建在數(shù)據(jù)中心虛擬化環(huán)境中運行的業(yè)務(wù)應(yīng)用程序的平常做法略有不同軟件開發(fā)方法。但考慮到面臨的機會,有望獲得重大的投資回報,值得我們應(yīng)對這一挑戰(zhàn)。

原文標(biāo)題:How to Apply Microservice Architecture to Embedded Systems,作者:Bob Reselman

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2023-07-04 15:00:47

微服務(wù)架構(gòu)開發(fā)

2021-12-07 22:59:59

Java框架微服務(wù)

2021-11-24 15:20:04

FreeDOSLinux

2021-04-06 09:43:41

微服務(wù)架構(gòu)數(shù)據(jù)

2012-10-18 11:05:19

RiverbedVMwar

2014-07-23 09:33:52

2018-07-06 11:49:51

Linux嵌入式系統(tǒng)工具

2022-08-08 10:09:58

服務(wù)網(wǎng)格架構(gòu)

2024-06-21 10:40:00

計算機視覺

2021-08-17 10:37:10

分層設(shè)計領(lǐng)域劃分架構(gòu)

2012-03-14 11:33:31

ibmdw

2011-04-18 14:05:15

可靠性系統(tǒng)測試嵌入式系統(tǒng)

2009-09-11 10:38:03

LINQ體系結(jié)構(gòu)

2009-06-26 15:58:28

EJB

2020-05-29 09:41:26

微服務(wù)數(shù)據(jù)工具

2012-02-06 17:22:44

MySQL

2009-07-15 13:46:26

Swing體系結(jié)構(gòu)

2011-05-25 09:08:23

MeeGo平板電腦

2018-09-11 12:41:42

HadoopJava工具

2022-12-16 09:29:23

攜程微服務(wù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美中文字幕在线 | 亚洲一区二区三区四区五区午夜 | 久久久亚洲 | 免费观看羞羞视频网站 | 精品在线播放 | 97精品国产97久久久久久免费 | 欧美日韩久 | 久久精品视频网站 | 黄色一级大片在线免费看产 | h视频免费观看 | 亚洲国产欧美精品 | 99热最新| 国产激情99 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 亚洲人成人一区二区在线观看 | 国产 日韩 欧美 在线 | 久久久一区二区 | 成人在线视频网站 | 蜜桃一区二区三区在线 | 青青草华人在线视频 | 久久久国产一区二区三区四区小说 | 亚洲国产一区二区三区四区 | 国产精品久久久久久中文字 | 久草视频2 | 老牛嫩草一区二区三区av | 亚洲精品视频三区 | 玖玖国产精品视频 | 日日草天天干 | 久久精品免费 | 亚洲精品女优 | 中文字幕成人在线 | 午夜激情在线 | 国产欧美一区二区在线观看 | 在线成人免费视频 | 日韩欧美在线视频 | 91成人 | 97精品国产一区二区三区 | 99re99| 成人免费视频7777777 | 欧美激情第一区 | 中文字幕一区二区三区精彩视频 |