Java微服務面試題

1、您對微服務有何瞭解?

微服務,又稱微服務 架 構,是一種架構風格,它將應用程序構建爲以業務領域爲模型的小型自治服務集合 。

通俗地說,你必須看到蜜蜂如何通過對齊六角形蠟細胞來構建它們的蜂窩狀物。他們最初從使用各種材料的小部分開始,並繼續從中構建一個大型蜂箱。這些細胞形成圖案,產生堅固的結構,將蜂窩的特定部分固定在一起。這裏,每個細胞獨立於另一個細胞,但它也與其他細胞相關。這意味着對一個細胞的損害不會損害其他細胞,因此,蜜蜂可以在不影響完整蜂箱的情況下重建這些細胞。

圖 1:微服務的蜂窩表示 – 微服務訪談問題

請參考上圖。這裏,每個六邊形形狀代表單獨的服務組件。與蜜蜂的工作類似,每個敏捷團隊都使用可用的框架和所選的技術堆棧構建單獨的服務組件。就像在蜂箱中一樣,每個服務組件形成一個強大的微服務架構,以提供更好的可擴展性。此外,敏捷團隊可以單獨處理每個服務組件的問題,而對整個應用程序沒有影響或影響最小。

2、微服務架構有哪些優勢?

圖 2:微服務的 優點 – 微服務訪談問題

· 獨立開發 – 所有微服務都可以根據各自的功能輕鬆開發

· 獨立部署 – 基於其服務,可以在任何應用程序中單獨部署它們

· 故障隔離 – 即使應用程序的一項服務不起作用,系統仍可繼續運行

· 混合技術堆棧 – 可以使用不同的語言和技術來構建同一應用程序的不同服務

· 粒度縮放 – 單個組件可根據需要進行縮放,無需將所有組件縮放在一起

3、微服務有哪些特點?

圖 3:微服務的 特點 – 微服務訪談問題

· 解耦 – 系統內的服務很大程度上是分離的。因此,整個應用程序可以輕鬆構建,更改和擴展

· 組件化 – 微服務被視爲可以輕鬆更換和升級的獨立組件

· 業務能力 – 微服務非常簡單,專注於單一功能

· 自治 – 開發人員和團隊可以彼此獨立工作,從而提高速度

· 持續交付 – 通過軟件創建,測試和批准的系統自動化,允許頻繁發佈軟件

· 責任 – 微服務不關注應用程序作爲項目。相反,他們將應用程序視爲他們負責的產品

· 分散治理 – 重點是使用正確的工具來做正確的工作。這意味着沒有標準化模式或任何技術模式。開發人員可以自由選擇最有用的工具來解決他們的問題

· 敏捷 – 微服務支持敏捷開發。任何新功能都可以快速開發並再次丟棄

4、設計微服務的最佳實踐是什麼?

以下是設計微服務的最佳實踐:

圖 4:設計微服務的最佳實踐 – 微服務訪談問題

5、微服務架構如何運作?

微服務架構具有以下組件:

圖 5:微服務 架構 – 微服務面試問題

· 客戶端 – 來自不同設備的不同用戶發送請求。

· 身份提供商 – 驗證用戶或客戶身份並頒發安全令牌。

· API 網關 – 處理客戶端請求。

· 靜態內容 – 容納系統的所有內容。

· 管理 – 在節點上平衡服務並識別故障。

· 服務發現 – 查找微服務之間通信路徑的指南。

· 內容交付網絡 – 代理服務器及其數據中心的分佈式網絡。

· 遠程服務 – 啓用駐留在 IT 設備網絡上的遠程訪問信息。

6、微服務架構的優缺點是什麼?

7、單片,SOA 和微服務架構有什麼區別?

圖 6: 單片 SOA 和微服務之間的比較 – 微服務訪談問題

· 單片架構類似於大容器,其中應用程序的所有軟件組件組裝在一起並緊密封裝。

· 一個面向服務的架構是一種相互通信服務的集合。通信可以涉及簡單的數據傳遞,也可以涉及兩個或多個協調某些活動的服務。

