Spring Cloud Alibaba 教程 | 前世此生

Spring Cloud Alibaba是什麼

先來看一下官方是怎麼定義Spring Cloud Alibaba的:html

Spring Cloud Alibaba 致力於提供微服務開發的一站式解決方案。此項目包含開發分佈式應用微服務的必需組件,方便開發者經過Spring Cloud 編程模型輕鬆使用這些組件來開發分佈式應用服務。
依託 Spring Cloud Alibaba,您只須要添加一些註解和少許配置,就能夠將 Spring Cloud 應用接入阿里微服務解決方案,經過阿里中間件來迅速搭建分佈式應用系統。

從官方的文檔能夠看出Spring Cloud Alibaba是一個微服務一站式解決方案,提供了對Spring Cloud的標準實現,即包含了多個治理微服務的組件。 咱們以前使用Spring Cloud的時候實際上是在使用Spring Cloud Netflix的解決方案,使用到了Netflix中你們都很是熟悉的組件:Eureka、Zuul、Hystrix、Ribbon等,下面是Spring Cloud Netflix的官方介紹:java

Spring Cloud Netflix provides Netflix OSS integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms. With a few simple annotations you can quickly enable and configure the common patterns inside your application and build large distributed systems with battle-tested Netflix components. The patterns provided include Service Discovery (Eureka), Circuit Breaker (Hystrix), Intelligent Routing (Zuul) and Client Side Load Balancing (Ribbon)..

簡單翻譯一下:Spring Cloud Netflix提供了Netflix OSS集成到Spring Boot應用,經過自動化配置、綁定到spring環境和其餘的習慣的spring編程模型。經過少許的註解你就能夠快速啓用和配置通用模式到你的應用,使用通過Netflix實戰檢驗的組件去構建大型分佈式系統。這個模式提供了包含服務發現(Eureka)、斷路器(Hystrix)、智能路由(Zuul)、客戶端負責均衡(Ribbon)等組件。git

到目前爲止咱們能夠將Spring Cloud Alibaba和Spring Cloud Netflix作一個比較(阿里巴巴官方也是將Spring Cloud Alibaba和Spring Cloud Netflix作比較),他們倆都是Spring Cloud標準實現的微服務一站式解決方案提供商。下圖是阿里官方開發者社區在介紹關於Spring Cloud Alibaba文章時,將其與各大提供商作比較的對比圖:
在這裏插入圖片描述github

進駐Spring Cloud孵化器

2018年10月31日,Spring Cloud Alibaba正式入駐Spring Cloud官方孵化器併發布了第一個預覽版本。咱們知道Spring Cloud 自己其實只是一套微服務規範,並非一個拿來便可用的框架,而 Spring Cloud Alibaba 的開源爲開發者們提供了這套規範的實現方式。同時,Spring Cloud Alibaba 提供的完整的微服務組件、中文文檔和本地化的開源服務提升了開發者們接入微服務的速率,並下降了後續的運維難度。spring

Spring Cloud for Alibaba 0.2.0 released
在這裏插入圖片描述數據庫

Spring Cloud for Alibaba項目包含了阿里巴巴開源組件和多個雲產品。該項目旨在實現並公開衆所周知的Spring Framework模式和抽象,以便給使用阿里巴巴產品的 Java 開發者帶來使用 Spring Boot 和 Spring Cloud 的更多便利。

Spring Cloud Alibaba進入到官方孵化器以後,預計將在2019年的某個時候將從孵化器畢業,並加入Spring Cloud 發佈列車。下面是官方博客原文:編程

Spring Cloud Alibaba will work towards graduating from incubation to officially join a Spring Cloud Release Train sometime in 2019

若是讀者朋友們想及時瞭解Spring官方社區的動態信息,能夠經過下面的方式郵件訂閱Sring官方博客內容:
在這裏插入圖片描述安全

Spring Cloud Netflix進入維護模式

2018年12月12日,在這個雙12的喜慶日子裏,Spring官方社區發生了一件震驚Java界的大事,Netflix官方宣佈了旗下大部分的微服務組件進入了Maintenance Mode(維護模式)。
博文鏈接 :spring-cloud-greenwich-rc1-available-now架構

在這裏插入圖片描述

