如果你也打算學習 Spring Cloud

来源:https://www.cnblogs.com/fengzheng/archive/2019/03/21/10567632.html
-Advertisement-
Play Games

說到 Spring Cloud,那肯定要少不了提一下微服務框架,所謂的微服務框架就是把負責的功能拆分成比較小、功能比較單一的服務獨立處理,例如單點登錄服務、支付服務、訂單服務等,當然如果訂單功能比較複雜還可以獨立出更具體的服務。 我在之前的文章中 "我所理解的SOA和微服務" 也提到過微服務的幾個主 ...


說到 Spring Cloud,那肯定要少不了提一下微服務框架,所謂的微服務框架就是把負責的功能拆分成比較小、功能比較單一的服務獨立處理,例如單點登錄服務、支付服務、訂單服務等,當然如果訂單功能比較複雜還可以獨立出更具體的服務。

我在之前的文章中我所理解的SOA和微服務也提到過微服務的幾個主要特點,個人感覺:

1、微服務在架構設計方面:可以幫助我們理清業務,更加清晰的設計系統架構。

2、微服務在開發方面:可以降低項目結構的複雜度,降低代碼內部的耦合度。

3、在運維方面:可以清晰快速的定位排查問題。

微服務框架里 Dubbo 和 Spring Cloud 這兩個用的最多。隨著 docker 和 容器編排技術的成熟,最近用 Docker、Kubernetes 構建微服務架構的也越來越多了。

公司之前的項目中有一部分採用 Spring MVC 方式開發,所以一直在用 Dubbo。新的系統全部採用 Spring Boot,順便也就使用了 Spring Cloud 技術棧。我倒不覺得兩者有什麼高下之分,只要能夠滿足業務需求,使用哪種技術倒無所謂,況且 Dubbo 用下來也沒什麼問題。

今天就是說一下 Spring Cloud,Spring Cloud 就是一個大集合,包括了配置中心、註冊中心、負責均衡、熔斷處理等等一些成熟的框架,並用 Spring boot 的形式包裝好,方便開發者使用。Spring boot 相信大家肯定都不陌生,應該做 Java 開發的幾乎或多或少都使用過。它比起 Spring MVC 來,省去了繁雜的配置文件,可謂是開發微服務項目的不二選擇。

Spring Cloud 包括眾多的子項目,可謂是微服務行業一條龍服務。只有你想不到,沒有你找不到的。

Spring Cloud Config

配置中心,將系統中用到的一些配置信息存儲到配置中心,方便維護,不用每次修改配置都重啟服務。用的比較多的配置中心還有etcd、攜程的 Apollo、Disconf 。

Spring Cloud Netflix

Netflix OSS 是一組開源的框架和組件庫,是Netflix公司開發出來解決分散式系統的一些有趣的可擴展類庫。Spring Cloud 把他們都放到 Spring Cloud Netflix 下,這是一個框架集合,它包括 Eureka 、Ribbon、Zuul、Hystrix 等。

Eureka

服務中心,這可以說是微服務架構的核心功能了,微服務部署之後,一定要有服務註冊和發現的能力,Eureka 就是擔任這個角色的。如果你用過 dubbo 的話,那一定知道 dubbo 中服務註冊和發現的功能是用 zookeeper 來實現的。

目前官方已停止升級,如果你的項目中還沒有使用並且打算使用註冊中心的話,可以直接使用 Spring Cloud Consul。

Ribbon

提供客戶端負責均衡功能,例如一個服務提供者部署了 3 個實例,那麼使用 Ribbon 可以指定負載均衡演算法請求其中一個實例,Ribbon 如果配合 Eureka ,使用起來非常簡單。

Hystrix

熔斷器,假設有 3 個服務提供實例,其中有一個實例由於某中原因掛掉了,那麼當再有請求進來的時候,如果還是向這個實例上發請求,那將會導致請求積壓阻塞,這個時候,熔斷器就要發揮它的作用,將這個有問題的實例下線,這樣一來,再有新的請求進來,就不會再發到這個有問題的實例上了。

Zuul

服務網關。主要實現了路由轉發和過濾器功能,對於處理一些數據聚合、鑒權、監控、統計類的功能非常好用。

Gateway

也是服務網關,可以認為它是 Zuul 的下一代,無論從易用性和性能方便都有所提高,如果你的系統中還沒有使用 Zuul ,並且準備上網關,可以直接選擇 Gateway 。

Spring Cloud Consul

Consul 讓服務註冊和服務發現(通過 DNS 和 HTTP 介面)更加簡單,甚至對於外部服務(例如SaaS)註冊也一樣。Spring Cloud Consul 可替代已有的 Spring Cloud Eureka。Eureka 2.x 版本也已經停止開發,並且 Spring Cloud 官方也建議用 Spring Cloud Consul 來替代,當然如果已經用了 Eureka 在項目中也沒有關係,Eureka 已經足夠穩定,正常使用沒有任何問題。