· 微服務架構是一種架構風格,它將應用程序構建爲以業務域爲模型的小型自治服務集合。

8、在使用微服務架構時,您面臨哪些挑戰?

開發一些較小的微服務聽起來很容易,但開發它們時經常遇到的挑戰如下。

· 自動化組件:難以自動化,因爲有許多較小的組件。因此,對於每個組件,我們必須遵循 Build,Deploy 和 Monitor 的各個階段。

· 易感性:將大量組件維護在一起變得難以部署,維護,監控和識別問題。它需要在所有組件周圍具有很好的感知能力。

· 配置管理:有時在各種環境中維護組件的配置變得困難。

· 調試:很難找到錯誤的每一項服務。維護集中式日誌記錄和儀表板以調試問題至關重要。

9、SOA 和微服務架構之間的主要區別是什麼?

SOA 和微服務之間的主要區別如下:

10、微服務有什麼特點?

您可以列出微服務的特徵,如下所示:

圖 7:微服務的特徵 – 微服務訪談問題

11、什麼是領域驅動設計?

圖 8: DDD 原理 – 微服務面試問題

12、爲什麼需要域驅動設計(DDD)?

圖 9:我們需要 DDD 的因素 – 微服務面試問題

13、什麼是無所不在的語言?

如果您必須定義泛在語言(UL),那麼它是特定域的開發人員和用戶使用的通用語言,通過該語言可以輕鬆解釋域。

無處不在的語言必須非常清晰,以便它將所有團隊成員放在同一頁面上,並以機器可以理解的方式進行翻譯。

14、什麼是凝聚力?

模塊內部元素所屬的程度被認爲是凝聚力。

15、什麼是耦合?

組件之間依賴關係強度的度量被認爲是耦合。一個好的設計總是被認爲具有高內聚力和低耦合性。

16、什麼是 REST / RESTful 以及它的用途是什麼?

Representational State Transfer(REST)/ RESTful Web 服務是一種幫助計算機系統通過 Internet 進行通信的架構風格。這使得微服務更容易理解和實現。

微服務可以使用或不使用 RESTful API 實現,但使用 RESTful API 構建鬆散耦合的微服務總是更容易。

17、你對 Spring Boot 有什麼瞭解?

事實上,隨着新功能的增加,彈簧變得越來越複雜。如果必須啓動新的 spring 項目,則必須添加構建路徑或添加 maven 依賴項,配置應用程序服務器,添加 spring配置。所以一切都必須從頭開始。

Spring Boot 是解決這個問題的方法。使用 spring boot 可以避免所有樣板代碼和配置。因此,基本上認爲自己就好像你正在烘烤蛋糕一樣,春天就像製作蛋糕所需的成分一樣,彈簧靴就是你手中的完整蛋糕。

圖 10: Spring Boot 的因素 – 微服務面試問題

18、什麼是 Spring 引導的執行器?

Spring Boot 執行程序提供了 restful Web 服務,以訪問生產環境中運行應用程序的當前狀態。在執行器的幫助下,您可以檢查各種指標並監控您的應用程序。

19、什麼是 Spring Cloud?

根據 Spring Cloud 的官方網站,Spring Cloud 爲開發人員提供了快速構建分佈式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智能路由,領導選舉,分佈式會話,集羣狀態)。

20、Spring Cloud 解決了哪些問題?

在使用 Spring Boot 開發分佈式微服務時,我們面臨的問題很少由 Spring Cloud解決。

· 與分佈式系統相關的複雜性 – 包括網絡問題,延遲開銷,帶寬問題,安全問題。

· 處理服務發現的能力 – 服務發現允許集羣中的進程和服務找到彼此並進行通信。

· 解決冗餘問題 – 冗餘問題經常發生在分佈式系統中。

· 負載平衡 – 改進跨多個計算資源(例如計算機集羣,網絡鏈接,中央處理單元)的工作負載分佈。

