SpringCloud微服務(wù)架構(gòu)簡(jiǎn)介-創(chuàng)新互聯(lián)

最近閱讀了周立的《Spring Cloud與Docker》收獲挺大的,抽了一點(diǎn)時(shí)間對(duì)書(shū)中的內(nèi)容做了總結(jié)。方便大家快速了解什么是Spring Cloud,Spring Cloud主要的功能及Spring Cloud服務(wù)治理。如下博客的內(nèi)容都出自這本書(shū)。
什么是微服務(wù)

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、武定網(wǎng)絡(luò)推廣、微信小程序開(kāi)發(fā)、武定網(wǎng)絡(luò)營(yíng)銷、武定企業(yè)策劃、武定品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供武定建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:muchs.cn

微服務(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ù)

  • 全自動(dòng)部署機(jī)制

微服務(wù)架構(gòu)的優(yōu)點(diǎn)
易于開(kāi)發(fā)和維護(hù)

  • 一個(gè)微服務(wù)只會(huì)關(guān)注一個(gè)特定的業(yè)務(wù)功能,所以它業(yè)務(wù)清晰,代碼量較少。

單個(gè)微服務(wù)啟動(dòng)較快

  • 單個(gè)微服務(wù)代碼量較少,所以啟動(dòng)會(huì)比較快。

局部修改容易部署

  • 單體應(yīng)用只要有修改,就得重新部署整個(gè)應(yīng)用,微服務(wù)解決了這樣的問(wèn)題。

技術(shù)棧不受限

  • 在微服務(wù)架構(gòu)中,可以結(jié)合項(xiàng)目業(yè)務(wù)及團(tuán)隊(duì)的特點(diǎn),合理地選擇技術(shù)棧。

按需伸縮

  • 可根據(jù)需求,實(shí)現(xiàn)細(xì)粒度的擴(kuò)展。

微服務(wù)架構(gòu)面臨的挑戰(zhàn)
運(yùn)維要求高

  • 更多的服務(wù)意味著更多的運(yùn)維投入。

分布式固有的復(fù)雜性

  • 使用微服務(wù)架構(gòu)是分布式系統(tǒng)。對(duì)于一個(gè)分布式系統(tǒng),系統(tǒng)容錯(cuò),網(wǎng)絡(luò)延遲,分布式事務(wù)等都會(huì)帶來(lái)巨大的挑戰(zhàn)。

接口調(diào)整成本高

  • 微服務(wù)之間通過(guò)接口進(jìn)行通信。如果修改某一個(gè)微服務(wù)的API,可能所有使用了該接口的微服務(wù)都需要做調(diào)整。

重復(fù)勞動(dòng)

  • 很多服務(wù)可能都會(huì)使用到相同的功能,而這個(gè)功能并沒(méi)有達(dá)到分解為一個(gè)微服務(wù)的程度,這個(gè)時(shí)候,可能各個(gè)服務(wù)都會(huì)開(kāi)發(fā)這一功能,從而導(dǎo)致代碼重復(fù)。

微服務(wù)整體架構(gòu)圖
Spring Cloud微服務(wù)架構(gòu)簡(jiǎn)介

服務(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ò)地址了。
Spring Cloud微服務(wù)架構(gòu)簡(jiǎn)介
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ì)模式中的“命令模式”。

  • 跳閘機(jī)制:當(dāng)某服務(wù)的錯(cuò)誤率超過(guò)一定閾值時(shí),Hystrix可以自動(dòng)或者手動(dòng)跳閘,停止請(qǐng)求該服務(wù)一段時(shí)間。
  • 資源隔離:Hystrix為每個(gè)依賴都維護(hù)了一個(gè)小型的線程池(或者信號(hào)量)。如果該線程池已滿,發(fā)往該依賴的請(qǐng)求就被立即拒絕,而不是排隊(duì)等候,從而加速失敗判定。
  • 監(jiān)控:Hystrix可以近乎實(shí)時(shí)地監(jiān)控運(yùn)行指標(biāo)和配置變化,例如成功,失敗,超時(shí)以及被拒絕的請(qǐng)求等。
  • 回退機(jī)制:當(dāng)請(qǐng)求失敗,超時(shí),被拒絕,或當(dāng)斷路器打開(kāi)時(shí),執(zhí)行回退邏輯?;赝诉壿嬁捎砷_(kāi)發(fā)人員自行提供,例如返回一個(gè)缺省值。
  • 自我修復(fù):斷路器打開(kāi)一段時(shí)間后,會(huì)自動(dòng)進(jìn)入“半開(kāi)”狀態(tài)。

如果沒(méi)有容錯(cuò)處理,“基礎(chǔ)服務(wù)故障”導(dǎo)致“級(jí)聯(lián)故障”從而形成右邊的雪崩效應(yīng)
Spring Cloud微服務(wù)架構(gòu)簡(jiǎn)介
使用Zuul構(gòu)建微服務(wù)網(wǎng)關(guān)
Zuul是Netflix開(kāi)源的微服務(wù)網(wǎng)關(guān),它可以和Eureka,Ribbon,Hystrix等組件配合使用。Zuul的核心是一系列的過(guò)濾器,這些過(guò)濾器可以完成以下功能。

  • 身份認(rèn)證與安全
  • 動(dòng)態(tài)路由
  • 壓力測(cè)試
  • 負(fù)載分配
  • 靜態(tài)響應(yīng)處理
  • 多區(qū)域彈性

Zuul大部分功能是通過(guò)過(guò)濾器實(shí)現(xiàn)的,如右圖所示。
Spring Cloud微服務(wù)架構(gòu)簡(jiǎ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ù)架構(gòu)簡(jiǎn)介
Spring Cloud服務(wù)治理
注冊(cè)中心監(jiān)控
Spring Cloud微服務(wù)架構(gòu)簡(jiǎn)介
容錯(cuò)處理監(jiān)控
Spring Cloud微服務(wù)架構(gòu)簡(jiǎn)介
微服務(wù)健康檢查
Spring Cloud微服務(wù)架構(gòu)簡(jiǎn)介
微服務(wù)調(diào)用追蹤
Spring Cloud微服務(wù)架構(gòu)簡(jiǎn)介

另外有需要云服務(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)

成都網(wǎng)頁(yè)設(shè)計(jì)公司