SpringCloud Plus版本之SpringCloud Alibaba

老顧之前接觸到SpringCloud的時候,被SpringCloud的強大的微服務解決方案吸引

註冊中心、微服務簡潔實現、配置中心、熔斷限流、微服務鏈路跟蹤等全棧微服務組件,是SpringCloud的特色。

在這之前國內使用的微服務方案,一般採用的是阿里開源Dubbo方案,不過此Dubbo方案只是一個RPC方案,沒有SpringCloud其他生態的組件。

注:很多人拿Dubbo和SpringCloud對比,是很不公平的,各自的定位不一樣;SpringCloud的定位是提供微服務整個解決方案,Dubbo只是RPC的方案

Dubbo相當於SpringCloud的Feign和Ribbon組件

SpringCloud Plus版本之SpringCloud Alibaba

如何選擇

網上有些文章分享如何選擇Dubbo 和 SpringCloud方案?老顧在選擇的時候也有過糾結,主要糾結點就是想用SpringCloud的整體微服務解決方案,但有個顧慮,就是RPC調用性能的問題。

SpringCloud藉助feign進行服務之間的相互調用。簡單方便,代碼量少,易於維護。feign本質上是對http協議的封裝

Dubbo藉助rpc通信協議進行服務之間的相互調用。由於rpc的底層協議是tcp協議,使用二進制編碼進行數據傳輸,效率高於rest方式

性能比較

網上的別人的測試案例,使用一個POJO對象包含10個屬性,請求10萬次,Dubbo和SpringCloud在不同的線程數量下,每次請求耗時如下:

SpringCloud Plus版本之SpringCloud Alibaba

說明:客戶端和服務端配置均採用阿里雲的ECS服務器,4核8G配置,Dubbo採用Dubbo協議。

Dubbo比SpringCloud的性能高了1倍多,主要是因為dubbo使用的長鏈接方式

還有一點就是微服務都是內部系統互相調用,採用長鏈接更合適,用SpringCloud的http協議感覺怪怪的

SpringCloud Alibaba是什麼

Spring Cloud Alibaba從名字上看,就知道一定跟Spring Cloud有關,而且跟alibaba有關。官方說明,SCA致力於提供微服務開發的一站式解決方案。該項目包含開發分佈式應用微服務的必需組件,方便開發者通過 Spring Cloud 編程模型輕鬆使用這些組件來開發分佈式應用服務。

SpringCloud Alibaba進入了SpringCloud官方孵化器,而且畢業了

SpringCloud Plus版本之SpringCloud Alibaba

說白了就是我們國人基於SpringCloud規範,阿里整合了自身的開源組件以及阿里雲商業組件做了一套微服務整體解決方案

主要功能

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

2、服務註冊與發現:適配 Spring Cloud 服務註冊與發現標準,默認集成了 Ribbon 的支持。

3、分佈式配置管理:支持分佈式系統中的外部化配置,配置更改時自動刷新。

4、消息驅動能力:基於 Spring Cloud Stream 為微服務應用構建消息驅動能力。

5、分佈式事務:使用 @GlobalTransactional 註解, 高效並且對業務零侵入地解決分佈式事務問題。。

6、阿里雲對象存儲:阿里雲提供的海量、安全、低成本、高可靠的雲存儲服務。支持在任何應用、任何時間、任何地點存儲和訪問任意類型的數據。

7、分佈式任務調度:提供秒級、精準、高可靠、高可用的定時(基於 Cron 表達式)任務調度服務。同時提供分佈式的任務執行模型,如網格任務。網格任務支持海量子任務均勻分配到所有 Worker(schedulerx-client)上執行。

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

相關組件

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

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

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

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

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

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

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

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

商業組件)。

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

方案對比

阿里巴巴提供的方案跟Spring官方提供的方案有一些對應關係:

Nacos = Eureka/Consule + Config + Admin

Sentinel = Hystrix + Dashboard + Turbine

Dubbo = Ribbon + Feign

RocketMQ = RabbitMQ

Schedulerx = Quartz

小夥伴也許會擔心阿里會不會有錢,那是不會的,當然用到他的商業組件,需要收錢的;我們可以找替代組件。

如Schedulerx要收費,那我們可以選擇elastic-job 和 xxl-job

版本關係

由於Spring Cloud基於Spring Boot構建,而Spring Cloud Alibaba又基於Spring Cloud Common的規範實現,所以當我們使用Spring Cloud Alibaba來構建微服務應用的時候,需要知道這三者

之間的版本關係。

SpringCloud Plus版本之SpringCloud Alibaba

總結

SpringCloud Alibaba給了我們另一個選擇,尤其在我們利用阿里雲產品的時候,會更加的方便。網上有人批評阿里是為了商業,也就是阿里雲的商業組件的使用。

這個觀點太武斷了,SCA整個解決方案中也是可以不採用商業組件的,這個由開發人員自行決定的;而是為了更方便接入阿里雲端產品,阿里提供了集成組件。

下面老顧會持續分享SpringCloud Alibaba相關的文章,謝謝!!!

你的贊和關注是我繼續創作的動力~


分享到:


相關文章: