Java面試第十一山!《SpringCloud框架》

大家好,我是陳一。如果文章對你有幫助,請留下一個寶貴的三連哦~ 萬分感謝!

目錄

一、Spring Cloud 是什么?

二、Spring Cloud 核心組件?

1. 服務發現 - Eureka?

2. ?負載均衡 - Ribbon?

3. 斷路器 - Hystrix?

??4. 網關 - Zuul?

三、Spring Cloud 應用場景?

四、面試真題

1. SpringCloud 和 Dubbo有那些區別?

2.?SpringBoot 和 SpringCloud,請談談你對他們的理解

3. Spring Cloud Config是如何實現配置中心的?

4.?雙十一期間,訂單服務調用庫存服務出現超時怎么解決

五、總結


一、Spring Cloud 是什么?

Spring Cloud 并不是一個單獨的框架,而是一系列框架的集合。它基于 Spring Boot 構建,提供了構建分布式系統的各種工具和組件,幫助開發者快速搭建可靠、可擴展的分布式系統。就好比你要搭建一個大型游樂場,Spring Cloud 就像是一套完整的搭建工具包,里面有建造過山車軌道的組件(服務發現)、管理游客流量的組件(負載均衡)等等,讓你能更輕松地把游樂場搭建起來。?

二、Spring Cloud 核心組件?

組件作用常用配置項替代方案
Eureka服務注冊中心心跳間隔(30s)、失效時間(90s)Nacos
Ribbon負載均衡器輪詢/隨機/響應時間權重LoadBalancer
OpenFeign聲明式HTTP客戶端超時時間、重試次數RestTemplate
Hystrix服務熔斷熔斷閾值(20次)、恢復時間(5s)Sentinel
GatewayAPI網關路由規則、過濾器鏈Zuul

1. 服務發現 - Eureka?

作用

Eureka 就像是游樂場里的游客信息中心。在分布式系統中,各個服務(可以想象成游樂場里的不同游樂設施)會向 Eureka 注冊自己的信息,包括服務地址、端口等。當其他服務需要調用某個服務時,就可以到 Eureka 這里來查找服務的位置。?

工作原理:?

服務提供者啟動后,會定期向 Eureka Server 發送心跳,告訴 Eureka 自己還 “活著”。?

服務消費者在調用服務前,先從 Eureka Server 獲取服務列表,然后根據一定的規則選擇一個服務實例進行調用。?

示例圖:

?

?

2. ?負載均衡 - Ribbon?

作用:Ribbon 如同游樂場入口處的排隊引導員。當有多個服務實例提供相同的服務時(比如有多個相同的旋轉木馬設施),Ribbon 會負責把客戶端的請求均衡地分配到這些實例上,避免某個實例壓力過大,而其他實例卻閑置。?

工作方式:?它會和 Eureka 配合使用,從 Eureka 獲取到服務實例列表后,在客戶端根據不同的負載均衡算法(如隨機、輪詢等)來選擇一個實例進行請求發送。?

負載均衡算法對比表格:??

算法名稱?

描述?

應用場景?

輪詢?

依次將請求分配到每個實例?

實例性能相近時?

隨機?

隨機選擇一個實例?

對負載均衡精度要求不高時?

加權輪詢?

根據實例權重分配請求,權重高的分配更多請求?

實例性能有差異時?

3. 斷路器 - Hystrix?

作用:Hystrix 像是游樂場里的安全閘。在分布式系統中,服務之間的調用可能會因為各種原因失敗(比如某個游樂設施臨時故障),如果大量的請求因為調用失敗而一直等待,會占用大量資源,甚至導致整個系統崩潰。Hystrix 通過熔斷機制,當某個服務調用失敗率達到一定閾值時,就會自動熔斷,不再繼續嘗試調用,而是直接返回一個預設的結果,避免故障擴散。?

工作流程:?

  • 當請求調用服務時,Hystrix 會監控調用的成功和失敗次數。?
  • 如果失敗率超過設定的閾值,斷路器就會打開,后續一段時間內的請求不再實際調用服務,而是直接返回 fallback(備用)結果。?
  • 經過一段時間后,斷路器會進入半開狀態,嘗試放行少量請求,如果這些請求成功,斷路器就會關閉,恢復正常調用;如果失敗,斷路器再次打開。?

??4. 網關 - Zuul?

作用:Zuul 如同游樂場的大門。它是整個分布式系統對外的統一入口,所有外部請求都會先經過 Zuul。Zuul 可以對請求進行路由、過濾等操作,比如檢查游客(請求)是否有門票(權限),決定將游客引導到哪個游樂設施(服務)。?

功能:?

  • 路由功能:根據請求的 URL 等信息,將請求轉發到對應的服務實例。?
  • 過濾功能:可以在請求進入系統前或響應返回前,對請求和響應進行處理,如身份驗證、日志記錄等。?

三、Spring Cloud 應用場景?

