最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

應(yīng)用部署初探:微服務(wù)的3大部署模式

2023-02-10 16:30 作者:SEAL安全  | 我要投稿

隨著云原生技術(shù)逐步成熟,企業(yè)追求更為靈活和可擴(kuò)展的系統(tǒng),微服務(wù)架構(gòu)大行其道。微服務(wù)固然有諸多優(yōu)點(diǎn),但也給架構(gòu)及運(yùn)維工程師帶來(lái)了新的挑戰(zhàn)。在單體架構(gòu)中,應(yīng)用的設(shè)計(jì)、部署以及擴(kuò)展都是作為一個(gè)單元進(jìn)行,而當(dāng)企業(yè)采用微服務(wù)時(shí),可能有許多用不同語(yǔ)言和框架構(gòu)建的相互連接的服務(wù),從而導(dǎo)致部署變得更加復(fù)雜。


因此,企業(yè)需要采用不同的部署策略,使應(yīng)用程序部署更絲滑且保證其完整性并擁有最佳性能。


部署模式

微服務(wù)架構(gòu)可以采用不同類型的部署模式,并且每種設(shè)計(jì)都能為不同的功能和非功能需求提供解決方案。因此,服務(wù)可以用各種編程語(yǔ)言或框架編寫(xiě)。同樣,它們也可以用同一編程語(yǔ)言或框架的不同版本來(lái)編寫(xiě)。


每個(gè)微服務(wù)都包含幾個(gè)不同的服務(wù)實(shí)例,比如UI、數(shù)據(jù)庫(kù)以及后端等。微服務(wù)必須獨(dú)立部署和可擴(kuò)展的。服務(wù)實(shí)例必須彼此隔離,并且每個(gè)服務(wù)都能夠快速構(gòu)建和部署,還可以合理分配計(jì)算資源。因此,部署環(huán)境必須是可靠的,服務(wù)必須被監(jiān)控。


微服務(wù)部署模式

微服務(wù)部署模式包含若干種,但基本能分為以下三大類:

  • 每臺(tái)主機(jī)的單個(gè)服務(wù)實(shí)例

  • 每臺(tái)主機(jī)的多個(gè)服務(wù)實(shí)例

  • 無(wú)服務(wù)器部署

在下文中,我們將詳細(xì)介紹每種服務(wù)部署模式。


每臺(tái)主機(jī)的多個(gè)服務(wù)實(shí)例

當(dāng)采取這一模式時(shí),用戶需要配置一個(gè)或多個(gè)實(shí)體/虛擬的主機(jī)并在每個(gè)主機(jī)上運(yùn)行多個(gè)服務(wù)實(shí)例。這是一種傳統(tǒng)的應(yīng)用部署方法。每個(gè)服務(wù)實(shí)例在一個(gè)或多個(gè)主機(jī)上的端口運(yùn)行。


下圖展示了該模式的架構(gòu):

這一模式有幾個(gè)變體。一個(gè)變體是每個(gè)服務(wù)實(shí)例可以是一個(gè)流程或者一個(gè)流程組。例如,可以將一個(gè)Java服務(wù)實(shí)例部署為 Apache Tomcat 服務(wù)器上的一個(gè)Web 應(yīng)用程序。一個(gè) Node.js 服務(wù)實(shí)例可能由一個(gè)父進(jìn)程和一個(gè)或多個(gè)子進(jìn)程組成。


該模式的其他變體還有在同一個(gè)進(jìn)程或進(jìn)程組內(nèi)部運(yùn)行多個(gè)服務(wù)實(shí)例。例如,你可以在相同的 Apache Tomcat 服務(wù)器上部署多個(gè) Java Web 應(yīng)用或者在相同的 OSGI 容器中運(yùn)行多個(gè) OSGI bundle。


