有關微服務的一些概念的東西我這裏就再也不闡述了,由於以前在寫Spring Cloud系列的時候都有詳細寫過。html
具體地址
: Spring Cloud系列博客spring
這個系列開始來說Spring Cloud Alibaba,第一步先從概述提及。編程
Spring Cloud Alibaba,它是由一些阿里巴巴的開源組件和雲產品組成的。這個項目的目的是爲了給Java開發者帶來使用 Spring Boot 和 Spring Cloud 的更多便利。安全
Spring Cloud Alibaba 致力於 提供微服務開發的一站式解決方案。該項目包含開發分佈式應用微服務必需組件,方便開發者經過Spring Cloud編程模型輕鬆使用這些組件來開發架構
分佈式應用服務。依託 SpringCloudAlibaba,您只需添加一些註解和少許配置,就能夠將SpringCloud應用接入阿里微服務解決方案,經過阿里中間件來迅速搭建分佈式應用系統。負載均衡
做爲微服務都須要考慮 服務治理、服務網關、智能路由、負載均衡、斷路器、監控跟蹤、分佈式消息隊列、配置管理 等領域的解決方案。框架
這些功能Spring Cloud Alibaba都能知足,並且都作的很是好。分佈式
主要功能以下
微服務
服務註冊與發現:適配 SpringCloud 服務註冊與發現標準,默認集成了 Ribbon的支持。工具
分佈式配置管理:支持分佈式系統中的外部化配置,配置更改時自動刷新。
服務限流降級:默認支持 Servlet、Feign、RestTemplate、Dubbo 和 RocketMQ 限流降級功能的接入,能夠在運行時經過控制檯實時修改限流降級規則,
還支持查看限流降級 Metrics 監控。
消息驅動能力:基於 SpringCloudStream 爲微服務應用構建消息驅動能力。
阿里雲對象存儲:阿里雲提供的海量、安全、低成本、高可靠的雲存儲服務。支持在任何應用、任什麼時候間、任何地點存儲和訪問任意類型的數據。
分佈式任務調度:提供秒級、精準、高可靠、高可用的定時(基於 Cron 表達式)任務調度服務。同時提供分佈式的任務執行模型,如網格任務。網格任務支持
海量子任務均勻分配到全部 Worker(schedulerx-client)上執行。
爲了實現上面的功能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 消息組件。
在網上找到一個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這麼火熱的很大的一個緣由在於spring cloud中的幾乎全部的組件都使用Netflix公司的產品,而後在其基礎上作了一層封裝。然而Netflix的服務發現組件`Eureka已經
中止更新`。這裏有張圖對於它們之間的比較
重點
從裏能夠看出 Spring Cloud Alibaba 是全部的實現方案中功能最齊全的。尤爲是在 Netflix 中止更新了之後,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微服務完整項目。
一、Spring Cloud Alibaba 新一代微服務解決方案
二、阿里系統軟件技術
少說多作,句句都會獲得別人的重視;多說少作,句句都會受到別人的忽視。(1)