1. 電商系統?

  • 服務拆分:電商系統包含商品管理、訂單管理、用戶管理等多個功能模塊。可以將每個模塊拆分成獨立的服務,使用 Spring Cloud 進行管理。例如,商品服務負責管理商品信息的增刪改查,訂單服務負責處理訂單相關業務。通過服務發現和負載均衡,確保各個服務高效運行。?
  • 高并發處理:在促銷活動期間,大量用戶同時訪問系統,可能會導致某些服務壓力過大。Hystrix 斷路器可以防止因某個服務故障而引發整個系統的雪崩效應。同時,Ribbon 負載均衡可以將用戶請求均勻分配到各個服務實例上,提高系統的并發處理能力。?
  • 安全與權限管理:Zuul 網關可以對所有進入系統的請求進行身份驗證和權限檢查,確保只有合法用戶能夠訪問相應的服務,保障系統的安全性。?

2. 在線教育平臺?

  • 課程服務:課程服務包含課程視頻播放、課程資料下載等功能。通過 Spring Cloud 的服務發現和負載均衡,將課程服務的請求分配到多個實例上,保證大量用戶同時觀看課程時的流暢性。?
  • 用戶互動:如直播互動、評論等功能,可能涉及多個服務之間的調用。Hystrix 斷路器可以在某個服務出現故障時,保障其他服務的正常運行,提升用戶體驗。?

四、面試真題

1. SpringCloud 和 Dubbo有那些區別?

Spring Cloud 拋棄了Dubbo的RPC通信,采用的是基于HTTP的REST方式

Dubbo采用的是RPC調用,SpringCloud采用http的REST方式,

在一定程度上犧牲了調用上的性能,但是降低了代碼的強依賴性,是微服務架構更加靈活

2.?SpringBoot 和 SpringCloud,請談談你對他們的理解

SpringBoot可以離開SpringCloud獨立使用,開發項目,但SpringCloud離不開SpringBoot,屬于依賴關系;

Spring Cloud之所以離不開Spring Boot,是因為Spring Boot為構建微服務提供了必要的快速開發基礎、統一的依賴管理與啟動機制、強大的自動配置能力、嵌入式服務支持以及一致的開發體驗。這些特性使得Spring Cloud能夠專注于提供微服務架構層面的高級抽象和工具集,而無需重新實現Spring Boot已經解決的基礎問題,二者緊密結合,共同構成了構建現代微服務架構的強大工具鏈。

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

3. Spring Cloud Config是如何實現配置中心的?

Spring Cloud Config Server作為配置中心,從Git倉庫或其他配置存儲中讀取配置信息,客戶端通過Config Client組件從Config Server拉取配置,并自動更新。

4.?雙十一期間,訂單服務調用庫存服務出現超時怎么解決

  • 設置Hystrix熔斷規則:20次調用失敗后熔斷5秒

  • 降級方案:返回默認庫存信息+異步補單

  • 配合儀表盤監控熔斷狀態

五、總結

Spring Cloud 框架通過提供一系列強大的組件,幫助開發者輕松構建分布式系統,解決了分布式系統中的服務發現、負載均衡、容錯處理、網關等關鍵問題。在實際項目中,根據不同的業務場景合理運用 Spring Cloud 的各個組件,能夠顯著提升系統的性能、可靠性和可擴展性。無論是面試還是在實際開發中,深入理解 Spring Cloud 都是非常有價值的。

翻過這座山,他們就會聽到你的故事!歡迎在評論區交流~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72740.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72740.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72740.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Transaction rolled back because it has been marked as rollback-only問題解決

transaction rolled back because it has been marked as rollback-only 簡略總結> 發生場景:try-catch多業務場景 發生原因:業務嵌套,事務管理混亂,外層業務與內層業務拋出異常節點與回滾節點不一致。 解決方式:修…

sql server數據遷移,springboot搭建開發環境遇到的問題及解決方案

最近搭建springboot項目開發環境,數據庫連的是sql server,遇到許多問題在此記錄一下。 1、sql server安裝教程 參考:https://www.bilibili.com/opus/944736210624970769 2、sql server導出、導入數據庫 參考:https://blog.csd…

【數學建模】灰色關聯分析模型詳解與應用

灰色關聯分析模型詳解與應用 文章目錄 灰色關聯分析模型詳解與應用引言灰色系統理論簡介灰色關聯分析基本原理灰色關聯分析計算步驟1. 確定分析序列2. 數據無量綱化處理3. 計算關聯系數4. 計算關聯度 灰色關聯分析應用實例實例:某企業生產效率影響因素分析 灰色關聯…

Spring配置文件-Bean實例化三種方式

無參構造方法實例化 工廠靜態方法實例化 工廠實例方法實例化

SSL 和 TLS 認證

SSL(Secure Sockets Layer,安全套接層)認證是一種用于加密網絡通信和驗證服務器身份的安全技術。它是TLS(Transport Layer Security,傳輸層安全協議)的前身,雖然現在大多數應用使用的是TLS&…

SpringBoot學習(三)SpringBoot整合JSP以及Themeleaf

目錄 Spring Boot 整合 JSP1. 配置依賴2. 創建WEB目錄結構,配置JSP解析路徑3. 創建Controller類4. 修改application.yml5. 添加jstl標簽庫的依賴6. JSP頁面7. 創建啟動類 Spring Boot 整合 Thymeleaf1. 添加Thymeleaf依賴2. Controller3. 修改application.yml配置&a…