· 減少性能問題 – 減少因各種操作開銷導致的性能問題。

21、在 Spring MVC 應用程序中使用 WebMvcTest 註釋有什麼用處?

在測試目標只關注 Spring MVC 組件的情況下,WebMvcTest 註釋用於單元測試Spring MVC 應用程序。在上面顯示的快照中,我們只想啓動 ToTestController。執行此單元測試時,不會啓動所有其他控制器和映射。

22、你能否給出關於休息和微服務的要點?

雖然您可以通過多種方式實現微服務,但 REST over HTTP 是實現微服務的一種方式。REST 還可用於其他應用程序,如 Web 應用程序,API 設計和 MVC 應用程序,以提供業務數據。

微服務是一種體系結構,其中系統的所有組件都被放入單獨的組件中,這些組件可以單獨構建,部署和擴展。微服務的某些原則和最佳實踐有助於構建彈性應用程序。

簡而言之,您可以說 REST 是構建微服務的媒介。

23、什麼是不同類型的微服務測試?

在使用微服務時,由於有多個微服務協同工作,測試變得非常複雜。因此,測試分爲不同的級別。

· 在底層,我們有面向技術的測試,如單元測試和性能測試。這些是完全自動化的。

· 在中間層面,我們進行了諸如壓力測試和可用性測試之類的探索性測試。

· 在頂層, 我們的 驗收測試數量很少。這些驗收測試有助於利益相關者理解和驗證軟件功能。

24、您對 Distributed Transaction 有何瞭解?

分佈式事務是指單個事件導致兩個或多個不能以原子方式提交的單獨數據源的突變的任何情況。在微服務的世界中,它變得更加複雜,因爲每個服務都是一個工作單元,並且大多數時候多個服務必須協同工作才能使業務成功。

25、什麼是 Idempotence 以及它在哪裏使用?

冪等性是能夠以這樣的方式做兩次事情的特性,即最終結果將保持不變,即好像它只做了一次。

用法:在遠程服務或數據源中使用 Idempotence,這樣當它多次接收指令時,它只處理指令一次。

26、什麼是有界上下文?

有界上下文是域驅動設計的核心模式。DDD 戰略設計部門的重點是處理大型模型和團隊。DDD 通過將大型模型劃分爲不同的有界上下文並明確其相互關係來處理大型模型。

27、什麼是雙因素身份驗證?

雙因素身份驗證爲帳戶登錄過程啓用第二級身份驗證。

圖 11: 雙因素認證的表示 – 微服務訪談問題

因此,假設用戶必須只輸入用戶名和密碼,那麼這被認爲是單因素身份驗證。

28、雙因素身份驗證的憑據類型有哪些?

這三種憑證是:

圖 12: 雙因素認證的證書類型 – 微服務面試問題

29、什麼是客戶證書?

客戶端系統用於向遠程服務器發出經過身份驗證的請求的一種數字證書稱爲客戶端證書。客戶端證書在許多相互認證設計中起着非常重要的作用,爲請求者的身份提供了強有力的保證。

30、PACT 在微服務架構中的用途是什麼?

PACT 是一個開源工具,允許測試服務提供者和消費者之間的交互,與合同隔離,從而提高微服務集成的可靠性。

微服務中的用法

· 用於在微服務中實現消費者驅動的合同。

· 測試微服務的消費者和提供者之間的消費者驅動的合同。

查看即將到來的批次

31、什麼是 OAuth?

OAuth 代表開放授權協議。這允許通過在 HTTP 服務上啓用客戶端應用程序(例如第三方提供商 Facebook,GitHub 等)來訪問資源所有者的資源。因此,您可以在不使用其憑據的情況下與另一個站點共享存儲在一個站點上的資源。

32、康威定律是什麼?

“任 何 設 計 系 統 的 組 織 ( 廣 泛 定 義 ) 都 將 產 生 一 種 設 計 , 其 結 構 是 組 織 通 信 結 構的 副 本 。” – Mel Conway

圖 13: Conway 定律的表示 – 微服務訪談問題