每臺(tái)主機(jī)運(yùn)行多個(gè)服務(wù)器實(shí)例的模式有其優(yōu)劣。最主要的優(yōu)勢(shì)之一是它的資源利用率較為高效。多個(gè)服務(wù)實(shí)例共享一臺(tái)服務(wù)器及其操作系統(tǒng)。如果一個(gè)流程或一個(gè)流程組運(yùn)行多個(gè)服務(wù)實(shí)例,這樣的資源利用效率則更為高效。另外,我們還可以使用腳本,通過(guò)一些配置來(lái)自動(dòng)啟動(dòng)和關(guān)閉進(jìn)程。配置會(huì)有不同的部署相關(guān)信息,比如版本號(hào)。


每臺(tái)主機(jī)的單個(gè)服務(wù)實(shí)例

在很多情況下,微服務(wù)需要它們自己的空間以及一個(gè)被清晰分隔開(kāi)的部署環(huán)境。在此類狀況下,它們不能與其他服務(wù)或服務(wù)實(shí)例共享部署環(huán)境。這可能會(huì)導(dǎo)致資源沖突或是資源緊張,還有存在版本之間互相沖突的語(yǔ)言和框架的情況。


在此類情況下,一個(gè)服務(wù)實(shí)例只能部署在它自己的主機(jī)上。該主機(jī)既可以是物理的也可以是虛擬機(jī)。那么,此時(shí)將不會(huì)與其他服務(wù)產(chǎn)生沖突,并且該服務(wù)完全保持隔離狀態(tài)。所有VM的資源都可用于該服務(wù)的消耗,并且易于監(jiān)控。


唯一的問(wèn)題是這一部署模式會(huì)消耗更多資源。


1. 每臺(tái)VM的單個(gè)服務(wù)實(shí)例

微服務(wù)架構(gòu)必須健壯且可以快速啟動(dòng)和停止。同樣的,也需要快速擴(kuò)容和縮容。因此不能與其他服務(wù)共享任何資源,也要避免與其他服務(wù)的沖突。在這一模式中,你將把每個(gè)微服務(wù)打包為VM的鏡像,每個(gè)服務(wù)實(shí)例就是一個(gè)虛擬機(jī),它可以使用VM鏡像來(lái)啟動(dòng)。


以下圖例展示了這一模式的架構(gòu):

開(kāi)發(fā)人員可以通過(guò)增加服務(wù)實(shí)例的數(shù)量來(lái)輕松擴(kuò)展服務(wù)。這一部署模式可以讓服務(wù)實(shí)例單獨(dú)擴(kuò)容,允許每個(gè)服務(wù)尤其專屬的資源,使得程序員可以基于應(yīng)用程序的使用模式根據(jù)需要進(jìn)行擴(kuò)縮容。


每個(gè)服務(wù)實(shí)例的隔離是最重要的優(yōu)勢(shì)之一。此外,開(kāi)發(fā)人員可以使用云基礎(chǔ)設(shè)施的功能,包括負(fù)載均衡和自動(dòng)伸縮。但這種模式最顯著的缺點(diǎn)是,消耗了大量的資源,需要相當(dāng)長(zhǎng)的時(shí)間來(lái)構(gòu)建和管理虛擬機(jī)。


2. 每個(gè)容器的單個(gè)服務(wù)實(shí)例

這一部署模式擁有虛擬機(jī)模式的優(yōu)勢(shì),同時(shí)還具備更輕量、更高效的優(yōu)點(diǎn)。在這一模式下,微服務(wù)實(shí)例運(yùn)行在它們自己的容器中。


容器對(duì)于微服務(wù)來(lái)說(shuō)是十分理想的環(huán)境,因?yàn)樗恍枰加锰鄡?nèi)存和CPU。它使用 Docker 容器運(yùn)行時(shí)并支持在一個(gè)容器內(nèi)部部署微服務(wù)的多個(gè)實(shí)例。這可以讓資源利用更高效,并且可以根據(jù)需要擴(kuò)縮容,減少不必要的開(kāi)支。


每個(gè)容器中運(yùn)行微服務(wù)的其中一個(gè)實(shí)例是一種最簡(jiǎn)單、無(wú)縫的部署方式。這意味著每個(gè)容器都有自己的數(shù)據(jù)庫(kù),并在其進(jìn)程中運(yùn)行。容器可以讓?xiě)?yīng)用快速啟動(dòng)和擴(kuò)展并且比起虛擬機(jī)所需的資源更少。


