欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:Arch - 演進(jìn)中的架構(gòu)

柚子快報(bào)邀請(qǐng)碼778899分享:Arch - 演進(jìn)中的架構(gòu)

http://yzkb.51969.com/

文章目錄

Pre原始分布式時(shí)代1. 背景與起源2. 分布式系統(tǒng)的初步探索3. 分布式計(jì)算環(huán)境(DCE)4. 技術(shù)挑戰(zhàn)與困境5. 原始分布式時(shí)代的失敗與教訓(xùn)6. 未來(lái)展望

單體時(shí)代優(yōu)勢(shì)缺陷單體架構(gòu)與微服務(wù)架構(gòu)的關(guān)系總結(jié)

SOA時(shí)代1. SOA架構(gòu)及其背景1. 煙囪式架構(gòu)(Information Silo Architecture)2. [微內(nèi)核架構(gòu)](https://www.oreilly.com/content/software-architecture-patterns/)(Microkernel Architecture)3. [事件驅(qū)動(dòng)架構(gòu)](https://www.oreilly.com/content/software-architecture-patterns/)(Event-Driven Architecture)

2. SOA的核心組件和技術(shù)特征3. SOA的優(yōu)勢(shì)和局限性4. SOA在軟件架構(gòu)演進(jìn)中的作用與影響

微服務(wù)時(shí)代微服務(wù)的起源與演變微服務(wù)的核心特征微服務(wù)的優(yōu)勢(shì)與挑戰(zhàn)微服務(wù)時(shí)代的未來(lái)

后微服務(wù)時(shí)代微服務(wù)架構(gòu)中的挑戰(zhàn)虛擬化技術(shù)的崛起與 Kubernetes 的勝利基礎(chǔ)設(shè)施與服務(wù)網(wǎng)格的融合展望未來(lái):云原生與后微服務(wù)時(shí)代的前景

無(wú)服務(wù)時(shí)代 Serverless背景與起源概念與特點(diǎn)適用場(chǎng)景與局限性展望與總結(jié)

Pre

軟件架構(gòu)并不是一蹴而就的,而是一個(gè)持續(xù)演進(jìn)的過(guò)程。在這個(gè)過(guò)程中,許多名詞和術(shù)語(yǔ)逐漸形成并發(fā)展。我們可以從歷史的角度來(lái)分析這些概念的起源,探討它們的定義、替代關(guān)系以及成功與失敗的原因。

原始分布式時(shí)代

1. 背景與起源

20世紀(jì)70年代末至80年代初,計(jì)算機(jī)科學(xué)從大型機(jī)轉(zhuǎn)向微型機(jī)。計(jì)算機(jī)逐漸從研究設(shè)備轉(zhuǎn)變?yōu)槠髽I(yè)和個(gè)人的生產(chǎn)和娛樂(lè)設(shè)備。硬件限制:微型計(jì)算機(jī)的硬件性能有限,單臺(tái)計(jì)算機(jī)無(wú)法支持更大規(guī)模的信息系統(tǒng)。因此,各大高校、研究機(jī)構(gòu)、軟硬件廠商開(kāi)始探索多臺(tái)計(jì)算機(jī)協(xié)作支持軟件系統(tǒng)運(yùn)行的可能性。

2. 分布式系統(tǒng)的初步探索

UNIX分布式設(shè)計(jì)哲學(xué):強(qiáng)調(diào)保持接口與實(shí)現(xiàn)的簡(jiǎn)單性,比系統(tǒng)的任何其他屬性都更重要。該時(shí)期的分布式探索是計(jì)算機(jī)科學(xué)的早期嘗試,很多中間成果對(duì)后續(xù)的軟件架構(gòu)演進(jìn)產(chǎn)生了深遠(yuǎn)的影響:

Network Computing Architecture (NCA):遠(yuǎn)程服務(wù)調(diào)用的雛形。Andrew File System (AFS):早期分布式文件系統(tǒng)。Kerberos協(xié)議:服務(wù)認(rèn)證和訪問(wèn)控制的基礎(chǔ)性協(xié)議,至今仍被廣泛使用。

3. 分布式計(jì)算環(huán)境(DCE)

開(kāi)放軟件基金會(huì) (OSF) 制定了分布式計(jì)算環(huán)境 (DCE),包含了一套完整的分布式服務(wù)組件規(guī)范與參考實(shí)現(xiàn):

DCE/RPC:源自NCA的遠(yuǎn)程服務(wù)調(diào)用規(guī)范。DCE/DFS:源自AFS的分布式文件系統(tǒng)規(guī)范。UUID:在DCE中發(fā)明,用于標(biāo)識(shí)唯一對(duì)象。

