Java-69 深入淺出 RPC 單體架構 垂直架構 分布式架構 微服務架構

點一下關注吧!!!非常感謝!!持續更新!!!

🚀 AI篇持續更新中!(長期更新)

AI煉丹日志-29 - 字節跳動 DeerFlow 深度研究框斜體樣式架 私有部署 測試上手 架構研究,持續打造實用AI工具指南!📐🤖

💻 Java篇正式開啟!(300篇)

目前2025年07月10日更新到:
Java-68 深入淺出 分布式服務 Netty實現自定義RPC 附詳細代碼
MyBatis 已完結,Spring 已完結,Nginx已完結,Tomcat已完結,分布式服務正在更新!深入淺出助你打牢基礎!

📊 大數據板塊已完成多項干貨更新(300篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余項核心組件,覆蓋離線+實時數倉全棧!
大數據-278 Spark MLib - 基礎介紹 機器學習算法 梯度提升樹 GBDT案例 詳解

請添加圖片描述

單體架構詳解

單體架構(Monolithic Architecture)是一種傳統的軟件架構模式,其核心特征是將應用程序的所有功能模塊(包括用戶界面、業務邏輯、數據訪問等)都集成在一個單一的代碼庫中,最終打包為一個可部署的單元。這種架構模式通常采用MVC(Model-View-Controller)分層設計,使用SSM(Spring+SpringMVC+MyBatis)等傳統Java框架實現。

典型特征

  1. 代碼集中化:所有業務功能(如用戶管理、訂單處理、支付系統等)都位于同一個項目中
  2. 統一技術棧:前端和后端使用相同的技術框架和語言
  3. 集中部署:整個應用作為單一進程部署,通常運行在Tomcat、Jetty等Web容器中
  4. 共享數據庫:所有模塊訪問同一個數據庫實例

常見應用場景

  • 初創企業的小型應用(員工數量<100人)
  • 內部管理系統(如OA、CRM等)
  • 日均PV<10萬的展示型網站
  • 開發周期短(3-6個月)的短期項目

雖然單體架構在項目初期具有開發簡單、部署便捷等優勢,但隨著業務復雜度提升和用戶量增長,其固有的局限性會逐漸顯現,促使企業向更先進的架構模式演進。# 基本介紹

隨著互聯網技術的快速發展和移動設備的普及,全球互聯網用戶數量已從2000年的3.6億增長至2023年的53億。與此同時,網站流量呈現出指數級增長態勢,以淘寶為例,其雙十一活動期間每秒交易峰值達到58.3萬筆。在這種背景下,傳統的單體架構在面對高并發請求和業務快速迭代需求時,暴露出諸多局限性:擴展性差、開發效率低下、部署周期長等問題日益凸顯。為了應對這些挑戰,系統架構的演進已成為企業數字化轉型的關鍵環節。

單體架構詳解

單體架構(Monolithic Architecture)是一種傳統的軟件架構模式,其核心特征是將應用程序的所有功能模塊(包括用戶界面、業務邏輯、數據訪問等)都集成在一個單一的代碼庫中,最終打包為一個可部署的單元。這種架構模式通常采用MVC(Model-View-Controller)分層設計,使用SSM(Spring+SpringMVC+MyBatis)等傳統Java框架實現。

典型特征

  1. 代碼集中化:所有業務功能(如用戶管理、訂單處理、支付系統等)都位于同一個項目中
  2. 統一技術棧:前端和后端使用相同的技術框架和語言
  3. 集中部署:整個應用作為單一進程部署,通常運行在Tomcat、Jetty等Web容器中
  4. 共享數據庫:所有模塊訪問同一個數據庫實例

常見應用場景

  • 初創企業的小型應用(員工數量<100人)
  • 內部管理系統(如OA、CRM等)
  • 日均PV<10萬的展示型網站
  • 開發周期短(3-6個月)的短期項目

雖然單體架構在項目初期具有開發簡單、部署便捷等優勢,但隨著業務復雜度提升和用戶量增長,其固有的局限性會逐漸顯現,促使企業向更先進的架構模式演進。

在這里插入圖片描述
優點:
● 小項目開發快,成本低

  • 適用于初創團隊或MVP產品開發
  • 代碼庫規模小,開發周期短
  • 不需要復雜的基礎設施投入
  • 示例:個人博客系統可在1-2周內完成開發

● 架構簡單

  • 采用單體應用架構(Monolithic Architecture)
  • 所有功能模塊都在同一個代碼庫中
  • 開發人員容易理解整體架構
  • 部署時只需管理單一應用

● 易于測試

  • 單元測試和集成測試執行速度快
  • 測試環境搭建簡單
  • 端到端測試覆蓋率高
  • 示例:運行全部測試用例通常只需幾分鐘

● 易于部署

  • 只需要部署單個應用包
  • 運維復雜度低
  • 適合使用簡單的CI/CD流程
  • 典型部署步驟:構建->打包->上傳->啟動

缺點:
● 大項目模塊耦合嚴重 不易開發和維護 溝通成本高

  • 代碼量超過10萬行后問題凸顯
  • 功能邊界模糊,修改可能產生連鎖反應
  • 需要頻繁的團隊協調會議
  • 示例:修改用戶模塊可能影響支付功能

● 新增業務困難

  • 現有架構難以容納新業務需求
  • 新功能開發需要重構現有代碼
  • 技術債務積累導致開發效率下降
  • 典型場景:添加直播功能到電商系統

● 核心業務與邊緣業務混合在一塊,出現問題互相影響

  • 系統故障難以隔離
  • 非關鍵功能可能拖累核心業務
  • 資源分配不合理
  • 示例:促銷活動導致訂單系統崩潰優點:
    ● 小項目開發快,成本低
  • 適用于初創團隊或MVP產品開發
  • 代碼庫規模小,開發周期短
  • 不需要復雜的基礎設施投入
  • 示例:個人博客系統可在1-2周內完成開發

● 架構簡單

  • 采用單體應用架構(Monolithic Architecture)
  • 所有功能模塊都在同一個代碼庫中
  • 開發人員容易理解整體架構
  • 部署時只需管理單一應用

● 易于測試

  • 單元測試和集成測試執行速度快
  • 測試環境搭建簡單
  • 端到端測試覆蓋率高
  • 示例:運行全部測試用例通常只需幾分鐘

● 易于部署

  • 只需要部署單個應用包
  • 運維復雜度低
  • 適合使用簡單的CI/CD流程
  • 典型部署步驟:構建->打包->上傳->啟動

缺點:
● 大項目模塊耦合嚴重 不易開發和維護 溝通成本高

  • 代碼量超過10萬行后問題凸顯
  • 功能邊界模糊,修改可能產生連鎖反應
  • 需要頻繁的團隊協調會議
  • 示例:修改用戶模塊可能影響支付功能

● 新增業務困難

  • 現有架構難以容納新業務需求
  • 新功能開發需要重構現有代碼
  • 技術債務積累導致開發效率下降
  • 典型場景:添加直播功能到電商系統

● 核心業務與邊緣業務混合在一塊,出現問題互相影響

  • 系統故障難以隔離
  • 非關鍵功能可能拖累核心業務
  • 資源分配不合理
  • 示例:促銷活動導致訂單系統崩潰

垂直架構詳解

基本概念

垂直架構(Vertical Architecture)是一種將單體應用按照業務領域或功能模塊進行垂直劃分的系統架構方式。在這種架構中,原有的單體應用被拆分為多個獨立的、垂直的業務子系統,每個子系統負責特定的業務功能。

核心特征

  1. 業務垂直劃分:將系統按照業務線或功能模塊進行切割,形成多個獨立的垂直項目。例如:

    • 電商系統可劃分為:用戶中心、商品服務、訂單系統、支付系統等
    • 社交平臺可劃分為:用戶服務、內容服務、消息服務、推薦系統等
  2. 獨立部署運行:每個垂直子系統可以獨立開發、測試、部署和運行,具有自己的:

    • 代碼倉庫
    • 數據庫(通常采用分庫設計)
    • 技術棧(可根據業務特點選擇)
    • 運維體系

實施優勢

  1. 業務隔離

    • 避免系統間的相互影響,如一個業務模塊的故障不會波及其他模塊
    • 典型案例:電商大促期間,訂單系統的壓力不會影響用戶登錄功能
  2. 研發效率提升

    • 團隊可按垂直領域分工,減少代碼沖突
    • 并行開發成為可能,縮短迭代周期
    • 新成員更容易快速上手特定業務模塊
  3. 技術選型靈活性

    • 不同業務可以采用最適合的技術方案
    • 例如:推薦系統可采用Python+機器學習框架,而交易系統可使用Java+分布式事務

典型應用場景

  1. 業務復雜度增長:當單體應用功能過多,代碼量龐大時
  2. 團隊規模擴大:研發人員超過20人,協作效率下降時
  3. 性能瓶頸出現:特定業務模塊需要獨立擴展時

實施步驟

  1. 業務領域分析:識別核心業務邊界
  2. 服務拆分設計:確定垂直劃分方案
  3. 數據分離方案:設計數據庫拆分策略
  4. 接口規范制定:定義系統間交互協議
  5. 漸進式遷移:通常采用"絞殺者模式"逐步替換

演進方向

垂直架構通常作為系統架構演進過程中的中間狀態,后續可能發展為:

  • 分布式服務架構(SOA)
  • 微服務架構
  • 服務網格架構# 垂直架構詳解

基本概念

垂直架構(Vertical Architecture)是一種將單體應用按照業務領域或功能模塊進行垂直劃分的系統架構方式。在這種架構中,原有的單體應用被拆分為多個獨立的、垂直的業務子系統,每個子系統負責特定的業務功能。

核心特征

  1. 業務垂直劃分:將系統按照業務線或功能模塊進行切割,形成多個獨立的垂直項目。例如:

    • 電商系統可劃分為:用戶中心、商品服務、訂單系統、支付系統等
    • 社交平臺可劃分為:用戶服務、內容服務、消息服務、推薦系統等
  2. 獨立部署運行:每個垂直子系統可以獨立開發、測試、部署和運行,具有自己的:

    • 代碼倉庫
    • 數據庫(通常采用分庫設計)
    • 技術棧(可根據業務特點選擇)
    • 運維體系

實施優勢

  1. 業務隔離

    • 避免系統間的相互影響,如一個業務模塊的故障不會波及其他模塊
    • 典型案例:電商大促期間,訂單系統的壓力不會影響用戶登錄功能
  2. 研發效率提升

    • 團隊可按垂直領域分工,減少代碼沖突
    • 并行開發成為可能,縮短迭代周期
    • 新成員更容易快速上手特定業務模塊
  3. 技術選型靈活性

    • 不同業務可以采用最適合的技術方案
    • 例如:推薦系統可采用Python+機器學習框架,而交易系統可使用Java+分布式事務

典型應用場景

  1. 業務復雜度增長:當單體應用功能過多,代碼量龐大時
  2. 團隊規模擴大:研發人員超過20人,協作效率下降時
  3. 性能瓶頸出現:特定業務模塊需要獨立擴展時

實施步驟

  1. 業務領域分析:識別核心業務邊界
  2. 服務拆分設計:確定垂直劃分方案
  3. 數據分離方案:設計數據庫拆分策略
  4. 接口規范制定:定義系統間交互協議
  5. 漸進式遷移:通常采用"絞殺者模式"逐步替換

演進方向

垂直架構通常作為系統架構演進過程中的中間狀態,后續可能發展為:

  • 分布式服務架構(SOA)
  • 微服務架構
  • 服務網格架構

在這里插入圖片描述
優點:
● 系統拆分實現了流量分擔,解決了并發問題

  • 通過將單體應用拆分為多個微服務,每個服務獨立處理特定業務模塊的請求流量
  • 例如電商系統拆分為訂單服務、支付服務、庫存服務等,各服務獨立部署,避免單一服務過載
  • 系統整體QPS提升200%,高峰期服務器負載下降40%

● 可以針對不同系統進行優化

  • 可根據各服務特性選擇最適合的技術棧,如計算密集型服務使用Golang,IO密集型使用Node.js
  • 資源配置差異化:核心服務可分配更多CPU和內存資源
  • 例如推薦系統單獨采用GPU加速算法計算

● 方便水平擴展,負載均衡,容錯率提高

  • 單個服務可獨立擴容,如大促期間只需擴展訂單服務實例
  • 采用K8s自動伸縮策略,根據CPU使用率動態調整實例數量
  • 服務熔斷機制確保單個服務故障不影響整體系統可用性

● 系統間相互獨立,互不影響,新的業務迭代時更加高效

  • 各服務獨立開發、測試、部署,發布周期從2周縮短至2天
  • 新功能上線只需更新相關服務,不影響其他模塊
  • 例如支付系統接入新渠道只需修改支付服務,無需全量回歸測試

缺點:
● 服務系統之間接口調用硬編碼

  • 服務間調用URL直接寫在代碼中,變更時需要重新部署
  • 缺乏服務發現機制,新增節點需手動修改配置
  • 例如訂單服務調用庫存服務的IP地址直接編碼在Java類中

● 搭建集群之后,實現負載均衡比較復雜

  • 需要維護Nginx配置進行流量分發
  • 動態權重調整需要人工干預
  • 例如新增支付服務節點后,需手動更新負載均衡器配置

● 服務系統接口調用監控不到位,調用方式不統一

  • 存在HTTP、RPC、消息隊列等多種調用方式
  • 缺乏統一的調用鏈追蹤,問題定位困難
  • 例如支付超時問題需要查多個系統的日志

● 服務監控不到位

  • 僅監控基礎指標如CPU、內存,缺少業務指標監控
  • 告警閾值設置不合理,經常誤報或漏報
  • 例如庫存服務異常半小時后才觸發告警

● 數據庫資源浪費,充斥著慢查詢,主從同步延遲大

  • 各服務使用獨立數據庫實例,資源利用率不足50%
  • 缺乏SQL審計,存在全表掃描等性能問題
  • 主從同步延遲常達5-10秒,影響讀寫一致性
  • 例如用戶余額查詢可能讀到舊數據優點:
    ● 系統拆分實現了流量分擔,解決了并發問題
  • 通過將單體應用拆分為多個微服務,每個服務獨立處理特定業務模塊的請求流量
  • 例如電商系統拆分為訂單服務、支付服務、庫存服務等,各服務獨立部署,避免單一服務過載
  • 系統整體QPS提升200%,高峰期服務器負載下降40%

● 可以針對不同系統進行優化

  • 可根據各服務特性選擇最適合的技術棧,如計算密集型服務使用Golang,IO密集型使用Node.js
  • 資源配置差異化:核心服務可分配更多CPU和內存資源
  • 例如推薦系統單獨采用GPU加速算法計算

● 方便水平擴展,負載均衡,容錯率提高

  • 單個服務可獨立擴容,如大促期間只需擴展訂單服務實例
  • 采用K8s自動伸縮策略,根據CPU使用率動態調整實例數量
  • 服務熔斷機制確保單個服務故障不影響整體系統可用性

● 系統間相互獨立,互不影響,新的業務迭代時更加高效

  • 各服務獨立開發、測試、部署,發布周期從2周縮短至2天
  • 新功能上線只需更新相關服務,不影響其他模塊
  • 例如支付系統接入新渠道只需修改支付服務,無需全量回歸測試

缺點:
● 服務系統之間接口調用硬編碼

  • 服務間調用URL直接寫在代碼中,變更時需要重新部署
  • 缺乏服務發現機制,新增節點需手動修改配置
  • 例如訂單服務調用庫存服務的IP地址直接編碼在Java類中

● 搭建集群之后,實現負載均衡比較復雜

  • 需要維護Nginx配置進行流量分發
  • 動態權重調整需要人工干預
  • 例如新增支付服務節點后,需手動更新負載均衡器配置

● 服務系統接口調用監控不到位,調用方式不統一

  • 存在HTTP、RPC、消息隊列等多種調用方式
  • 缺乏統一的調用鏈追蹤,問題定位困難
  • 例如支付超時問題需要查多個系統的日志

● 服務監控不到位

  • 僅監控基礎指標如CPU、內存,缺少業務指標監控
  • 告警閾值設置不合理,經常誤報或漏報
  • 例如庫存服務異常半小時后才觸發告警

● 數據庫資源浪費,充斥著慢查詢,主從同步延遲大

  • 各服務使用獨立數據庫實例,資源利用率不足50%
  • 缺乏SQL審計,存在全表掃描等性能問題
  • 主從同步延遲常達5-10秒,影響讀寫一致性
  • 例如用戶余額查詢可能讀到舊數據

分布式架構

面向服務的架構(SOA)概述

SOA(Service Oriented Architecture)即面向服務的架構,是一種將應用程序功能作為服務提供給其他組件使用的軟件設計方法。在傳統垂直劃分架構的基礎上,SOA進一步將每個項目拆分為多個松耦合的服務單元。

SOA的核心特征

  1. 服務獨立性:每個服務通常作為獨立的進程運行在操作系統中,具有明確的邊界
  2. 網絡通信:服務之間通過標準化的網絡協議進行交互
  3. 松耦合:服務之間通過標準接口連接,彼此依賴程度低
  4. 可重用性:服務可以跨多個業務場景復用

傳統架構向SOA演進的需求

在垂直劃分架構中,隨著業務發展會出現以下典型問題:

  1. 模塊爆炸:業務模塊數量急劇增加,系統復雜度呈指數級增長
  2. RPC泛濫:系統間調用關系錯綜復雜,調用鏈難以追蹤
  3. 重復建設:通用業務邏輯在各系統中重復實現,維護成本高
  4. 標準化缺失
    • 接口協議不統一(REST/HTTP/RPC等混用)
    • 缺乏統一的服務監控體系
    • 負載均衡實現方式各異

SOA解決方案

針對上述問題,采用SOA架構的核心改進包括:

業務邏輯下沉

將通用業務能力抽象為標準化服務:

  • 用戶服務(登錄/鑒權/權限)
  • 支付服務(交易/對賬)
  • 消息服務(通知/推送)
  • 文件服務(上傳/下載)

這些服務通過定義良好的接口對外提供能力,各業務系統只需調用無需重復實現。

引入Dubbo框架

Dubbo作為高性能RPC框架,提供了完整的企業級SOA解決方案:

  1. 遠程方法調用

    • 基于接口的透明化RPC
    • 支持多種協議(Dubbo協議/HTTP/REST等)
    • 示例:userService.getUserById(id)
  2. 服務治理能力

    • 智能容錯:Failover/Failfast/Failsafe等策略
    • 負載均衡:Random/RoundRobin/ConsistentHash等算法
    • 示例:自動剔除不可用節點,請求自動路由到健康實例
  3. 服務注冊發現

    • 自動服務注冊(Zookeeper/Nacos等注冊中心)
    • 動態服務發現與訂閱
    • 示例:新服務上線自動加入服務池,無需人工配置
  4. 擴展能力

    • 支持服務降級
    • 灰度發布能力
    • 調用鏈路追蹤

典型應用場景

  1. 電商系統服務化

    • 商品服務、訂單服務、庫存服務獨立部署
    • 促銷系統調用庫存服務進行預占
    • 訂單系統調用支付服務完成交易
  2. 金融系統整合

    • 核心交易服務供多渠道調用
    • 風控服務統一所有業務線的風控邏輯
    • 對賬服務集中處理所有交易數據

通過SOA架構改造,系統獲得了更好的擴展性、可維護性和復用性,為后續的微服務架構演進奠定了基礎。# 分布式架構

面向服務的架構(SOA)概述

SOA(Service Oriented Architecture)即面向服務的架構,是一種將應用程序功能作為服務提供給其他組件使用的軟件設計方法。在傳統垂直劃分架構的基礎上,SOA進一步將每個項目拆分為多個松耦合的服務單元。

SOA的核心特征

  1. 服務獨立性:每個服務通常作為獨立的進程運行在操作系統中,具有明確的邊界
  2. 網絡通信:服務之間通過標準化的網絡協議進行交互
  3. 松耦合:服務之間通過標準接口連接,彼此依賴程度低
  4. 可重用性:服務可以跨多個業務場景復用

傳統架構向SOA演進的需求

在垂直劃分架構中,隨著業務發展會出現以下典型問題:

  1. 模塊爆炸:業務模塊數量急劇增加,系統復雜度呈指數級增長
  2. RPC泛濫:系統間調用關系錯綜復雜,調用鏈難以追蹤
  3. 重復建設:通用業務邏輯在各系統中重復實現,維護成本高
  4. 標準化缺失
    • 接口協議不統一(REST/HTTP/RPC等混用)
    • 缺乏統一的服務監控體系
    • 負載均衡實現方式各異

SOA解決方案

針對上述問題,采用SOA架構的核心改進包括:

業務邏輯下沉

將通用業務能力抽象為標準化服務:

  • 用戶服務(登錄/鑒權/權限)
  • 支付服務(交易/對賬)
  • 消息服務(通知/推送)
  • 文件服務(上傳/下載)

這些服務通過定義良好的接口對外提供能力,各業務系統只需調用無需重復實現。

引入Dubbo框架

Dubbo作為高性能RPC框架,提供了完整的企業級SOA解決方案:

  1. 遠程方法調用

    • 基于接口的透明化RPC
    • 支持多種協議(Dubbo協議/HTTP/REST等)
    • 示例:userService.getUserById(id)
  2. 服務治理能力

    • 智能容錯:Failover/Failfast/Failsafe等策略
    • 負載均衡:Random/RoundRobin/ConsistentHash等算法
    • 示例:自動剔除不可用節點,請求自動路由到健康實例
  3. 服務注冊發現

    • 自動服務注冊(Zookeeper/Nacos等注冊中心)
    • 動態服務發現與訂閱
    • 示例:新服務上線自動加入服務池,無需人工配置
  4. 擴展能力

    • 支持服務降級
    • 灰度發布能力
    • 調用鏈路追蹤

典型應用場景

  1. 電商系統服務化

    • 商品服務、訂單服務、庫存服務獨立部署
    • 促銷系統調用庫存服務進行預占
    • 訂單系統調用支付服務完成交易
  2. 金融系統整合

    • 核心交易服務供多渠道調用
    • 風控服務統一所有業務線的風控邏輯
    • 對賬服務集中處理所有交易數據

通過SOA架構改造,系統獲得了更好的擴展性、可維護性和復用性,為后續的微服務架構演進奠定了基礎。

在這里插入圖片描述

優點詳細說明:

  1. 服務接口化與透明遠程調用

    • Dubbo框架通過接口代理機制,將遠程服務調用偽裝成本地方法調用。例如:訂單服務調用庫存服務時,開發者只需調用inventoryService.deductStock(),無需處理網絡通信、序列化等底層細節。
    • 典型應用場景:電商系統中,訂單模塊與支付模塊通過接口交互,開發時只需關注業務邏輯。
  2. 業務分層與模塊化設計

    • 分層示例:用戶服務、商品服務、訂單服務獨立部署,各模塊通過API網關通信。
    • 擴展性體現:當訂單量激增時,可單獨擴容訂單服務集群,無需調整商品服務架構。
  3. 數據安全與權限管控

    • 數據隔離實現:通過服務接口暴露的getUserInfo()方法,可內置權限校驗邏輯(如RBAC模型),避免直接數據庫訪問。
    • 典型案例:銀行系統中,賬戶余額查詢接口會強制校驗調用方身份和權限范圍。
  4. 無狀態化設計

    • 實現方式:服務實例不保存會話數據,用戶狀態通過Redis集中管理。
    • 優勢說明:當某個服務實例崩潰時,請求可快速路由到其他實例,保障高可用性。
  5. 服務責任人機制

    • 實踐案例:在微服務監控看板中標注每個服務的Owner,當商品搜索接口響應延遲時,可直接聯系搜索服務團隊排查。

缺點深度分析:

  1. 服務粒度失控風險

    • 反面教材:將「用戶地址管理」拆分為獨立服務(而非用戶服務的子模塊),導致一次用戶信息查詢需要多次跨服務調用。
    • 解決方案:遵循「單一職責但適度聚合」原則,如電商場景中「訂單履約」可作為聚合服務包含物流、庫存等邏輯。
  2. 接口爆炸問題

    • 典型錯誤:為每個CRUD操作單獨設計接口(如createOrder(), updateOrder(), deleteOrder())。
    • 優化方案:按業務場景抽象,如OrderService提供submitOrder()復合接口,內部封裝創建、扣庫存、發消息等操作。
  3. 版本兼容性挑戰

    • 具體問題:V1接口返回{userName:""},V2改為{name:""}會導致客戶端解析失敗。
    • 最佳實踐:通過@Deprecated標記舊字段,新老版本并存至少3個迭代周期。
  4. 分布式鏈路隱患

    • 連鎖故障案例:支付服務超時→訂單服務重試→庫存服務雪崩。
    • 監控方案:結合SkyWalking實現全鏈路追蹤,重點監控P99響應時間與跨服務依賴。
    • 容錯設計:在網關層配置熔斷策略,如庫存服務失敗率超10%時自動降級。### 優點詳細說明:
  5. 服務接口化與透明遠程調用

    • Dubbo框架通過接口代理機制,將遠程服務調用偽裝成本地方法調用。例如:訂單服務調用庫存服務時,開發者只需調用inventoryService.deductStock(),無需處理網絡通信、序列化等底層細節。
    • 典型應用場景:電商系統中,訂單模塊與支付模塊通過接口交互,開發時只需關注業務邏輯。
  6. 業務分層與模塊化設計

    • 分層示例:用戶服務、商品服務、訂單服務獨立部署,各模塊通過API網關通信。
    • 擴展性體現:當訂單量激增時,可單獨擴容訂單服務集群,無需調整商品服務架構。
  7. 數據安全與權限管控

    • 數據隔離實現:通過服務接口暴露的getUserInfo()方法,可內置權限校驗邏輯(如RBAC模型),避免直接數據庫訪問。
    • 典型案例:銀行系統中,賬戶余額查詢接口會強制校驗調用方身份和權限范圍。
  8. 無狀態化設計

    • 實現方式:服務實例不保存會話數據,用戶狀態通過Redis集中管理。
    • 優勢說明:當某個服務實例崩潰時,請求可快速路由到其他實例,保障高可用性。
  9. 服務責任人機制

    • 實踐案例:在微服務監控看板中標注每個服務的Owner,當商品搜索接口響應延遲時,可直接聯系搜索服務團隊排查。

缺點深度分析:

  1. 服務粒度失控風險

    • 反面教材:將「用戶地址管理」拆分為獨立服務(而非用戶服務的子模塊),導致一次用戶信息查詢需要多次跨服務調用。
    • 解決方案:遵循「單一職責但適度聚合」原則,如電商場景中「訂單履約」可作為聚合服務包含物流、庫存等邏輯。
  2. 接口爆炸問題

    • 典型錯誤:為每個CRUD操作單獨設計接口(如createOrder(), updateOrder(), deleteOrder())。
    • 優化方案:按業務場景抽象,如OrderService提供submitOrder()復合接口,內部封裝創建、扣庫存、發消息等操作。
  3. 版本兼容性挑戰

    • 具體問題:V1接口返回{userName:""},V2改為{name:""}會導致客戶端解析失敗。
    • 最佳實踐:通過@Deprecated標記舊字段,新老版本并存至少3個迭代周期。
  4. 分布式鏈路隱患

    • 連鎖故障案例:支付服務超時→訂單服務重試→庫存服務雪崩。
    • 監控方案:結合SkyWalking實現全鏈路追蹤,重點監控P99響應時間與跨服務依賴。
    • 容錯設計:在網關層配置熔斷策略,如庫存服務失敗率超10%時自動降級。

微服務架構

微服務架構是一種將單個應用程序,作為一套小型服務開發的方法,每種應用程序都在自己的進程中獨立運行,并使用輕量級機制如HTTP的方式進行交互,通過全自動部署機制進行獨立部署。這些服務的集中化管理非常少,他們可以使用不同的編程語言、不同的存儲技術。
微服務是在SOA上的升華,粒度更加細致,微服務架構強調一個重點是:“業務需要徹底的組件化和服務化”。

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

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

相關文章

Android 如何阻止應用自升級

問題背景 1.打開PlayStore,然后登陸賬戶 2.退出應用過幾分鐘后,應用會自動更新到新版本 3.再次打開應用,問題即可復現 一聯網進入playStore應用并且登錄谷歌賬號,退出幾分鐘,在進入,發現應用版本號更新了,應用進行了自我升級,關鍵是升級之后谷歌商店就用不了了,就…

Docker-構建鏡像并實現LNMP架構

一、搭建LNMP基礎配置1、制作Nginx鏡像制作dockerfilevim dockerfileFROM centos:7 RUN rm -rf /etc/yum.repos.d/* RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo RUN yum clean all RUN yum makecache RUN yum -y install z…

Python之--基本知識

基本輸出語法結構: print(輸出內容)print()函數完整的語法格出: print (value,...,sep,end\n,fileNone)只有字符串可以用連接基本輸入語法結構: xinput(提示文字’)注意事項: 無論輸入的數據是什么 x 的數據類型都是字符串類型示例&#xff1a;name input("Enter your na…

VS CodeC51 單片機開發環境搭建

文章目錄前言1.安裝插件2.創建EIDE項目&#xff08;51單片機&#xff09;3.配置工具鏈&#xff08;第一次使用需要配置&#xff09;4.編譯與下載5.項目文件簡介與串口調試工具6.推薦插件7.打包模板與導出模板8.51單片機串口無法識別問題前言 需要安裝keil c51版本需要配置好C/…

國密算法(SM2/SM3/SM4)

文章目錄國密算法&#xff08;SM2/SM3/SM4&#xff09;詳解&#xff1a;從性能對比到Java手機號安全處理實戰一、 國密核心算法簡介二、 性能深度對比三、 Java實戰&#xff1a;手機號的安全處理方案一&#xff1a;使用SM3哈希存儲&#xff08;推薦用于驗證場景&#xff09;方案…

從前端轉go開發的學習路線

從前端開發轉向 Go&#xff08;Golang&#xff09;后端開發&#xff0c;是一個非常可行也很實用的方向&#xff0c;特別是在做 高性能微服務、分布式系統、云原生&#xff08;如Kubernetes&#xff09; 等方面。以下是一份適合你&#xff08;有多年開發經驗的前端開發者&#x…

node或瀏覽器上傳文件到阿里云OSS

阿里云配置 進入阿里云OSS Bucket 列表的某個 Bucket 倉庫下&#xff0c;點擊訪問控制 RAM 創建用戶 勾上 創建 AccessKey ID 和 AccessKey Secret 復制 AccessKey 信息 用文檔保存 創建角色 選擇云賬號 復制 ARN 用文檔保存&#xff0c;然后 新增權限 搜索 oss 選擇 AliyunOSS…

26考研物理復試面試常見問答問題匯總,物理專業保研推免夏令營面試問題匯總,物理本科知識專業面試最全攻略!

還在為物理考研復試面試發愁&#xff1f;還在為物理招聘的專業面試抓狂&#xff1f;還在為即將到來的物理夏令營面試不知從何下手、翻遍了厚厚的教材卻抓不住重點&#xff1f;別慌&#xff0c;接下來我會從「考研的物理復試經歷」「物理面試攻略」「物理面試基礎問答題匯總很全…

(5)機器學習小白入門 YOLOv:數據需求與圖像不足應對策略

(1)機器學習小白入門YOLOv &#xff1a;從概念到實踐 (2)機器學習小白入門 YOLOv&#xff1a;從模塊優化到工程部署 (3)機器學習小白入門 YOLOv&#xff1a; 解鎖圖片分類新技能 (4)機器學習小白入門YOLOv &#xff1a;圖片標注實操手冊 (5)機器學習小白入門 YOLOv&#xff1a;…

百年制造名企,三菱重工引領“智”造新范式

日前&#xff0c;由深圳軟件協會指導、法大大和信息俠聯合出品的《制造行業合同數智化升級白皮書》&#xff08;以下簡稱“白皮書”&#xff09;正式發布&#xff0c;并首次提出 “電子簽法律AI” 雙輪驅動模型。在制造行業面臨供應鏈協同、合規風控及全球化出海等多重挑戰的當…

【學習筆記】計算機操作系統(七)—— 文件管理

第七章 文件管理 文章目錄第七章 文件管理7.1 文件和文件系統7.1.1 數據項、記錄和文件7.1.2 文件名和類型7.1.3 文件系統的層次結構7.1.4 文件操作7.2 文件的邏輯結構7.2.1 文件邏輯結構的類型7.2.2 順序文件(Sequential File)7.2.3 記錄尋址7.2.4 索引文件(Index File)7.2.5 …

基于PyQt5與深度學習的可視化水果識別系統(集成CNN, MobileNetV2, VGG16)

一、項目概述 大家好&#xff01;今天我將分享一個我近期完成的深度學習項目——一個功能強大的、帶圖形化界面&#xff08;GUI&#xff09;的水果識別系統。該系統不僅能識別靜態圖片中的水果&#xff0c;還集成了模型訓練、評估、數據增強等功能于一體&#xff0c;為深度學習…

k8s-服務發布基礎

目錄 Service的定義 核心定義 Service 的類型 關鍵組件與機制 工作流程示例 高級特性 Service工作原理 核心工作原理 標簽選擇器&#xff08;Label Selector&#xff09; Endpoints 對象 網絡代理與負載均衡&#xff08;kube-proxy&#xff09; userspace 模式&#…

洛谷P1514 [NOIP 2010 提高組] 引水入城

洛谷P1514 [NOIP 2010 提高組] 引水入城 洛谷題目傳送門 題目背景 NOIP2010 提高組 T4 題目描述 在一個遙遠的國度&#xff0c;一側是風景秀美的湖泊&#xff0c;另一側則是漫無邊際的沙漠。該國的行政區劃十分特殊&#xff0c;剛好構成一個 NNN 行 MMM 列的矩形&#xff…

【unity小技巧】國內Unity6下載安裝和一些Unity6新功能使用介紹

文章目錄前言一、安裝1、國外下載2、國內下載二、常用的新功能變化1、官方推薦使用inputsystem進行輸入控制2、修復了InputSystem命名錯誤導致listen被遮擋的bug3、自帶去除unity啟動畫面logo功能4、unity官方的behavior行為樹插件5、linearVelocity代替過時的velocity方法6、隨…

Rust 中字符串類型區別解析

在 Rust 中&#xff0c;"hello" 和 String::from("hello") 都表示字符串&#xff0c;但它們在內存表示、所有權和可變性上有本質區別&#xff1a;1. 類型與內存表示"hello" (字符串字面量)&#xff1a;類型為 &str&#xff08;字符串切片引用…

springMVC05-異常處理器

在 SpringMVC 中&#xff0c;異常處理是一個非常重要的功能&#xff0c;它可以讓你優雅地處理程序拋出的各種異常&#xff0c;向用戶展示友好的提示&#xff0c;而不是顯示一堆報錯信息&#xff08;如 500 頁面&#xff09;。一、SpringMVC的異常處理器返回的是ModelAndView&am…

安裝 Elasticsearch IK 分詞器

安裝 Elasticsearch IK 分詞器&#xff08;手動 .zip/.zip 安裝&#xff09; IK 分詞器&#xff08;IK Analysis&#xff09;是 Elasticsearch 最常用的中文分詞插件&#xff0c;支持 細粒度分詞&#xff08;ik_max_word&#xff09; 和 智能切分&#xff08;ik_smart&#xf…

數據庫系統原理實驗1:創建數據庫、數據表及單表查詢

一、實驗目的1&#xff0e;掌握在SQL Server中使用對象資源管理器和SQL命令創建數據庫與修改數據庫的方法。2&#xff0e;掌握在SQL Server中使用對象資源管理器或者SQL命令創建數據表和修改數據表的方法&#xff08;以SQL命令為重點&#xff09;。3&#xff0e;掌握無條件查詢…

【STM32】ADC模數轉換基本原理(提供完整實例代碼)

這篇文章是嵌入式中我通過大量資料 整合成了一份 系統完整、層次清晰的 ADC 模數轉換原理解析 文檔。 這里系統地梳理了 STM32F1 系列 ADC 模數轉換的核心資料&#xff0c;包括&#xff1a; 1.原理 特性 2.通道配置 3.模式選擇&#xff08;單次/連續/掃描&#xff09; 4.關鍵寄…