您好,登錄后才能下訂單哦!
最近閱讀了周立的《Spring Cloud與Docker》收獲挺大的,抽了一點(diǎn)時(shí)間對(duì)書中的內(nèi)容做了總結(jié)。方便大家快速了解什么是Spring Cloud,Spring Cloud主要的功能及Spring Cloud服務(wù)治理。如下博客的內(nèi)容都出自這本書。
什么是微服務(wù)
微服務(wù)架構(gòu)風(fēng)格是一種將一個(gè)單一應(yīng)用程序開發(fā)為一組小型服務(wù)的方法,每個(gè)服務(wù)運(yùn)行在自己的進(jìn)程中,服務(wù)間通信采用輕量級(jí)通信機(jī)制(通常用HTTP資源API)。這些服務(wù)圍繞業(yè)務(wù)能力構(gòu)建并且可通過全自動(dòng)部署機(jī)制獨(dú)立部署。這些服務(wù)共用一個(gè)最小型的集中式的管理,服務(wù)可用不同的語言開發(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ù)開發(fā),一個(gè)微服務(wù)只關(guān)注某個(gè)特定的功能,例如訂單管理,用戶管理等。
微服務(wù)之間通過一些輕量的通信機(jī)制進(jìn)行通信,例如通過RESTful API進(jìn)行調(diào)用。
可以使用不同的語言與數(shù)據(jù)存儲(chǔ)技術(shù)
微服務(wù)架構(gòu)的優(yōu)點(diǎn)
易于開發(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ù)實(shí)例通信,就會(huì)注銷該實(shí)例。
微服務(wù)網(wǎng)絡(luò)地址發(fā)生變更(例如實(shí)例增減或者IP端口發(fā)生變化等)時(shí),會(huì)重新注冊(cè)到服務(wù)發(fā)現(xiàn)組件。使用這種方式,服務(wù)消費(fèi)者就無須人工修改提供者的網(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ù)語。REST 定義了一組體系架構(gòu)原則,您可以根據(jù)這些,包括使用不同語言編寫的客戶端如何通過 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開源的一個(gè)延遲和容錯(cuò)庫,用于隔離訪問遠(yuǎn)程系統(tǒng),服務(wù)或者第三方庫,防止級(jí)聯(lián)失敗,從而提升系統(tǒng)的可用性和容錯(cuò)性。Hystrix主要通過以下幾點(diǎn)實(shí)現(xiàn)延遲和容錯(cuò)。
包裹請(qǐng)求:使用HystrixCommand包裹對(duì)依賴的調(diào)用邏輯,每個(gè)命令在獨(dú)立線程中執(zhí)行。這使用到了設(shè)計(jì)模式中的“命令模式”。
如果沒有容錯(cuò)處理,“基礎(chǔ)服務(wù)故障”導(dǎo)致“級(jí)聯(lián)故障”從而形成右邊的雪崩效應(yīng)
使用Zuul構(gòu)建微服務(wù)網(wǎng)關(guān)
Zuul是Netflix開源的微服務(wù)網(wǎng)關(guān),它可以和Eureka,Ribbon,Hystrix等組件配合使用。Zuul的核心是一系列的過濾器,這些過濾器可以完成以下功能。
Zuul大部分功能是通過過濾器實(shí)現(xiàn)的,如右圖所示。
使用Spring CloudConfig統(tǒng)一管理微服務(wù)配置
Spring Cloud Config支持在Git, SVN和本地存放配置文件,使用Git或者SVN存儲(chǔ)庫可以很好地支持版本管理,Spring默認(rèn)配置是使用Git存儲(chǔ)庫。具有如下優(yōu)點(diǎn):
集中管理配置:一個(gè)使用微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)可能會(huì)包含成百上千個(gè)微服務(wù),因此幾種管理配置是非常有必要的。
不同環(huán)境不同配置:例如,數(shù)據(jù)源配置在不同的環(huán)境(開發(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)用追蹤
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。