該模式為簡(jiǎn)化可擴(kuò)展性和部署提供支持,同時(shí)隔離服務(wù)實(shí)例。更進(jìn)一步的是,用戶可以快速構(gòu)建容器鏡像,并且也可以輕松地管理容器。


當(dāng)然,這種方法也有其缺陷:

  • 為了充分利用新版本的新特性和漏洞修復(fù),程序員需要手動(dòng)更新容器。如果你正在單個(gè)容器中運(yùn)行微服務(wù)的多個(gè)實(shí)例,一次性更新它們會(huì)很耗時(shí)并且易出錯(cuò)

  • 部署更新有時(shí)會(huì)出現(xiàn)問(wèn)題:如果在應(yīng)用程序?qū)崟r(shí)運(yùn)行時(shí)應(yīng)用更新,可能會(huì)對(duì)用戶體驗(yàn)產(chǎn)生不利影響,比如停機(jī)或數(shù)據(jù)丟失

  • 盡管事實(shí)上容器技術(shù)在快速迭代發(fā)展,但是他們依舊不如虛擬機(jī)那樣成熟和安全,因?yàn)槿萜鱾児蚕聿僮飨到y(tǒng)內(nèi)核


無(wú)服務(wù)器(Serverless)部署

在某些情況下,微服務(wù)可能不需要了解底層部署基礎(chǔ)設(shè)施,那么部署服務(wù)就會(huì)被承包給第三方供應(yīng)商,他們通常是云服務(wù)提供商。企業(yè)對(duì)底層資源完全不在意,它所要做的就是在一個(gè)平臺(tái)上運(yùn)行微服務(wù)。它根據(jù)每次運(yùn)行服務(wù)需要從平臺(tái)上調(diào)用的資源來(lái)支付給服務(wù)提供商。服務(wù)提供商為每個(gè)請(qǐng)求挑選代碼并執(zhí)行。執(zhí)行可能發(fā)生在任何執(zhí)行沙盒中,如容器、虛擬機(jī)或其他,但它隱藏在服務(wù)本身之外。


服務(wù)提供商負(fù)責(zé)配置、擴(kuò)展、負(fù)載均衡、打補(bǔ)丁和保障底層基礎(chǔ)設(shè)施安全,目前最為常用的有:AWS Lambda、Google Functions等。


無(wú)服務(wù)器部署平臺(tái)的基礎(chǔ)設(shè)施是非常有彈性的,該平臺(tái)會(huì)自動(dòng)擴(kuò)展服務(wù)以承受負(fù)載。進(jìn)而花在管理低級(jí)別的基礎(chǔ)設(shè)施上的時(shí)間會(huì)被節(jié)省下來(lái)。由于微服務(wù)提供者只需為每次調(diào)用所消耗的資源付費(fèi),因此支出也會(huì)降低。


總結(jié)

微服務(wù)部署模式和產(chǎn)品在不斷發(fā)展,未來(lái)有可能會(huì)有更多的部署模式跟進(jìn)。上面提到的許多模式目前都非常流行,并且被大多數(shù)微服務(wù)提供者所使用,它們是非常成功和可靠的。但隨著技術(shù)的演進(jìn),業(yè)界也在思考創(chuàng)新的解決方案。在之后的文章,我們還將介紹如何保障應(yīng)用部署的安全,請(qǐng)保持關(guān)注!

應(yīng)用部署初探:微服務(wù)的3大部署模式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
万安县| 武定县| 新源县| 化州市| 舒城县| 大同市| 台湾省| 昌乐县| 隆尧县| 南漳县| 彭阳县| 罗源县| 镇远县| 邢台市| 舞阳县| 石渠县| 阿勒泰市| 安庆市| 柘城县| 浪卡子县| 晋江市| 岳普湖县| 呼图壁县| 兴城市| 万安县| 德江县| 女性| 广丰县| 马山县| 措勤县| 军事| 凤山市| 娄烦县| 商城县| 神木县| 基隆市| 本溪市| 沁源县| 长岭县| 呼伦贝尔市| 威远县|