Spring Cloud Consul 可替代已有的 Spring Cloud Config ,當做配置中心使用。

Spring Cloud Stream

Spring Cloud Stream 是消息中間件組件,它集成了 kafka 和 rabbitmq 。如果你的系統中打算集成 kafka 或 rabbitmq,可以考慮使用 Stream 。

Spring Cloud Bus

消息匯流排,用於在集群(例如,配置變化事件)中傳播狀態變化,可與Spring Cloud Config聯合實現熱部署。集成了 Rabbitmq 和 kafka 。剛剛上面說到的 Stream 好像也是這個功能。沒錯,我們可以認為 Bus 是 Stream 的進一步封裝,使用更簡單。而 Stream 的靈活性更高。

Spring Cloud Feign

Feign是一種聲明式、模板化的HTTP客戶端。它可以用註解的方式簡化 HTTP 請求,可以快速簡單的請求服務提供介面。如果你還在使用 restTemplate 或者其他方式,不妨考慮一下 Feign。

Spring Cloud Sleuth

服務日誌收集和鏈路追蹤模塊,封裝了 Dapper 和 log-based 追蹤以及 Zipkin 和 HTrace 操作。與之功能相同的框架還有 skywalking、Pinpoint,另外國內還有美團開源的 CAT,只不過 CAT 屬於代碼侵入的,需要開發人員在系統中做代碼埋點,不過也更加靈活,更加精細。

Spring Cloud Security

可用做授權服務、單點登錄等。如果服務需要做許可權控制,那除非你自己實現。不然用到最多的就是 shiro 和 Spring Security 。Spring Boot 中用的比較多的就是 Security,眾多授權機制中屬於 OAuth2 最為流行。Spring Cloud Security 就是將 Security、OAuth2 做了集成,方便使用。

除了以上的這些常用功能外,Spring Cloud 還提供了一些其他的模塊,具體的可以到 Spring Cloud 官網一看。官網上介紹的更加詳細。官網地址:https://spring.io/projects/spring-cloud

歡迎關註,不定期更新本系列和其他文章
古時的風箏 ,進入公眾號可以加入交流群
掃碼關註


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

-Advertisement-
Play Games
更多相關文章
  • 親愛的朋友,歡迎你來到對象村,開始走進設計模式的世界。這裡的每個人都很熟練的使用設計模式,很快我和你們一起,都會學習的很好,通過設計模式,躋身上流社會。 計劃每一章節的學習,通過幾個篇幅來完成,理論+實踐的方式。書中很多地方用到了圖形表示,小編儘量用圖文的方式和大家互動。先用理論建立知識,再用圖形象 ...
  • 官網:www.fhadmin.org 此項目為Springboot工作流版本 windows 風格,瀏覽器訪問操作使用,非桌面應用程式。 1.代碼生成器: [正反雙向](單表、主表、明細表、樹形表,快速開發利器)+快速表單構建器 freemaker模版技術 ,0個代碼不用寫,生成完整的一個模塊,帶頁 ...
  • ui->label_6->setText(QString::number(table_test[0]<<8 | table_test[1]));這樣子就可以把十六進位的數轉換為十進位,單片機發過來的串口數據就可以直接顯示在label上了。當時用lcd_numbera顯示不能直接顯示16進值。而且顯示 ...
  • 1. 前言 技術這東西吧,看別人寫的好像很簡單似的,到自己去寫的時候就各種問題,“一看就會,一做就錯”。網上關於實現SSO的文章一大堆,但是當你真的照著寫的時候就會發現根本不是那麼回事兒,簡直讓人抓狂,尤其是對於我這樣的菜鳥。幾經曲折,終於搞定了,決定記錄下來,以便後續查看。先來看一下效果 2. 準 ...
  • 題意 "題目鏈接" Sol $B(x) = \exp(K\ln(A(x)))$ 做完了。。。 複雜度$O(n\log n)$ cpp // luogu judger enable o2 // luogu judger enable o2 include define Pair pair define ...
  • 聲明:此文章非本人所 原創,是別人分享所得,如有知道原作者是誰可以聯繫本人,如有轉載請加上此段話 1、請解釋一下什麼是 Nginx? Nginx是一個 web伺服器和反向代理伺服器,用於 HTTP、HTTPS、SMTP、POP3和 IMAP協議。 2、請列舉 Nginx的一些特性。 Nginx伺服器 ...
  • >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>歡迎轉載,轉載請註明出處-VirgoArt,www.cnblogs.com 一、場景描述: 主項目(Web)部署在Windows下,演算法項目(TensorFlow)部署在Linux環境下。 二、依賴環境(Jar) 三、後端代碼 ...
  • 1.圖片的上傳前臺三個條件 文件上傳頁面的3個要求: < 1.表單提交為post。mothod="post" < 2.表單的提交類型為enctype.必須是多段式。enctype="multipart/form-data" < 3.文件上傳用<input type="file"/>組件 。 2.圖片 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...