Spring Cloud-面試題(49)

摘要:

1、通俗易懂,適合小白
2、僅做面試復習用,部分來源網絡,博文免費,知識無價,侵權請聯系!


1. 什么是Spring Cloud框架?子項目哪幾大類?

Spring Cloud是一套分布式系統工具集,2023年核心模塊:

  • 服務發現:Nacos(替代Eureka)、Consul
  • 配置中心:Nacos Config、阿里云ACM
  • 通信:OpenFeign(HTTP/3)、Spring Cloud gRPC
  • 流量治理:Sentinel(替代Hystrix)
  • 網關:Spring Cloud Gateway(WebFlux響應式)
  • 可觀測性:Micrometer + Prometheus + SkyWalking

2. Spring Cloud框架有哪些優缺點?

優點

  • 深度集成Kubernetes(通過Spring Cloud Kubernetes)
  • 支持響應式編程(WebFlux+Reactive Feign)
  • 云廠商中立(阿里云/華為云/AWS適配)

缺點

  • Netflix組件遷移成本(需替換Hystrix/Ribbon/Zuul)
  • 學習曲線陡峭(需掌握K8s+云原生)

3. Spring Cloud斷路器的作用是什么?

使用Sentinel實現熔斷:

@SentinelResource(value = "userService",blockHandler = "blockHandler",fallback = "fallback")
public User getUser(String id) {// 遠程調用
}

當異常比例>50%時自動熔斷,10秒后進入半開狀態試探恢復。


4. 【真題】Spring Cloud核心組件有哪些?

組件作用替代舊組件
Nacos服務發現+配置中心Eureka
Sentinel熔斷降級+流量控制Hystrix
Gateway響應式API網關Zuul
OpenTelemetry分布式追蹤Sleuth

5. Spring Cloud如何實現服務的注冊?

Nacos注冊流程

  1. 服務啟動時發送元數據到Nacos Server
  2. 定期發送心跳(默認5秒)
  3. 消費者通過DNS或HTTP API獲取服務列表
# application.yml
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848namespace: dev

6. 什么是Spring Cloud Config?

現代方案:使用Nacos Config實現:

  • 配置動態推送(長輪詢)
  • 版本歷史回滾
  • 加密配置(集成KMS)
@RefreshScope // 支持配置熱更新
@RestController
public class ConfigController {@Value("${app.timeout}")private String timeout;
}

7. Spring Cloud Eureka自我保護機制是什么?

Nacos替代方案:健康保護閾值

  • 當健康實例比例<0.3時:
    • 返回所有實例(包括不健康)
    • 避免網絡抖動導致服務全不可用

8. 什么是服務熔斷?什么是服務降級?

Sentinel實現

機制配置示例效果
熔斷DegradeRule.setCount(500)QPS>500時拒絕請求
降級@SentinelResource(fallback)返回本地緩存數據

9. Spring Boot和Spring Cloud之間有什么聯系?

基礎
基礎
擴展
依賴
SpringBoot
自動配置
內嵌容器
SpringCloud
分布式能力

10. 【真題】Spring Cloud Feign和Dubbo區別

特性OpenFeign 2023Dubbo 3.x
協議HTTP/3 + RESTTriple協議(兼容gRPC)
性能50ms延遲1ms延遲
適用場景跨語言調用高性能Java內部調用

11. 什么是微服務?

2023年定義:

  • 獨立部署的業務單元
  • 通過API或事件通信
  • 自治的技術棧選擇
  • 典型示例:電商系統的訂單、支付、庫存服務

12. 微服務通信方式有哪幾種?

現代通信矩陣

類型協議適用場景
同步HTTP/3(OpenFeign)外部調用
異步Kafka/RocketMQ事件驅動架構
高性能RPCgRPC/Triple內部服務調用

13. 什么是微服務架構?

2023年特征

  • 服務網格(Service Mesh)集成
  • Serverless無服務化擴展
  • 云原生基礎設施依賴(K8s+Istio)
  • 可觀測性成為標配

14. 什么是Spring Cloud Netflix?

