《Spring Cloud Alibaba實戰》系列-初識

前言

最近剛入職新公司,又剛好公司需要根據一個現有項目,做一個產品。組長讓我們每個人空的時候都去想一想架構怎麼設計,然後每人發表一下意見。作爲一個有經驗的新人,這個機會自然是要把握住的。

第一步瞭解現有的架構,拿到項目後,對着頁面熟悉了一下系統業務,然後開始擼代碼。瞭解到現有的架構 Springboot + mybatis + mysql + Dubbo ,還是比較傳統的,一些常用的限流,熔斷的系統保護,分佈式鎖,分佈式事務都沒有考慮到,居然連配置中心也沒有使用。當時我初步的架構想法是: Springboot + spring cloud  + mybatisMP + Dubbo + mysql + nacos 。

初識

有了這個想法之後,我就開始上網查資料並自己動手搭了一個框架,其中遇到很多坑,後來看到一篇文章講的是spring cloud和Dubbo的完美結合,裏面提到了Spring Cloud Alibaba按照裏面的步驟,很簡單的就把框架搭建好了。於是我便瘋狂的去查了一些關於Spring Cloud Alibaba資料,也一步步的實踐到項目中。跟一個老同事聊了一下自己的想法,他說公司其他產品組都是在用spring cloud,服務調用用的Feign,他建議我也這樣,不需要用dubbo。所以最終定下的架構是:Springboot + spring cloud  + mybatisMP + mysql + nacos + Feign + Sentinel + redisson + seata.

在搭建整合的過程遇到很多坑,自己是一步步趟過來的。所以我就想寫一個系列文章記錄下這些過程,及具體的實踐過程,一方面自己做下覆盤,另一方面也讓有需要的小夥伴少踩一些坑。

簡介

Spring Cloud Alibaba 致力於提供微服務開發的一站式解決方案。此項目包含開發分佈式應用微服務的必需組件,方便開發者通過 Spring Cloud 編程模型輕鬆使用這些組件來開發分佈式應用服務。

依託 Spring Cloud Alibaba,您只需要添加一些註解和少量配置,就可以將 Spring Cloud 應用接入阿里微服務解決方案,通過阿里中間件來迅速搭建分佈式應用系統。

參考文檔 請查看 WIKI 。

使用組件

Nacos:一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平臺。
Sentinel:把流量作爲切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。
Seata:阿里巴巴開源產品,一個易於使用的高性能微服務分佈式事務解決方案。
RocketMQ:一款開源的分佈式消息系統,基於高可用分佈式集羣技術,提供低延時的、高可靠的消息發佈與訂閱服務。
Alibaba Cloud SMS: 覆蓋全球的短信服務,友好、高效、智能的互聯化通訊能力,幫助企業迅速搭建客戶觸達通道。

準備

搭建一個spring boot項目,我使用的是Idea工具,過程就略過了...

Idea工具安裝激活請移步:https://blog.csdn.net/HXNLYW/article/details/81235444

增加統一依賴管理

在 pom.xml 文件中的 <dependencyManagement>標籤下添加如下配置。

<!--版本號統一管理-->
<properties>
    <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
    <alibaba-cloud.version>2.1.1.RELEASE</alibaba-cloud.version>
</properties>

<!--依賴統一管理-->
<dependencyManagement>
    <dependencies>
        <!--spring cloud -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--alibaba cloud -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${alibaba-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

 避坑:springcloud 版本 和 springboot 的版本需要對應,不然啓動會報錯。

The method's class, org.springframework.boot.actuate.health.CompositeHealthIndicator, is available from the following locations:
    jar:file:/F:/MavenLib/org/springframework/boot/spring-boot-actuator/2.2.1.RELEASE/spring-boot-actuator-2.2.1.RELEASE.jar!/org/springframework/boot/actuate/health/CompositeHealthIndicator.class
It was loaded from the following location:
    file:/F:/MavenLib/org/springframework/boot/spring-boot-actuator/2.2.1.RELEASE/spring-boot-actuator-2.2.1.RELEASE.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of org.springframework.boot.actuate.health.CompositeHealthIndicator

版本對應關係:

cloud Release Train Boot Version

Hoxton

2.2.x

Greenwich

2.1.x

Finchley

2.0.x

Edgware

1.5.x

Dalston

1.5.x

最新對應關係可以查看官網:https://spring.io/projects/spring-cloud

這樣準備工作就好了,我們需要引用哪個組件,只需要在 <dependencies> 中怎加相應依賴,無需指定<version>。

後面系列會根據案例逐個介紹組件的使用,歡迎大家繼續關注。

下一篇:《Spring Cloud Alibaba實戰》系列-Nacos之註冊中心、配置中心

===============================================

代碼均已上傳至本人的開源項目

葫蘆胡:https://blog.csdn.net/HXNLYW/article/details/98037354

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章