一張圖了解SpringCloud微服務(wù)架構(gòu)-創(chuàng)新互聯(lián)

一張圖了解Spring Cloud微服務(wù)架構(gòu)

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鹿泉免費(fèi)建站歡迎大家使用!

Spring Cloud作為當(dāng)下主流的微服務(wù)框架,可以讓我們更簡單快捷地實(shí)現(xiàn)微服務(wù)架構(gòu)。Spring Cloud并沒有重復(fù)制造輪子,它只是將目前各家公司開發(fā)的比較成熟、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組合起來,通過Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理,最終給開發(fā)者留出了一套簡單易懂、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。Spring Cloud中各個組件在微服務(wù)架構(gòu)中扮演的角色如下圖所示,黑線表示注釋說明,藍(lán)線由A指向B,表示B從A處獲取服務(wù)。

一張圖了解Spring Cloud微服務(wù)架構(gòu)

由上圖所示微服務(wù)架構(gòu)大致由上圖的邏輯結(jié)構(gòu)組成,其包括各種微服務(wù)、注冊發(fā)現(xiàn)、服務(wù)網(wǎng)關(guān)、熔斷器、統(tǒng)一配置、跟蹤服務(wù)等。下面說說Spring Cloud中的組件分別充當(dāng)其中的什么角色。

Fegin(接口調(diào)用):微服務(wù)之間通過Rest接口通訊,Spring Cloud提供Feign框架來支持Rest的調(diào)用,F(xiàn)eign使得不同進(jìn)程的Rest接口調(diào)用得以用優(yōu)雅的方式進(jìn)行,這種優(yōu)雅表現(xiàn)得就像同一個進(jìn)程調(diào)用一樣。

Netflix eureka(注冊發(fā)現(xiàn)):微服務(wù)模式下,一個大的Web應(yīng)用通常都被拆分為很多比較小的Web應(yīng)用(服務(wù)),這個時候就需要有一個地方保存這些服務(wù)的相關(guān)信息,才能讓各個小的應(yīng)用彼此知道對方,這個時候就需要在注冊中心進(jìn)行注冊。每個應(yīng)用啟動時向配置的注冊中心注冊自己的信息(IP地址,端口號, 服務(wù)名稱等信息),注冊中心將他們保存起來,服務(wù)間相互調(diào)用的時候,通過服務(wù)名稱就可以到注冊中心找到對應(yīng)的服務(wù)信息,從而進(jìn)行通訊。注冊與發(fā)現(xiàn)服務(wù)為微服務(wù)之間的調(diào)用帶來了方便,解決了硬編碼的問題。服務(wù)間只通過對方的服務(wù)ID,而無需知道其IP和端口即可以獲取對方方服務(wù)。

Ribbon(負(fù)載均衡):Ribbon是Netflix發(fā)布的負(fù)載均衡器,它有助于控制HTTP和TCP客戶端的行為。為Ribbon,配置服務(wù)提供者的地址列表后,Ribbon就可基于某種負(fù)載均衡算法,自動地幫助服務(wù)消費(fèi)者去請求。Ribbon默認(rèn)為我們提供了很多的負(fù)載均衡算法,例如輪詢、隨機(jī)等。當(dāng)然,我們也可為Ribbon實(shí)現(xiàn)自定義的負(fù)載均衡算法。在Spring Cloud中,當(dāng)Ribbon與Eureka配合使用時,Ribbon可自動從EurekaServer獲取服務(wù)提供者的地址列表,并基于負(fù)載均衡算法,請求其中一個服務(wù)提供者的實(shí)例(為了服務(wù)的可靠性,一個微服務(wù)可能部署多個實(shí)例)。

Hystrix(熔斷器):當(dāng)服務(wù)提供者響應(yīng)非常緩慢,那么消費(fèi)者對提供者的請求就會被強(qiáng)制等待,直到提供者響應(yīng)或超時。在高負(fù)載場景下,如果不做任何處理,此類問題可能會導(dǎo)致服務(wù)消費(fèi)者的資源耗竭甚至整個系統(tǒng)的崩潰(雪崩效應(yīng))。Hystrix正是為了防止此類問題發(fā)生。Hystrix是由Netflix開源的一個延遲和容錯庫,用于隔離訪問遠(yuǎn)程系統(tǒng)、服務(wù)或者第三方庫,防止級聯(lián)失敗,從而提升系統(tǒng)的可用性與容錯性。Hystrix主要通過以下幾點(diǎn)實(shí)現(xiàn)延遲和容錯。

  • 包裹請求:使用HystrixCommand(或HystrixObservableCommand)包裹對依賴的調(diào)用邏輯,每個命令在獨(dú)立線程中執(zhí)行。這使用了設(shè)計模式中的“命令模式”。

  • 跳閘機(jī)制:當(dāng)某服務(wù)的錯誤率超過一定閾值時,Hystrix可以自動或者手動跳閘,停止請求該服務(wù)一段時間。

  • 資源隔離:Hystrix為每個依賴都維護(hù)了一個小型的線程池(或者信號量)。如果該線程池已滿,發(fā)往該依賴的請求就被立即拒絕,而不是排隊(duì)等候,從而加速失敗判定。

  • 監(jiān)控:Hystrix可以近乎實(shí)時地監(jiān)控運(yùn)行指標(biāo)和配置的變化,例如成功、失敗、超時和被拒絕的請求等。

  • 回退機(jī)制:當(dāng)請求失敗、超時、被拒絕,或當(dāng)斷路器打開時,執(zhí)行回退邏輯。回退邏輯可由開發(fā)人員指定。