4. 技術(shù)挑戰(zhàn)與困境

透明化與簡(jiǎn)單化的挑戰(zhàn):UNIX設(shè)計(jì)哲學(xué)強(qiáng)調(diào)透明化和簡(jiǎn)單化,但實(shí)際實(shí)現(xiàn)過(guò)程中,遠(yuǎn)程服務(wù)調(diào)用與本地方法調(diào)用的復(fù)雜性差異巨大。

網(wǎng)絡(luò)問(wèn)題:服務(wù)發(fā)現(xiàn)、負(fù)載均衡、網(wǎng)絡(luò)分區(qū)、超時(shí)、服務(wù)出錯(cuò)等問(wèn)題。性能差異:遠(yuǎn)程調(diào)用的速度與本地調(diào)用存在數(shù)量級(jí)的差距,且遠(yuǎn)程方法無(wú)法依賴傳統(tǒng)編譯優(yōu)化來(lái)提升速度。設(shè)計(jì)妥協(xié):為了提高運(yùn)行效率,開(kāi)發(fā)者不得不在編寫分布式程序時(shí)考慮各種特殊技巧,導(dǎo)致透明化和簡(jiǎn)單化的目標(biāo)未能實(shí)現(xiàn)。

5. 原始分布式時(shí)代的失敗與教訓(xùn)

DCE和CORBA等嘗試最終未能成功,分布式架構(gòu)的復(fù)雜性超過(guò)了其帶來(lái)的收益。Kyle Brown的評(píng)價(jià):分布式操作并不總是必要的,強(qiáng)行追求透明化只會(huì)帶來(lái)不必要的復(fù)雜性。后續(xù)演進(jìn):隨著摩爾定律的推進(jìn),硬件性能的提升使得單體架構(gòu)在較長(zhǎng)時(shí)間內(nèi)成為主流,但對(duì)分布式計(jì)算的探索始終未曾中斷。

6. 未來(lái)展望

盡管早期的分布式愿景未能實(shí)現(xiàn),但隨著分布式架構(gòu)的成熟和完善,特別是在2016年服務(wù)網(wǎng)格重新提出透明通信時(shí),分布式系統(tǒng)的簡(jiǎn)單透明化愿景再次被拾起,并最終得以實(shí)現(xiàn)。

單體時(shí)代

單體架構(gòu)(Monolithic Architecture)是指所有應(yīng)用程序組件被組合成一個(gè)單一的可執(zhí)行文件或應(yīng)用程序。不同模塊之間的調(diào)用都是進(jìn)程內(nèi)調(diào)用,這意味著它們共享同一個(gè)進(jìn)程空間,避免了進(jìn)程間通信帶來(lái)的復(fù)雜性和性能損耗。單體架構(gòu)通常以單層架構(gòu)為主,應(yīng)用程序的各個(gè)功能模塊之間緊密耦合,通常由同一技術(shù)棧構(gòu)建。

優(yōu)勢(shì)

簡(jiǎn)單性:?jiǎn)误w架構(gòu)的設(shè)計(jì)和開(kāi)發(fā)相對(duì)簡(jiǎn)單,特別是在小型項(xiàng)目中。這種架構(gòu)風(fēng)格的學(xué)習(xí)曲線較低,且廣泛應(yīng)用于教育和初級(jí)開(kāi)發(fā)者的學(xué)習(xí)中。高效性:由于所有模塊運(yùn)行在同一進(jìn)程內(nèi),單體架構(gòu)避免了進(jìn)程間通信(IPC)的開(kāi)銷,使其在性能上具有優(yōu)勢(shì)。易于測(cè)試和部署:?jiǎn)误w應(yīng)用通??梢宰鳛橐粋€(gè)整體進(jìn)行測(cè)試和部署,減少了版本管理和部署的復(fù)雜性。

缺陷

擴(kuò)展性:隨著系統(tǒng)規(guī)模的擴(kuò)大,單體架構(gòu)的模塊化和擴(kuò)展能力變得越來(lái)越有限。代碼庫(kù)膨脹、模塊耦合度增加,導(dǎo)致維護(hù)和擴(kuò)展難度增加。隔離與自治能力不足:?jiǎn)误w架構(gòu)下,應(yīng)用的所有部分共享同一進(jìn)程空間,導(dǎo)致某個(gè)模塊的問(wèn)題可能影響整個(gè)系統(tǒng)。例如,內(nèi)存泄漏或線程問(wèn)題可能會(huì)導(dǎo)致整個(gè)應(yīng)用程序崩潰。難以技術(shù)異構(gòu):由于所有代碼共享同一進(jìn)程空間,通常要求使用相同的編程語(yǔ)言和框架,限制了技術(shù)棧的靈活性。

