微服務與Spring Cloud Alibaba簡介

????????微服務(或微服務架構)是一種云原生架構方法,其中單個應用程序由許多松散耦合且可獨立部署的較小組件或服務組成。本單元主要介紹微服務架構的定義、微服務的特征、微服務架構面臨的挑戰、Spring Cloud 定義、Spring Cloud 核心組件、Spring Cloud Alibaba 定義、Spring Cloud Alibaba 組件等相關知識。

一、了解微服務架構

1. 微服務架構的定義

????????微服務架構(Microservices Architecture)是一種云原生的架構模式,它將一個大型單體應用拆分為多個獨立部署、松散耦合、輕量級的小型服務。每個服務專注于單一業務功能,并通過輕量級協議(如HTTP/REST或gRPC)進行通信。

2. 微服務的特征

  • 獨立部署:每個微服務可以獨立開發、測試、部署和擴展,不影響其他服務。

  • 松耦合:服務之間通過定義良好的API交互,減少依賴。

  • 單一職責:每個服務只負責一個特定的業務功能。

  • 技術異構性:不同服務可以采用不同的編程語言、數據庫或技術棧。

  • 去中心化治理:團隊可以自主選擇適合自身服務的技術方案。

  • 容錯性:單個服務故障不會導致整個系統崩潰。

3.?單體應用架構、垂直應用架構、分布式架構、SOA和微服務架構

3.1?單體應用架構

????????所有功能模塊集中在一個代碼庫中,打包為單一應用部署。

3.2?垂直應用架構

????????按業務拆分為多個獨立單體應用(如電商拆分為訂單、用戶、商品系統)。

3.3?分布式架構

????????分布式架構把工程分成服務層和表現層兩個部分,服務層中包含業務邏輯,表現層只需處理和頁面的交互。

3.4?SOA架構

????????在分布式架構下,當服務越來越多時,容量的評估、小服務資源的浪費等問題逐漸顯現,需要增加一個注冊中心對集群進行實時管理。

3.5?微服務架構

????????微服務架構在某種程度上是 SOA,它更加強調服務的“徹底拆分”。簡單地說,微服務架構就是將單體應用進一步拆分成更小的服務,每個服務都是一個可以獨立運行的項目。

3.6?五種架構模式對比分析

架構類型優點缺點適用場景
單體應用架構
(Monolithic)
-?開發簡單:代碼集中,調試方便。
-?部署簡單:單個應用包,運維成本低。
-?事務管理容易:ACID 事務保證數據一致性。
-?耦合度高:修改一個功能可能影響整個系統。
-?擴展性差:只能整體擴展,無法按需伸縮。
-?技術棧單一:難以引入新語言或框架。
-?維護困難:代碼臃腫后難以重構。
小型項目、初創企業、低并發業務。
垂直應用架構
(Vertical)
-?按業務拆分:不同功能獨立部署,減少耦合。
-?可針對性優化:不同業務可采用不同技術棧。
-?擴展性提升:可按業務模塊單獨擴展。
-?重復開發:公共功能(如用戶認證)需重復實現。
-?數據一致性難:跨系統交互需額外處理。
-?系統間調用復雜:依賴 HTTP/RPC,性能較低。
中型系統,業務模塊相對獨立(如電商:訂單、商品分離)。
分布式架構
(Distributed)
-?高性能:通過 RPC(如 Dubbo)實現高效通信。
-?模塊化:服務可獨立開發部署。
-?容錯能力:單點故障不影響整體。
-?復雜度高:需處理網絡延遲、分布式事務等。
-?運維成本高:需管理多個節點和中間件。
-?調試困難:跨服務問題追蹤復雜。
高并發、高性能需求場景(如金融交易系統)。
SOA
(面向服務架構)
-?服務復用:通過 ESB(企業服務總線)整合服務。
-?標準化接口:基于 SOAP/WSDL,適合企業集成。
-?松耦合:服務可獨立演進。
-?ESB 易成瓶頸:中心化架構,性能受限。
-?笨重:XML/SOAP 協議冗余,效率低。
-?部署復雜:依賴大量中間件。
大型企業系統整合(如ERP、銀行核心系統)。
微服務架構
(Microservices)
-?高內聚低耦合:服務職責單一,獨立擴展。
-?技術異構性:不同服務可用不同技術棧。
-?彈性伸縮:按需擴容,資源利用率高。
-?快速迭代:小團隊專注單個服務。
-?運維復雜:需容器化、CI/CD、監控等配套。
-?分布式問題:數據一致性、事務管理難度大。
-?網絡開銷:服務間通信增加延遲。
互聯網級應用、云原生場景(如電商平臺、社交App)。