普通鼠標的500連擊的工具來了!!!

今天介紹的這款軟件叫:鼠標錄制器,是一款大小只有54K的鼠標連點器,軟件是綠色單文件版。搶票,拍牌,搖號都能用上。文末有分享鏈接 在使用先我們先設置快捷鍵,這樣我們在錄制和停止錄制的時候會更方便。 軟件…

【MySQL】基本查詢(表的增刪查改+聚合函數)

目錄 一、Create1.1 單行數據 全列插入1.2 多行數據 指定列插入1.3 插入否則更新1.4 替換 二、Retrieve2.1 SELECT 列2.1.1 全列查詢2.1.2 指定列查詢2.1.3 查詢字段為表達式2.1.4 為查詢結果指定別名2.1.5 結果去重 2.2 WHERE 條件2.2.1 比較運算符2.2.2 邏輯運算符2.2.3 案…

JAVA中關于圖形化界面的學習(GUI)動作監聽,鼠標監聽,鍵盤監聽

動作監聽: 先創建一個圖形化界面,接著創建一個按鈕對象,設置按鈕的大小。 添加一個addActionListener(); addActionListener() 方法定義在 java.awt.event.ActionListener 接口相關的上下文中,許多支持用戶交互產生…

MySQL 基礎學習文檔

一、MySQL 概述 1.1 核心概念 數據庫 (DB):存儲數據的結構化倉庫數據庫管理系統 (DBMS):操作數據庫的軟件(如 MySQL、Oracle)SQL:操作關系型數據庫的標準語言 1.2 安裝與配置 下載地址:MySQL Installer…

火山引擎(豆包大模型)(抖音平臺)之火山方舟的Prompt的使用測試

前言 在大模型的使用過程當中,Prompt的使用非常的關鍵。原來,我對Prompt的理解不深,覺得Prompt的產生并不是很有必要。但是,自從使用了火山方舟中的“Prompt優解”之后,感受加深了,覺得Prompt是我們和大模型…

SpringBoot入門-(2) Spring IOC機制【附實例代碼】

SpringBoot入門-(2) Spring IOC機制 Spring Spring是一個當前主流的輕量級的框架,發展到形狀已經不僅僅是一個框架,而是形成以Spring為基礎的生態圈,如(Spring Boot,Spring Cloud,Spring Security等) Spring 兩大核心技術 控制反轉(IoC)面…

備賽藍橋杯之第十六屆模擬賽3期職業院校組

提示:本篇文章僅僅是作者自己目前在備賽藍橋杯中,自己學習與刷題的學習筆記,寫的不好,歡迎大家批評與建議 由于個別題目代碼量與題目量偏大,請大家自己去藍橋杯官網【連接高校和企業 - 藍橋云課】去尋找原題&#xff0…

【AI大模型】提示詞(Prompt)工程完全指南:從理論到產業級實踐

【AI大模型】提示詞(Prompt)工程完全指南:從理論到產業級實踐 一、Prompt 提示詞介紹:AI的“密碼本” 1. Prompt的底層定義與價值 本質:Prompt是人與AI模型的“協議語言”,通過文本指令激活模型的特定推理…

Excel 小黑第12套

對應大貓13 涉及金額修改 -數字組 -修改會計專用 VLOOKUP函數使用(查找目標,查找范圍(F4 絕對引用),返回值的所在列數,精確查找或模糊查找)雙擊填充柄就會顯示所有值 這個逗號要中文的不能英…

基于Spring Boot的冷鏈物流系統的設計與實現的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導,歡迎高校老師/同行前輩交流合作?。 技術范圍:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:…

python環境集成整理

接口測試過程中,可能會切換測試環境,通過配置相關信息修改 設計思路: 1、 準備各個環境配置文件信息,包括http、common 、redis、db 2、創建不同環境配置信息 測試環境:env_test.yml、 預生產環境:env_prepro.yml、生產…

動平衡仿真程序設計

以下是針對動平衡振動信號分析的模塊擴展方案&#xff0c;基于原有信號發生器架構進行增強&#xff1a; 一、動平衡專用信號生成器 // UnbalanceVibrationGenerator.h #pragma once #include "SignalGenerator.h" #include <vector>class UnbalanceVibration…

牛客周賽85 題解 Java ABCDEFG

A小紫的均勢博弈 判斷輸入的 n 是奇數還是偶數 import java.io.*; import java.math.*; import java.util.*;public class Main {static IoScanner sc new IoScanner();static final int mod(int) (1e97);static void solve() throws IOException {int nsc.nextInt();if(n%2…

python——UI自動化(1) selenium之介紹和環境配置

一、selenium介紹 selenium是一個第三方庫&#xff0c;python有很多庫&#xff1b; 1、什么是ui自動化? 通過模擬手工操作用戶ui頁面的方式&#xff0c;用代碼去實現自動化操作和驗證的行為。 2、ui自動化的優點&#xff1f; &#xff08;1&#xff09;解決重復性的功能測…