單體架構(gòu)與微服務(wù)架構(gòu)的關(guān)系

單體架構(gòu)是軟件架構(gòu)發(fā)展中的早期形態(tài),其廣泛應(yīng)用直到今天。然而,隨著系統(tǒng)規(guī)模的擴(kuò)大和對(duì)高可用性、可擴(kuò)展性的要求增加,單體架構(gòu)在大型系統(tǒng)中的不足逐漸顯現(xiàn)。這促使開(kāi)發(fā)者探索新的架構(gòu)風(fēng)格,例如微服務(wù)架構(gòu)(Microservices Architecture)。

微服務(wù)架構(gòu)通過(guò)將單體系統(tǒng)拆分為多個(gè)自治的、松耦合的服務(wù),解決了單體架構(gòu)中的許多問(wèn)題,如可擴(kuò)展性和技術(shù)異構(gòu)性。同時(shí),微服務(wù)架構(gòu)允許每個(gè)服務(wù)獨(dú)立開(kāi)發(fā)、部署和維護(hù),進(jìn)一步提升了系統(tǒng)的靈活性和可靠性。

然而,微服務(wù)架構(gòu)也帶來(lái)了新的挑戰(zhàn),例如分布式系統(tǒng)的復(fù)雜性、服務(wù)間通信的開(kāi)銷等。因此,選擇單體架構(gòu)還是微服務(wù)架構(gòu),取決于項(xiàng)目的規(guī)模、團(tuán)隊(duì)的能力和系統(tǒng)的實(shí)際需求。

總結(jié)

單體架構(gòu)仍然是許多小型應(yīng)用和初創(chuàng)項(xiàng)目的首選,特別是在開(kāi)發(fā)資源有限或系統(tǒng)復(fù)雜度較低的情況下。盡管單體架構(gòu)在大型系統(tǒng)中面臨挑戰(zhàn),但它依然是一種有效的架構(gòu)風(fēng)格,特別是在系統(tǒng)規(guī)模相對(duì)較小、技術(shù)棧統(tǒng)一的場(chǎng)景下。隨著軟件系統(tǒng)的演進(jìn),單體架構(gòu)與微服務(wù)架構(gòu)的選擇應(yīng)該根據(jù)具體需求進(jìn)行權(quán)衡。

SOA時(shí)代

1. SOA架構(gòu)及其背景

在大型單體系統(tǒng)進(jìn)行拆分的過(guò)程中,開(kāi)發(fā)者們嘗試了多種架構(gòu)模式以應(yīng)對(duì)系統(tǒng)規(guī)模、復(fù)雜度和靈活性等挑戰(zhàn)。以下是三種較為代表性的架構(gòu)模式:

1. 煙囪式架構(gòu)(Information Silo Architecture)

概念: 煙囪式架構(gòu),也稱為信息孤島架構(gòu),是一種完全獨(dú)立的設(shè)計(jì)模式,每個(gè)系統(tǒng)獨(dú)立運(yùn)行、獨(dú)立維護(hù),不與其他系統(tǒng)進(jìn)行互操作或協(xié)作。這樣的系統(tǒng)往往在不同部門或業(yè)務(wù)領(lǐng)域內(nèi)單獨(dú)開(kāi)發(fā)和部署。

特點(diǎn):

獨(dú)立性:各系統(tǒng)之間沒(méi)有交互,甚至沒(méi)有任何共享數(shù)據(jù)或服務(wù)。簡(jiǎn)單性:由于系統(tǒng)之間沒(méi)有耦合,開(kāi)發(fā)和部署較為簡(jiǎn)單,風(fēng)險(xiǎn)較低。缺乏協(xié)同:這種獨(dú)立性導(dǎo)致系統(tǒng)之間的數(shù)據(jù)和業(yè)務(wù)邏輯無(wú)法共享,容易形成信息孤島。

局限性: 煙囪式架構(gòu)雖然簡(jiǎn)單易行,但在現(xiàn)代企業(yè)中幾乎不存在完全不交互的系統(tǒng)。企業(yè)內(nèi)部的不同部門或系統(tǒng)往往需要共享一些公共的數(shù)據(jù),如人員、組織、權(quán)限等。煙囪式架構(gòu)忽視了這種需求,導(dǎo)致了系統(tǒng)間的割裂,無(wú)法滿足實(shí)際業(yè)務(wù)需求。