現狀

  • 進入維護模式(2022年停止更新)
  • 推薦替代方案:
    • Eureka → Nacos
    • Hystrix → Sentinel
    • Zuul → Spring Cloud Gateway

15. 什么是Spring Cloud Bus?

現代用法
通過Nacos Config + WebSocket實現配置實時推送,替代傳統的RabbitMQ/Kafka方案。


16. 什么是Spring Cloud Consul?

與Nacos對比

特性ConsulNacos
配置中心支持更強(歷史版本)
服務發現多數據中心更易用
協議RaftDistro

17. 【真題】Spring Cloud Zuul如何實現請求修改轉發?

Gateway替代方案

public class AuthFilter implements GlobalFilter {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {exchange.getRequest().mutate().header("X-Auth", "token");return chain.filter(exchange);}
}

18. 什么是Spring Cloud Sleuth?

演進為OpenTelemetry

  • 分布式追蹤(Trace)
  • 指標監控(Metrics)
  • 日志關聯(Logging)
    集成方案:
// 自動生成TraceID
@GetMapping("/api")
public String endpoint() {tracer.currentSpan().tag("user", "test");return "Hello";
}

19. Eureka和Zookeeper有哪些區別?

2023年選擇

  • 新項目:直接使用Nacos
  • 舊系統遷移
    • Eureka → Nacos
    • Zookeeper → Nacos/Consul

20. Spring Cloud Zuul如何處理負載均衡?

Gateway + LoadBalancer方案

spring:cloud:gateway:routes:- id: user-serviceuri: lb://user-servicepredicates:- Path=/api/users/**

21. 什么是Spring Cloud Zookeeper?

現狀

  • 已被Nacos取代
  • 僅用于遺留系統維護
  • 缺點:CP模型導致可用性低

22. 【真題】Spring Cloud Feign遠程調用流程?

OpenFeign 2023流程

  1. 動態代理生成
  2. 負載均衡(Spring Cloud LoadBalancer)
  3. HTTP/3連接建立
  4. 流量控制(Sentinel)
  5. 結果解碼

23. 什么是Spring Cloud OpenFeign?

最新特性

  • 支持響應式編程(Reactive Feign)
  • 內置重試機制(Resilience4j)
  • 集成Micrometer指標采集

24. 什么是Hystrix?如何實現容錯機制?

Sentinel對比

40%30%20%10%功能對比熔斷降級流量控制系統自適應熱點防護

25. 微服務有哪些優缺點?

2023年新挑戰

  • 優點:更好的云原生適配
  • 缺點:服務網格帶來的復雜度

26. 什么是Spring Cloud Stream?

現代架構
事件驅動架構(EDA)實現:

// 發布事件
streamBridge.send("order-out-0", OrderEvent);// 訂閱事件
@Bean
public Consumer<OrderEvent> handleOrder() {return event -> log.info("Received: {}", event);
}

27. Spring Cloud中為什么要使用Feign?

2023年價值

  • 聲明式HTTP客戶端
  • 內置負載均衡
  • 支持響應式編程
  • 與Spring生態深度集成

28. 什么是雪崩效應?

現代案例
某服務因慢SQL導致線程池耗盡,調用方因超時不斷重試,最終整個集群不可用。


29. 雪崩效應常見場景?

2023年典型場景

  • 緩存擊穿(Redis熱點Key失效)
  • 慢查詢連鎖反應
  • 第三方API限流導致阻塞

30. 雪崩效應解決方案?

現代防御體系

  1. 前端:請求限流(Nginx/AWS WAF)
  2. 網關:熔斷降級(Sentinel)
  3. 服務:線程池隔離(Virtual Thread)
  4. 存儲:多級緩存(Caffeine+Redis)

31. Ribbon和Feign有什么區別?

2023版

組件作用現狀
Spring Cloud LB客戶端負載均衡官方默認
OpenFeign聲明式HTTP客戶端推薦使用
Ribbon維護模式不推薦新項目

32. 斷路器有幾種熔斷狀態?

Sentinel狀態機

  1. CLOSED:正常請求
  2. OPEN:直接拒絕請求
  3. HALF-OPEN:試探性放行部分請求

33. 什么是Spring Cloud Ribbon?

