1. 程式人生 > 其它 >輕鬆搭建SpringCloudAlibaba微服務專案

輕鬆搭建SpringCloudAlibaba微服務專案

SpringCloudAlibaba隨筆目錄

一、SpringCloudAlibaba專案之父工程搭建

二、SpringCloudAlibaba專案之Nacos搭建及服務註冊

三、SpringCloudAlibaba專案之生產者與消費者

四、SpringCloudAlibaba專案之Ribbon負載均衡

五、SpringCloudAlibaba專案之OpenFeign遠端呼叫

六、SpringCloudAlibaba專案之

七、SpringCloudAlibaba專案之

SpringCloudAlibaba專案父工程搭建

1、微服務

  什麼是微服務?   維基上對其定義為:一種軟體開發技術- 面向服務的體系結構(SOA)架構樣式的一種變體,它提倡將單一應用程式劃分成一組小的服務,服務之間互相協調、互相配合,為使用者提供最終價值。每個服務執行在其獨立的程序中,服務與服務間採用輕量級的通訊機制互相溝通(通常是基於HTTP的RESTful API)。每個服務都圍繞著具體業務進行構建,並且能夠獨立地部署到生產環境、類生產環境等。另外,應儘量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據上下文,選擇合適的語言、工具對其進行構建。   微服務是一種用於構建應用的架構方案。微服務架構有別於更為傳統的單體式方案,可將應用拆分成多個核心功能。每個功能都被稱為一項服務,可以單獨構建和部署,這意味著各項服務在工作(和出現故障)時不會相互影響。

2、SpringCloud介紹

  Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring Cloud並沒有重複製造輪子,它只是將各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝遮蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分散式系統開發工具包。

3、SpringCloudAlibaba

  很多人可能會問,有了spring cloud這個微服務的框架,為什麼又要使用spring cloud alibaba這個框架了?最重要的原因在於spring cloud中的幾乎所有的元件都使用Netflix公司的產品,然後在其基礎上做了一層封裝。然而Netflix的服務發現元件Eureka已經停止更新,我們公司在使用的時候就發現過其一個細小的Bug;而其他的眾多元件預計會在明年(即2020年)停止維護。所以急需其他的一些替代產品,也就是spring cloud alibaba,目前正處於蓬勃發展的態式。

  Spring Cloud Alibaba是Spring Cloud下的一個子專案,Spring Cloud Alibaba為分散式應用程式開發提供了一站式解決方案,它包含開發分散式應用程式所需的所有元件,使您可以輕鬆地使用Spring Cloud開發應用程式,使用Spring Cloud Alibaba,您只需要新增一些註解和少量配置即可將Spring Cloud應用程式連線到Alibaba的分散式解決方案,並使用Alibaba中介軟體構建分散式應用程式系統。Spring Cloud Alibaba 是阿里巴巴開源中介軟體跟 Spring Cloud 體系的融合。

官方連結
官方自述:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

官方github:https://github.com/alibaba/spring-cloud-alibaba

官方Samples:https://github.com/alibaba/spring-cloud-alibaba/tree/master/spring-cloud-alibaba-examples

版本相容
我們需要關注的緊緊是版本相容問題

SpringCloud和SpringBoot的版本相容:

https://spring.io/projects/spring-cloud

SpringCloudAlibaba和SpringBoot的版本相容:

https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

SpringCloudAlibaba官方整理的版本說明:

https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

Spring Cloud VersionSpring Cloud Alibaba VersionSpring Boot Version

Spring Cloud 2020.0.1

2021.1

2.4.2

Spring Cloud Hoxton.SR12

2.2.7.RELEASE

2.3.12.RELEASE

Spring Cloud Hoxton.SR9

2.2.6.RELEASE

2.3.2.RELEASE

Spring Cloud Greenwich.SR6

2.1.4.RELEASE

2.1.13.RELEASE

Spring Cloud Hoxton.SR3

2.2.1.RELEASE

2.2.5.RELEASE

Spring Cloud Hoxton.RELEASE

2.2.0.RELEASE

2.2.X.RELEASE

Spring Cloud Greenwich

2.1.2.RELEASE

2.1.X.RELEASE

Spring Cloud Finchley

2.0.4.RELEASE(停止維護,建議升級)

2.0.X.RELEASE

Spring Cloud Edgware

1.5.1.RELEASE(停止維護,建議升級)

1.5.X.RELEASE

這裡我們使用的版本:

Spring Cloud Version:Hoxton.SR12

Spring Cloud Alibaba Version:2.2.7.RELEASE

Spring Boot Version:2.3.12.RELEASE

4、快速搭建

  準備

    開發工具:IntelliJ IDEA 2018.3.2 x64

    java:jdk1.8

    Maven:apache-maven-3.6.1

  要求   

    熟悉springboot

  構建父工程,整個專案是由maven進行管理,這裡使用預設的初始化服務地址,不然後面選擇Maven POM建立專案時會出問題。

父工程目錄:

修改pom檔案

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.qt</groupId>
    <artifactId>spring-cloud-alibaba</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <!-- java版本 -->
        <java.version>1.8</java.version>
        <!-- SpringBoot版本 -->
        <spring.boot.version>2.3.12.RELEASE</spring.boot.version>
        <!-- Spring Cloud Alibaba 版本 -->
        <spring.cloud.alibaba>2.2.7.RELEASE</spring.cloud.alibaba>
        <!-- Spring Cloud 版本 -->
        <spring.cloud>Hoxton.SR12</spring.cloud>
        
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencies>
        <!-- SpringBoot基本場景啟動依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- SpringBoot測試類依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!-- 版本依賴管理器 -->
    <dependencyManagement>
        <dependencies>
            <!-- SpringBoot 版本管理器 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Spring Cloud Alibaba 版本管理器 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Spring Cloud 版本管理器 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

此時父工程就搭建完成了,就是這麼簡單。

整個專案是由maven進行管理的, 依賴包就是我們開發時需要用到的第三方jar包, 也就是框架, 這裡為什麼什麼也不選, 因為我們要做的是微服務, 所以框架結構為一個基座+多個子模組, 我們上面建立的父工程就是基座, 你可以把它當成一個工作空間用途是管理子模組。

最近在專案結束之餘,自學了一下微服務,自主搭建springcloud專案,特此留作筆記,,,