二、了解Spring Cloud

1. Spring Cloud 定義

Spring Cloud 是基于 Spring Boot 的一套微服務治理框架,提供了一系列工具(如服務發現、配置中心、負載均衡、熔斷器等),簡化分布式系統的開發。

2. Spring Cloud 核心組件

(1) 服務注冊與發現

  • Eureka(Netflix 開源)

    • 服務提供者注冊到 Eureka Server,消費者通過服務名調用。

    • 適用場景:中小規模 Spring Cloud 項目。

    • 缺點:2.x 版本停止維護,推薦替代方案(如 Nacos)。

  • Nacos(Alibaba 開源)

    • 支持服務注冊發現 + 動態配置管理,兼容 Spring Cloud 和 Dubbo。

    • 優勢:AP/CP 模式可切換,適合云原生場景。

(2) 負載均衡

  • Ribbon

    • 客戶端負載均衡,集成于 OpenFeign 或 RestTemplate。

    • 策略:輪詢、隨機、加權等。

  • Spring Cloud LoadBalancer(官方新推薦)

    • 替代 Ribbon,支持 Reactive 編程(WebFlux)。

(3) 服務調用

  • OpenFeign

    • 聲明式 REST 客戶端,通過接口注解(@FeignClient)定義調用。

    • 示例:

      @FeignClient(name = "order-service")
      public interface OrderClient {@GetMapping("/orders/{id}")Order getOrder(@PathVariable Long id);
      }

(4) 熔斷與降級

  • Hystrix(已停更)

    • 通過?@HystrixCommand?實現熔斷和降級邏輯。

  • Resilience4j(推薦)

    • 輕量級容錯庫,支持熔斷、限流、重試等。

  • Sentinel(Alibaba 開源)

    • 實時監控流量,支持熔斷、熱點限流、系統自適應保護。

(5) API 網關

  • Spring Cloud Gateway(官方推薦)

    • 基于 WebFlux 的高性能網關,支持動態路由、過濾器和限流。

    • 示例路由配置:

      spring:cloud:gateway:routes:- id: user-serviceuri: lb://user-servicepredicates:- Path=/api/users/**
  • Zuul(Netflix 舊版)

    • 基于 Servlet 阻塞模型,性能較低,逐漸被淘汰。

(6) 分布式配置中心

  • Spring Cloud Config

    • 將配置存儲在 Git/SVN,通過?@RefreshScope?實現動態刷新。

  • Nacos Config

    • 更強大的替代方案,支持配置版本管理和灰度發布。

3.?Spring Boot 與 Spring Cloud 的關系

????????Spring Boot 是 Spring 的一套快速配置腳手架,用戶可以基于 Spring Boot 快速開發單個微服務,Spring Cloud 是基于 Spring Boot 實現的云應用開發工具;Spring Boot 專注于快速、方便集成的單個微服務個體,Spring Cloud 專注于全局的服務治理框架;Spring Boot 使用默認大于配置的理念,很多集成方案已經幫用戶選擇好了,Spring Cloud 的很大一部分是基于 Spring Boot 來實現的。

????????Spring Boot 可以離開 Spring Cloud 獨立使用,但是 Spring Cloud 離不開 Spring Boot,具有依賴關系。

三、Spring Cloud Alibaba 介紹

1. 概述

????????Spring Cloud Alibaba?是阿里巴巴開源的微服務解決方案,基于?Spring Cloud?標準生態構建,提供了一系列適用于云原生和分布式架構的組件。它整合了阿里巴巴在雙11等高并發場景下的實踐經驗,為微服務開發提供更強大、更穩定的支持。

2. 核心組件

