亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
總結(jié)
首頁(yè) Java Java基礎(chǔ) Spring Cloud七大元件是什麼

Spring Cloud七大元件是什麼

Apr 25, 2021 pm 05:43 PM
java spring boot spring cloud

Spring Cloud七大元件:1、Eureka元件,描述了服務(wù)如何進(jìn)行註冊(cè),註冊(cè)到哪裡;2、Ribbon元件;3、Feign元件,一個(gè)聲明web服務(wù)客戶端;4、Hystrix元件; 5、Config組件;6、Zuul組件;7、Bus組件。

Spring Cloud七大元件是什麼

本教學(xué)操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。

Spring Cloud全家桶組件

在介紹Spring Cloud 全家桶之前,首先要介紹一下Netflix ,Netflix 是一個(gè)很棒的公司,在Spring Cloud專案中佔(zhàn)著重要的作用,Netflix 公司提供了包括Eureka、Hystrix、Zuul、Archaius等在內(nèi)的許多元件,在微服務(wù)架構(gòu)中至關(guān)重要,Spring在Netflix 的基礎(chǔ)上,封裝了一系列的元件,命名為:Spring Cloud Eureka、Spring Cloud Hystrix、Spring Cloud Zuul等,下邊對(duì)各個(gè)元件進(jìn)行分別得介紹:

(1)Spring Cloud Eureka

#我們使用微服務(wù),微服務(wù)的本質(zhì)還是各種API介面的調(diào)用,那麼我們?cè)觞N產(chǎn)生這些介面、產(chǎn)生了這些介面之後如何進(jìn)行調(diào)用那?如何進(jìn)行管理哪?

答案就是Spring Cloud Eureka,我們可以將自己定義的API 介面註冊(cè)到Spring Cloud Eureka上,Eureka負(fù)責(zé)服務(wù)的註冊(cè)於發(fā)現(xiàn),如果學(xué)習(xí)過(guò)Zookeeper的話,就可以很好的理解,Eureka的角色和Zookeeper的角色差不多,都是服務(wù)的註冊(cè)和發(fā)現(xiàn),構(gòu)成Eureka體系的包括:服務(wù)註冊(cè)中心、服務(wù)提供者、服務(wù)消費(fèi)者。

Spring Cloud七大元件是什麼

上圖中描述了(圖片來(lái)自網(wǎng)路):

1、兩臺(tái)Eureka服務(wù)註冊(cè)中心構(gòu)成的服務(wù)註冊(cè)中心的主從複製叢集;
2、然後服務(wù)提供者向註冊(cè)中心進(jìn)行註冊(cè)、續(xù)約、離線服務(wù)等;
3、服務(wù)消費(fèi)者Eureka註冊(cè)中心拉去服務(wù)清單並維護(hù)在本地(這也是客戶端發(fā)現(xiàn)模式的機(jī)制體現(xiàn)?。?;
4、然後服務(wù)消費(fèi)者根據(jù)從Eureka服務(wù)註冊(cè)中心取得的服務(wù)清單選取一個(gè)服務(wù)提供者進(jìn)行消費(fèi)服務(wù)。

(2)Spring Cloud Ribbon

在上Spring Cloud Eureka描述了服務(wù)如何進(jìn)行註冊(cè),註冊(cè)到哪裡,服務(wù)消費(fèi)者如何取得服務(wù)生產(chǎn)者的服務(wù)訊息,但是Eureka只是維護(hù)了服務(wù)生產(chǎn)者、註冊(cè)中心、服務(wù)消費(fèi)者三者之間的關(guān)係,真正的服務(wù)消費(fèi)者調(diào)用服務(wù)生產(chǎn)者提供的數(shù)據(jù)是透過(guò)Spring Cloud Ribbon來(lái)實(shí)現(xiàn)的。

在(1)中提到了服務(wù)消費(fèi)者是將服務(wù)從註冊(cè)中心獲取服務(wù)生產(chǎn)者的服務(wù)清單並維護(hù)在本地的,這種客戶端發(fā)現(xiàn)模式的方式是服務(wù)消費(fèi)者選擇合適的節(jié)點(diǎn)進(jìn)行存取服務(wù)生產(chǎn)者提供的數(shù)據(jù),這種選擇合適節(jié)點(diǎn)的過(guò)程就是Spring Cloud Ribbon完成的。

Spring Cloud Ribbon客戶端負(fù)載平衡器由此而來(lái)。

(3)Spring Cloud Feign

上述(1)、(2)中我們已經(jīng)使用最簡(jiǎn)單的方式實(shí)現(xiàn)了服務(wù)的註冊(cè)發(fā)現(xiàn)和服務(wù)的調(diào)用操作,如果具體的使用Ribbon呼叫服務(wù)的話,你就可以感受到使用Ribbon的方式還是有一些複雜,因此Spring Cloud Feign應(yīng)運(yùn)而生。

Spring Cloud Feign 是一個(gè)聲明web服務(wù)客戶端,這使得編寫Web服務(wù)客戶端更容易,使用Feign 建立一個(gè)介面並對(duì)它進(jìn)行註解,它具有可插拔的註解支援包括Feign註解與JAX-RS註解,F(xiàn)eign也支援可插拔的編碼器與解碼器,Spring Cloud 增加了對(duì)Spring MVC的註解,Spring Web 預(yù)設(shè)使用了HttpMessageConverters, Spring Cloud 整合Ribbon 和Eureka 提供的負(fù)載平衡的HTTP客戶端Feign 。

簡(jiǎn)單的可以理解為:Spring Cloud Feign 的出現(xiàn)使得Eureka和Ribbon的使用更為簡(jiǎn)單。

(4)Spring Cloud Hystrix

我們?cè)冢?)、(2)、(3)中知道了使用Eureka進(jìn)行服務(wù)的註冊(cè)和發(fā)現(xiàn),使用Ribbon實(shí)作服務(wù)的負(fù)載平衡調(diào)用,也知道了使用Feign可以簡(jiǎn)化我們的編碼。但是,這些還不足以實(shí)現(xiàn)一個(gè)高可用的微服務(wù)架構(gòu)。

