SpringCloud基礎組件總結,與Dubbo框架、SpringBoot框架對比分析

来源:https://www.cnblogs.com/cicada-smile/archive/2019/08/27/11416032.html
-Advertisement-
Play Games

一、基礎組件總結 1、文章閱讀目錄 1)、基礎組件 "Eureka組件,服務註冊與發現" "Ribbon和Feign組件,實現負載均衡" "Hystrix組件,實現服務熔斷" "Turbine組件,實現微服務集群監控" "Zuul組件,實現路由網關控制" "Config組件,實現配置統一管理" "Z ...


一、基礎組件總結

1、文章閱讀目錄

1)、基礎組件

Eureka組件,服務註冊與發現

Ribbon和Feign組件,實現負載均衡

Hystrix組件,實現服務熔斷

Turbine組件,實現微服務集群監控

Zuul組件,實現路由網關控制

Config組件,實現配置統一管理

Zipkin組件,實現請求鏈路追蹤

2)、應用案例

基於Shard-Jdbc分庫分表,資料庫擴容方案

基於SpringCloud實現Shard-Jdbc的分庫分表擴容

3)、後續更新

該案例主要基於SpringCloud2版本,演示微服務在實際開發中的應用。

<modules>
    <!-- 客戶端介面層 -->
    <module>storey-client-web</module>
    <!-- 公共代碼塊層 -->
    <module>storey-block-code</module>
    <!-- 中間件管理層 -->
    <module>storey-middle-soft</module>
    <!-- 數據 中 心層 -->
    <module>storey-data-center</module>
    <!-- 微服務組件層 -->
    <module>storey-cloud-ware</module>
</modules>

採用版本

  • Spring: 5.0+
  • SpringBoot: 2.0+
  • SpringCloud: 2.0+

2、常用組件概念

  • Eureka組件

Eureka是一種基於REST的服務,主要用於AWS雲,用於定位服務,以實現中間層伺服器的負載平衡和故障轉移。此服務稱為EurekaServer。客戶端組件EurekaClient,它使與服務的交互變得更加容易。

  • Ribbon和Feign組件

Ribbon是一個客戶端的負載均衡(Load Balancer,簡稱LB)器,它提供對大量的HTTP和TCP客戶端的訪問控制。

Feign 是一個聲明式的 Web Service 客戶端。它的出現使開發 Web Service 客戶端變得很簡單。使用 Feign 只需要創建一個介面加上對應的註解,比如:@FeignClient 介面類註解。

  • Hystrix組件

微服務架構中某個微服務發生故障時,要快速切斷服務,提示用戶,後續請求,不調用該服務,直接返回,釋放資源,這就是服務熔斷。

  • Turbine組件

微服務架構中為了保證程式的可用性,防止程式出錯導致網路阻塞,出現了斷路器模型。斷路器的狀況反應程式的可用性和健壯性,它是一個重要指標。HystrixDashboard是作為斷路器狀態的一個組件,提供了數據監控和直觀的圖形化界面。

  • Zuul組件

Zuul 網關主要提供動態路由,監控,彈性,安全管控等功能。在分散式的微服務系統中,系統被拆為了多個微服務模塊,通過zuul網關對用戶的請求進行路由,轉發到具體的後微服務模塊中。

  • Config組件

在微服務系統中,服務較多,相同的配置:如資料庫信息、緩存、參數等,會出現在不同的服務上,如果一個配置發生變化,需要修改很多的服務配置。spring cloud提供配置中心,來解決這個場景問題。

  • Zipkin組件

Zipkin是SpringCloud微服務系統中的一個組件,實現了鏈路追蹤解決方案。可以定位一個請求到底請求了哪些具體的服務。在複雜的微服務系統中,如果請求發生了異常,可以快速捕獲問題所在的服務。

二、Boot 對比Cloud

SpringBoot專註於快速開發單個微服務。SpringCloud是關註全局的微服務協調框架,它將SpringBoot開發的單個微服務整合管理,併為微服務之間提供,配置管理、服務發現、斷路器、路由網關等集成服務,SpringCloud依賴SpringBoot。

三、Dubbo對比Cloud

1、調用方式對比