組件功能替代 Spring Cloud 原生組件
Nacos服務注冊與發現 + 動態配置中心(支持 AP/CP 模式)Eureka + Config
Sentinel流量控制、熔斷降級、系統自適應保護Hystrix / Resilience4j
Seata分布式事務解決方案(支持 AT、TCC、Saga 模式)無官方替代(Spring Cloud 無完整方案)
RocketMQ分布式消息隊列(高吞吐、低延遲)RabbitMQ / Kafka
Dubbo高性能 RPC 框架(可選,與 Spring Cloud 整合)OpenFeign + RestTemplate
Alibaba Cloud OSS對象存儲服務(文件上傳、下載等)無直接替代

3.?與 Spring Cloud 原生組件的對比

需求Spring Cloud 原生方案Spring Cloud Alibaba 方案優勢比較
服務注冊與發現Eureka(停止維護)NacosNacos 支持動態配置 + 更高可用性
熔斷降級Hystrix(停止維護)SentinelSentinel 支持實時監控 + 流量控制
分布式事務無完整方案SeataSeata 提供多模式事務支持
消息隊列需整合 Kafka/RabbitMQRocketMQRocketMQ 更適合高并發、順序消息場景

????????微服務架構通過拆分單體應用,提高靈活性和可擴展性,但也帶來分布式系統的挑戰。Spring Cloud 和 Spring Cloud Alibaba 提供了一系列工具來簡化微服務的開發、治理和運維,使開發者能更專注于業務邏輯。

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

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

相關文章

JPG同步刪除RAW批處理文件

相機挑選JPG照片,同步刪除RAW格式文件,批處理文件bat,放到JPG和NEF文件夾根目錄 – NEF 文件夾 – JPG 文件夾 文件同步刪除.bat echo off:: 要同步的文件夾及文件后綴名(相同),即要刪除文件的目錄 set de…

InnoDB的MVCC實現原理?MVCC如何實現不同事務隔離級別?MVCC優缺點?

概念 InnoDB的MVCC(Multi-Version Concurrency Control)即多版本并發控制,是一種用于處理并發事務的機制。它通過保存數據在不同時間點的多個版本,讓不同事務在同一時刻可以看到不同版本的數據,以此來減少鎖競爭&…

針對 Java從入門到精通 的完整學習路線圖、各階段技術點、CTO進階路徑以及經典書籍推薦。內容分階段展開,兼顧技術深度與職業發展

以下是針對 Java從入門到精通 的完整學習路線圖、各階段技術點、CTO進階路徑以及經典書籍推薦。內容分階段展開,兼顧技術深度與職業發展。 一、學習路線圖分階段詳解 階段1:Java基礎入門(3-6個月) 目標:掌握Java核心…

報錯:Nlopt

報錯:Nlopt CMake Error at TGH-Planner/fast_planner/bspline_opt/CMakeLists.txt:20 (find_package):By not providing "FindNLopt.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "…

鴻蒙公共通用組件封裝實戰指南:從基礎到進階

一、鴻蒙組件封裝核心原則 1.1 高內聚低耦合設計 在鴻蒙應用開發中,高內聚低耦合是組件封裝的關鍵準則,它能極大提升代碼的可維護性與復用性。 從原子化拆分的角度來看,我們要把復雜的 UI 界面拆分為基礎組件和復合組件。像按鈕、輸入框這…

Linux 網絡基礎二 ——應用層HTTP\HTTPS協議

我們程序員寫的一個個解決我們實際問題,滿足我們日常需求的網絡程序,都是在應用層。 前面寫的套接字接口都是傳輸層經過對 UDP 和 TCP 數據發送能力的包裝,以文件的形式呈現給我們,讓我們可以進行應用層編程。換而言之&#xff0c…

Spark-SQL

Spark-SQL 概述 Spark SQL 是 Spark 用于結構化數據(structured data)處理的 Spark 模塊 Shark 是伯克利實驗室 Spark 生態環境的組件之一,是基于 Hive 所開發的工具,它修改了內存管理、物理計劃、執行三個模塊,并使之能運行在 Spark 引擎上…

Java 在人工智能領域的突圍:從企業級架構到邊緣計算的技術革新

一、Java AI 的底層邏輯:從語言特性到生態重構 在 Python 占據 AI 開發主導地位的當下,Java 正通過技術重構實現突圍。作為擁有 30 年企業級開發經驗的編程語言,Java 的核心優勢在于強類型安全、內存管理能力和分布式系統支持,這…

編程實現除法程序時需要注意的細節