例如:當(dāng)有一個(gè)服務(wù)出現(xiàn)了故障,而服務(wù)的呼叫方不知道服務(wù)出現(xiàn)故障,若此時(shí)呼叫放的請(qǐng)求不斷的增加,最後就會(huì)等待故障的依賴方對(duì)應(yīng)形成任務(wù)的積壓,最終導(dǎo)致自身服務(wù)的癱瘓。

Spring Cloud Hystrix正是為了解決這種情況的,防止對(duì)某一故障服務(wù)持續(xù)進(jìn)行存取。 Hystrix的意思是:斷路器,斷路器本身是一種開(kāi)關(guān)裝置,用於我們家庭的電路保護(hù),防止電流的過(guò)載,當(dāng)線路中有電器發(fā)生短路的時(shí)候,斷路器能夠及時(shí)切換故障的電器,防止發(fā)生過(guò)載、發(fā)熱甚至起火等嚴(yán)重後果。

(5)Spring Cloud Config

對(duì)於微服務(wù)還不是很多的時(shí)候,各種服務(wù)的配置管理起來(lái)還相對(duì)簡(jiǎn)單,但是當(dāng)成百上千的微服務(wù)節(jié)點(diǎn)起來(lái)的時(shí)候,服務(wù)配置的管理變得會(huì)變得複雜。

分散式系統(tǒng)中,由於服務(wù)數(shù)量龐大,為了方便服務(wù)設(shè)定檔統(tǒng)一管理,即時(shí)更新,所以需要分散式設(shè)定中心元件。在Spring Cloud中,有分散式配置中心元件Spring Cloud Config ,它支援配置服務(wù)放在配置服務(wù)的記憶體中(即本地),也支援放在遠(yuǎn)端Git倉(cāng)庫(kù)。在Cpring Cloud Config 元件中,分成兩個(gè)角色,一個(gè)是Config Server,二是Config Client。

Config Server用於配置屬性的存儲(chǔ),儲(chǔ)存的位置可以為Git倉(cāng)庫(kù)、SVN倉(cāng)庫(kù)、本機(jī)檔案等,Config Client用於服務(wù)屬性的讀取。

Spring Cloud七大元件是什麼

(6)Spring Cloud Zuul

#我們使用Spring Cloud Netflix中的Eureka實(shí)現(xiàn)了服務(wù)註冊(cè)中心以及服務(wù)註冊(cè)與發(fā)現(xiàn);而服務(wù)間透過(guò)Ribbon或Feign實(shí)現(xiàn)服務(wù)的消費(fèi)以及平衡負(fù)載;透過(guò)Spring Cloud Config實(shí)現(xiàn)了應(yīng)用多環(huán)境的外部化配置以及版本管理。為了讓服務(wù)群集更為健壯,使用Hystrix的融斷機(jī)制來(lái)避免在微服務(wù)架構(gòu)中個(gè)別服務(wù)出現(xiàn)異常時(shí)所造成的故障蔓延。

Spring Cloud七大元件是什麼

先來(lái)說(shuō)說(shuō)這樣架構(gòu)需要做的一些事兒以及存在的不足:

1、首先,破壞了服務(wù)無(wú)狀態(tài)特點(diǎn)。為了確保對(duì)外服務(wù)的安全性,我們需要實(shí)現(xiàn)對(duì)服務(wù)存取的權(quán)限控制,而開(kāi)放服務(wù)的權(quán)限控制機(jī)制將會(huì)貫穿並污染整個(gè)開(kāi)放服務(wù)的業(yè)務(wù)邏輯,這會(huì)帶來(lái)的最直接問(wèn)題是,破壞了服務(wù)叢集中REST API無(wú)狀態(tài)的特性。從具體開(kāi)發(fā)和測(cè)試的角度來(lái)說(shuō),在工作中除了要考慮實(shí)際的業(yè)務(wù)邏輯之外,還需要額外可續(xù)對(duì)介面存取的控制處理。

2、其次,無(wú)法直接重複使用既有介面。當(dāng)我們需要對(duì)一個(gè)即有的集群內(nèi)存取接口,實(shí)現(xiàn)外部服務(wù)訪問(wèn)時(shí),我們不得不透過(guò)在原有接口上增加校驗(yàn)邏輯,或增加一個(gè)代理調(diào)用來(lái)實(shí)現(xiàn)權(quán)限控制,無(wú)法直接復(fù)用原有的接口。
面對(duì)類似上面的問(wèn)題,我們要如何解決呢?以下進(jìn)入本文的正題:服務(wù)網(wǎng)關(guān)!

為了解決上面這些問(wèn)題,我們需要將權(quán)限控制這樣的東西從我們的服務(wù)單元中抽離出去,而最適合這些邏輯的地方就是處?kù)秾?duì)外訪問(wèn)最前端的地方,我們需要一個(gè)更強(qiáng)大一些的平衡負(fù)載器,它就是本文將來(lái)介紹的:服務(wù)閘道。

服務(wù)閘道是微服務(wù)架構(gòu)中一個(gè)不可或缺的部分。透過(guò)服務(wù)閘道統(tǒng)一向外系統(tǒng)提供REST API的過(guò)程中,除了具備服務(wù)路由、平衡負(fù)載功能之外,它還具備了權(quán)限控制等功能。 Spring Cloud Netflix中的Zuul就擔(dān)任了這樣的一個(gè)角色,為微服務(wù)架構(gòu)提供了前門保護(hù)的作用,同時(shí)將權(quán)限控制這些較重的非業(yè)務(wù)邏輯內(nèi)容遷移到服務(wù)路由層面,使得服務(wù)集群主體能夠具備更高的可重複使用性和可測(cè)試性。

(7)Spring Cloud Bus

在(5)Spring Cloud Config中,我們知道的設(shè)定檔可以透過(guò)Config Server儲(chǔ)存到Git等地方,透過(guò)Config Client進(jìn)行讀取,但是我們的設(shè)定檔不可能是一直不變的,當(dāng)我們的設(shè)定檔放生變化的時(shí)候如何進(jìn)行更新哪?

一種最簡(jiǎn)單的方式重新一下Config Client進(jìn)行重新獲取,但Spring Cloud絕對(duì)不會(huì)讓你這樣做的,Spring Cloud Bus正是提供一種操作使得我們?cè)诓魂P(guān)閉服務(wù)的情況下更新我們的配置。

Spring Cloud Bus官方意義:訊息總線。

當(dāng)然動(dòng)態(tài)更新服務(wù)設(shè)定只是訊息匯流排的一個(gè)用處,還有很多其他用途。

Spring Cloud七大元件是什麼

總結(jié)

Spring Cloud 的元件還不止這些,透過(guò)上邊的口水話的介紹,應(yīng)該可以大致有一定的了解,但是每一個(gè)組件的功能遠(yuǎn)不止上述介紹的那些,每一個(gè)組件還有很多其他的功能點(diǎn),這裡的介紹希望能夠帶大家入個(gè)門,不要對(duì)微服務(wù)這個(gè)這麼大的概念有所畏懼。

更多程式相關(guān)知識(shí),請(qǐng)?jiān)煸L:程式設(shè)計(jì)影片! !

以上是Spring Cloud七大元件是什麼的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
VSCODE設(shè)置。 JSON位置 VSCODE設(shè)置。 JSON位置 Aug 01, 2025 am 06:12 AM

settings.json文件位於用戶級(jí)或工作區(qū)級(jí)路徑,用於自定義VSCode設(shè)置。 1.用戶級(jí)路徑:Windows為C:\Users\\AppData\Roaming\Code\User\settings.json,macOS為/Users//Library/ApplicationSupport/Code/User/settings.json,Linux為/home//.config/Code/User/settings.json;2.工作區(qū)級(jí)路徑:項(xiàng)目根目錄下的.vscode/settings

Python Itertools組合示例 Python Itertools組合示例 Jul 31, 2025 am 09:53 AM