2. 微內(nèi)核架構(gòu)(Microkernel Architecture)

概念: 微內(nèi)核架構(gòu)是一種插件式架構(gòu),它將核心的公共服務(wù)、數(shù)據(jù)和資源集中到一個(gè)內(nèi)核系統(tǒng)中,具體的業(yè)務(wù)功能以插件模塊的形式存在。這些插件可以獨(dú)立開(kāi)發(fā)、部署和更新,同時(shí)依賴于公共的內(nèi)核系統(tǒng)。

特點(diǎn):

可擴(kuò)展性:通過(guò)插件的形式,可以靈活地添加新功能或特性。模塊化:業(yè)務(wù)功能被分解為多個(gè)獨(dú)立的插件,降低了系統(tǒng)的復(fù)雜性。隔離性:各個(gè)插件模塊之間通常是獨(dú)立的,減少了耦合度。

局限性: 微內(nèi)核架構(gòu)的假設(shè)是各個(gè)插件之間互不認(rèn)識(shí),也不可預(yù)知系統(tǒng)將安裝哪些模塊。因此,插件可以訪問(wèn)內(nèi)核中的公共資源,但不直接交互。這種假設(shè)在實(shí)際企業(yè)信息系統(tǒng)或互聯(lián)網(wǎng)應(yīng)用中并不總是成立,尤其是在需要子系統(tǒng)間頻繁通信的場(chǎng)景中,微內(nèi)核架構(gòu)可能無(wú)法完全滿足需求。

3. 事件驅(qū)動(dòng)架構(gòu)(Event-Driven Architecture)

概念: 事件驅(qū)動(dòng)架構(gòu)通過(guò)在子系統(tǒng)之間建立一套事件隊(duì)列管道,各個(gè)子系統(tǒng)可以發(fā)布、訂閱和處理事件消息。子系統(tǒng)通過(guò)事件管道進(jìn)行解耦,同時(shí)又能相互通信和協(xié)作。

特點(diǎn):

解耦:系統(tǒng)高度解耦,每個(gè)子系統(tǒng)可以獨(dú)立處理事件。靈活性:子系統(tǒng)可以根據(jù)需要訂閱自己感興趣的事件,也可以發(fā)布新事件??蓴U(kuò)展性:通過(guò)增加事件類型或子系統(tǒng),系統(tǒng)可以靈活擴(kuò)展。

局限性: 事件驅(qū)動(dòng)架構(gòu)的實(shí)現(xiàn)復(fù)雜度較高,事件的處理順序和依賴關(guān)系需要仔細(xì)設(shè)計(jì)。此外,由于事件管道的異步特性,系統(tǒng)的調(diào)試和問(wèn)題排查也更加復(fù)雜。

這三種架構(gòu)模式各有其適用場(chǎng)景和局限性。煙囪式架構(gòu)適合在系統(tǒng)之間幾乎沒(méi)有交互需求的場(chǎng)景;微內(nèi)核架構(gòu)適合在功能模塊化、需要頻繁擴(kuò)展和更新的場(chǎng)景;而事件驅(qū)動(dòng)架構(gòu)則適合在系統(tǒng)之間需要高效、松耦合的通信和協(xié)作的場(chǎng)景。

在實(shí)際應(yīng)用中,開(kāi)發(fā)者往往需要根據(jù)具體的業(yè)務(wù)需求和技術(shù)條件,選擇合適的架構(gòu)模式,甚至將多種架構(gòu)模式結(jié)合起來(lái)使用,以實(shí)現(xiàn)最佳的系統(tǒng)設(shè)計(jì)。

SOA(Service-Oriented Architecture,面向服務(wù)的架構(gòu))是為了應(yīng)對(duì)復(fù)雜分布式系統(tǒng)中的集成與互操作性挑戰(zhàn)而提出的一種架構(gòu)風(fēng)格。SOA的核心思想是將系統(tǒng)功能劃分為獨(dú)立的服務(wù),通過(guò)松散耦合的方式使這些服務(wù)能夠獨(dú)立開(kāi)發(fā)、部署和維護(hù)。

2. SOA的核心組件和技術(shù)特征

SOA的實(shí)施依賴于以下幾個(gè)關(guān)鍵技術(shù)組件和概念:

SOAP(Simple Object Access Protocol):一種輕量級(jí)的協(xié)議,用于在網(wǎng)絡(luò)上交換結(jié)構(gòu)化信息,通常與WSDL(Web Services Description Language)和UDDI(Universal Description, Discovery, and Integration)共同使用。ESB(Enterprise Service Bus):企業(yè)服務(wù)總線,用于在不同服務(wù)之間傳遞消息,實(shí)現(xiàn)服務(wù)間的松散耦合。SCA(Service Component Architecture):服務(wù)組件架構(gòu),定義了服務(wù)的封裝形式和運(yùn)行容器。SDO(Service Data Object):服務(wù)數(shù)據(jù)對(duì)象,用于標(biāo)準(zhǔn)化服務(wù)之間的數(shù)據(jù)訪問(wèn)和表示。

3. SOA的優(yōu)勢(shì)和局限性

優(yōu)勢(shì):

松散耦合:服務(wù)可以獨(dú)立開(kāi)發(fā)和部署,降低了系統(tǒng)的復(fù)雜性。標(biāo)準(zhǔn)化:通過(guò)標(biāo)準(zhǔn)協(xié)議(如SOAP),實(shí)現(xiàn)跨平臺(tái)、跨語(yǔ)言的服務(wù)互操作??芍赜眯裕悍?wù)可以被不同的應(yīng)用程序復(fù)用,提升開(kāi)發(fā)效率。

局限性:

復(fù)雜性:由于需要遵循嚴(yán)格的標(biāo)準(zhǔn),SOA的實(shí)施往往涉及大量的配置和管理,增加了系統(tǒng)的復(fù)雜度。性能開(kāi)銷:SOAP等協(xié)議的使用,帶來(lái)了額外的性能開(kāi)銷,尤其是在高并發(fā)場(chǎng)景下。過(guò)度抽象:SOA試圖通過(guò)一套統(tǒng)一的標(biāo)準(zhǔn)解決所有問(wèn)題,但這種“一刀切”的方法在實(shí)際應(yīng)用中往往缺乏靈活性。

4. SOA在軟件架構(gòu)演進(jìn)中的作用與影響

SOA標(biāo)志著軟件架構(gòu)從單體式向分布式系統(tǒng)轉(zhuǎn)變的重要一步。盡管SOA未能成為普遍采用的架構(gòu)風(fēng)格,但它提出的松散耦合、服務(wù)重用等理念在后來(lái)的微服務(wù)架構(gòu)中得到了繼承和發(fā)展。SOA的經(jīng)驗(yàn)教訓(xùn)為現(xiàn)代分布式系統(tǒng)的設(shè)計(jì)提供了重要的借鑒,促使架構(gòu)師們更加注重簡(jiǎn)化和靈活性,避免過(guò)度復(fù)雜化的設(shè)計(jì)。

微服務(wù)時(shí)代

微服務(wù)架構(gòu)(Microservices)是一種強(qiáng)調(diào)靈活性、獨(dú)立性和分散治理的軟件開(kāi)發(fā)方法。它將一個(gè)大型應(yīng)用程序拆分為多個(gè)小型服務(wù),這些服務(wù)可以獨(dú)立開(kāi)發(fā)、部署和擴(kuò)展。微服務(wù)架構(gòu)允許每個(gè)服務(wù)使用不同的技術(shù)棧,根據(jù)業(yè)務(wù)需求進(jìn)行定制,避免了傳統(tǒng)單體架構(gòu)中可能存在的技術(shù)和組織上的瓶頸。

微服務(wù)的起源與演變

微服務(wù)的概念雖然可以追溯到2005年,但它在最初幾年并未引起廣泛關(guān)注。微服務(wù)的發(fā)展歷程與SOA(面向服務(wù)架構(gòu))緊密相關(guān),甚至可以說(shuō)微服務(wù)是SOA的一種演變形式。然而,隨著時(shí)間的推移,微服務(wù)逐漸脫離了SOA的影子,成為一種獨(dú)立的架構(gòu)風(fēng)格。

2014年,Martin Fowler和James Lewis發(fā)表了《Microservices: A Definition of This New Architectural Term》,正式為現(xiàn)代微服務(wù)奠定了理論基礎(chǔ)。這篇文章中,作者明確了微服務(wù)的九個(gè)核心特征,強(qiáng)調(diào)了圍繞業(yè)務(wù)能力構(gòu)建、分散治理和獨(dú)立自治等關(guān)鍵原則。

微服務(wù)的核心特征