使用Python實現除法程序時,需注意以下關鍵細節: 除數為零的處理 必須檢查除數是否為零,否則會觸發ZeroDivisionError異常。可通過try-except結構捕獲異常并處理。 整數除法與浮點數除法的區別 ? 使用/運算符時,無論操作數是否為…

Java萬級并發場景-實戰解決

今天我們來做一個典型的消費力度能達到萬級別的并發場景,老師點名-學生簽到 正常情況 正常情況來說是不同班級下的老師發布不同的點名--然后不同班級下的很多學生同一時間進行簽到,簽到成功就去修改數據庫,簽到失敗就返回,但是這…

openGauss新特性 | 自動參數化執行計劃緩存

目錄 自動化參數執行計劃緩存簡介 SQL參數化及約束條件 一般常量參數化示例 總結 自動化參數執行計劃緩存簡介 執行計劃緩存用于減少執行計劃的生成次數。openGauss數據庫會緩存之前生成的執行計劃,以便在下次執行該SQL時直接使用,可…

計算機操作系統——存儲器管理

系列文章目錄 1.存儲器的層次結構 2.程序的裝入和鏈接 3.連續分配存儲管理方式(內存夠用) 4.對換(Swapping)(內存不夠用) 5.分頁存儲管理方式 6.分段存儲管理方式 文章目錄 系列文章目錄前言一、存儲器的存儲結構寄存器&…

KF V.S. GM-PHD

在計算機視覺的多目標跟蹤(MOT)任務中,卡爾曼濾波(KF)和高斯混合概率假設密度(GM-PHD)濾波器是兩種經典的狀態估計方法,但它們的原理和應用場景存在顯著差異。以下是兩者的核心機制和…

車載通信架構 --- DOIP系統機制初入門

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 周末洗了一個澡,換了一身衣服,出了門卻不知道去哪兒,不知道去找誰,漫無目的走著,大概這就是成年人最深的孤獨吧! 舊人不知我近況,新人不知我過…

C++對象池設計:從高頻`new/delete`到性能飛躍的工業級解決方案

一、new/delete的性能之殤:一個真實的生產事故 2023年某證券交易系統在峰值時段出現請求堆積,事后定位發現:每秒40萬次的訂單對象創建/銷毀,導致: 內存碎片率高達37%(jemalloc統計)malloc調用…

【C/C++】深入理解整型截斷與提升:原理、應用與區別

文章目錄 1. 整形截斷(Integer Truncation)1.1 整形截斷的例子1.2 整形截斷的細節 2. 整形提升(Integer Promotion)2.1 整形提升的規則2.2 整形提升的示例2.3 整形提升的實際應用2.4 整型提升與標準操作符 3. 整型截斷與提升的區別…

python藍橋杯備賽常用算法模板

一、python基礎 (一)集合操作 s1 {1,2,3} s2{3,4,5} print(s1|s2)#求并集 print(s1&s2)#求交集 #結果 #{1, 2, 3, 4, 5} #{3}(二)對多維列表排序 1.新建列表 list1[[1,2,3],[2,3,4],[0,3,2]] #提取每個小列表的下標為2的…

【模塊化拆解與多視角信息3】教育背景:學歷通脹時代的生存法則

教育背景:學歷通脹時代的生存法則 寫在最前 作為一個中古程序猿,我有很多自己想做的事情,比如埋頭苦干手搓一個低代碼數據庫設計平臺(目前只針對寫java的朋友),比如很喜歡幫身邊的朋友看看簡歷,講講面試技巧,畢竟工作這么多年,也做到過高管,有很多面人經歷,意見還算…

uniapp實現H5頁面麥克風權限獲取與錄音功能

1.權限配置 在uni-app開發H5頁面時,需要在manifest.json文件中添加錄音權限的配置。具體如下: {"h5": {"permissions": {"scope.record": {"desc": "請授權使用錄音功能"}}} }這段配置代碼是用于向…

功能豐富的PDF處理免費軟件推薦

軟件介紹 今天給大家介紹一款超棒的PDF工具箱,它處理PDF文檔的能力超強,而且是完全免費使用的,沒有任何限制。 TinyTools(PC)這款軟件,下載完成后即可直接打開使用。在使用過程中,操作完畢后&a…