itertools.combinations用於生成從可迭代對(duì)像中選取指定數(shù)量元素的所有不重複組合(順序無(wú)關(guān)),其用法包括:1.從列表中選2個(gè)元素組合,如('A','B')、('A','C')等,避免重複順序;2.對(duì)字符串取3個(gè)字符組合,如"abc"、"abd",適用於子序列生成;3.求兩數(shù)之和等於目標(biāo)值的組合,如1 5=6,簡(jiǎn)化雙重循環(huán)邏輯;組合與排列的區(qū)別在於順序是否重要,combinations視AB與BA為相同,而permutations視為不同;

如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動(dòng)提交模式,再執(zhí)行多個(gè)操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開(kāi)始事務(wù);2.執(zhí)行多個(gè)SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時(shí)應(yīng)使用try-with-resources管理資源,妥善處理異常並關(guān)閉連接,避免連接洩漏;此外建議使用連接池、設(shè)置保存點(diǎn)實(shí)現(xiàn)部分回滾,並保持事務(wù)盡可能短以提升性能。

在Java的掌握依賴注入春季和Guice 在Java的掌握依賴注入春季和Guice Aug 01, 2025 am 05:53 AM

依賴性(di)IsadesignpatternwhereObjectsReceivedenciesenciesExtern上,推廣looseSecouplingAndEaseerTestingThroughConstructor,setter,orfieldInjection.2.springfraMefringframeWorkSannotationsLikeLikeLike@component@component,@component,@service,@autowiredwithjava-service和@autowiredwithjava-ligatiredwithjava-lase-lightike

Python Pytest夾具示例 Python Pytest夾具示例 Jul 31, 2025 am 09:35 AM

fixture是用於為測(cè)試提供預(yù)設(shè)環(huán)境或數(shù)據(jù)的函數(shù),1.使用@pytest.fixture裝飾器定義fixture;2.在測(cè)試函數(shù)中以參數(shù)形式註入fixture;3.yield之前執(zhí)行setup,之後執(zhí)行teardown;4.通過(guò)scope參數(shù)控製作用域,如function、module等;5.將共用fixture放在conftest.py中實(shí)現(xiàn)跨文件共享,從而提升測(cè)試的可維護(hù)性和復(fù)用性。

故障排除常見(jiàn)的java`ofmemoryError`場(chǎng)景'' 故障排除常見(jiàn)的java`ofmemoryError`場(chǎng)景'' Jul 31, 2025 am 09:07 AM

java.lang.OutOfMemoryError:Javaheapspace表示堆內(nèi)存不足,需檢查大對(duì)象處理、內(nèi)存洩漏及堆設(shè)置,通過(guò)堆轉(zhuǎn)儲(chǔ)分析工具定位並優(yōu)化代碼;2.Metaspace錯(cuò)誤因類元數(shù)據(jù)過(guò)多,常見(jiàn)於動(dòng)態(tài)類生成或熱部署,應(yīng)限制MaxMetaspaceSize並優(yōu)化類加載;3.Unabletocreatenewnativethread因係統(tǒng)線程資源耗盡,需檢查線程數(shù)限制、使用線程池、調(diào)整棧大??;4.GCoverheadlimitexceeded指GC頻繁但回收少,應(yīng)分析GC日誌,優(yōu)化

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過(guò)LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時(shí)間;3.使用of()方法創(chuàng)建特定日期時(shí)間;4.利用plus/minus方法不可變地增減時(shí)間;5.使用ZonedDateTime和ZoneId處理時(shí)區(qū);6.通過(guò)DateTimeFormatter格式化和解析日期字符串;7.必要時(shí)通過(guò)Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

Java開(kāi)發(fā)人員的高級(jí)春季數(shù)據(jù)JPA Java開(kāi)發(fā)人員的高級(jí)春季數(shù)據(jù)JPA Jul 31, 2025 am 07:54 AM

掌握AdvancedSpringDataJPA的核心在於根據(jù)場(chǎng)景選擇合適的數(shù)據(jù)訪問(wèn)方式,並確保性能與可維護(hù)性。 1.自定義查詢中,@Query支持JPQL和原生SQL,適用於復(fù)雜關(guān)聯(lián)與聚合操作,返回結(jié)果建議通過(guò)DTO或接口投影(Projection)進(jìn)行類型安全映射,避免使用Object[]帶來(lái)的維護(hù)難題。 2.分頁(yè)操作需結(jié)合Pageable實(shí)現(xiàn),但要警惕N 1查詢問(wèn)題,可通過(guò)JOINFETCH預(yù)加載關(guān)聯(lián)數(shù)據(jù)或使用投影減少實(shí)體加載,從而提升性能。 3.對(duì)於多條件動(dòng)態(tài)查詢,應(yīng)使用JpaSpecifica

See all articles