該法律基本上試圖傳達這樣一個事實:爲了使軟件模塊起作用,整個團隊應該進行良好的溝通。因此,系統的結構反映了產生它的組織的社會邊界。

33、合同測試你懂什麼?

根據 Martin Flower 的說法,合同測試是在外部服務邊界進行的測試,用於驗證其是否符合消費服務預期的合同。

此外,合同測試不會深入測試服務的行爲。更確切地說,它測試該服務調用的輸入&輸出包含所需的屬性和所述響應延遲,吞吐量是允許的限度內。

34、什麼是端到端微服務測試?

端到端測試驗證了工作流中的每個流程都正常運行。這可確保系統作爲一個整體協同工作並滿足所有要求。

通俗地說,你可以說端到端測試是一種測試,在特定時期後測試所有東西。

圖 14:測試層次 – 微服務面試問題

35、Container 在微服務中的用途是什麼?

容器是管理基於微服務的應用程序以便單獨開發和部署它們的好方法。您可以將微服務封裝在容器映像及其依賴項中,然後可以使用它來滾動按需實例的微服務,而無需任何額外的工作。

圖 15: 容器的表示及其在微服務中的使用方式 – 微服務訪談問題

36、什麼是微服務架構中的 DRY?

DRY 代表不要重複自己。它基本上促進了重用代碼的概念。這導致開發和共享庫,這反過來導致緊密耦合。

37、什麼是消費者驅動的合同(CDC)?

這基本上是用於開發微服務的模式,以便它們可以被外部系統使用。當我們處理微服務時,有一個特定的提供者構建它,並且有一個或多個使用微服務的消費者。

通常,提供程序在 XML 文檔中指定接口。但在消費者驅動的合同中,每個服務消費者都傳達了提供商期望的接口。

38、Web,RESTful API 在微服務中的作用是什麼?

微服務架構基於一個概念,其中所有服務應該能夠彼此交互以構建業務功能。因此,要實現這一點,每個微服務必須具有接口。這使得 Web API 成爲微服務的一個非常重要的推動者。RESTful API 基於 Web 的開放網絡原則,爲構建微服務架構的各個組件之間的接口提供了最合理的模型。

39、您對微服務架構中的語義監控有何瞭解?

語義監控,也稱爲 綜合監控, 將自動化測試與監控應用程序相結合,以檢測業務失敗因素。

40、我們如何進行跨功能測試?

跨功能測試是對非功能性需求的驗證,即那些無法像普通功能那樣實現的需求。

41、我們如何在測試中消除非決定論?

非確定性測試(NDT)基本上是不可靠的測試。所以,有時可能會發生它們通過,顯然有時它們也可能會失敗。當它們失敗時,它們會重新運行通過。

從測試中刪除非確定性的一些方法如下:

1、 隔離

2、 異步

3、 遠程服務

4、 隔離

5、 時間

6、 資源泄漏

42、Mock 或 Stub 有什麼區別?

存根

· 一個有助於運行測試的虛擬對象。

· 在某些可以硬編碼的條件下提供固定行爲。

· 永遠不會測試存根的任何其他行爲。

例如,對於空堆棧,您可以創建一個只爲 empty()方法 返回 true 的存根。因此,這並不關心堆棧中是否存在元素。

嘲笑

· 一個虛擬對象,其中最初設置了某些屬性。

· 此對象的行爲取決於 set 屬性。

· 也可以測試對象的行爲。

例如,對於 Customer 對象,您可以通過設置名稱和年齡來模擬它。您可以將 age設置爲 12,然後測試 isAdult()方法,該方法將在年齡大於 18 時返回 true。因此,您的 Mock Customer 對象適用於指定的條件。

43、您對 Mike Cohn 的測試金字塔瞭解多少?

Mike Cohn 提供了一個名爲 Test Pyramid 的模型。這描述了軟件開發所需的自動化測試類型。

圖 16: Mike Cohn 的測試金字塔 – 微服務面試問題

