微服務(wù)與無(wú)服務(wù)器知識(shí)大放送
- 作者:新網(wǎng)
- 來(lái)源:新網(wǎng)
- 瀏覽:100
- 2018-05-03 13:26:08
是分布式一體化還是微服務(wù)?
如今,大多數(shù)人想到單個(gè)微服務(wù)時(shí),他們想到的是一個(gè)獨(dú)立的服務(wù)組件。在大多數(shù)情況下,微服務(wù)被構(gòu)建為應(yīng)用,專注于處理好一件事情。最重要的是,這種服務(wù)可以獨(dú)立于其他服務(wù)進(jìn)行升級(jí)和部署。
是分布式一體化還是微服務(wù)?

<
div>如今,大多數(shù)人想到單個(gè)微服務(wù)時(shí),他們想到的是一個(gè)獨(dú)立的服務(wù)組件。在大多數(shù)情況下,微服務(wù)被構(gòu)建為應(yīng)用,專注于處理好一件事情。最重要的是,這種服務(wù)可以獨(dú)立于其他服務(wù)進(jìn)行升級(jí)和部署。
現(xiàn)在,如果說(shuō)到傳統(tǒng)的CQRS實(shí)施,如果由于組件相互分離就稱之為微服務(wù),似乎有些不妥。因此我們得問(wèn)一句:可以將CQRS應(yīng)用視為微服務(wù)嗎?或者換種說(shuō)法,可以像某些開(kāi)發(fā)人員那樣,開(kāi)始稱之為分布式一體化嗎?對(duì)于這個(gè)問(wèn)題,不同的人會(huì)有不同的答案。微服務(wù)主要是讓小型獨(dú)立團(tuán)隊(duì)有能力持續(xù)交付功能,作為其他微服務(wù)組成的更大生態(tài)系統(tǒng)的一部分。
如果與大多數(shù)微服務(wù)部署相比,CQRS部署是十分復(fù)雜的。對(duì)于微服務(wù)團(tuán)隊(duì)來(lái)說(shuō),能夠持續(xù)將功能交付至生產(chǎn)是目標(biāo)。由于CQRS中分離的組件仍可以獨(dú)立部署,我們可以說(shuō)每個(gè)部署單元仍可滿足獨(dú)立將功能交付至生產(chǎn)的最低要求。微服務(wù)的一個(gè)功能應(yīng)該始終需要且最多一個(gè)可部署單元。當(dāng)交付一項(xiàng)功能時(shí)需要同時(shí)協(xié)調(diào)部署多個(gè)單獨(dú)組件,就會(huì)產(chǎn)生所謂的分布式一體化。
無(wú)服務(wù)器也稱為FaaS(功能即服務(wù)),可讓您在不需要設(shè)置或管理應(yīng)用服務(wù)器或
容器的情況下,將代碼部署為功能。無(wú)服務(wù)器是一種新型架構(gòu)風(fēng)格,在構(gòu)建和運(yùn)行
云原生應(yīng)用方面越來(lái)越受到關(guān)注。使用無(wú)
服務(wù)器功能的一個(gè)顯著優(yōu)勢(shì)是,事件概念被優(yōu)先處理。
有很多人以為,微服務(wù)和無(wú)服務(wù)器不兼容,彼此的架構(gòu)風(fēng)格完全不同。但是回想一下前面提到的CQRS你就會(huì)明白,這種想法是錯(cuò)誤的。讓我們來(lái)看一個(gè)場(chǎng)景,你認(rèn)為在此場(chǎng)景中微服務(wù)的邊界在哪里?
一種方法是認(rèn)為微服務(wù)的邊界就是團(tuán)隊(duì)的邊界。只要一個(gè)團(tuán)隊(duì)可以獨(dú)立、連續(xù)地將特性部署為功能,那么微服務(wù)的邊界就只是負(fù)責(zé)為團(tuán)隊(duì)擁有的特性提供支持的功能子集。
權(quán)衡
要采用微服務(wù)和無(wú)服務(wù)器相結(jié)合的方法,需要您仔細(xì)權(quán)衡多項(xiàng)內(nèi)容,讓我們來(lái)看看需要注意的事項(xiàng)。
速度
對(duì)于微服務(wù)來(lái)說(shuō),速度就是目標(biāo)。我們可以通過(guò)關(guān)注以下兩個(gè)問(wèn)題來(lái)衡量速度,平均時(shí)間越低,團(tuán)隊(duì)交付功能的速度就越快。:
開(kāi)發(fā)人員改變一行代碼并將其安全地部署到生產(chǎn)中的速度有多快?
新開(kāi)發(fā)人員快速上手并安全地更改代碼庫(kù)的速度有多快?
無(wú)服務(wù)器具有學(xué)習(xí)曲線,但有助于提高微服務(wù)的速度。它將大量工作流程管理從核心組件移出,放入獨(dú)立升級(jí)和部署的小型可組合功能中,從而提高速度。這在最大程度上縮短了開(kāi)發(fā)人員了解單個(gè)功能的工作原理以及如何安全更改所需的時(shí)間。
無(wú)服務(wù)器功能也易于升級(jí)或部署,但可能會(huì)讓了解整體系統(tǒng)更加復(fù)雜。將數(shù)百個(gè)無(wú)服務(wù)器功能作為一個(gè)整體來(lái)管理,這聽(tīng)起來(lái)就有點(diǎn)頭大。
復(fù)雜性
軟件中的復(fù)雜性無(wú)可避免,隨著代碼庫(kù)逐漸老化,復(fù)雜性也隨時(shí)間增加。當(dāng)復(fù)雜性增加,或者當(dāng)框架或語(yǔ)言過(guò)時(shí)的時(shí)候,一體化應(yīng)用就變得笨重、難以改變。微服務(wù)器將這種復(fù)雜性分解到分布式系統(tǒng)中,其中的每個(gè)可部署單元都易于理解,易于由一小部分敏捷開(kāi)發(fā)人員進(jìn)行更改。
以上就是我們的今日分享。