日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【2022最新版】微服务面试题总结(65道题含答案解析)

發布時間:2023/12/31 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【2022最新版】微服务面试题总结(65道题含答案解析) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • 1.微服務,又稱微服務 架構,是一種架構風格,它將應用程序構建為以業務領域為模型的小型自治服務集合 。
      • 2、微服務架構有哪些優勢?
      • 3、微服務有哪些特點?
      • 4、設計微服務的最佳實踐是什么?
      • 5、微服務架構如何運作?
      • 6、微服務架構的優缺點是什么?
      • 7、單片,SOA和微服務架構有什么區別?
      • 8、在使用微服務架構時,您面臨哪些挑戰?
      • 9、SOA和微服務架構之間的主要區別是什么?
      • 10、微服務有什么特點?
      • 11、什么是領域驅動設計?
      • 12、為什么需要域驅動設計(DDD)?
      • 13、什么是無所不在的語言?
      • 14、什么是凝聚力?
      • 15、什么是耦合?
      • 16、什么是REST / RESTful以及它的用途是什么?
      • 17、你對Spring Boot有什么了解?
      • 18、什么是Spring引導的執行器?
      • 19、什么是Spring Cloud?
      • 20、Spring Cloud解決了哪些問題?
      • 21、在Spring MVC應用程序中使用WebMvcTest注釋有什么用處?
      • 22、你能否給出關于休息和微服務的要點?
      • 23、什么是不同類型的微服務測試?
      • 24、您對 Distributed Transaction有何了解?
      • 25、什么是Idempotence以及它在哪里使用?
      • 26、什么是有界上下文?
      • 27、什么是雙因素身份驗證?
      • 28、雙因素身份驗證的憑據類型有哪些?
      • 29、什么是客戶證書?
      • 30、PACT 在微服務架構中的用途是什么?
      • 31、什么是 OAuth?
      • 32、康威定律是什么?
      • 33、合同測試你懂什么?
      • 34、什么是端到端微服務測試?
      • 35、Container在微服務中的用途是什么?
      • 36、什么是微服務架構中的 DRY?
      • 37、什么是消費者驅動的合同(CDC)?
      • 38、Web,RESTful API 在微服務中的作用是什么?
      • 39、您對微服務架構中的語義監控有何了解?
      • 40、我們如何進行跨功能測試?
      • 41、我們如何在測試中消除非決定論?
      • 42、Mock或Stub有什么區別?
      • 43、您對Mike Cohn的測試金字塔了解多少?
      • 44、Docker的目的是什么?
      • 45、什么是金絲雀釋放?
      • 46、什么是持續集成(CI)?
      • 47、什么是持續監測?
      • 48、架構師在微服務架構中的角色是什么?
      • 49、我們可以用微服務創建狀態機嗎?
      • 50、什么是微服務中的反應性擴展?
    • SpringCloud面試
      • 1、什么是Spring Cloud?
      • 2、使用Spring Cloud有什么優勢?
      • 3、服務注冊和發現是什么意思?Spring Cloud如何實現?
      • 4、Spring Cloud和dubbo區別?
      • 5、SpringBoot和SpringCloud的區別?
      • 6、負載平衡的意義什么?
      • 7、什么是 Hystrix?它如何實現容錯?
      • 8、什么是Hystrix斷路器?我們需要它嗎?
      • 9、什么是Netflix Feign?它的優點是什么?
      • 10、什么是 Spring Cloud Bus?我們需要它嗎?
    • Spring Boot面試題
      • 1、什么是Spring Boot?
      • 2、Spring Boot有哪些優點?
      • 3、什么是JavaConfig?
      • 4、如何重新加載Spring Boot上的更改,而無需重新啟動服務器?
      • 5、Spring Boot中的監視器是什么?
  • 總結

最近面試的小伙伴很多,對此我整理了一份Java面試題手冊:基礎知識、JavaOOP、Java集合/泛型面試題、Java異常面試題、Java中的IO與NIO面試題、Java反射、Java序列化、Java注解、Java多線程&并發、JVM、Mysql、Redis、Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、數據結構、算法、Elasticsearch、Kafka、微服務、Linux等等。可以分享給大家學習。【持續更新中】

一鍵獲取微服務面試題總結

序號內容地址鏈接
1【2022最新版】JavaOOP面試題總結https://blog.csdn.net/m0_58479954/article/details/124710580
2【2022最新版】Java基礎面試題總結https://blog.csdn.net/m0_58479954/article/details/124714124
3【2022最新版】多線程&并發面試題總結https://blog.csdn.net/m0_58479954/article/details/124721209
4【2022最新版】JVM面試題總結https://blog.csdn.net/m0_58479954/article/details/124741114
5【2022最新版】Mysql面試題總結https://blog.csdn.net/m0_58479954/article/details/124741331
6【2022最新版】Redis面試題總結https://blog.csdn.net/m0_58479954/article/details/124790349
7【2022最新版】Memcached面試題總結https://blog.csdn.net/m0_58479954/article/details/124826038
8【2022最新版】MongoDB面試題總結https://blog.csdn.net/m0_58479954/article/details/124851895
9【2022最新版】Spring面試題總結https://blog.csdn.net/m0_58479954/article/details/124852008
10【2022最新版】Spring Boot面試題總結https://blog.csdn.net/m0_58479954/article/details/124852158
11【2022最新版】Spring Cloud面試題總結https://blog.csdn.net/m0_58479954/article/details/124852308
12【2022最新版】RabbitMQ面試題總結https://blog.csdn.net/m0_58479954/article/details/124852386
13【2022最新版】Dubbo面試題總結https://blog.csdn.net/m0_58479954/article/details/124852459
14【2021最新版】MyBatis面試題總結https://blog.csdn.net/m0_58479954/article/details/124852560
15【2022最新版】ZooKeeper面試題總結https://blog.csdn.net/m0_58479954/article/details/124982935
16【2022最新版】數據結構面試題總結https://blog.csdn.net/m0_58479954/article/details/124983147
17【2022最新版】算法面試題總結https://blog.csdn.net/m0_58479954/article/details/124983147
18【2022最新版】Elasticsearch面試題總結https://blog.csdn.net/m0_58479954/article/details/124983503
19【2022最新版】Kafka面試題總結https://blog.csdn.net/m0_58479954/article/details/124983721
20【2022最新版】Linux面試題總結https://blog.csdn.net/m0_58479954/article/details/125662548

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

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

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

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

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

