最近閱讀了周立的《Spring Cloud與Docker》收獲挺大的,抽了一點(diǎn)時(shí)間對(duì)書(shū)中的內(nèi)容做了總結(jié)。方便大家快速了解什么是Spring Cloud,Spring Cloud主要的功能及Spring Cloud服務(wù)治理。如下博客的內(nèi)容都出自這本書(shū)。
什么是微服務(wù)
微服務(wù)架構(gòu)風(fēng)格是一種將一個(gè)單一應(yīng)用程序開(kāi)發(fā)為一組小型服務(wù)的方法,每個(gè)服務(wù)運(yùn)行在自己的進(jìn)程中,服務(wù)間通信采用輕量級(jí)通信機(jī)制(通常用HTTP資源API)。這些服務(wù)圍繞業(yè)務(wù)能力構(gòu)建并且可通過(guò)全自動(dòng)部署機(jī)制獨(dú)立部署。這些服務(wù)共用一個(gè)最小型的集中式的管理,服務(wù)可用不同的語(yǔ)言開(kāi)發(fā),使用不同的數(shù)據(jù)存儲(chǔ)技術(shù)。
微服務(wù)架構(gòu)應(yīng)該具備以下特性:
每個(gè)微服務(wù)可獨(dú)立運(yùn)行在自己的進(jìn)程里。
一系列獨(dú)立運(yùn)行的微服務(wù)共同構(gòu)建起整個(gè)系統(tǒng)。
每個(gè)服務(wù)為獨(dú)立的業(yè)務(wù)開(kāi)發(fā),一個(gè)微服務(wù)只關(guān)注某個(gè)特定的功能,例如訂單管理,用戶管理等。
微服務(wù)之間通過(guò)一些輕量的通信機(jī)制進(jìn)行通信,例如通過(guò)RESTful API進(jìn)行調(diào)用。
可以使用不同的語(yǔ)言與數(shù)據(jù)存儲(chǔ)技術(shù)
微服務(wù)架構(gòu)的優(yōu)點(diǎn)
易于開(kāi)發(fā)和維護(hù)
單個(gè)微服務(wù)啟動(dòng)較快
局部修改容易部署
技術(shù)棧不受限
按需伸縮
微服務(wù)架構(gòu)面臨的挑戰(zhàn)
運(yùn)維要求高
分布式固有的復(fù)雜性
接口調(diào)整成本高
重復(fù)勞動(dòng)
微服務(wù)整體架構(gòu)圖
服務(wù)注冊(cè)于發(fā)現(xiàn)
各個(gè)服務(wù)在啟動(dòng)時(shí),將自己的網(wǎng)絡(luò)地址等信息注冊(cè)到服務(wù)發(fā)現(xiàn)組件中,服務(wù)發(fā)現(xiàn)組件會(huì)存儲(chǔ)這些信息。
服務(wù)消費(fèi)者可以從服務(wù)發(fā)現(xiàn)組件查詢服務(wù)提供者的網(wǎng)絡(luò)地址,并使用該地址調(diào)用服務(wù)提供者的接口。
各個(gè)微服務(wù)與服務(wù)發(fā)現(xiàn)組件使用一定機(jī)制(例如心跳)通信。服務(wù)發(fā)現(xiàn)組件如長(zhǎng)時(shí)間無(wú)法與某為服務(wù)實(shí)例通信,就會(huì)注銷該實(shí)例。
微服務(wù)網(wǎng)絡(luò)地址發(fā)生變更(例如實(shí)例增減或者IP端口發(fā)生變化等)時(shí),會(huì)重新注冊(cè)到服務(wù)發(fā)現(xiàn)組件。使用這種方式,服務(wù)消費(fèi)者就無(wú)須人工修改提供者的網(wǎng)絡(luò)地址了。
Fegion實(shí)現(xiàn)聲明式REST調(diào)用
REST(Representational State Transfer ),用中文翻譯為"具象狀態(tài)傳輸"(也有:"代表性狀態(tài)傳輸")。是由 Roy Thomas Fielding博士 在2000年就讀加州大學(xué)歐文分校期間在學(xué)術(shù)論文中提出的一個(gè)術(shù)語(yǔ)。REST 定義了一組體系架構(gòu)原則,您可以根據(jù)這些,包括使用不同語(yǔ)言編寫的客戶端如何通過(guò) HTTP 處理和傳輸資源狀態(tài)。Feign是一個(gè)聲明式的WebService客戶端。使用Feign能讓編寫WebService客戶端更加簡(jiǎn)單,它的使用方法是定義一個(gè)接口,然后在接口上添加注解,同時(shí)也支持JAX-RS標(biāo)準(zhǔn)的注解。Feign也支持可插拔式的編碼器和×××。SpringCloud對(duì)Feign進(jìn)行了封裝,使其支持SpringMVC標(biāo)準(zhǔn)注解和HttpMessageConverters。Feign可以與Eureka和Ribbon組合使用以支持負(fù)載均衡。
使用Hystrix實(shí)現(xiàn)微服務(wù)的容錯(cuò)處理
Hystrix是由Netflix開(kāi)源的一個(gè)延遲和容錯(cuò)庫(kù),用于隔離訪問(wèn)遠(yuǎn)程系統(tǒng),服務(wù)或者第三方庫(kù),防止級(jí)聯(lián)失敗,從而提升系統(tǒng)的可用性和容錯(cuò)性。Hystrix主要通過(guò)以下幾點(diǎn)實(shí)現(xiàn)延遲和容錯(cuò)。
包裹請(qǐng)求:使用HystrixCommand包裹對(duì)依賴的調(diào)用邏輯,每個(gè)命令在獨(dú)立線程中執(zhí)行。這使用到了設(shè)計(jì)模式中的“命令模式”。
如果沒(méi)有容錯(cuò)處理,“基礎(chǔ)服務(wù)故障”導(dǎo)致“級(jí)聯(lián)故障”從而形成右邊的雪崩效應(yīng)
使用Zuul構(gòu)建微服務(wù)網(wǎng)關(guān)
Zuul是Netflix開(kāi)源的微服務(wù)網(wǎng)關(guān),它可以和Eureka,Ribbon,Hystrix等組件配合使用。Zuul的核心是一系列的過(guò)濾器,這些過(guò)濾器可以完成以下功能。
Zuul大部分功能是通過(guò)過(guò)濾器實(shí)現(xiàn)的,如右圖所示。
使用Spring CloudConfig統(tǒng)一管理微服務(wù)配置
Spring Cloud Config支持在Git, SVN和本地存放配置文件,使用Git或者SVN存儲(chǔ)庫(kù)可以很好地支持版本管理,Spring默認(rèn)配置是使用Git存儲(chǔ)庫(kù)。具有如下優(yōu)點(diǎn):
集中管理配置:一個(gè)使用微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)可能會(huì)包含成百上千個(gè)微服務(wù),因此幾種管理配置是非常有必要的。
不同環(huán)境不同配置:例如,數(shù)據(jù)源配置在不同的環(huán)境(開(kāi)發(fā),測(cè)試,預(yù)發(fā)布,生產(chǎn)等)中是不同的。
運(yùn)行期間可動(dòng)態(tài)調(diào)整:例如可根據(jù)各個(gè)微服務(wù)的負(fù)載情況,動(dòng)態(tài)調(diào)整數(shù)據(jù)源連接池大小或熔斷閾值,并且在調(diào)整配置是不停止微服務(wù)。
配置修改后可自動(dòng)更新。如配置內(nèi)容發(fā)生變化,微服務(wù)能夠自動(dòng)更新配置。
Spring Cloud服務(wù)治理
注冊(cè)中心監(jiān)控
容錯(cuò)處理監(jiān)控
微服務(wù)健康檢查
微服務(wù)調(diào)用追蹤
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱:SpringCloud微服務(wù)架構(gòu)簡(jiǎn)介-創(chuàng)新互聯(lián)
瀏覽地址:http://muchs.cn/article12/deiidc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、靜態(tài)網(wǎng)站、定制網(wǎng)站、定制開(kāi)發(fā)、建站公司、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容