javascript
300道SpringCloud面试题及答案(最新整理)
最新SpringCloud面試題及答案【附答案解析】SpringCloud面試題及答案,SpringCloud最新面試題及答案,SpringCloud面試題新答案已經全部更新完了,有些答案是自己總結的,也有些答案是在網上搜集整理的。這些答案難免會存在一些錯誤,僅供大家參考。如果發現錯誤還望大家多多包涵,不吝賜教,謝謝~
如果不背 SpringCloud面試題的答案,肯定面試會掛!
這套SpringCloud面試題大全,希望對大家有幫助哈~
博主已將以下這些面試題整理成了一個Java面試手冊,是PDF版的
1、什么是微服務
1、?微服務是?種架構?格,也是?種服務;
2、?微服務的顆粒?較?,?個?型復雜軟件應?由多個微服務組成,?如Netflix?前由500多的微服務組成;
3、?它采?UNIX設計的哲學,每種服務只做?件事,是?種松耦合的能夠被獨?開發和部署的?狀態化服務(獨?擴展、升級和可替換)。
2、微服務限流 http限流:我們使?nginx的limitzone來完成:
//這個表示使?ip進?限流 zone名稱為req_one 分配了10m 空間使?漏桶算法 每秒鐘允許1個請求 limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s; //這邊burst表示可以瞬間超過20個請求 由于沒有noDelay參數因此需要排隊 如果超過這20個那么直接返回503 limit_req zone=req_three burst=20;
3、Spring Cloud Netflix(重點,這些組件用的最多)
Netflix OSS 開源組件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心組件。
1、?Eureka:服務治理組件,包括服務端的注冊中心和客戶端的服務發現機制;
2、?Ribbon:負載均衡的服務調用組件,具有多種負載均衡調用策略;
3、?Hystrix:服務容錯組件,實現了斷路器模式,為依賴服務的出錯和延遲提供了容錯能力;
4、?Feign:基于Ribbon和Hystrix的聲明式服務調用組件;
5、?Zuul:API網關組件,對請求提供路由及過濾功能。
我覺得SpringCloud的福音是Netflix,他把人家的組件都搬來進行封裝了,使開發者能快速簡單安全的使用
4、什么是端到端微服務測試?
端到端測試驗證了工作流中的每個流程都正常運行。這可確保系統作為一個整體協同工作并滿足所有要求。
通俗地說,你可以說端到端測試是一種測試,在特定時期后測試所有東西。
圖14:測試層次 – 微服務面試問題
5、什么是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默認也會負責負載平衡。
6、什么是OAuth?
OAuth 代表開放授權協議。這允許通過在HTTP服務上啟用客戶端應用程序(例如第三方提供商Facebook,GitHub等)來訪問資源所有者的資源。因此,您可以在不使用其憑據的情況下與另一個站點共享存儲在一個站點上的資源。
7、Ribbon是什么?
1、?Ribbon是Netflix發布的開源項目,主要功能是提供客戶端的軟件負載均衡算法
2、?Ribbon客戶端組件提供一系列完善的配置項,如連接超時,重試等。簡單的說,就是在配置文件中列出后面所有的機器,Ribbon會自動的幫助你基于某種規則(如簡單輪詢,隨即連接等)去連接這些機器。我們也很容易使用Ribbon實現自定義的負載均衡算法。(有點類似Nginx)
8、Spring Cloud拋棄了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。
嚴格來說,這兩種方式各有優劣。雖然在一定程度上來說,后者犧牲了服務調用的性能,但也避免了上面提到的原生RPC帶來的問題。而且REST相比RPC更為靈活,服務提供方和調用方的依賴只依靠一紙契約,不存在代碼級別的強依賴,這在強調快速演化的微服務環境下,顯得更為合適。
9、什么是Idempotence以及它在哪里使用?
冪等性是能夠以這樣的方式做兩次事情的特性,即最終結果將保持不變,即好像它只做了一次。
用法:在遠程服務或數據源中使用 Idempotence,這樣當它多次接收指令時,它只處理指令一次。
10、SpringBoot支持哪些嵌入式容器?
無論何時創建Java應用程序,都可以通過兩種方法進行部署: 使用外部的應用程序容器。 將容器嵌入jar文件中。 SpringBoot包含Jetty,Tomcat和Undertow服務器,所有服務器都是嵌入式的。 Jetty - 用于大量項目,Eclipse Jetty可以嵌入到框架,應用程序服務器,工具和集群中。 Tomcat - Apache Tomcat是一個開源JavaServer Pages實現,可以很好地與嵌入式系統配合使用。 Undertow - 一個靈活而突出的Web服務器,它使用小型單一處理程序來開發Web服務器。
11、什么是客戶證書?
客戶端系統用于向遠程服務器發出經過身份驗證的請求的一種數字證書稱為客戶端證書。客戶端證書在許多相互認證設計中起著非常重要的作用,為請求者的身份提供了強有力的保證。
12、REST 和RPC對比
1、?RPC主要的缺陷是服務提供方和調用方式之間的依賴太強,需要對每一個微服務進行接口的定義,并通過持續繼承發布,嚴格版本控制才不會出現沖突。
2、?REST是輕量級的接口,服務的提供和調用不存在代碼之間的耦合,只需要一個約定進行規范。
13、分布式配置中心的作用?
動態變更項目配置信息而不必重新部署項目。
14、鏈路跟蹤Sleuth
當我們項目中引入Spring Cloud Sleuth后,每次鏈路請求都會添加一串追蹤信息,格式是[server-name, main-traceId,sub-spanId,boolean]:
1、?server-name:服務結點名稱。
2、?main-traceId:一條鏈路唯一的ID,為TraceID。
3、?sub-spanId:鏈路中每一環的ID,為SpanID。
4、?boolean:是否將信息輸出到Zipkin等服務收集和展示。
Sleuth的實現是基于HTTP的,為了在數據的收集過程中不能影響到正常業務,Sleuth會在每個請求的Header上添加跟蹤需求的重要信息。這樣在數據收集時,只需要將Header上的相關信息發送給對應的圖像工具即可,圖像工具根據上傳的數據,按照Span對應的邏輯進行分析、展示。
15、服務注冊和發現是什么意思?Spring Cloud如何實現?
當我們開始一個項目時,我們通常在屬性文件中進行所有的配置。隨著越來越多的服務開發和部署,添加和修改這些屬性變得更加復雜。有些服務可能會下降,而某些位置可能會發生變化。手動更改屬性可能會產生問題。 Eureka服務注冊和發現可以在這種情況下提供幫助。由于所有服務都在Eureka服務器上注冊并通過調用Eureka服務器完成查找,因此無需處理服務地點的任何更改和處理。
16、21、在Spring MVC應用程序中使用WebMvcTest注釋有什么用處?
在測試目標只關注Spring MVC組件的情況下,WebMvcTest注釋用于單元測試Spring MVC應用程序。在上面顯示的快照中,我們只想啟動ToTestController。執行此單元測試時,不會啟動所有其他控制器和映射。
17、什么是雙因素身份驗證?
雙因素身份驗證為帳戶登錄過程啟用第二級身份驗證。
圖11: 雙因素認證的表示 – 微服務訪談問題
因此,假設用戶必須只輸入用戶名和密碼,那么這被認為是單因素身份驗證。
18、什么是不同類型的微服務測試?
在使用微服務時,由于有多個微服務協同工作,測試變得非常復雜。因此,測試分為不同的級別。
在底層,我們有面向技術的測試,如單元測試和性能測試。這些是完全自動化的。
在中間層面,我們進行了諸如壓力測試和可用性測試之類的探索性測試。
在頂層, 我們的 驗收測試數量很少。這些驗收測試有助于利益相關者理解和驗證軟件功能。
19、什么是Eureka
Eureka作為SpringCloud的服務注冊功能服務器,他是服務注冊中心,系統中的其他服務使用Eureka的客戶端將其連接到Eureka Service中,并且保持心跳,這樣工作人員可以通過Eureka Service來監控各個微服務是否運行正常。
20、常用網關框架有那些?
Nginx、Zuul、Gateway
21、什么是Hystrix?它如何實現容錯?
Hystrix是一個延遲和容錯庫,旨在隔離遠程系統,服務和第三方庫的訪問點,當出現故障是不可避免的故障時,停止級聯故障并在復雜的分布式系統中實現彈性。
通常對于使用微服務架構開發的系統,涉及到許多微服務。這些微服務彼此協作。
思考以下微服務
假設如果上圖中的微服務9失敗了,那么使用傳統方法我們將傳播一個異常。但這仍然會導致整個系統崩潰。
隨著微服務數量的增加,這個問題變得更加復雜。微服務的數量可以高達1000.這是hystrix出現的地方 我們將使用Hystrix在這種情況下的Fallback方法功能。我們有兩個服務employee-consumer使用由employee-consumer公開的服務。
簡化圖如下所示
現在假設由于某種原因,employee-producer公開的服務會拋出異常。我們在這種情況下使用Hystrix定義了一個回退方法。這種后備方法應該具有與公開服務相同的返回類型。如果暴露服務中出現異常,則回退方法將返回一些值。
22、為什么我們需要微服務容器?
要管理基于微服務的應用程序,容器是最簡單的選擇。它幫助用戶單獨部署和開發。您還可以使用Docker將微服務封裝到容器的鏡像中。沒有任何額外的依賴或工作,微服務可以使用這些元素。
23、springcloud和dubbo有哪些區別
1、?Dubbo具有調度、發現、監控、治理等功能,?持相當豐富的服務治理能?。Dubbo架構下,注冊中?對等集群,并會緩存服務列表已被數據庫失效時繼續提供發現功能,本身的服務發現結構有很強的可?性與健壯性,?夠?持?訪問量的?站。
2、?雖然Dubbo ?持短連接?數據量的服務提供模式,但絕?多數情況下都是使??連接?數據量的模式提供服務使?的。所以,對于類似于電商等同步調?場景多并且能?撐搭建Dubbo 這套?較復雜環境的成本的產品??,Dubbo 確實是?個可以考慮的選擇。但如果產品業務中由于后臺業務邏輯復雜、時間??導致異步邏輯?較多的話,可能Dubbo 并不合適。同時,對于??不?的初創產品??,這么重的架構維護起來也不是很?便。
3、?Spring Cloud由眾多?項?組成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系統及微服務常?的?具,如配置管理、服務發現、斷路器、智能路由、微代理、控制總線、?次性token、全局鎖、選主、分布式會話和集群狀態等,滿?了構建微服務所需的所有解決?案。?如使?Spring Cloud Config 可以實現統?配置中?,對配置進?統?管理;使?Spring Cloud Netflix 可以實現Netflix 組件的功能 - 服務發現(Eureka)、智能路由(Zuul)、客戶端負載均衡(Ribbon)。
4、?Dubbo 提供了各種 Filter,對于上述中“?”的要素,可以通過擴展 Filter 來完善。
5、?dubbo的開發難度較?,原因是dubbo的jar包依賴問題很多?型?程?法解決。
24、SpringCloud Config 可以實現實時刷新嗎?
springcloud config實時刷新采用SpringCloud Bus消息總線。
25、Zookeeper如何 保證CP
當向注冊中?查詢服務列表時,我們可以容忍注冊中?返回的是?分鐘以前的注冊信息,但不能接受服務直接down掉不可?。也就是說,服務注冊功能對可?性的要求要?于?致性。但是zk會出現這樣?種情況,當master節點因為?絡故障與其他節點失去聯系時,剩余節點會重新進?leader選舉。問題在于,選舉leader的時間太?,30 ~ 120s, 且選舉期間整個zk集群都是不可?的,這就導致在選舉期間注冊服務癱瘓。在云部署的環境下,因?絡問題使得zk集群失去master節點是較?概率會發?的事,雖然服務能夠最終恢復,但是漫?的選舉時間導致的注冊?期不可?是不能容忍的。
26、微服務之間如何獨立通訊的?
同步通信:dobbo通過 RPC 遠程過程調用、springcloud通過 REST 接口json調用 等。
異步:消息隊列,如:RabbitMq、ActiveM、Kafka 等。
27、什么是OAuth?
OAuth 代表開放授權協議。這允許通過在HTTP服務上啟用客戶端應用程序(例如第三方提供商Facebook,GitHub等)來訪問資源所有者的資源。因此,您可以在不使用其憑據的情況下與另一個站點共享存儲在一個站點上的資源。
28、eureka服務注冊與發現原理
1、?每30s發送?跳檢測重新進?租約,如果客戶端不能多次更新租約,它將在90s內從服務器注冊中?移除。
2、?注冊信息和更新會被復制到其他Eureka 節點,來?任何區域的客戶端可以查找到注冊中?信息,每30s發??次復制來定位他們的服務,并進?遠程調?。
3、?客戶端還可以緩存?些服務實例信息,所以即使Eureka全掛掉,客戶端也是可以定位到服務地址的。
29、Zuul與Nginx有什么區別?
Zuul是java語言實現的,主要為java服務提供網關服務,尤其在微服務架構中可以更加靈活的對網關進行操作。Nginx是使用C語言實現,性能高于Zuul,但是實現自定義操作需要熟悉lua語言,對程序員要求較高,可以使用Nginx做Zuul集群。
30、什么是Spring Cloud?
在微服務中,SpringCloud是一個提供與外部系統集成的系統。它是一個敏捷的框架,可以短平快構建應用程序。與有限數量的數據處理相關聯,它在微服務體系結構中起著非常重要的作用。?以下為 Spring Cloud 的核心特性:
1、?版本化/分布式配置。
2、?服務注冊和發現。
3、?服務和服務之間的調用。
4、?路由。
5、?斷路器和負載平衡。
6、?分布式消息傳遞。
更多 SpringCloud 面試題 60道
01、Spring Cloud和各子項目版本對應關系
02、什么是客戶證書?
03、Spring Cloud OpenFeign
04、在使用微服務架構時,您面臨哪些挑戰?
05、springcloud核?組件及其作?,以及springcloud?作原理:
06、接?限流?法?
07、Spring Cloud Task
08、什么是Oauth?
09、為什么在微服務中需要Reports報告和Dashboards儀表板?
10、什么是微服務架構中的DRY?
11、什么是凝聚力?
12、為什么需要域驅動設計(DDD)?
13、eureka和zookeeper都可以提供服務注冊與發現的功能,請說說兩個的區別?
14、服務降級底層是如何實現的?
15、什么是持續集成(CI)?
16、第?層緩存:
17、微服務測試的主要障礙是什么?
18、接?限流?法?
19、什么是feigin?它的優點是什么?
20、設計微服務的最佳實踐是什么?
21、什么是微服務
22、微服務限流 http限流:我們使?nginx的limitzone來完成:
23、Spring Cloud Netflix(重點,這些組件用的最多)
24、什么是端到端微服務測試?
25、什么是Netflix Feign?它的優點是什么?
26、什么是OAuth?
27、Ribbon是什么?
28、Spring Cloud拋棄了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。
29、什么是Idempotence以及它在哪里使用?
30、SpringBoot支持哪些嵌入式容器?
31、什么是客戶證書?
32、REST 和RPC對比
33、分布式配置中心的作用?
34、鏈路跟蹤Sleuth
35、服務注冊和發現是什么意思?Spring Cloud如何實現?
36、21、在Spring MVC應用程序中使用WebMvcTest注釋有什么用處?
37、什么是雙因素身份驗證?
38、什么是不同類型的微服務測試?
09、什么是Eureka
40、常用網關框架有那些?
41、什么是有界上下文?
42、ZuulFilter常用有那些方法
43、Spring Cloud Gateway
44、Spring Cloud Netflix
45、負載均衡的意義是什么?
46、Spring Cloud OpenFeign
47、什么是耦合?
48、Eureka和ZooKeeper都可以提供服務注冊與發現的功能,請說說兩個的區別
49、網關的作用是什么
50、什么是Eureka
51、什么是Spring引導的執行器?
52、什么是持續集成(CI)?
53、你對SpringBoot有什么了解?
54、Ribbon和Feign調用服務的區別
55、Spring Cloud和SpringBoot版本對應關系
56、微服務有哪些特點?
57、Ribbon是什么?
58、微服務之間是如何獨立通訊的?
59、什么是網關?
60、使用Spring Cloud有什么優勢?
如果不背 SpringCloud面試題的答案,肯定面試會掛!
這套SpringCloud面試題大全,希望對大家有幫助哈~
博主已將以下這些面試題整理成了一個Java面試手冊,是PDF版的
總結
以上是生活随笔為你收集整理的300道SpringCloud面试题及答案(最新整理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flutter 淘宝 App,支持 iO
- 下一篇: sendmail服务器部署