服務調用方式是 Dubbo 和 Spring Cloud 重要不同點,熟悉RPC/HTTP/REST概念,有助對比 Dubbo 和SpringCloud。RPC 是遠端過程調用,其調用協議通常包含傳輸協議和編碼協議。RPC調用是面向服務的封裝,針對服務的可用性和效率等都做了優化。http是超文本傳輸協議,RPC 也可以用http作為傳輸協議,但一般是用 tcp作為傳輸協議。

2、執行性能對比

Dubbo 採用單一長連接和NIO非同步通訊(保持連接/輪詢處理),使用自定義報文的TCP協議,並且序列化使用定製Hessian2框架,適合於小數據量大併發的服務調用,以及服務消費者機器數遠大於服務提供者機器數的情況,但不適用於傳輸大數據的服務調用。Spring Cloud 直接使用 HTTP 協議,在性能上弱於Dubbo。

3、註冊中心對比

這裡通常指ZooKeeper(Dubbo註冊中心)和Eureka(Cloud註冊中心)的對比。分散式領域著名的CAP理論(C:數據一致性,A:服務可用性,P:分區故障的容錯性),Zookeeper保證的是CP,但對於服務發現而言,可用性比數據一致性更加重要,AP勝過CP,而 Eureka 設計則遵循 AP 原則。

4、框架生態對比

Dubbo 專註 RPC 和服務治理,Spring Cloud 則是一個微服務架構生態。

四、源代碼地址

GitHub地址:知了一笑
https://github.com/cicadasmile/spring-cloud-base
GitEE地址:知了一笑
https://gitee.com/cicadasmile/spring-cloud-base


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 摘要: 錄屏插件的性能進一步優化,傳輸的數據體積大幅度減少。 錄屏功能介紹 "Fundebug" 提供專業的異常監控服務,當線上應用出現 BUG 的時候,我們可以第一時間報警,幫助開發者及時發現 BUG,提高 Debug 效率。在網頁端,我們通過原創的錄屏技術,可以 100%還原 BUG 出現之前用 ...
  • 該函數用於創建一個新的jQuery對象,然後將一個DOM元素集合加入到jQuery棧中,最後返回該jQuery對象,有三個參數,如下: elems Array類型 將要壓入 jQuery 棧的數組元素,用於生成一個新的 jQuery 對象 name 可選。 String類型 生成數組元素的 jQue ...
  • Django之cookie和session,內容包括 cookie和session。其中cookie包括 cookie及其使用,cookie記住用戶名示例;session包括 session對象和方法,cookie和session的應用場景等內容。 ...
  • 作者:Sans_ juejin.im/post/5cfa6e465188254ee433bc69 一.說明 Mybatis-Plus是一個Mybatis框架的增強插件,根據官方描述,MP只做增強不做改變,引入它不會對現有工程產生影響,如絲般順滑.並且只需簡單配置,即可快速進行 CRUD 操作,從而節 ...
  • 前言 本文參考文章: "SpringCloud Alibaba Nacos Config 自定義共用配置" 前景回顧: "Nacos(六):多環境下如何“管理”及“隔離”配置和服務" "Nacos(五):多環境下如何“讀取”Nacos中相應環境的配置" "Nacos(四):SpringCloud項目 ...
  • 單表查詢的語法及關鍵字執行的優先順序 單表查詢語法 關鍵字執行的優先順序 " " ;) " " ;) 1.找到表:from 2.拿著where指定的約束條件,去文件/表中取出一條條記錄 3.將取出的一條條記錄進行分組group by,如果沒有group by,則整體作為一組 4.執行select(去重) ...
  • Python 入門之數據類型之間的相互轉換 以及 在編程中會遇到的數據類型的坑 數據類型總結 數據類型轉換 以後要遇到的坑 ...
  • 1. 簡介 當我們使用 或 迴圈來遍歷一個集合的元素, 允許我們不用擔心索引位置,甚至讓我們不僅僅是遍歷一個集合,同時還可以改變它。例如,你如果要刪除迴圈中的元素,那麼 迴圈不見得總是可行的。 結合自定義的迭代器,我們可以迭代更為複雜的對象,以及向前和向後移動,並且知曉如何利用其優勢也將變得非常清楚 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...