




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
云原生中間件
技術白皮書隨著云原生技術在各個行業(yè)快速落地,基于云計算基礎設施的應用開發(fā)架構已經(jīng)發(fā)生了巨大的變革。中間件作為云平臺業(yè)務上云的關鍵組件,起到重要支撐作用。然而,目前云原生時代中間件范疇尚未明確定義,云原生中間件的生態(tài)現(xiàn)狀并不清晰,普及推廣云原生中間件對加速云原生技術落地有著積極作用。本白皮書首先闡述了云原生和中間件的基本概念,回顧了中間件從電子信息時代到云原生時代的發(fā)展歷程,總結了當前云原生時代應用的開發(fā)特點,同時開創(chuàng)性地提出了設計云原生中間件的十個關鍵要素,最后梳理了目前典型的云原生中間件服務,并預測了未來云原生中間件的發(fā)展趨勢。TOC\o"1-5"\h\z―、概述 7(一) 云原生概述 7(二) 中間件定義 7二、 中間件發(fā)展歷程 8(一) 中間件的起源 8(二) 互聯(lián)網(wǎng)時代的中間件 9(三) 云計算為中間件提供了平臺 10(四) 開源推動中間件技術發(fā)展 11(五) 云原生賦予中間件新的內涵 11三、 云原生應用開發(fā)特點 12(一) 容器與編排 13(二) 微服務化 14(三) 計算存儲分離 15(四) 服務網(wǎng)關 16(五) 分布式事務模式 16(六) 業(yè)務服務無狀態(tài)化 17四、 云原生中間件十要素 17(一) 容器原生 18(二) 服務狀態(tài) 18(三) 組件模塊化 19(四) 事件驅動 19(五) 可觀測 20(六) 韌性設計 21(七) 彈性伸縮 21(八) 動態(tài)部署 22(九) 統(tǒng)一響應式與聲明式的API 22(十)平臺化 23五、 云原生中間件典型服務 23(一) 分布式消息隊列 23(二) 分布式事務系統(tǒng) 25(三) 分布式配置服務 27(四) API網(wǎng)關 28(五) 分布式緩存 29(六) 鏈路跟蹤服務 30六、 云原生中間件發(fā)展趨勢 31(一) 技術架構上趨于統(tǒng)一 31(二) 深度融合云原生熱點技術 31(三) 云原生中間件領域標準化進程持續(xù)深入 32概述(一) 云原生概述云原生是一系列云計算技術體系和企業(yè)管理方法的集合,既包含了實現(xiàn)應用云原生化的方法論,也包含了落地實踐的關鍵技術云原生應用利用容器、服務網(wǎng)格、微服務、不可變基礎設施和聲明式PI等代表性技術,來構建容錯性好、易于管理和便于觀察的松耦合系統(tǒng)。云原生通過利用可靠的自動化手段對系統(tǒng)做出頻繁、可預測的重大變更,讓應用隨時處于待發(fā)布狀態(tài)。云原生技術有利于各組織在公有云、私有云和混合云等新型動態(tài)環(huán)境中,構建和運行可彈性擴展的應用,借助平臺的全面自動化能力,跨多云構建微服務,持續(xù)交付部署業(yè)務生產(chǎn)系統(tǒng)。1經(jīng)過幾年的發(fā)展,云原生的理念不斷豐富和落地。中國信息通信研究院經(jīng)過多方面研究,總結云原生的概念為適合云的應用”和“好用的云架構”2?;谠圃募夹g和管理方法,用戶能夠更好地把業(yè)務生于云或遷移到云平臺,從而享受云的高效和持續(xù)的服務能力。(二) 中間件定義中間件是指網(wǎng)絡環(huán)境下處于操作系統(tǒng)、數(shù)據(jù)庫等系統(tǒng)軟件和應用軟件之間的一種起連接作用的分布式軟件。中間件主要解決異構網(wǎng)絡環(huán)境下分布式應用軟件的互連與互操作問題。提供標準接口、協(xié)議,1引自CNCF對云原生的定義2引自《云原生技術實踐白皮書(2019年)》屏蔽實現(xiàn)細節(jié),提高應用系統(tǒng)易移植性為其主要技術優(yōu)勢。它使用戶能使用一種腳本語言來選擇和連接已有的服務,從而生成簡單程序的軟件開發(fā)工具。中間件涉及軟件的各個領域,是供公用應用程序編程接口的軟件。中間件在操作系統(tǒng)、網(wǎng)絡和數(shù)據(jù)庫之上,應用軟件的下層,總的作用是為處于自己上層的應用軟件提供運行與開發(fā)的環(huán)境,幫助用戶靈活、高效地開發(fā)和集成復雜的應用軟件。中間件是一種獨立的系統(tǒng)軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源。二、中間件發(fā)展歷程(一)中間件的起源1946年,世界上第一臺電子計算<ENIAC的誕生,標志著人類進入了電子信息時代。上世紀六十年代,最早的程序語言Fortran出現(xiàn),標志著現(xiàn)代意義上的軟件誕生。為了更好地支撐應用軟件系統(tǒng),中間件隨之登上歷史舞臺。作為連接應用和底層資源的橋梁,中間件能夠屏蔽基礎硬件、操作系統(tǒng)和通訊協(xié)議的異構性,為應用開發(fā)者提供統(tǒng)一標準的交互界面。隨著軟件的不斷發(fā)展及其規(guī)模的不斷增大,分布式系統(tǒng)應運而生。隨之出現(xiàn)的還有異構分布網(wǎng)絡環(huán)境下軟件系統(tǒng)的通信、互操作、協(xié)同、事務、安全等共性難題。不斷出現(xiàn)的新業(yè)務需求驅動應用架構和信系統(tǒng)持續(xù)演進,進而要求中間件不斷地凝練共性問題,提供標準化的支撐機制。BELL實驗室于1990年開發(fā)的Tuxedo系統(tǒng),標準化了分布式交易事務的控制方式。IBM在1994年發(fā)布了消息隊列服務MQ,標準化了不同應用程序間異步通信的方式,解決了分布式系統(tǒng)中通訊服務問題。中間件作為解決共性問題的標準化工具,大大降低了系統(tǒng)的復雜度和協(xié)作成本,逐漸成為網(wǎng)絡應用的基礎設施。(二)互聯(lián)網(wǎng)時代的中間件到了互聯(lián)網(wǎng)時代,用戶數(shù)量爆發(fā)增長導致了互聯(lián)網(wǎng)業(yè)務的快速增長,越來越多的應用程序開始部署在分布式的網(wǎng)絡環(huán)境里運行。傳統(tǒng)中間件以類庫和框架的形式來加強應用能力,標準化程度和交互性能亟待提升。由于中間件構件模型類庫和架構沒有統(tǒng)一的標準,不同節(jié)點下的中間件自身在構件描述、發(fā)布、調用、互操作協(xié)議及數(shù)據(jù)傳輸?shù)确矫娉尸F(xiàn)出巨大的差異性。另外,以類庫和框架的形式提供能力必然使得中間件與業(yè)務應用有極強的耦合度,存在可移植性差、適應性低等問題,進而使得應用在不同分布式節(jié)點上的交互變得困難重重。另一方面,爆發(fā)增長的用戶帶的巨大流量和數(shù)據(jù)也沖擊互聯(lián)網(wǎng)應用,耦合度高的傳統(tǒng)中間件難以適配動態(tài)多變的流量的互聯(lián)網(wǎng)環(huán)境。在設計之初僅考慮支撐當前應用的能力也使得中間件在技術上具有較大的局限性,在復雜的分布式互聯(lián)場景下無法很好的支撐上層應用系統(tǒng)。與此同時,多變的互聯(lián)網(wǎng)流量對基礎資源的靈活配置的需求也史無前例的增大,快速增長的業(yè)務與僵化如基礎設施之間的矛盾日益嚴重。中間件需要在存在多種硬件系統(tǒng)的分布式異構環(huán)境中,技撐各種各樣的系統(tǒng)軟件,以及風格各異的網(wǎng)絡協(xié)議和網(wǎng)絡體系結構。這些痛點驅動著軟件與中間件的技術革新,如何使用中間件技術更媯復用業(yè)務,提升IT基礎設施的業(yè)務敏捷性,是互聯(lián)網(wǎng)時代中間件服務應該考慮的關鍵問題。(三)云計算為中間件提供了平臺云計算時代的到來為企業(yè)靈活多變的業(yè)務和僵化的IT基礎設施之間的尖銳矛盾提供了完美的解決方案。彈性的云計算資源根據(jù)業(yè)務流量進行擴縮,提高資源利用率;平臺化的資源托管,解決了傳統(tǒng)集群的運維繁瑣問題;云計算重構了企業(yè)IT基礎設施,在業(yè)務系統(tǒng)逐漸遷移到云上的過程中,中間件起到了至關重要的作用。業(yè)務上云的過程往往不是一蹴而就,企業(yè)在云計算構建及落地過程中,出于對新興技術未知的顧慮以及對核心數(shù)據(jù)資產(chǎn)的保護,往往是共有云、私有云的混合部署,這樣對企業(yè)業(yè)務不會造成太大的影響同時提高了資源調度的靈活性。在原海資源、共有云、私有云等不同的平臺之間,以及部署其上的不同應用之間進行數(shù)據(jù)傳遞和消息互通至關重要,云計算時代的中間件就扮演了實現(xiàn)不同平臺上的應用互聯(lián)互通標準化的重要角色。同時云計算也為中間件技術的發(fā)展提供了更廣闊的空間和舞臺,中間件逐漸成為云基礎構建中的一部分,企業(yè)用戶能夠使用云中間件將業(yè)務流程逐步遷移到云集成服務上,最終實現(xiàn)靈活擴展和降本增效。(四)開源推動中間件技術發(fā)展作為軟件代碼標準化的方式,開源在云計算興起過程中發(fā)揮了至關重要的作用,開源打破了技術壟斷,為企業(yè)提供了一個共同制訂事實標準的平等機會。蓬勃發(fā)展的云計算與快速前行的開源發(fā)揮了相互促進的作用。目前,在與云計算相關的虛擬化、容器、分布式存儲、自動化運維等領域,開源已經(jīng)成為技術主流,深刻影響著云計算的發(fā)展方向。在開源技術開放協(xié)作的理念下,傳統(tǒng)中間件之間相互孤立的鴻溝將不復存在。隨著開源的價值逐漸獲得國內外公司的認同,越來越多中間件領域的優(yōu)質項目涌現(xiàn)出來,如阿里開源的分布式服務框架Dubbo、分布式消息隊列RocketMQ,騰訊開源的微服務框架TARS等,已經(jīng)被國內外眾多企業(yè)用于生產(chǎn)。(五)云原生賦予中間件新的內涵在容器及編排技術、開源、微服務等云原生理念的帶動下,將應用部署到云端已經(jīng)是不可逆轉的趨勢。在現(xiàn)有業(yè)務代碼不變的情況下,想要讓分布式系統(tǒng)無縫入云,如何設計云原生中間件以支撐應用的遷變遷成為關鍵問題。云原生時代的應用更加輕量化,在對外提供能保持一致的前提下,將與核心業(yè)務無關的能力剝離出去。這些能將以中間件的形式下沉到基礎設施中,成為云的一部分,從而加強楸善應用的運行環(huán)境,實現(xiàn)應用輕量化。由此可以窺見云原生賦于中間件新的內涵,即云原生中間件下沉到云基礎設施,保持功能不變的情況下與應用解耦,在運行時為應劇態(tài)賦能,支撐上層應用系統(tǒng)。云原生中間件是指在公有云、私有i和混合云等動態(tài)環(huán)境中,用于構建和運行可彈性擴展的應用,持續(xù)付部署業(yè)務生產(chǎn)系統(tǒng)的分布式中間件。云原生中間件能提供應用管理、發(fā)布部署、運維編排、監(jiān)控分析、容災應急等全生命周期管理的aaS能力,支撐云原生應用的開發(fā)與管理,滿足經(jīng)典和云原生架構的運綠障需求。云原生中間件在應用開發(fā)方面,能提供開發(fā)者體驗工具支撐、API開放能力、產(chǎn)品定制能力、微服務中間件平臺、服務市場應用商店等,來支持云原生應用的開發(fā)與管理。三、云原生應用開發(fā)特點傳統(tǒng)企業(yè)應用隨著業(yè)務越來越龐大會遇到各類問題。如在運維方面,傳統(tǒng)集群運維繁瑣,對于人員技能要求高導致運維效率低;業(yè)務架構從單體架構向分布式架構轉變時,架構改造以及服務拆分帶來的技術學習難度高;自建IT基礎資源使整個應用運行成本極高,且大量計算資源無法被充分利用,資源利用率低。云原生的出現(xiàn)極大改善了企業(yè)業(yè)務上云的難度,其主要有以下優(yōu)勢:云生云長,充分利用云平臺服務優(yōu)勢。云原生應用可以快速構建并部署到平臺上,平臺提供了簡單快捷的擴展能力并與硬件解耦,提供了更大的靈活性、彈性和跨云環(huán)境的可移植性。云原生將云計算作為競爭優(yōu)勢,原生云意味著將云目標從IT成本節(jié)約轉向業(yè)務增長引擎。敏捷彈性,致力于高效高可用設計。在傳統(tǒng)的舊基礎設施故障時,服務是可能會受到影響的。在一個云原生的世界中,團隊特別關注冠彈性和高可用進行架構設計。云原生焦點幫助開發(fā)人員和架構師謝不受環(huán)境中故障影響的在線系統(tǒng),快速彈性的重建和保持系統(tǒng)可用。靈活擴展,云原生應用具備多云間擴展的靈活性。公有云的廠商綁定現(xiàn)象一直為人詬病,但是使用支持云原生技術的云平臺,企業(yè)可以將構建在任何(公有或私有)云上的應用快速遷移,兼具不同云服務商的優(yōu)勢服務能力無需擔心鎖定3。云原生應用的開發(fā),有如下特點:(一)容器與編排容器化是指將應用整合到容器中并且運行起來的這個過程。容器是為應用而生的,能夠簡化應用的構建、部署和運行過程。用戶將應用及其所需的所有配置、依賴關系和環(huán)境變量打包成容器鏡像,使應用不再受環(huán)境限制,可以在不同的環(huán)境下輕松移植。容器編排提供高性能可伸縮的容器應用管理能力,為容器化應用提供了全生命周期的管理,如應用的發(fā)布與回滾、應用配置管理等;容器編排可以根據(jù)應用請求的資源量在容器集群中選擇合適的節(jié)點來調度資源,對于負載過高的業(yè)務進行彈性擴容;通過檢測容器集群中所有節(jié)點,自動隔離故障節(jié)點并將應用遷移,使應用系統(tǒng)具備較強的自愈能力,極大簡化了運維管理的復雜程度。(二)微服務化微服務化是一種這種開發(fā)的風格和方法,以開發(fā)一組小型服務的方式來開發(fā)一個獨立的應用系統(tǒng)。其中每個小型服務都運行在自己的進行中,采用輕量的機制來相互通信。這些服務圍繞業(yè)務功能進行構建,并能通過全自動的部署機制來進行獨立部署。這些微服務可以使用不同的語言來編寫,并且可以使用不同的數(shù)據(jù)存儲技術。服務之間是松耦合的,可以獨立地對每個服務進行升級、部署、擴展和重啟等操作,從而可以實現(xiàn)頻繁的迭代更新。微服務技術天生支持快速迭代、彈性擴展的特點,使企業(yè)能夠在不確定性下提升發(fā)展速度及抗風險能力。微服務化的應用易于開發(fā)和維護,一個微服務只關注一個特定的業(yè)務功能,業(yè)務清晰、代碼量較少,開發(fā)和維護單個微服務相對簡單。而整個應用是由若干個微服務構建而成的,所以整個應用很容易維持在一個可控狀態(tài)。微服務技術棧不受限制。在微服務架構中,可以結合項目業(yè)務及團隊的特點,合理地選擇技術棧。例如某些服務可使用關系型數(shù)據(jù)庫MySQL;某些微服務有圖形計算的需求,可以使用Neo4j。微服務雖然有很多吸引人的地方,但它并不是銀彈。使用微服務架構面臨很多挑戰(zhàn),如其運維要求較高,因為更多的服務意味著更多的運維投入。在單體架構中,只需要保證一個應用的正常運行。而在微服務中,需要保證幾十甚至幾百個服務服務的正常運行與協(xié)作,這給運維帶來了很大的挑戰(zhàn)。對使用微服務構建的分布式系統(tǒng)而言,系統(tǒng)容錯、網(wǎng)絡延遲、分布式事務等都會帶來巨大的挑戰(zhàn)。目前微服務架構也在不斷演進,從初代侵入式架構,到非侵入式服務網(wǎng)格,再到當前火熱的利用Serverless來架構微服務的多運行時微服務架構(Muti-RuntimeMicroservices),微服務架構能力更加全面,進一步降低了云原生應用的開發(fā)難度。計算存儲分離云原生業(yè)務應用部分往往設計成無狀態(tài)的,相比起邏輯較簡單的存儲部分,運行時出現(xiàn)錯誤概率較高,計算存儲分離的架構使得計算部分的故障恢復變得簡單,從而使系統(tǒng)更加健壯。分離后的架構職責清晰,從業(yè)務負載來看,將計算與存儲負載解耦,消除了存儲負載和計算負載對資源訴求的不平衡;從資源調度來看,計算資源、存儲資源獨立靈活的擴展,通過共享存儲池,減少副本數(shù)實現(xiàn)降低成本,提高整個系統(tǒng)的資源利用率;在云環(huán)境中,集中云上存儲能更容易的提供數(shù)據(jù)保護、精簡配置、快照克隆、重刪壓縮、自動分層等企業(yè)級存儲服務。(四)服務網(wǎng)關服務網(wǎng)關是一個服務器,是系統(tǒng)的唯一入口,其對系統(tǒng)內部架構進行封裝,為每個客戶端提供一個定制的API。服務網(wǎng)關核心要點是,所有的客戶端都通過統(tǒng)一的網(wǎng)關接入微服務,并在網(wǎng)關層處理所有的非業(yè)務功能。服務網(wǎng)關負責請求轉發(fā)、合成和協(xié)議轉換。在云原生應用中,服務網(wǎng)關有以下幾個優(yōu)點:與微服務注冊中心連接,實現(xiàn)服務無感知擴縮;服務網(wǎng)關對于無法訪問的服務,可以做到自動熔斷;方便的實現(xiàn)應用的藍綠部署、金絲雀發(fā)布或A/B發(fā)布。(五)分布式事務模式傳統(tǒng)的企業(yè)開發(fā)系統(tǒng)往往是以單體應用形式存在的,不會橫跨多個數(shù)據(jù)庫。云原生時代應用的分布化使得企業(yè)無可避免的要面對分布式架構帶來的數(shù)據(jù)一致性問題。由于大型云原生應用往往是由一系列分布式應用構成的,開發(fā)語言和技術棧也相對比較繁雜。在微服務架構盛行的今天,一個看起來簡單的功能,內部可能需要調用多個服務并操作多個數(shù)據(jù)庫或分片來實現(xiàn),這樣必然帶來分布式事務問題。所以在進行云原生應用設計時需要考慮分布式事務模式。云原生的解決方案是將分布式事務問題從業(yè)務中剝離出來,作為一個獨立的技術面來單獨管理,以服務的形式給構建在云上的應用提供簡單、易用、高效的解決方案,使開發(fā)者專注于業(yè)務邏輯的設計和開發(fā),不需要考慮分布式事務的問題,從而加快項目交付、迭代的速度。(六)業(yè)務服務無狀態(tài)化狀態(tài)化的判斷是指兩個來自相同發(fā)起者的請求在服務器端是否具備上下文關系。無狀態(tài)服務是指該服務運行的實例不會在本地存儲需要持久化的數(shù)據(jù),并且多個實例對于同一個請求響應的結果是完全一致的。當訪問該服務的請求到達服務一端后,負載均衡會隨機找到一個實例來完成該請求的響應。這類服務的實例可能會因為一些原因停止或者重新創(chuàng)建(如擴容時)。這時,這些停止的實例里的所有信息(除日志和監(jiān)控數(shù)據(jù)外)都將丟失(重啟容器即會丟失)。云原生應用為了承載高并發(fā),往往拆分成多組進程,每組進程完成特定的工作,根據(jù)并發(fā)量用多個副本公共承擔流量壓力。如果狀態(tài)全部保存在本地,會給架構的橫向擴展帶來瓶頸。所以要將云原生應用的業(yè)務邏輯的部分設計成無狀態(tài)的,這樣無狀態(tài)的部分可以很容易的橫向擴展,在用戶分發(fā)的時候,可以很容易分發(fā)到新的進程進行處理,而狀態(tài)保存到后端。四、云原生中間件十要素中間件的使命是服務于上層應用系統(tǒng),第三章節(jié)討論了云原生應用開發(fā)的特點,為了設計出能更好支撐云原生應用的中間件,我們從基礎資源、設計原則、運行時狀態(tài)、呈現(xiàn)形態(tài)3個維度抽象出以下十個關鍵要素。(一)容器原生云生CloudNative架構部署容器(Containerization)云原生中間件應進行云原生架構設計,以容器化形式進行服務部署。容器化部署可支持中間件服務快速啟動,可以靈活完成服務及資源的擴縮容。容器隔離了用戶底層IaaS資源的差異,利用容器編排可輕松實現(xiàn)多實例(MultipleServiceInstances)部署;容器原生的中間件應用程序和容器鏡像占用更少的資源,對于多容器部署的場景有更好的優(yōu)化策略,提升基礎資源利用率。(二)服務狀態(tài)有態(tài)(StatefU和無態(tài)(StatelesS服^分離在云原生時代,中間件架構設計時需要定義服務的狀態(tài):有狀態(tài)部分和無狀態(tài)部分。無狀態(tài)部分主要伴隨業(yè)務邏輯的產(chǎn)生,如服務間通信、鏈路跟蹤等。無狀態(tài)服務是指該服務運行的實例不會在本地存儲數(shù)據(jù),并且多個實例對于同一個請求響應的結果是完全一致的有狀態(tài)部分是指該中間件可以產(chǎn)生并存儲數(shù)據(jù)并且在創(chuàng)建一個新的有狀態(tài)服務時,可以通過備份恢復這些數(shù)據(jù),以達到數(shù)據(jù)持久化的目的。所以將狀態(tài)保存在有狀態(tài)的中間件中,如分布式緩存、消息隊列等。無狀態(tài)的業(yè)務邏輯部分可以很容易的橫向擴展,在用戶分發(fā)的時候,可以很容易分發(fā)到新的進程進行處理。在有狀態(tài)中間件設計時,應考慮擴容時狀態(tài)的遷移、復制、同步等機制,以更好的支撐無狀態(tài)的業(yè)務層。(三)組件模塊化組件模塊(ComponentModule)云原生中間件設計時應考慮可插拔、松耦合、可動態(tài)編排的組件化特征。每個組件都是高度抽象的、自包含的、封閉的并和其它的件相有一定的邏輯隔離,使得不同的角色專注于其擅長領域的工作。開發(fā)人員可以通過組合模塊的形式調度涉及到中間件,快速支撐業(yè)務,適用系統(tǒng)的運行時特征。松耦合的中間件讓開發(fā)人員可以在處理每個中間件時都能夠獨立于其他中間件來工作。云原生中間件通過功能_的分離,對外提供統(tǒng)一的應用程序編程接口API)供開發(fā)人員調用,使開發(fā)者可以專注于每項服務的核心功能,以提供細粒度的功能。(四)事件驅動采用事件^^架S^(Event-DrivenArchitecture)事件驅動架構作為一種應用間集成模式,天然適合云原生中間件的調度和集成。在事件驅動的體系結構中,當服務執(zhí)行其他中間件可能感興趣的工作時,該服務將生成一個事件。其他服務使用這些事俄而執(zhí)行由該事件觸發(fā)的任務。事件成為了可以被消費的對象,而不僅僅是在函數(shù)間傳遞的臨時參數(shù),從而可以同時被多個中間件消費。中間件不需要直接和生成事件的服務進行交互,僅通過監(jiān)聽事件,觸發(fā)對應的操作,從而降低了服務內部的復雜度。事件驅動架構具備以下優(yōu)點:異步:基于事件的架構是異步的,沒有阻塞。這使得中間件可以在工作單元完成后自由地轉移到下一個任務,而不用擔心之前發(fā)生了什么或者接下來會發(fā)生什么。松耦合:中間件之間不需要也不應該)知道或依賴于其他服務。事件模型下的中間件可以獨立的、更容易的更新、測試和部署。易于擴展:由于服務在事件驅動的體系結構下解耦,而且服務通常只執(zhí)行一項任務,因此跟蹤特定服務的瓶頸,并對該服務(且僅對該服務)進行擴展變得很容易?;謴椭С郑簬в嘘犃械氖录寗蛹軜嬁梢酝ㄟ^“重播”過去的事件來恢復丟失的工作。當用戶需要恢復時,這對于防止數(shù)據(jù)丟失非常有用。(五)可觀測可觀測(Observab)e在由微服務和容器等技術形成的高度復雜的應用系統(tǒng)運行態(tài)中,可觀測性成為云原生中間件必須具備的能九可觀測性包含了監(jiān)控、告警、日志聚合、分布式跟蹤和依賴分析等部分,通過收集處理數(shù)據(jù)來定位問題,并簡化信息的訪問,實時深入的觀察整個應用系統(tǒng)的健康狀態(tài),從業(yè)務資源計量等多個維度進行度量。日志、指標和請求跟蹤是可觀測性的基礎。從CNCF早期畢業(yè)的項目Prometheus就是一個用于觀測服務的云原生監(jiān)控工具。由此可見可觀測性在云原生技術中的重要性。Prometheus幾乎可以監(jiān)控所有內容,它還整合了像Grafana這樣主流的可視化工具。韌性設計云生中間W備韌性(Resiliency)具備韌性設計的中間件具有高延時寬容、容錯和故障恢復邏輯。可以防止連鎖故障,允許快速失敗和快速恢復,且具備較強的系統(tǒng)自愈能力和抵抗外部沖擊,為其上層運行的應用系統(tǒng)提供高性能、高容錯、高安全地支撐。設計具有韌性設計的中間件,必須從兩個方面考慮:在最初設計和規(guī)劃時,考慮中間件自身的在不同場景下的健壯性和魯棒性。針對系統(tǒng)在運行過程中,可能出現(xiàn)導致程序崩潰的各種情況的應對能力,如計算機軟件在輸入錯誤、磁盤故障、網(wǎng)絡過載或有意攻擊情況下,如何保障系統(tǒng)安全、穩(wěn)定運行的措施、設計等。中間件的功能和特性在設計時,應兼顧外圍應用系統(tǒng)的適應能力。因此,基于云原生架構設計應用的同時,選擇具有熔斷機制的微服務治理框架,將在整體上為云原生應用提供系統(tǒng)魯棒性,包括超時、重試、限流、服務降級等方式,從而降低整個系統(tǒng)崩潰的風險。彈性伸縮資源可展(scalabili),服^可t性(Elasticity)可擴展指中間件具備資源按需動態(tài)伸縮能力,在保證業(yè)務連續(xù)性前提下,可以獨立于其他服務對于底層資源進行擴展或者收縮。隨著流量,需求和使用量的增加,中間件應用應具有彈性。彈性意味著當資源根據(jù)需求按比例地減少或者增加時,系統(tǒng)的吞吐量將自動地向下或者向上縮放,從而滿足不同的需求。彈性是建立在可擴展的基礎之上的,并通過添加自動的資源管理概念對其進行了擴充。動態(tài)部署月服務生命周期的動態(tài)部署(DynamicDeploymen)云原生中間件具備服務全生命周期的動態(tài)部署與發(fā)布能力,在完成開發(fā)構建之后,能夠以多種策略進行發(fā)布,如滾動發(fā)布、灰度發(fā)布、藍綠發(fā)布等;具備多種部署策略,如批量并發(fā)部署、任務定時部署、分階段部署等;具有版本控制功能,如版本追溯與回滾。由于云原生中間件具備獨立的運行進程,每個中間件也可以獨立動態(tài)的部署。當某個中間件發(fā)生變更時無需編譯、部署整個應用。如果應用需要多個中間件來進行支撐,那么多個中間件具備一系列可并行的發(fā)布流程,使得發(fā)布更加高效,同時降低對生產(chǎn)環(huán)境所造成的風險,最終縮短應用交付周期。統(tǒng)一響應式與聲明式的API將^^應式API與聲明式API統(tǒng)一(UnifiesReactiveandDeclarativeAPI)云原生中間件承擔了運行時為應用動態(tài)賦能的重任,應用與中間件以API調用的形式進行通信與控制。響應式API描述為了達到某一個效果或者目標所需要完成的指令;聲明式API描述的是應用期望的目標狀態(tài)發(fā)出的指令。根據(jù)云原生的理念,應用無需知道下層中間件及資源的具體實現(xiàn)方式。聲明式API即可使中間件在調用時無需關注實現(xiàn)細節(jié),在應用運行時動態(tài)賦予。大多數(shù)開發(fā)人員都熟悉命令式編程模,并希望在云原生應用開發(fā)時利用這種經(jīng)驗。同時,開發(fā)人員正在采用容器、事件驅動和微服務模型來進行應用的開發(fā),以構建高度并發(fā)的應用程序。云原生時代的中間件開發(fā),應將兩種開發(fā)模型無縫地集成在同一個平臺中,從而在一個組織中產(chǎn)生強大的杠桿作用。(十)平臺化以云平臺(CloudPlanfo)m的形式提供服務將中間件功能下沉到基礎設施,以云平臺的形式對外輸出能力,提供中間件的接口供用戶按需調用,用戶無需關注中間件服務的下層資源調度與運維,更加聚焦輕量級的業(yè)務應用。五、云原生中間件典型服務(一)分布式消息隊列分布式消息系統(tǒng)是指的利用高效可靠的消息傳遞機制進行平臺無關的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進行分布式系統(tǒng)的集成的服務。消息隊列是在消息的傳輸過程中保存消息的容器。消息隊列管理器在將消息從它的源中繼到它的目標時充當中間人。隊列的主要目的是提供路由并保證消息的傳遞;如果發(fā)送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它。通過提供消息傳遞和消息排隊模型,它可在分布環(huán)境下擴展進程間的通信,并支持多通訊協(xié)議、語言、應用程序、硬件和軟件平臺,實現(xiàn)應用系統(tǒng)之間的可靠異步消息通信能夠保障數(shù)據(jù)在復雜的網(wǎng)絡中高效、穩(wěn)定、安全、可靠的傳輸。當前主流的消息隊列有RocketMQ、Kafka、Pulsar、RabitMQ等。RocketMQ是阿里巴巴研發(fā)的一款低延遲、高可靠、可伸縮、易于使用的消息中間件。RocketMQ由阿里巴巴貢獻給了Apache基金會并于2017年成為頂級開源項目。RocketMQ由Java語言開發(fā),采用發(fā)布一訂閱模式傳遞消息,具有高效靈活的水平擴展能力和海量消息堆積能力,近年來逐漸獲得國內外企業(yè)的認可。Kafka是由LinkedIn公司開發(fā)的一個高吞吐量的分布式消息系統(tǒng),開發(fā)它的目標是為處理實時數(shù)據(jù)提供一個統(tǒng)一、高通量、低等待的平臺。Kafka最大的特性就是可以實時地處理大量數(shù)據(jù)以滿足各種需求場景。Kafka由Scala語言開發(fā),其客戶端在主流的編程語言里面都有對應的支持,如Scala、C++、Python、Java、GO、PHP等。Kafka由LinkedIn于2010年貢獻給了Apache基金會并成為頂級開源項目。Pulsar是由Yahoo開發(fā)的Pub-Sub模式的分布式消息平臺,在2016年開源,并于2018年9月畢業(yè)成為Apache基金會的頂級項目。其擁有靈活的消息模型和直觀的客戶端API,是一種用于服務器到服務器消息傳遞的多租戶高性能解決方案。RabbitMQ是一個基于高級消息隊列協(xié)議實現(xiàn)的消息系統(tǒng),其服務器端用Erlang語言編寫,支持多種客戶端,如Python、.NET、PHP、Java、JMS等。RabbitMQ在易用性、擴展性、高可用性等方面表現(xiàn)優(yōu)良4。(一) 分布式事務系統(tǒng)云原生應用對大規(guī)模的事務處理有著較為苛刻的需求。事務處理監(jiān)控界于Client和Server之間,進行事務管理與協(xié)調、負載平衡、失敗恢復等,以提高系統(tǒng)的整體性能。分布式事務系統(tǒng)中間件適用于聯(lián)機交易處理系統(tǒng),主要功能是管理分布于不同計算機上的數(shù)據(jù)的一致性,保障系統(tǒng)處理能力的效率與均衡負載。業(yè)界著名的CAP理論告訴我們,在設計和實現(xiàn)一個分布式系統(tǒng)時,需要將數(shù)據(jù)一致性、系統(tǒng)可用性和分區(qū)容忍性放在一起考慮。而在布式系統(tǒng)中,一致性(Consistency)、可用性(Availability)和分區(qū)容忍性(PartitionTolerance)這3個要素最多只能同時滿足兩個。一致性是指分布式環(huán)境下多個節(jié)點的數(shù)據(jù)是否強一致??捎眯允侵阜植际椒漳芤恢北WC可用狀態(tài)。當用戶發(fā)出一個請求后,服務能在有限計間內返回結果。分區(qū)容忍性特指對網(wǎng)絡分區(qū)的容忍性。分布式事務4鄭立,陳屹力,劉如明,等基于開源的消息隊列云服務研超].信息通信技術與政策2020(5):52-56.中間件的目的是保障分布式存儲中數(shù)據(jù)一致性,而跨庫事務會遇到各種不可控制的問題,如個別節(jié)點宕機。目前主流的分布式事務解決方案有:a) TCC補償型事務解決方案TCC指的是Try(嘗試)、Confirm(確認)、Cancel(取消),其核心思想是:針對每個操作,都要注冊一個與其對應的確認和補償(撤銷)操作。它分為三個階段:Try階段主要是對業(yè)務系統(tǒng)做檢測及資源預留Confirm階段主要是對業(yè)務系統(tǒng)做確認提交,Try階段執(zhí)行成功并開始執(zhí)行Confirm階段時,默認Confirm階段是不會出錯的。即:只要Try成功,Confirm—定成功。Cancel階段主要是在業(yè)務執(zhí)行錯誤,需要回滾的狀態(tài)下執(zhí)行的業(yè)務取消,預留資源釋放。b) 兩階段提交兩階段提交(Two-phaseCommit,2PC),通過引入?yún)f(xié)調者來協(xié)調參與者的行為,并最終決定這些參與者是否要真正執(zhí)行事務。c) 本地消息表本地消息表與業(yè)務數(shù)據(jù)表處于同一個數(shù)據(jù)庫中,這樣就能利用本地事務來保證在對這兩個表的操作滿足事務特性,并且使用了消息隊列來保證最終一致性。在分布式事務操作的一方完成寫業(yè)務數(shù)據(jù)的操作之后向本地消息表發(fā)送一個消息,本地事務能保證這個消息一定會被寫入本地消息表中。之后將本地消息表中的消息轉發(fā)到Kafka等消息隊列中,如果轉發(fā)成功則將消息從本地消息表中刪除,否則繼續(xù)重新轉發(fā)。在分布式事務操作的另一方從消息隊列中讀取一個消息,并執(zhí)行消息中的操作。(三)分布式配置服務隨著業(yè)務的發(fā)展,微服務的數(shù)量、程序的配置日益增多(各種微服務、服務器地址、參數(shù)等),傳統(tǒng)的配置文件方式和數(shù)據(jù)庫的方式已無法滿足開發(fā)人員對配置管理的要求,如配置修改后實時生效、灰度發(fā)布、分環(huán)境管理配置、完善的權限審核機制等。因此,需要配置中心來統(tǒng)一管理配置,把業(yè)務開發(fā)者從復雜以及繁瑣的配置中解脫出來,只需專注于業(yè)務代碼本身,從而能夠顯著提升開發(fā)以及運維效率。同時將配置和發(fā)布包解藕也進一步提升發(fā)布的成功率,并為運維的細力度管控、應急處理等提供強有力的支持。在云原生環(huán)境中,同類型的服務往往會部署到很多個實例上。分布式配置管理服務可以輕松地管理成千上百個服務實例的配置問題。分布式配置服務有以下特點:權限控制。為開發(fā)人員賦予不同的配置權限。審計日志。所有的修改需要記錄操作日志,方便問題溯源。環(huán)境管理。對開發(fā)、測試、生成環(huán)境下的配置進行隔離。配置回滾。當發(fā)現(xiàn)配置錯誤,或者在該配置下程序發(fā)生異常可以立即回滾到之前的版本?;叶劝l(fā)布。通過隨機修改部分應用的配置進行灰度發(fā)布,當測試正常后在推送到所有的應用。高可用。在配置服務出現(xiàn)問題時,應用可以使用本地緩存配置。(四)API網(wǎng)關API網(wǎng)關將各系統(tǒng)對外提供服務的微服務聚合起來,所有要調用這些服務的請求都需要通過API網(wǎng)關進行,基于這種方式網(wǎng)關可以對API進行統(tǒng)一管控,例如:認證、鑒權、流量控制、協(xié)議轉換、監(jiān)控等等。API網(wǎng)關的流行得益于近幾年微服務架構的興起,原本一個龐大的業(yè)務系統(tǒng)被拆分成許多粒度更小的系統(tǒng)進行獨立部署和維護,這種模式勢必會帶來更多的跨系統(tǒng)交互,企業(yè)API的規(guī)模也會成倍增加,API網(wǎng)關就逐漸成為了微服務架構的標配組件。其主要功能如下:提供防攻擊、防重放、請求加密、身份認證、權限管理、流量控制等多重手段保證API安全,降低API開放風險。提供API定義、測試、發(fā)布、下線等全生命周期管理,并生成SDK、API說明文檔,提升API管理、迭代的效率。提供便捷的監(jiān)控、報警、分析、API市場等運維、運營工具,降低API運營、維護成本。使用API網(wǎng)關的最大優(yōu)點是,它封裝了應用程序的內部結構。餐端只需要同網(wǎng)關交互,而不必調用特定的服務API網(wǎng)關為每一類客戶端提供了特定的API。這減少了客戶端與應用程序間的交互次數(shù),還簡化了客戶端代碼。(五)分布式緩存隨著互聯(lián)網(wǎng)的飛速發(fā)展,各行各業(yè)對互聯(lián)網(wǎng)服務的要求也越來越高,互聯(lián)網(wǎng)系統(tǒng)很多常見的存儲類場景都面臨著容量和穩(wěn)定性風險。此時,本地緩存已無法滿足需要,分布式緩存由于其高性能、高可用性等優(yōu)點迅速許多公司接受并使用。分布式緩存是傳統(tǒng)緩存概念的擴展,其中數(shù)據(jù)被放置在本地的臨時存儲中以便快速檢索。這意味著不同的機器或服務器將其緩存內存的一部分貢獻到可由多個節(jié)點和虛擬機訪問的大型池中。分布式緩存由一個服務端實現(xiàn)管理和控制,有多個客戶端節(jié)點存儲數(shù)據(jù),可以進一步提高數(shù)據(jù)的讀取速率。分布式緩存能夠高性能讀取數(shù)據(jù)、能夠動態(tài)地擴展緩存節(jié)點、能夠自動發(fā)現(xiàn)和切換故
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 核電工程現(xiàn)場施工安全操作規(guī)程考核試卷
- 衛(wèi)生材料在汽車制造中的應用考核試卷
- 箱包行業(yè)創(chuàng)新材料應用考核試卷
- 守株待兔新編初二語文作文
- 描寫姥爺?shù)某醵Z文作文
- 紙板生產(chǎn)中的物流與倉儲管理策略考核試卷
- 密封用填料的聲學性能分析考核試卷
- 九級語文上冊第五單元提高練習5課人教新課標版
- 租賃企業(yè)運營模式解析考核試卷
- 2-9邏輯函數(shù)的標準形式-最小項表達式
- 貴州國企招聘2025貴州路橋集團有限公司招聘35人筆試參考題庫附帶答案詳解
- 衛(wèi)生管理行業(yè)人才培養(yǎng)與社會責任分析試題及答案
- DB32T 5082-2025建筑工程消防施工質量驗收標準
- 施工安全的教育培訓記錄表
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蝕工程施工及驗收規(guī)范
- 農村常用法律法規(guī)知識講座課件(村干部培訓)
- 年產(chǎn)5萬噸甲醇氧化制甲醛工藝及反應器設計
- 國家職業(yè)技能標準 (2021年版) 鑒定估價師(機動車鑒定評估師)
- 公司組織架構圖56832
- USB 數(shù)據(jù)線 SOP
- 在自己的城里旅行
評論
0/150
提交評論