最近,Netflix 宣佈 Hystrix正在進入維護模式。自2016年以來,Ribbon已處於相似狀態。儘管Hystrix和Ribbon現已處於維護模式,但它們仍然在Netflix大規模部署。
Hystrix Dashboard和Turbine已被Atlas取代。這些項目的最後一次提交別是2年和4年前。Zuul 1和Archaius 1都已經被後來不兼容的版本所取代。
如下Spring Cloud Netflix模塊組件和相應的Starter將進入維護模式:
1.spring-cloud-netflix-archaius
2.spring-cloud-netflix-hystrix-contract
3.spring-cloud-netflix-hystrix-dashboard
4.spring-cloud-netflix-hystrix-stream
5.spring-cloud-netflix-hystrix
6.spring-cloud-netflix-ribbon
7.spring-cloud-netflix-turbine-stream
8.spring-cloud-netflix-turbine
9.spring-cloud-netflix-zuul

在這裏插入圖片描述
官方還特地解釋了什麼是Maintenance Mode(維護模式)。併發

將模塊組件置於維護模式,意味着Spring Cloud團隊將不會再爲這些模塊組件添加新的功能。可是咱們將修復blocker級別的bug以及安全問題,咱們也會考慮並審查社區的小型pull request。
咱們打算繼續爲這些模塊提供至少一年的支持,直到Greenwich的發佈版本基本可用爲止。

筆者認爲,Netflix的組件短時間內使用仍是沒有問題的,畢竟是已經被業界普遍使用過的,是經得住大規模生產環境的考驗的,因此對於還在使用Netflix組件的企業來講也沒必要惶恐不安,可是因爲再也不會有新特性的出現,維護力度持續降低,長期使用確定是不被推薦的了。對於國內的Java開發者來講,對Spring Cloud Alibaba的開源組件可能會更加的期盼,我認爲它將會是Spring Cloud Netflix的完美替代者,而且我堅信Spring Cloud Alibaba的組件必定會更加符合國情,對於國內的開發者會更加人性化,因此Netflix進入維護模式這件事情反而更加激發了我對學習、研究Spring Cloud Alibaba的興趣,而且期盼它可以儘早地從Spring 社區它孵化成功。我相信到那時Spring Cloud Alibaba將會幫助更多的國內企業更好更快地落地微服務。

Spring Cloud Alibaba正式畢業

終於在通過了大約10個月的孵化器期以後,2019年7月24日Spring官方社區在一篇關於簡化Spring Cloud發佈系列的官方博文中宣佈了Spring Cloud Alibaba正式從 Spring Cloud Incubator 孵化器畢業,成爲了Spring社區的正式項目。

simplifying-the-spring-cloud-release-train
在這裏插入圖片描述在這裏插入圖片描述

出於這些緣由,Spring Cloud團隊決定採用一種簡化發佈流程的模型,使咱們可以在保持全部可觀收益的同時解決弊端。方案就是IaaS服務提供商將在本身的GitHub組織中託管和維護其代碼。這種方式一樣適用於當前發佈系列中已經存在的集成項目。Spring Cloud Azure尚未加入發佈系列,Spring Cloud Alibaba團隊已經從孵化器組織畢業,而且已經開始採用這種新的方式管理項目。

至此Spring社區中將會加入一個也是惟一一個國產的開源項目Spring Cloud Alibaba。Spring Cloud Alibaba畢業後發佈了適配Spring Cloud中Edgware、Finchley、Greenwich三個版本的對應版本。
在這裏插入圖片描述
Spring Cloud Alibaba採用上面提到的新的項目管理方式,代碼倉庫遷移到Github Alibaba倉庫下,maven座標以下:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.1.0.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

同時國內版Github碼雲也提供了Spring Cloud Alibaba極速下載鏡像

Java界引起熱議

筆者和技術圈的朋友討論過Spring Cloud Alibaba,他們一致認爲Spring Cloud Alibaba的出現必定會在國內的Java業界引發熱議,果不其然,尚未等到Spring Cloud Alibaba孵化成功,那些所謂的「自媒體大佬」就蠢蠢欲動,開始了對Spring Cloud Alibaba的評頭論足,一時間國內Java圈議論紛紛,有讚揚的、也有貶低的,下面是幾篇訪問量較大的文章,感興趣的朋友能夠到網上了解一下,當個吃瓜羣衆也是很Nice的。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

Spring Cloud Alibaba技術棧

經過前面的介紹,咱們已經知道了Spring Cloud Alibaba從孵化到畢業的週期,也知道了它是一個和Spring Cloud Netflix相似的解決方案,同時也被國內Java圈被譽爲是在Spring Cloud Netflix進入維護模式以後微服務最好的替代方案,下面咱們就從總體方向來了解一下Spring Cloud Alibaba的技術棧。

