javascript
SpringCloud面试题分享
1、什么是Spring Cloud?
Spring cloud 流應用程序啟動器是基于 Spring Boot 的 Spring 集成應用程序,提供與外部系統的集成,更專注于服務治理。Spring cloud Task,一個生命周期短暫的微服務框架,用于快速構建執行有限數據處理的應用程序。
2、Spring Cloud和Dubbo的區別
- Dubbo關注的領域是Spring Cloud的一個子集。Dubbo專注于服務治理,其在服務治理、灰度發布、流量分發方面比Spring Cloud更全面。Spring Cloud覆蓋整個微服務架構領域。
- Dubbo使用RPC調用效率高一些,Spring Cloud使用HTTP調用效率低,使用更簡單。
3、REST和RPC的區別
- REST風格的系統交互更方便,RPC調用服務提供方和調用方式之間依賴太強。
- REST調用系統性能較低,RPC調用效率比REST高。
- REST的靈活性可以跨系統跨語言調用,RPC只能在同語言內調用。
- REST可以和Swagger等工具整合,自動輸出接口API文檔。
4、SpringCloud如何實現服務的注冊和發現
5、什么是服務熔斷和服務降級?
- 熔斷機制是應對雪崩效應的一種微服務鏈路保護機制。當某個微服務不可用或者響應時間太長時,會進行服務降級,進而熔斷該節點微服務的調用,快速返回“錯誤”的響應信息。當檢測到該節點微服務調用響應正常后恢復調用鏈路。在SpringCloud框架里熔斷機制通過Hystrix實現,Hystrix會監控微服務間調用的狀況,當失敗的調用到一定閾值,缺省是5秒內調用20次,如果失敗,就會啟動熔斷機制。
- 服務降級,一般是從整體負荷考慮。就是當某個服務熔斷之后,服務器將不再被調用,此時客戶端可以自己準備一個本地的fallback回調,返回一個缺省值。這樣做,雖然會出現局部的錯誤,但可以避免因為一個服務掛機,而影響到整個架構的穩定性。
Hystrix相關注解:
- @EnableHystrix:開啟熔斷
- @HystrixCommand(fallbackMethod=”XXX”):聲明一個失敗回滾處理函數XXX,當被注解的方法執行超時(默認是1000毫秒),就會執行fallback函數,返回錯誤提示。
6、項目中zuul常用的功能
- 提供動態路由
- 提供安全、鑒權處理
- 跨域處理
- 全局動態路由的hystrix(熔斷、降級、限流)處理
7、服務網關的作用
- 簡化客戶端調用復雜度,統一處理外部請求。
- 數據裁剪以及聚合,根據不同的接口需求,對數據加工后對外。
- 多渠道支持,針對不同的客戶端提供不同的網關支持。
- 遺留系統的微服務化改造,可以作為新老系統的中轉組件。
- 統一處理調用過程中的安全、權限問題。
Spring Cloud中的網關有:Zuul和Spring Cloud Gateway,最新版本中推薦使用后者。
8、ribbon和feign區別
- Ribbon添加maven依賴 spring-starter-ribbon 使用@RibbonClient(value="服務名稱") 使用RestTemplate調用遠程服務對應的方法。
- feign添加maven依賴 spring-starter-feign 服務提供方提供對外接口 調用方使用 在接口上使用@FeignClient("指定服務名")
Ribbon和Feign的區別:
Ribbon和Feign都是用于調用其他服務的,不過方式不同。
Feign則是在Ribbon的基礎上進行了一次改進,采用接口的方式,將需要調用的其他服務的方法定義成抽象方法即可,
不需要自己構建http請求。不過要注意的是抽象方法的注解、方法簽名要和提供服務的方法完全一致。
9、ribbon的負載均衡策略
10、簡述什么是CAP,并說明Eureka包含CAP中的哪些?
CAP理論:一個分布式系統不可能同時滿足C (一致性),A(可用性),P(分區容錯性).由于分區容錯性P在分布式系統中是必須要保證的,因此我們只能從A和C中進行權衡.
Eureka 遵守 AP
- Eureka各個節點都是平等的,幾個節點掛掉不會影響正常節點的工作,神域的節點依然可以提供注冊和查詢服務。
- 而Eureka的客戶端在向某個Eureka 注冊或查詢是如果發現連接失敗,則會自動切換至其他節點,只要有一臺Eureka還在,就能保證注冊服務可用(保證可用性),只不過查的信息可能不最新的不保證強一致性)。
11、Eureka和zookeeper都可以提供服務注冊與發現的功能,請說說兩個的區別?
- Zookeeper保證了CP(C:一致性,P:分區容錯性)
- Eureka保證了AP(A:高可用)
- Eureka不在從注冊列表中移除因為長時間沒有收到心跳而應該過期的服務。
- Eureka仍然能夠接受新服務的注冊和查詢請求,但是不會被同步到其他節點上(即保證當前節點仍然可用)。
- 當網絡穩定時,當前實例新的注冊信息會被同步到其他節點。
因此,Eureka可以很好的應對因網絡故障導致部分節點失去聯系的情況,而不會像Zookeeper那樣使整個微服務癱瘓。
12、鏈路跟蹤Sleuth
當我們項目中引入Spring Cloud Sleuth后,每次鏈路請求都會添加一串追蹤信息,格式是[server-name, main-traceId,sub-spanId,boolean]:
- server-name:服務結點名稱。
- main-traceId:一條鏈路唯一的ID,為TraceID。
- sub-spanId:鏈路中每一環的ID,為SpanID。
- boolean:是否將信息輸出到Zipkin等服務收集和展示。
Sleuth的實現是基于HTTP的,為了在數據的收集過程中不能影響到正常業務,Sleuth會在每個請求的Header上添加跟蹤需求的重要信息。這樣在數據收集時,只需要將Header上的相關信息發送給對應的圖像工具即可,圖像工具根據上傳的數據,按照Span對應的邏輯進行分析、展示。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的SpringCloud面试题分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php对mysql的操作教程,php与M
- 下一篇: HTML+CSS+JS实现 ❤️H5 3