圍繞業(yè)務(wù)能力構(gòu)建:服務(wù)是圍繞業(yè)務(wù)需求設(shè)計(jì)的,團(tuán)隊(duì)的組織架構(gòu)也應(yīng)與業(yè)務(wù)需求相匹配。 分散治理:每個(gè)服務(wù)的開(kāi)發(fā)團(tuán)隊(duì)可以自由選擇適合的技術(shù)棧和工具,減少外部干預(yù)。 服務(wù)化組件:組件通過(guò)服務(wù)的方式進(jìn)行通信,確保各服務(wù)的獨(dú)立性和自治性。 產(chǎn)品化思維:開(kāi)發(fā)團(tuán)隊(duì)不僅關(guān)注功能實(shí)現(xiàn),還要關(guān)注服務(wù)的整個(gè)生命周期,包括運(yùn)維和用戶反饋。 數(shù)據(jù)去中心化:數(shù)據(jù)按領(lǐng)域進(jìn)行分散管理,避免中心化存儲(chǔ)帶來(lái)的依賴和一致性問(wèn)題。 強(qiáng)終端弱管道:提倡輕量級(jí)的通信方式,減少對(duì)復(fù)雜中間件的依賴。 容錯(cuò)性設(shè)計(jì):設(shè)計(jì)時(shí)考慮到服務(wù)可能會(huì)出錯(cuò),提供自動(dòng)化的故障檢測(cè)和恢復(fù)機(jī)制。 演進(jìn)式設(shè)計(jì):接受服務(wù)會(huì)被淘汰的現(xiàn)實(shí),設(shè)計(jì)時(shí)要允許服務(wù)的替換和更新。 基礎(chǔ)設(shè)施自動(dòng)化:依賴于CI/CD等自動(dòng)化工具,以應(yīng)對(duì)大規(guī)模服務(wù)的部署和運(yùn)維挑戰(zhàn)。

微服務(wù)的優(yōu)勢(shì)與挑戰(zhàn)

微服務(wù)架構(gòu)提供了極大的自由度,但也帶來(lái)了新的挑戰(zhàn)。架構(gòu)師在設(shè)計(jì)微服務(wù)系統(tǒng)時(shí),面臨的決策和權(quán)衡比以往任何時(shí)候都要復(fù)雜。微服務(wù)的自由度允許開(kāi)發(fā)者根據(jù)業(yè)務(wù)需求和團(tuán)隊(duì)技術(shù)熟練度靈活選擇工具和技術(shù),但同時(shí)也要求架構(gòu)師具備更廣泛的知識(shí)面和決策能力。

微服務(wù)在解決了單體架構(gòu)中的一些瓶頸問(wèn)題的同時(shí),也重新引入了分布式系統(tǒng)中的一些經(jīng)典問(wèn)題,如服務(wù)發(fā)現(xiàn)、負(fù)載均衡、故障隔離和數(shù)據(jù)一致性等。這些問(wèn)題在微服務(wù)架構(gòu)下沒(méi)有統(tǒng)一的解決方案,要求架構(gòu)師根據(jù)實(shí)際情況做出權(quán)衡。

微服務(wù)時(shí)代的未來(lái)

微服務(wù)架構(gòu)雖然提供了高度的自由,但這種自由也是一把雙刃劍。未來(lái)的架構(gòu)探索可能會(huì)尋求在不犧牲靈活性的前提下,減少分布式系統(tǒng)中固有的復(fù)雜性和管理負(fù)擔(dān)。理想的架構(gòu)應(yīng)該能夠同時(shí)滿足業(yè)務(wù)驅(qū)動(dòng)的靈活性和技術(shù)標(biāo)準(zhǔn)的統(tǒng)一性,為開(kāi)發(fā)者提供更加簡(jiǎn)便和高效的工具和平臺(tái)。

后微服務(wù)時(shí)代

在后微服務(wù)時(shí)代,軟件和硬件之間的界限變得模糊,解決分布式架構(gòu)中的各種問(wèn)題不再局限于軟件層面,硬件基礎(chǔ)設(shè)施也參與其中。這種軟硬件合力的模式可以稱為“云原生”時(shí)代。云原生不僅是一種架構(gòu)理念,更是對(duì)微服務(wù)架構(gòu)的繼承與升華。

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

分布式系統(tǒng)的典型問(wèn)題如服務(wù)發(fā)現(xiàn)、負(fù)載均衡、配置管理、安全性、監(jiān)控、伸縮等,早在 SOA 時(shí)代甚至更早期的分布式系統(tǒng)中就已經(jīng)存在。傳統(tǒng)上,這些問(wèn)題通常通過(guò)專用的硬件設(shè)施來(lái)解決,例如使用負(fù)載均衡器進(jìn)行流量分發(fā),使用 DNS 進(jìn)行服務(wù)發(fā)現(xiàn),或通過(guò)硬件防火墻提供安全保障。然而,隨著軟件架構(gòu)的靈活性提升,單靠硬件設(shè)施已難以滿足動(dòng)態(tài)變化的需求。這催生了微服務(wù)架構(gòu)下,基于軟件的解決方案。