Zuul(微服務(wù)網(wǎng)關(guān)):不同的微服務(wù)一般會有不同的網(wǎng)絡(luò)地址,而外部客戶端可能需要調(diào)用多個服務(wù)的接口才能完成一個業(yè)務(wù)需求。例如一個電影購票的手機(jī)APP,可能調(diào)用多個微服務(wù)的接口才能完成一次購票的業(yè)務(wù)流程,如果讓客戶端直接與各個微服務(wù)通信,會有以下的問題:

  • 客戶端會多次請求不同的微服務(wù),增加了客戶端的復(fù)雜性。

  • 存在跨域請求,在一定場景下處理相對復(fù)雜。

  • 認(rèn)證復(fù)雜,每個服務(wù)都需要獨(dú)立認(rèn)證。

  • 難以重構(gòu),隨著項(xiàng)目的迭代,可能需要重新劃分微服務(wù)。例如,可能將多個服務(wù)合并成一個或者將一個服務(wù)拆分成多個。如果客戶端直接與微服務(wù)通信,那么重構(gòu)將很難實(shí)施。

  • 某些微服務(wù)可能使用了對防火墻/瀏覽器不友好的協(xié)議,直接訪問時會有一定的困難。

以上問題可借助微服務(wù)網(wǎng)關(guān)解決。微服務(wù)網(wǎng)關(guān)是介于客戶端和服務(wù)器端之間的中間層,所有的外部請求都會先經(jīng)過微服務(wù)網(wǎng)關(guān)。使用微服務(wù)網(wǎng)關(guān)后,微服務(wù)網(wǎng)關(guān)將封裝應(yīng)用程序的內(nèi)部結(jié)構(gòu),客戶端只用跟網(wǎng)關(guān)交互,而無須直接調(diào)用特定微服務(wù)的接口。這樣,開發(fā)就可以得到簡化。不僅如此,使用微服務(wù)網(wǎng)關(guān)還有以下優(yōu)點(diǎn):

  • 易于監(jiān)控??稍谖⒎?wù)網(wǎng)關(guān)收集監(jiān)控數(shù)據(jù)并將其推送到外部系統(tǒng)進(jìn)行分析。

  • 易于認(rèn)證??稍谖⒎?wù)網(wǎng)關(guān)上進(jìn)行認(rèn)證,然后再將請求轉(zhuǎn)發(fā)到后端的微服務(wù),而無須在每個微服務(wù)中進(jìn)行認(rèn)證。

  • 減少了客戶端與各個微服務(wù)之間的交互次數(shù)。

Spring Cloud Config( 統(tǒng)一配置服務(wù)):對于傳統(tǒng)的單體應(yīng)用,常使用配置文件管理所有配置。例如一個SpringBoot開發(fā)的單體應(yīng)用,可將配置內(nèi)容放在application.yml文件中。如果需要切換環(huán)境,可設(shè)置多個Profile,并在啟動應(yīng)用時指定spring.profiles.active={profile}。然而,在微服務(wù)架構(gòu)中,微服務(wù)的配置管理一般有以下需求:

  • 集中管理配置。一個使用微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)可能會包含成百上千個微服務(wù),因此集中管理配置是非常有必要的。

  • 不同環(huán)境,不同配置。例如,數(shù)據(jù)源配置在不同的環(huán)境(開發(fā)、測試、預(yù)發(fā)布、生產(chǎn)等)中是不同的。

  • 運(yùn)行期間可動態(tài)調(diào)整。例如,可根據(jù)各個微服務(wù)的負(fù)載情況,動態(tài)調(diào)整數(shù)據(jù)源連接池大小或熔斷閾值,并且在調(diào)整配置時不停止微服務(wù)。

  • 配置修改后可自動更新。如配置內(nèi)容發(fā)生變化,微服務(wù)能夠自動更新配置。綜上所述,對于微服務(wù)架構(gòu)而言,一個通用的配置管理機(jī)制是必不可少的,常見做法是使用配置服務(wù)器管理配置。Spring Cloud Bus利用Git或SVN等管理配置、采用Kafka或者RabbitMQ等消息總線通知所有應(yīng)用,從而實(shí)現(xiàn)配置的自動更新并且刷新所有微服務(wù)實(shí)例的配置。

Sleuth+ZipKin(跟蹤服務(wù)):Sleuth和Zipkin結(jié)合使用可以通過圖形化的界面查看微服務(wù)請求的延遲情況以及各個微服務(wù)的依賴情況。需要注意的是Spring Boot 2及以上不在支持Zipkin的自定義,需要到官方網(wǎng)站下載ZipKin相關(guān)的jar包。另外需要提一點(diǎn)的是Spring Boot Actuator,提供了很多監(jiān)控端點(diǎn)如/actuator/info、/actuator/health、/acutator/refresh等,可以查看微服務(wù)的信息、健康狀況、刷新配置等。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。

本文標(biāo)題:一張圖了解SpringCloud微服務(wù)架構(gòu)-創(chuàng)新互聯(lián)
路徑分享:http://bm7419.com/article26/diojjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃靜態(tài)網(wǎng)站、動態(tài)網(wǎng)站、ChatGPT、小程序開發(fā)、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化