根據金字塔,第一層的測試數量應該最高。在服務層,測試次數應小於單元測試級別,但應大於端到端級別。

44、Docker 的目的是什麼?

Docker 提供了一個可用於託管任何應用程序的容器環境。在此,軟件應用程序和支持它的依賴項緊密打包在一起。

因此,這個打包的產品被稱爲 Container,因爲它是由 Docker 完成的,所以它被稱爲 Docker 容器!

45、什麼是金絲雀釋放?

Canary Releasing 是一種降低在生產中引入新軟件版本的風險的技術。這是通過將變更緩慢地推廣到一小部分用戶,然後將其發佈到整個基礎架構,即將其提供給每個人來完成的。

46、什麼是持續集成(CI)?

持續集成(CI)是每次團隊成員提交版本控制更改時自動構建和測試代碼的過程。這鼓勵開發人員通過在每個小任務完成後將更改合併到共享版本控制存儲庫來共享代碼和單元測試。

47、什麼是持續監測?

持續監控深入監控覆蓋範圍,從瀏覽器內前端性能指標,到應用程序性能,再到主機虛擬化基礎架構指標。

48、架構師在微服務架構中的角色是什麼?

微服務架構中的架構師扮演以下角色:

· 決定整個軟件系統的佈局。

· 幫助確定組件的分區。因此,他們確保組件相互粘合,但不緊密耦合。

· 與開發人員共同編寫代碼,瞭解日常生活中面臨的挑戰。

· 爲開發微服務的團隊提供某些工具和技術的建議。

· 提供技術治理,以便技術開發團隊遵循微服務原則。

49、我們可以用微服務創建狀態機嗎?

我們知道擁有自己的數據庫的每個微服務都是一個可獨立部署的程序單元,這反過來又讓我們可以創建一個狀態機。因此,我們可以爲特定的微服務指定不同的狀態和事件。

例如,我們可以定義 Order 微服務。訂單可以具有不同的狀態。Order 狀態的轉換可以是 Order 微服務中的獨立事件。

50、什麼是微服務中的反應性擴展?

Reactive Extensions 也稱爲 Rx。這是一種設計方法,我們通過調用多個服務來收集結果,然後編譯組合響應。這些調用可以是同步或異步,阻塞或非阻塞。Rx是分佈式系統中非常流行的工具,與傳統流程相反。

SpringCloud面試題

1、什麼是 Spring Cloud?

Spring cloud 流應用程序啓動器是基於 Spring Boot 的 Spring 集成應用程序,提供與外部系統的集成。Spring cloud Task,一個生命週期短暫的微服務框架,用於快速構建執行有限數據處理的應用程序。

2、使用 Spring Cloud 有什麼優勢?

使用 Spring Boot 開發分佈式微服務時,我們面臨以下問題

(1)與分佈式系統相關的複雜性-這種開銷包括網絡問題,延遲開銷,帶寬問題,安全問題。

(2)服務發現-服務發現工具管理羣集中的流程和服務如何查找和互相交談。它涉及一個服務目錄,在該目錄中註冊服務,然後能夠查找並連接到該目錄中的服務。

(3)冗餘-分佈式系統中的冗餘問題。

(4)負載平衡 --負載平衡改善跨多個計算資源的工作負荷,諸如計算機,計算機集羣,網絡鏈路,中央處理單元,或磁盤驅動器的分佈。

(5)性能-問題 由於各種運營開銷導致的性能問題。

(6)部署複雜性-Devops 技能的要求。

3、服務註冊和發現是什麼意思?Spring Cloud 如何實現?

當我們開始一個項目時,我們通常在屬性文件中進行所有的配置。隨着越來越多的服務開發和部署,添加和修改這些屬性變得更加複雜。有些服務可能會下降,而某些位置可能會發生變化。手動更改屬性可能會產生問題。 Eureka 服務註冊和發現可以在這種情況下提供幫助。由於所有服務都在 Eureka 服務器上註冊並通過調用 Eureka 服務器完成查找,因此無需處理服務地點的任何更改和處理。