主要功能

  • 服務限流降級:默認支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 RocketMQ限流降級功能的接入,能夠在運行時經過控制檯實時修改限流降級規則,還支持查看限流降級 Metrics 監控。

    • 服務註冊與發現:適配Spring Cloud 服務註冊與發現標準,默認集成了 Ribbon 的支持。
    • 分佈式配置管理:支持分佈式系統中的外部化配置,配置更改時自動刷新。 消息驅動能力:基於 Spring Cloud Stream爲微服務應用構建消息驅動能力。
    • 分佈式事務:使用 @GlobalTransactional 註解,高效而且對業務零侵入地解決分佈式事務問題。
    • 阿里雲對象存儲:阿里雲提供的海量、安全、低成本、高可靠的雲存儲服務。支持在任何應用、任什麼時候間、任何地點存儲和訪問任意類型的數據。
    • 分佈式任務調度:提供秒級、精準、高可靠、高可用的定時(基於 Cron
      表達式)任務調度服務。同時提供分佈式的任務執行模型,如網格任務。網格任務支持海量子任務均勻分配到全部 Worker(schedulerx-client)上執行。
    • 阿里雲短信服務:覆蓋全球的短信服務,友好、高效、智能的互聯化通信能力,幫助企業迅速搭建客戶觸達通道。

組件

Sentinel:把流量做爲切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。

Nacos:一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平臺。

RocketMQ:一款開源的分佈式消息系統,基於高可用分佈式集羣技術,提供低延時的、高可靠的消息發佈與訂閱服務。

Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。

Seata:阿里巴巴開源產品,一個易於使用的高性能微服務分佈式事務解決方案。

Alibaba Cloud ACM:一款在分佈式架構環境中對應用配置進行集中管理和推送的應用配置中心產品。

Alibaba Cloud OSS: 阿里雲對象存儲服務(Object Storage Service,簡稱 OSS),是阿里雲提供的海量、安全、低成本、高可靠的雲存儲服務。您能夠在任何應用、任什麼時候間、任何地點存儲和訪問任意類型的數據。

Alibaba Cloud SchedulerX: 阿里中間件團隊開發的一款分佈式任務調度產品,提供秒級、精準、高可靠、高可用的定時(基於 Cron 表達式)任務調度服務。

Alibaba Cloud SMS: 覆蓋全球的短信服務,友好、高效、智能的互聯化通信能力,幫助企業迅速搭建客戶觸達通道。

技術選型

在這裏插入圖片描述
圖片來自於阿里官方的開發者社區博文,根據上面的架構圖,依託 Spring Cloud Alibaba,只須要添加一些註解和少許配置,就能夠將 Spring Cloud 應用接入阿里微服務解決方案,經過阿里中間件來迅速搭建分佈式應用系統。
可是接入阿里微服務解決方案是有代價的,Spring Cloud Alibaba的組件並非所有開源免費的,Alibaba Cloud ACM、Alibaba Cloud OSS、Alibaba Cloud SchedulerX、Alibaba Cloud SMS這四個組件是不開源的,換句話說是須要花錢的,而且會和阿里雲平臺綁定,這些是須要開發者去考慮的。
當業務須要這些組件時其實市面上也仍是有替代方案的,Alibaba Cloud ACM其實不須要使用,開源的Nacos已經很是強大。Alibaba Cloud OSS對象存儲服務可使用Redis、memcache這樣的NoSQL數據庫代替,使用FastDFS也是不錯的選擇。對於Alibaba Cloud SchedulerX定時任務組件,可使用elastic-job和xxl-job代替,這兩個開源框架都已經在不少企業中使用,是很是成熟的Java分佈式定時任務解決方案。Alibaba Cloud SMS短信服務,短信服務提供商很是多,這個應該是不會困擾到企業的技術選型的。

缺乏網關組件

使用Spring Cloud Alibaba的全部開源組件已經能夠搭建出適用大部分企業的基礎架構,知足通常需求是沒什麼問題的了。若是說Spring Cloud Alibaba還有什麼缺點的話,我認爲除了哪些不開源的組件以外,缺乏網關組件是Spring Cloud Alibaba不足的另一個地方,但好在Spring官方社區還有網關組件Spring Cloud Gateway,或者使用開源的網關Soul(號稱Java最好的網關解決方案)。

Soul官方地址
在這裏插入圖片描述

關注公衆號瞭解更多原創博文

Alt

相關文章
相關標籤/搜索