替代方案
使用Spring Cloud LoadBalancer:

@Bean
@LoadBalanced // 開啟負載均衡
public WebClient.Builder webClientBuilder() {return WebClient.builder();
}

34. 什么是Spring Cloud Security?

2023方案

  • OAuth2.0:Spring Authorization Server
  • 認證:JWT + OIDC
  • 授權:RBAC模型

35. Ribbon和Nginx負載均衡區別?

現代對比

維度Spring Cloud LBNginx Plus
類型客戶端LB服務端LB
動態調整實時生效需reload配置
協議支持HTTP/gRPCHTTP/TCP/UDP

36. Zuul和Nginx有什么區別?

網關選型建議

  • 新項目:Spring Cloud Gateway
  • 邊緣網關:Nginx + Lua腳本
  • Service Mesh:Istio Ingress

37. Zuul和Spring Cloud Gateway區別?

性能對比

測試場景Zuul 2.xGateway提升幅度
100并發/RPS12,00035,000291%
平均延遲(ms)451664%

38. 【真題】Spring Cloud服務發現原理?

Nacos實現

  1. 服務啟動注冊元數據
  2. 心跳維持健康狀態(5秒)
  3. 客戶端緩存服務列表
  4. 服務變更事件推送

39. OpenFeign和Feign有什么區別?

核心差異

  • Feign:僅基礎HTTP客戶端
  • OpenFeign
    • 集成Spring MVC注解
    • 支持響應式
    • 內置負載均衡

40. Load Balancer負載均衡是什么?

Spring Cloud LB特性

  • 健康檢查過濾
  • 權重路由
  • 同Zone優先
@Bean
public ReactorLoadBalancer<ServiceInstance> customLB() {return new SameZonePreferenceLoadBalancer();
}

41. 微服務技術棧有哪些?

2023全景圖

  • 開發框架:Spring Cloud、Micronaut
  • 服務網格:Istio、Linkerd
  • Serverless:Knative、AWS Lambda

42. @LoadBalanced注解作用?

實現原理

@Bean
@LoadBalanced // 關鍵點:注入LoadBalancerInterceptor
public RestTemplate restTemplate() {return new RestTemplate();
}

43. 什么是Spring Cloud Gateway?

核心功能

  • WebFlux非阻塞IO
  • 動態路由
  • 集成Circuit Breaker
spring:cloud:gateway:routes:- id: authuri: lb://auth-servicepredicates:- Path=/api/auth/**

44. 【真題】Feign遠程調用流程實現?

詳細時序

ClientFeignLBSentinelService1. 接口調用2. 獲取實例3. 流控檢查通過4. HTTP請求5. 返回結果ClientFeignLBSentinelService

45. Zuul過濾器類型?

Gateway過濾器

  • Pre:認證/限流
  • Route:請求轉發
  • Post:響應修改
  • Error:異常處理

46. Zuul如何處理認證授權?

現代方案

public class AuthFilter implements GlobalFilter {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {String token = exchange.getRequest().getHeaders().getFirst("Authorization");if(!jwt.verify(token)) {exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);return exchange.getResponse().setComplete();}return chain.filter(exchange);}
}

47. 什么是Spring Cloud Task?

使用場景

  • 批處理作業
  • 定時任務
  • 短時數據處理