4、Spring Cloud 和dubbo區別?

(1)服務調用方式 dubbo是RPC springcloud Rest Api

(2)註冊中心,dubbo 是zookeeper springcloud是eureka,也可以是zookeeper

(3)服務網關,dubbo本身沒有實現,只能通過其他第三方技術整合,springcloud有Zuul路由網關,作爲路由服務器,進行消費者的請求分發,springcloud支持斷路器,與git完美集成配置文件支持版本控制,事物總線實現配置文件的更新與服務自動裝配等等一系列的微服務架構要素。

5、SpringBoot和SpringCloud的區別?

SpringBoot專注於快速方便的開發單個個體微服務。

SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來,

爲各個微服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分佈式會話等等集成服務

SpringBoot可以離開SpringCloud獨立使用開發項目, 但是SpringCloud離不開SpringBoot ,屬於依賴的關係.

SpringBoot專注於快速、方便的開發單個微服務個體,SpringCloud關注全局的服務治理框架。

6、負載平衡的意義什麼?

在計算中,負載平衡可以改善跨計算機,計算機集羣,網絡鏈接,中央處理單元或磁盤驅動器等多種計算資源的工作負載分佈。負載平衡旨在優化資源使用,最大化吞吐量,最小化響應時間並避免任何單一資源的過載。使用多個組件進行負載平衡而不是單個組件可能會通過冗餘來提高可靠性和可用性。負載平衡通常涉及專用軟件或硬件,例如多層交換機或域名系統服務器進程。

7、什麼是 Hystrix?它如何實現容錯?

Hystrix 是一個延遲和容錯庫,旨在隔離遠程系統,服務和第三方庫的訪問點,當出現故障是不可避免的故障時,停止級聯故障並在複雜的分佈式系統中實現彈性。

通常對於使用微服務架構開發的系統,涉及到許多微服務。這些微服務彼此協作。

思考以下微服務

假設如果上圖中的微服務 9 失敗了,那麼使用傳統方法我們將傳播一個異常。但這仍然會導致整個系統崩潰。

隨着微服務數量的增加,這個問題變得更加複雜。微服務的數量可以高達 1000.這是 hystrix 出現的地方 我們將使用 Hystrix 在這種情況下的 Fallback 方法功能。我們有兩個服務 employee-consumer 使用由 employee-consumer 公開的服務。

簡化圖如下所示

現在假設由於某種原因,employee-producer 公開的服務會拋出異常。我們在這種情況下使用 Hystrix 定義了一個回退方法。這種後備方法應該具有與公開服務相同的返回類型。如果暴露服務中出現異常,則回退方法將返回一些值。

8、什麼是 Hystrix 斷路器?我們需要它嗎?

由於某些原因,employee-consumer 公開服務會引發異常。在這種情況下使用Hystrix 我們定義了一個回退方法。如果在公開服務中發生異常,則回退方法返回一些默認值。

如果 firstPage method() 中的異常繼續發生,則 Hystrix 電路將中斷,並且員工使用者將一起跳過 firtsPage 方法,並直接調用回退方法。 斷路器的目的是給第一頁方法或第一頁方法可能調用的其他方法留出時間,並導致異常恢復。可能發生的情況是,在負載較小的情況下,導致異常的問題有更好的恢復機會 。

9、什麼是 Netflix Feign?它的優點是什麼?

Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 啓發的 java 客戶端聯編程序。

Feign 的第一個目標是將約束分母的複雜性統一到 http apis,而不考慮其穩定性。

在 employee-consumer 的例子中,我們使用了 employee-producer 使用 REST模板公開的 REST 服務。

但是我們必須編寫大量代碼才能執行以下步驟

(1)使用功能區進行負載平衡。

(2)獲取服務實例,然後獲取基本 URL。

(3)利用 REST 模板來使用服務。 前面的代碼如下