虛擬化技術(shù)的崛起與 Kubernetes 的勝利

隨著虛擬化技術(shù)的發(fā)展,尤其是 Docker 容器技術(shù)的普及,軟件層面的分布式問(wèn)題開(kāi)始得到解決。容器技術(shù)提供了一個(gè)輕量級(jí)的服務(wù)運(yùn)行環(huán)境,使得應(yīng)用可以快速部署和伸縮。而真正標(biāo)志著后微服務(wù)時(shí)代到來(lái)的,是 Kubernetes 在 2017 年容器編排戰(zhàn)爭(zhēng)中的勝利。Kubernetes 提供了一套基礎(chǔ)設(shè)施層面的解決方案,如服務(wù)發(fā)現(xiàn)、負(fù)載均衡、配置管理、自動(dòng)伸縮等功能,逐步取代了傳統(tǒng)微服務(wù)架構(gòu)中 Spring Cloud 提供的應(yīng)用層面的解決方案。

基礎(chǔ)設(shè)施與服務(wù)網(wǎng)格的融合

然而,Kubernetes 并非萬(wàn)能,特別是在一些需要精細(xì)化處理的場(chǎng)景下,基礎(chǔ)設(shè)施的粒度過(guò)于粗糙,難以完全替代應(yīng)用層面的控制。例如,在微服務(wù)的熔斷、監(jiān)控、認(rèn)證授權(quán)等方面,Kubernetes 的功能并不如 Spring Cloud 精細(xì)。為此,虛擬化基礎(chǔ)設(shè)施引入了服務(wù)網(wǎng)格(Service Mesh)技術(shù),通過(guò)邊車代理(Sidecar Proxy)模式,在不修改應(yīng)用代碼的情況下,實(shí)現(xiàn)更精細(xì)的服務(wù)治理功能。

服務(wù)網(wǎng)格的核心思想是在每個(gè)服務(wù)實(shí)例旁邊部署一個(gè)代理,負(fù)責(zé)接管服務(wù)的所有通信。這些代理不僅處理數(shù)據(jù)平面的通信,還與控制平面通信相互配合,實(shí)現(xiàn)動(dòng)態(tài)的流量控制、監(jiān)控、認(rèn)證、負(fù)載均衡等功能。這種模式使得微服務(wù)架構(gòu)中的許多問(wèn)題可以從應(yīng)用代碼中剝離,交由基礎(chǔ)設(shè)施層面的服務(wù)網(wǎng)格來(lái)處理,從而實(shí)現(xiàn)業(yè)務(wù)與技術(shù)的徹底分離。

展望未來(lái):云原生與后微服務(wù)時(shí)代的前景

在未來(lái),Kubernetes 很可能成為服務(wù)器端標(biāo)準(zhǔn)的運(yùn)行環(huán)境,而服務(wù)網(wǎng)格則會(huì)成為微服務(wù)通信的主流模式。業(yè)務(wù)邏輯與技術(shù)細(xì)節(jié)將徹底分離,開(kāi)發(fā)者只需專注于業(yè)務(wù)本身,而不必為分布式架構(gòu)的復(fù)雜性所困擾。這將是一個(gè)更為成熟、穩(wěn)定的架構(gòu)時(shí)代,真正實(shí)現(xiàn)“上帝的歸上帝,凱撒的歸凱撒”,即業(yè)務(wù)與技術(shù)的完全分離。

無(wú)服務(wù)時(shí)代 Serverless

無(wú)服務(wù)架構(gòu)(Serverless)是近年來(lái)云計(jì)算領(lǐng)域中迅速崛起的一種架構(gòu)風(fēng)格。它的核心理念是將開(kāi)發(fā)者從管理底層基礎(chǔ)設(shè)施的繁雜任務(wù)中解放出來(lái),讓他們能夠更加專注于業(yè)務(wù)邏輯的開(kāi)發(fā)。

背景與起源

無(wú)服務(wù)架構(gòu)的起源可以追溯到2012年,Iron.io 公司首次提出了“無(wú)服務(wù)”的概念。2014年,亞馬遜推出了Lambda服務(wù),這標(biāo)志著無(wú)服務(wù)架構(gòu)進(jìn)入了商業(yè)化階段,并逐漸被開(kāi)發(fā)者所接受。此后,無(wú)服務(wù)架構(gòu)成為了云計(jì)算發(fā)展的重要方向之一,不僅是工業(yè)界,學(xué)術(shù)界也在2019年UC Berkeley發(fā)表的論文中預(yù)言“無(wú)服務(wù)將會(huì)發(fā)展成為未來(lái)云計(jì)算的主要形式”。

