Spring Cloud Alibaba入門篇
有關微服務的一些概念的東西我這裡就不再闡述了,因為之前在寫Spring Cloud系列的時候都有詳細寫過。
具體地址
: Spring Cloud系列部落格
這個系列開始來講Spring Cloud Alibaba,第一步先從概述說起。
一、概述
1、簡介
Spring Cloud Alibaba,它是由一些阿里巴巴的開源元件和雲產品組成的。這個專案的目的是為了給Java開發者帶來使用 Spring Boot 和 Spring Cloud 的更多便利。
Spring Cloud Alibaba 致力於 提供微服務開發的一站式解決方案。該專案包含開發分散式應用微服務必需元件,方便開發者通過Spring Cloud程式設計模型輕鬆使用這些元件來開發
分散式應用服務。依託 SpringCloudAlibaba,您只需新增一些註解和少量配置,就可以將SpringCloud應用接入阿里微服務解決方案,通過阿里中介軟體來迅速搭建分散式應用系統。
2、 主要功能
作為微服務都需要考慮 服務治理、服務閘道器、智慧路由、負載均衡、斷路器、監控跟蹤、分散式訊息佇列、配置管理 等領域的解決方案。
這些功能Spring Cloud Alibaba都能滿足,而且都做的非常好。
主要功能如下
服務註冊與發現:適配 SpringCloud 服務註冊與發現標準,預設整合了 Ribbon的支援。
分散式配置管理:支援分散式系統中的外部化配置,配置更改時自動重新整理。
服務限流降級:預設支援 Servlet、Feign、RestTemplate、Dubbo 和 RocketMQ 限流降級功能的接入,可以在執行時通過控制檯實時修改限流降級規則,
還支援檢視限流降級 Metrics 監控。
訊息驅動能力:基於 SpringCloudStream 為微服務應用構建訊息驅動能力。
阿里雲物件儲存:阿里雲提供的海量、安全、低成本、高可靠的雲端儲存服務。支援在任何應用、任何時間、任何地點儲存和訪問任意型別的資料。
分散式任務排程:提供秒級、精準、高可靠、高可用的定時(基於 Cron 表示式)任務排程服務。同時提供分散式的任務執行模型,如網格任務。網格任務支援
海量子任務均勻分配到所有 Worker(schedulerx-client)上執行。
3、主要元件
為了實現上面的功能alibabaCloud也提供了一系列的元件 ,具體可以參考這張圖
這個圖片中展示所有的元件可以分為三大分類: 阿里開源元件、阿里商業化元件、整合 Spring Cloud 元件。
(1)阿里開源元件
Nacos:阿里巴巴推出來的一個新開源專案,這是一個更易於構建雲原生應用的動態服務發現
、配置管理
和服務管理平臺
。它最大的特點就是把 微服務註冊發現
和微服務配置中心都整合在一起,方便我們的使用。
Sentinel:面向分散式服務架構的輕量級流量控制產品,主要以流量為切入點,從流量控制、熔斷降級、系統負載保護等多個維度來幫助您保護服務的穩定性。
RocketMQ:分散式訊息系統,基於高可用分散式叢集技術,提供低延時的、高可靠的訊息釋出與訂閱服務。
Dubbo:這個就不用多說了,在國內應用非常廣泛的一款高效能 Java RPC 框架(這裡不僅僅可以使用Dubbo服務呼叫,還好用通過Feign進行服務之前呼叫)。
Seata:阿里巴巴開源產品,一個易於使用的高效能微服務分散式事務解決方案。
Arthas:開源的Java動態追蹤工具,基於位元組碼增強技術,功能非常強大。
(2)阿里商業化元件
作為一家商業公司,阿里巴巴推出 Spring Cloud Alibaba,很大程度上市希望通過搶佔開發者生態,來幫助推廣自家的雲產品。所以在開源社群,夾帶了不少私貨,這部分元件
整體易用性和穩定性還是很高的。
Alibaba Cloud ACM:一款在分散式架構環境中對應用配置進行集中管理和推送的應用配置中心產品。
Alibaba Cloud OSS:阿里雲物件儲存服務(Object Storage Service,簡稱 OSS),是阿里雲提供的海量、安全、低成本、高可靠的雲端儲存服務。您可以在任何應用、
任何時間、任何地點儲存和訪問任意型別的資料。
Alibaba Cloud SchedulerX:阿里中介軟體團隊開發的一款分散式任務排程產品,提供秒級、精準、高可靠、高可用的定時(基於 Cron 表示式)任務排程服務。
(3)整合 Spring Cloud 元件
Spring Cloud Alibaba 作為整套的微服務解決元件,只依靠目前阿里的開源元件是不夠的,更多的是整合當前的社群元件,所以 Spring Cloud Alibaba 可以整合 Zuul,
OpenFeign等閘道器,也支援 Spring Cloud Stream 訊息元件。
4、整體理解
在網上找到一個Spring Cloud Alibaba 專案成員提供的對於SpringCloudAlibaba整個生態的理解,我覺得這幅圖畫的真好。
這幅圖它們叫3 + 2
,3是指圖中深色的部分(這部分又分為3小部分),2是指上圖中最外的一圈(這一圈又被分為兩小部分)。下面來講解為什麼分為這兩大部分,每小部分的含義。
3的含義
其實這一整個3我們可以去理解是整個 Spring Cloud 標準,一共有3部分組成。
第一層、中間顏色最深的部分就是及整個微服務最核心的內容,包括了 RPC 呼叫”以及“服務註冊與發現。可以說只要是微服務都首先需要考慮的也是微服務最核心的。
第二層、也就是圍繞著核心的這一圈,是一些輔助微服務更好的工作功能,包括了負載均衡、路由、閘道器、斷路器,還有就是追蹤等等這些內容。這部分可以讓我們更好
的去使用微服務,但它們並不是一定必須的,而是說通常都需要考慮的。
第三層、再外層的話,主要是一些分散式雲環境裡通用能力。必要程度可以比上面再輕一點。
2指的含義
“2”,指的就是上圖中最外面這一圈。這一部分就是這個我們 Spring Cloud Alibaba 的一個定義,它其實包含兩個部分的內容:
右上部分、是對於 Spring Cloud 標準的實現。例如,我們通過 Dubbo 實現了 RPC 呼叫功能,通過 Nacos 實現了“服務註冊與發現”、“分散式配置”,通過 Sentinel 實現了
斷路器等等,這裡就不一一列舉了。
左下部分、 是我們 Spring Cloud Alibaba 對阿里雲各種服務的整合。在實際生產過程中,單獨使用微服務框架其實並不足以支撐我們去構建一個完整的系統。所以這部分是
用阿里幫助開發者完成微服務以外的雲產品整合的功能。
注意
右上部分是阿里完全開源的,開發者可以只是用這部分實現執行在任何雲平臺中。當然,左下部分,由於天然是對阿里雲服務的整合,這部分是和平臺相關的,
是需要我們付費購買服務的。
二、AlibabaCloud 和 SpringCloud比較
1、比較
現在AlibabaCloud這麼火熱的很大的一個原因在於spring cloud中的幾乎所有的元件都使用Netflix公司的產品,然後在其基礎上做了一層封裝。然而Netflix的服務發現元件`Eureka已經
停止更新`。這裡有張圖對於它們之間的比較
重點
從裡可以看出 Spring Cloud Alibaba 是所有的實現方案中功能最齊全的。尤其是在 Netflix 停止更新了以後,Spring Cloud Alibaba 依然在持續更新和迭代。
2、Spring Cloud Alibaba優點
Spring Cloud Alibaba 雖然誕生時間不久,但是背靠大樹好乘涼,賴於阿里巴巴強大的技術影響力,已經成為微服務解決方案的重要選擇之一。
我認為 Spring Cloud Alibaba 的優勢有以下幾點:
(1)、阿里巴巴強大的技術輸出能力
阿里巴巴無疑是國內開源技術領域的最有影響力的公司之一,已經有Dubbo、Druid,FastJson等成功的開源元件,再加上阿里不遺餘力的推廣,社群發展也非常快。
(2)、整合Dubbo,利用Dubbo在微服務領域的超高人氣
Dubbo是國內應用最廣的分散式服務框架之一,基於Dubbo改造的Dubbox等也有很多公司在使用, Spring Cloud Alibaba對Dubbo做了比較好的整合,可以吸引不少使用Dubbo
的開發者。
(3)、雲原生趨勢,整合阿里雲商業化元件
雲原生(Cloud Native)是今年技術領域特別熱門的一個詞,雲原生是一種專門針對雲上應用而設計的方法,用於構建和部署應用,以充分發揮雲端計算的優勢。
Spring Cloud Alibaba 整合了阿里雲的商業化元件,可以說天然支援雲原生特性。
接下來我會對Spring Cloud Alibaba下面每一個元件都進行詳細的介紹,從0到1搭建一個Spring Cloud Alibaba微服務完整專案。
參考
1、Spring Cloud Alibaba 新一代微服務解決方案
2、阿里系統軟體技術
少說多做,句句都會得到別人的重視;多說少做,句句都會受到別人的忽視。(1)