@Bean
public CommandLineRunner taskRunner() {return args -> {// 一次性任務邏輯};
}

ps:Spring Cloud Task 詳解

48. Spring Cloud主要解決什么問題?

2023年核心價值

  1. 服務治理:Nacos + K8s Service
  2. 配置管理:Nacos Config + 版本回溯
  3. 流量控制:Sentinel + Gateway
  4. 可觀測性:Micrometer + OpenTelemetry

49. Zuul如何處理錯誤異常?

Gateway統一異常處理

@Bean
public ErrorWebExceptionHandler customErrorHandler() {return (exchange, ex) -> {exchange.getResponse().writeWith(Mono.just(buffer(ex.getMessage())));return Mono.empty();};
}

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

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

相關文章

資源查看-iostat命令

文章目錄 系統中未安裝 iostat 命令 1. 監控CPU與磁盤的基礎負載 2. 診斷I/O性能瓶頸 3. 實時監控與動態采樣 4. 特定設備或分區的精細化監控 5. 性能測試與基準數據生成 6. 結合其他工具進行綜合調優 總結 結果輸出速查表 第一部分:CPU統計信息 第二部分:設備/磁盤統計信息(…

STM32 HAL庫外設編程學習筆記

STM32 HAL庫外設編程 1. 概述 本文檔是基于STM32 HAL庫的外設編程學習筆記&#xff0c;主要包括以下外設的配置和使用方法&#xff1a; GPIO&#xff1a;通用輸入輸出接口ADC&#xff1a;模數轉換器UART&#xff1a;通用異步收發器TIM&#xff1a;定時器I2C&#xff1a;內部…

DHCP服務配置與管理實戰指南

DHCP 服務配置與管理筆記 一、DHCP 核心概念 1. DHCP 定義與功能 DHCP (Dynamic Host Configuration Protocol)&#xff1a;動態主機配置協議核心功能&#xff1a; 自動分配 IP 地址提供子網掩碼、網關、DNS 等網絡參數管理 IP 地址租約周期 典型應用&#xff1a;ADSL撥號、企業…

WebSocket 在多線程環境下處理 Session并發

WebSocket 在多線程環境下處理 Session并發時&#xff0c;常見問題包括狀態沖突&#xff08;如 IllegalStateException&#xff09;、消息亂序、連接超時等。以下是綜合各技術方案的解決方案&#xff0c;分為單機多線程和分布式集群兩類場景&#xff1a;&#x1f512; 一、單機…

JDBC的連接過程(超詳細)

JDBC&#xff08;Java Database Connectivity&#xff09;是 Java 用于訪問數據庫的標準 API&#xff0c;它允許 Java 程序與各種不同類型的數據庫進行交互&#xff0c; 其連接數據庫的過程主要包含以下幾個步驟&#xff1a;1. 導入 JDBC 驅動依賴在使用 JDBC 連接數據庫之前&a…

本地WSL部署接入 whisper + ollama qwen3:14b 總結字幕校對增強版

1. 實現功能 M4-4: 校對增強版 (最終完全體) 本腳本是整個 Module 的最終形態&#xff0c;采用了“代碼預處理 LLM校對”的終極方案&#xff1a; 代碼預處理: 確定性地在每個語音片段后添加逗號&#xff0c;生成一份“標點草稿”。LLM校對: LLM 的任務被簡化為“校對和修正”這…

MySQL數據庫簡介

1 簡介 MySQL是一個關系型數據庫管理系統&#xff0c;由瑞典 MySQL AB公司開發&#xff0c;屬于 Oracle 旗下產品&#xff0c;是當今最流行的關系型數據庫管理系統之一&#xff0c;在 WEB應用方面&#xff0c;MySQL是最好的RDBMS (Relational Database Management System&#…

[Oracle] UNPIVOT 列轉行

Oracle數據庫中的UNPIVOT是一種用于將列轉換為行的SQL操作&#xff0c;它允許用戶將多個列的數據轉換為多行的形式&#xff0c;以便進行更靈活的數據分析和報表生成UNPIVOT主要用于將寬表(多列)轉換為長表(多行)&#xff0c;減少表的列數&#xff0c;增加行數語法格式SELECT pi…

node.js 學習筆記3 HTTP

path模塊 path模塊主要用于操作路徑。要使用path&#xff0c;首先需要引入path模塊。require(path) path.resolve 用于拼接規范的絕對路徑。 如果想拼接一個路徑&#xff0c;有時候是使用字符串手動拼接的&#xff0c;但由于系統的規范不同&#xff0c;路徑中的\和/無法統一…

Flutter Dialog、BottomSheet

屬性說明title標題content內容actions按鈕applicationName說明文字applicationVersion版本applicationLegalese版本基本使用class MyState extends State {AlertDialog delDialog(BuildContext context) {AlertDialog alertDialog AlertDialog(title: Text("提示"),…

《算法導論》第 19 章 - 斐波那契堆

引言斐波那契堆&#xff08;Fibonacci Heap&#xff09;是一種高效的可合并堆數據結構&#xff0c;由 Michael L. Fredman 和 Robert E. Tarjan 于 1984 年提出。它在許多優先隊列操作中提供了極佳的 amortized&#xff08;攤還&#xff09;時間復雜度&#xff0c;尤其適用于需…

MySQL-日志

MySQL-日志前言一、錯誤日志&#xff08;error log&#xff09;二、慢查詢日志(slow query log)三 、一般查詢日志(general log)四、 事務日志重做日志&#xff08;redo log&#xff09;回滾日志&#xff08;undo log&#xff09;五、 二進制日志(bin log)/歸檔日志 > 數據同…

嵌入式C語言編程:策略模式、狀態模式和狀態機的應用

概述 在沒有面向對象語法的C語言中&#xff0c;策略&#xff08;Strategy&#xff09;模式和狀態&#xff08;State&#xff09;模式都通過“上下文 接口”組合來模擬多態。 它們在代碼結構上幾乎一致&#xff0c;但設計意圖和應用場景卻差異很大。 本文分三部分深入剖析&…

人工智能、機器學習、深度學習:2025技術革命的深度解析

目錄 人工智能、機器學習、深度學習&#xff1a;技術革命的深度解析 引言 第一部分&#xff1a;人工智能的起源與演進 1.1 人工智能的定義 1.2 人工智能的歷史 1.3 人工智能的關鍵概念 a.知識表示&#xff08;Knowledge Representation&#xff09; b.搜索算法&#xf…

【Python】常用內置模塊

1.os 文件目錄 import os# 創建文件夾 os.mkdir(dir) # 判斷文件是否存在 os.path.exists(path) # 列出文件夾下文件列表 os.listdir(dir)""" 常用 """ # 當前文件相對路徑 os.getcwd()# 當前文件絕對路徑 os.path.abspath(__file__)# 當前文…

(Python)爬蟲進階(Python爬蟲教程)(CSS選擇器)

源代碼&#xff1a;#導入庫 import requests from bs4 import BeautifulSoup import pandas as pd#爬蟲函數 def scrape_books():#1.基本網址連接base_url "http://books.toscrape.com"#2.獲取基本網址responserequests.get(base_url)#3.檢查是否正常訪問if respons…

第七節 自然語言處理與Bert

自然語言處理與BERT模型&#xff1a;從基礎到實踐入門 自然語言處理&#xff08;NLP&#xff09;的核心目標之一是讓計算機理解人類語言的語義和上下文。本文將從基礎的字詞表示出發&#xff0c;逐步解析傳統模型的局限性、Self-attention的突破性思想&#xff0c;以及BERT如何…

攻擊者瞄準加密技術的基礎:智能合約

雖然利用許多智能合約中的安全漏洞已經成為網絡攻擊者的長期目標&#xff0c;但越來越多的安全公司開始關注使用欺詐性或混淆的智能合約從加密貨幣賬戶中竊取資金的騙局。 根據網絡安全公司 SentinelOne 本周發布的分析報告&#xff0c;在最近一次引人注目的攻擊中&#xff0c…

基于開源AI大模型、AI智能名片與S2B2C商城小程序的零售智能化升級路徑研究

摘要&#xff1a;在零售業數字化轉型浪潮中&#xff0c;人工智能技術正從“輔助工具”向“核心生產力”演進。本文聚焦開源AI大模型、AI智能名片與S2B2C商城小程序的協同應用&#xff0c;提出“數據感知-關系重構-生態協同”的三維創新框架。通過分析智能傳感、動態畫像與供應鏈…

機器學習 樸素貝葉斯

目錄 一.什么是樸素貝葉斯 1.1 從 “概率” 到 “分類” 二.樸素貝葉斯的數學基礎&#xff1a;貝葉斯定理 2.1 貝葉斯定理公式 2.2 從貝葉斯定理到樸素貝葉斯分類 2.3 “樸素” 的關鍵&#xff1a;特征獨立性假設 三、樸素貝葉斯的三種常見類型 3.1 高斯樸素貝葉斯&…