輕鬆搭建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 Version | Spring Cloud Alibaba Version | Spring 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專案,特此留作筆記,,,