如果你將嵌入式軟件開(kāi)發(fā)的重點(diǎn)放在基于微控制器的系統(tǒng)上,你可能不熟悉容器和微服務(wù)。迄今為止,容器和微服務(wù)在基于微控制器的嵌入式系統(tǒng)中相對(duì)較少。相反,這些技術(shù)主要存在于云和移動(dòng)應(yīng)用程序中。然而,這些工具為團(tuán)隊(duì)提供了編寫(xiě)安全、易于更新、可伸縮和易于維護(hù)的軟件的能力。
微服務(wù)和容器是構(gòu)建和部署軟件應(yīng)用程序的兩種流行方法。雖然它們經(jīng)常一起使用,但它們不是一回事。嵌入式系統(tǒng)的一個(gè)發(fā)展趨勢(shì)是利用容器和微服務(wù)。在本文中,我們將探討容器和微服務(wù)之間的區(qū)別,以及各自的優(yōu)缺點(diǎn)。
什么是容器?
容器是一個(gè)半隔離的執(zhí)行環(huán)境,它將應(yīng)用程序與其依賴(lài)項(xiàng)捆綁在一起。容器允許應(yīng)用程序獨(dú)立于主機(jī)環(huán)境運(yùn)行,從而在各種環(huán)境中實(shí)現(xiàn)一致的執(zhí)行。例如,假設(shè)你編寫(xiě)了一個(gè)接受數(shù)據(jù)包并解析它的容器化應(yīng)用程序。在這種情況下,應(yīng)用程序可以運(yùn)行在服務(wù)器、主機(jī)PC上,甚至是嵌入式目標(biāo)上,如果容器運(yùn)行時(shí)支持的話。圖1概述了一個(gè)虛構(gòu)的系統(tǒng),該系統(tǒng)使用容器來(lái)運(yùn)行五個(gè)獨(dú)立的應(yīng)用程序。
圖1:基于容器的應(yīng)用程序的典型堆棧。
容器有助于確??缍鄠€(gè)環(huán)境的一致性,減少由不同配置引起的問(wèn)題。例如,你有沒(méi)有嘗試過(guò)讓一個(gè)新的開(kāi)發(fā)人員使用你正在使用的構(gòu)建系統(tǒng)?確保每個(gè)人都擁有相同版本的工具、庫(kù)等等通常是一件非常痛苦的事情。開(kāi)發(fā)環(huán)境的容器化允許相同的環(huán)境被部署到任意數(shù)量的開(kāi)發(fā)人員,不管他們的本地系統(tǒng)配置如何。
什么是微服務(wù)?
微服務(wù)是一種軟件架構(gòu)風(fēng)格,它將一個(gè)應(yīng)用程序分解成一組小型自治服務(wù)。每個(gè)微服務(wù)都可以獨(dú)立部署,并與應(yīng)用程序中的其他微服務(wù)松散耦合。一個(gè)定義良好的接口用于允許微服務(wù)之間的通信,以便它們可以一起工作來(lái)實(shí)現(xiàn)應(yīng)用程序的總體目標(biāo)。微服務(wù)架構(gòu)比傳統(tǒng)的整體架構(gòu)更加靈活和可擴(kuò)展。
圖2:微服務(wù)通常包含這里描述的五個(gè)部分。[1]
微服務(wù)使開(kāi)發(fā)團(tuán)隊(duì)能夠輕松地遵循敏捷流程,如DevOps和TDD。微服務(wù)更易于測(cè)試和部署,軟件也可以在現(xiàn)場(chǎng)輕松擴(kuò)展。由于大多數(shù)微服務(wù)都很小,因此可以由一個(gè)團(tuán)隊(duì)輕松維護(hù),并根據(jù)應(yīng)用程序需求在不同的產(chǎn)品中重用。
容器和微服務(wù)有什么區(qū)別?
容器是一種用于將應(yīng)用程序及其依賴(lài)項(xiàng)捆綁在一起的技術(shù)。微服務(wù)是一種架構(gòu)風(fēng)格,它將應(yīng)用程序分解為小型自治服務(wù)。開(kāi)發(fā)者不需要選擇一個(gè)或另一個(gè),他們可以同時(shí)使用兩者。例如,一個(gè)或多個(gè)微服務(wù)可以捆綁在一起并部署在一個(gè)容器中。(你通常不會(huì)找到包含容器的微服務(wù))。
容器使得獨(dú)立于微服務(wù)的執(zhí)行環(huán)境部署微服務(wù)成為可能。例如,可以使用容器來(lái)部署用于開(kāi)發(fā)、測(cè)試和生產(chǎn)的微服務(wù)。但是容器和微服務(wù)都不需要對(duì)方。你可以擁有部署時(shí)沒(méi)有容器的純微服務(wù)架構(gòu),也可以擁有在其包含的應(yīng)用程序中不利用微服務(wù)的容器。我已經(jīng)提到過(guò),把它們一起使用是有好處的。
結(jié)論
容器和微服務(wù)不是需要獨(dú)立使用的技術(shù)。相反,開(kāi)發(fā)人員可以利用容器和微服務(wù)來(lái)高效地交付和維護(hù)他們的產(chǎn)品。這些工具可以為開(kāi)發(fā)人員提供機(jī)制來(lái)打破他們的單片應(yīng)用程序并使他們的架構(gòu)現(xiàn)代化——容器和微服務(wù)徹底改變團(tuán)隊(duì)設(shè)計(jì)和構(gòu)建嵌入式系統(tǒng)的潛力很大。既然你已經(jīng)理解了這兩者之間的區(qū)別,那么你應(yīng)該問(wèn)問(wèn)自己,你是否能夠在你的產(chǎn)品中受益于并利用這些技術(shù)。