@Controller
public class ConsumerControllerClient {
    @Autowired
    private LoadBalancerClient loadBalancer;
    public void getEmployee() throws RestClientException, IOException {
        ServiceInstance serviceInstance=loadBalancer.choose("employee-producer");
        System.out.println(serviceInstance.getUri());
        String baseUrl=serviceInstance.getUri().toString();
        baseUrl=baseUrl+"/employee";
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> response=null;
        try{
            response=restTemplate.exchange(baseUrl,
                        HttpMethod.GET, getHeaders(),String.class);
        }
        catch (Exception ex)
            {
            System.out.println(ex);
        }
        System.out.println(response.getBody());
    }

之前的代碼,有像 NullPointer 這樣的例外的機會,並不是最優的。我們將看到如何使用 Netflix Feign 使呼叫變得更加輕鬆和清潔。如果 Netflix Ribbon 依賴關係也在類路徑中,那麼 Feign 默認也會負責負載平衡。

10、什麼是 Spring Cloud Bus?我們需要它嗎?

考慮以下情況:我們有多個應用程序使用 Spring Cloud Config 讀取屬性,而Spring Cloud Config 從 GIT 讀取這些屬性。

下面的例子中多個員工生產者模塊從 Employee Config Module 獲取 Eureka 註冊的財產。

如果假設 GIT 中的 Eureka 註冊屬性更改爲指向另一臺 Eureka 服務器,會發生什麼情況。在這種情況下,我們將不得不重新啓動服務以獲取更新的屬性。

還有另一種使用執行器端點/刷新的方式。但是我們將不得不爲每個模塊單獨調用這個 url。例如,如果 Employee Producer1 部署在端口 8080 上,則調用 http:// localhost:8080 / refresh。同樣對於 Employee Producer2 http://localhost:8081 / refresh 等等。這又很麻煩。這就是 Spring Cloud Bus 發揮作用的地方。

Spring Cloud Bus 提供了跨多個實例刷新配置的功能。因此,在上面的示例中,如果我們刷新 Employee Producer1,則會自動刷新所有其他必需的模塊。如果我們有多個微服務啓動並運行,這特別有用。這是通過將所有微服務連接到單個消息代理來實現的。無論何時刷新實例,此事件都會訂閱到偵聽此代理的所有微服務,並且它們也會刷新。可以通過使用端點/總線/刷新來實現對任何單個實例的刷新。

11.springcloud斷路器的作用

當一個服務調用另一個服務由於網絡原因或自身原因出現問題,調用者就會等待被調用者的響應 當更多的服務請求到這些資源導致更多的請求等待,發生連鎖效應(雪崩效應)

斷路器有完全打開狀態:一段時間內 達到一定的次數無法調用 並且多次監測沒有恢復的跡象 斷路器完全打開 那麼下次請求就不會請求到該服務

半開:短時間內 有恢復跡象 斷路器會將部分請求發給該服務,正常調用時 斷路器關閉

關閉:當服務一直處於正常狀態 能正常調用

12、什麼是SpringCloudConfig?

在分佈式系統中,由於服務數量巨多,爲了方便服務配置文件統一管理,實時更新,所以需要分佈式配置中心組件。在Spring Cloud中,有分佈式配置中心組件spring cloud config ,它支持配置服務放在配置服務的內存中(即本地),也支持放在遠程Git倉庫中。在spring cloud config 組件中,分兩個角色,一是config server,二是config client。

使用:

(1)添加pom依賴

(2)配置文件添加相關配置

(3)啓動類添加註解@EnableConfigServer

13、Spring Cloud Gateway?

Spring Cloud Gateway是Spring Cloud官方推出的第二代網關框架,取代Zuul網關。網關作爲流量的,在微服務系統中有着非常作用,網關常見的功能有路由轉發、權限校驗、限流控制等作用。

使用了一個RouteLocatorBuilder的bean去創建路由,除了創建路由RouteLocatorBuilder可以讓你添加各種predicates和filters,predicates斷言的意思,顧名思義就是根據具體的請求的規則,由具體的route去處理,filters是各種過濾器,用來對請求做各種判斷和修改。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章