答:

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

3、微服務有哪些特點?

答:

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

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

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

答:

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

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

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

答:

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

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

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

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

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

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

答:

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

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 {@Autowiredprivate 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,則會自動刷新所有其他必需的模塊。如果我們有多個微服務啟動并運行,這特別有用。這是通過將所有微服務連接到單個消息代理來實現的。無論何時刷新實例,此事件都會訂閱到偵聽此代理的所有微服務,并且它們也會刷新。可以通過使用端點/總線/刷新來實現對任何單個實例的刷新。

Spring Boot面試題

1、什么是Spring Boot?

答:

多年來,隨著新功能的增加,spring變得越來越復雜。訪問spring官網頁面,我們就會看到可以在我們的應用程序中使用的所有Spring項目的不同功能。如果必須啟動一個新的Spring項目,我們必須添加構建路徑或添加Maven依賴關系,配置應用程序服務器,添加spring配置。因此,開始一個新的spring項目需要很多努力,因為我們現在必須從頭開始做所有事情。

Spring Boot是解決這個問題的方法。Spring Boot已經建立在現有spring框架之上。使用spring啟動,我們避免了之前我們必須做的所有樣板代碼和配置。因此,Spring Boot可以幫助我們以最少的工作量,更加健壯地使用現有的Spring功能。

2、Spring Boot有哪些優點?

答:

Spring Boot的優點有:

1、減少開發,測試時間和努力。

2、使用JavaConfig有助于避免使用XML。

3、避免大量的Maven導入和各種版本沖突。

4、提供意見發展方法。

5、通過提供默認值快速開始開發。

6、沒有單獨的Web服務器需要。這意味著你不再需要啟動Tomcat,Glassfish或其他任何東西。

7、需要更少的配置 因為沒有web.xml 文件。只需添加用@ Configuration 注釋的類,然后添加用@Bean注釋的方法,Spring 將自動加載對象并像以前一樣對其進行管理。您甚至可以將@Autowired添加到bean方法中,以使Spring自動裝入需要的依賴關系中。

8、基于環境的配置 使用這些屬性,您可以將您正在使用的環境傳遞到應用程序:-Dspring.profiles.active={enviornment}。在加載主應用程序屬性文件后,Spring將在(application{environment} .properties)中加載后續的應用程序屬性文件。

3、什么是JavaConfig?

答:

Spring JavaConfig是Spring社區的產品,它提供了配置Spring IoC容器的純Java 方法。因此它有助于避免使用XML配置。使用 JavaConfig的優點在于:

(1)面向對象的配置。由于配置被定義為JavaConfig中的類,因此用戶可以充分利用Java中的面向對象功能。一個配置類可以繼承另一個,重寫它的@Bean方法等。

(2)減少或消除XML配置。基于依賴注入原則的外化配置的好處已被證明。但是,許多開發人員不希望在XML和Java之間來回切換。JavaConfig為開發人員提供了一種純Java方法來配置與 XML 配置概念相似的Spring容器。從技術角度來講,只使用 JavaConfig配置類來配置容器是可行的,但實際上很多人認為將JavaConfig與XML混合匹配是理想的。

(3)類型安全和重構友好。JavaConfig提供了一種類型安全的方法來配置Spring容器。由于Java5.0對泛型的支持,現在可以按類型而不是按名稱檢索bean,不需要任何強制轉換或基于字符串的查找。

4、如何重新加載Spring Boot上的更改,而無需重新啟動服務器?

答:

這可以使用 DEV 工具來實現。通過這種依賴關系,您可以節省任何更改,嵌入式tomcat 將重新啟動。Spring Boot 有一個開發工具(DevTools)模塊,它有助于提高開發人員的生產力。Java 開發人員面臨的一個主要挑戰是將文件更改自動部署到服務器并自動重啟服務器。開發人員可以重新加載 Spring Boot 上的更改,而無需重新啟動服務器。這將消除每次手動部署更改的需要。Spring Boot 在發布它的第一個版本時沒有這個功能。這是開發人員最需要的功能。DevTools 模塊完全滿足開發人員的需求。該模塊將在生產環境中被禁用。它還提供 H2 數據庫控制臺以更好地測試應用程序。

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional>

5、Spring Boot中的監視器是什么?

答:

Spring boot actuator是spring啟動框架中的重要功能之一。Spring boot監視器可幫助您訪問生產環境中正在運行的應用程序的當前狀態。有幾個指標必須在生產環境中進行檢查和監控。即使一些外部應用程序可能正在使用這些服務來向相關人員觸發警報消息。監視器模塊公開了一組可直接作為HTTP URL訪問的REST端點來檢查狀態。

總結

篇幅有限,其他內容就不在這里一 一展示了,整理不易,歡迎大家一起交流,喜歡小編分享的文章記得關注我點贊喲,感謝支持!重要的事情說三遍,轉發+轉發+轉發,一定要記得轉發哦!!!

👇🏻 添加 博主 獲取 微服務 面試題總結👇🏻

總結

以上是生活随笔為你收集整理的【2022最新版】微服务面试题总结(65道题含答案解析)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。