概念與特點(diǎn)

無(wú)服務(wù)架構(gòu)主要包括兩大核心內(nèi)容:

后端設(shè)施(Backend as a Service,BaaS):這是指數(shù)據(jù)庫(kù)、消息隊(duì)列、日志、存儲(chǔ)等支持業(yè)務(wù)邏輯運(yùn)行的技術(shù)組件,它們運(yùn)行在云端,并由云服務(wù)商托管和管理。函數(shù)(Function as a Service,F(xiàn)aaS):這是指開(kāi)發(fā)者編寫的業(yè)務(wù)邏輯代碼,這些代碼以函數(shù)的形式運(yùn)行在云端,云服務(wù)商會(huì)自動(dòng)管理這些函數(shù)的部署、擴(kuò)展和執(zhí)行。

無(wú)服務(wù)架構(gòu)的主要優(yōu)勢(shì)包括:

降低開(kāi)發(fā)和運(yùn)維成本:開(kāi)發(fā)者不需要關(guān)心底層基礎(chǔ)設(shè)施的管理、擴(kuò)展或維護(hù),只需專注于業(yè)務(wù)邏輯的開(kāi)發(fā)。彈性擴(kuò)展:無(wú)服務(wù)架構(gòu)依托于云服務(wù)商的龐大資源池,可以在需求高峰時(shí)自動(dòng)擴(kuò)展,也能在需求低谷時(shí)減少資源占用。按使用量付費(fèi):無(wú)服務(wù)架構(gòu)通常按照函數(shù)的執(zhí)行時(shí)間和內(nèi)存消耗進(jìn)行計(jì)費(fèi),這種模式使得開(kāi)發(fā)者能夠更加精細(xì)地控制成本。

適用場(chǎng)景與局限性

無(wú)服務(wù)架構(gòu)在以下場(chǎng)景中表現(xiàn)尤為出色:

短鏈接、無(wú)狀態(tài)、事件驅(qū)動(dòng)的應(yīng)用:如Web資訊類網(wǎng)站、小程序、公共API服務(wù)、移動(dòng)應(yīng)用服務(wù)端等,這些場(chǎng)景下無(wú)服務(wù)架構(gòu)的優(yōu)勢(shì)能夠得到充分發(fā)揮。離線大規(guī)模計(jì)算:不需要實(shí)時(shí)交互的計(jì)算任務(wù),也非常適合無(wú)服務(wù)架構(gòu)。

然而,無(wú)服務(wù)架構(gòu)也存在一些天然的局限性:

業(yè)務(wù)邏輯復(fù)雜、依賴服務(wù)端狀態(tài)的應(yīng)用:例如信息管理系統(tǒng)、網(wǎng)絡(luò)游戲等,由于無(wú)服務(wù)架構(gòu)的冷啟動(dòng)時(shí)間和短暫的運(yùn)行生命周期,這些應(yīng)用不太適合在無(wú)服務(wù)架構(gòu)下實(shí)現(xiàn)。響應(yīng)速度要求高的應(yīng)用:無(wú)服務(wù)架構(gòu)中的冷啟動(dòng)時(shí)間會(huì)對(duì)響應(yīng)速度產(chǎn)生負(fù)面影響,尤其是對(duì)啟動(dòng)性能較差的語(yǔ)言如Java,冷啟動(dòng)時(shí)間甚至可能接近秒級(jí)。

展望與總結(jié)

無(wú)服務(wù)架構(gòu)盡管有著光明的前景,但在短期內(nèi)可能仍然難以全面取代其他架構(gòu)形式。然而,隨著云計(jì)算的不斷發(fā)展,無(wú)服務(wù)架構(gòu)將成為未來(lái)軟件開(kāi)發(fā)中的重要一環(huán),尤其是在與微服務(wù)架構(gòu)等其他架構(gòu)形式融合使用時(shí)。

無(wú)論是通過(guò)物理機(jī)、虛擬機(jī)、容器,還是無(wú)服務(wù)云函數(shù),未來(lái)的微服務(wù)實(shí)現(xiàn)方案將更加多樣化,這也意味著軟件開(kāi)發(fā)的未來(lái)將是多種架構(gòu)風(fēng)格并存、相互融合的形態(tài)。

柚子快報(bào)邀請(qǐng)碼778899分享:Arch - 演進(jìn)中的架構(gòu)

http://yzkb.51969.com/

精彩文章

評(píng)論可見(jiàn),查看隱藏內(nèi)容
大家都在看:

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19421760.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