SpringCloudAlibaba分散式微服務入門搭建專案框架
場景
SpringCloud 是若干個框架的集合,包括 spring-cloud-config、spring-cloud-bus 等近 20 個子專案,提供了服務治理、服務閘道器、智慧路由、負載均衡、斷路器、監控跟蹤、分散式訊息佇列、配置管理等領域的解決方案。
Spring Cloud 通過 Spring Boot 風格的封裝,遮蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、容易部署的分散式系統開發工具包。
Spring Cloud Alibaba 也是一套微服務解決方案,包含開發分散式應用微服務的必需元件,方便開發者通過 Spring Cloud 程式設計模型輕鬆使用這些元件來開發分散式應用服務。
依託 Spring Cloud Alibaba,您只需要新增一些註解和少量配置,就可以將 Spring Cloud 應用接入阿里微服務解決方案,通過阿里中介軟體來迅速搭建分散式應用系統。
Spring Cloud Alibaba中包含的元件
阿里開源元件
Nacos:一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平臺。
Sentinel:把流量作為切入點,從流量控制、熔斷降級、系統負載保護等多個維度保護服務的穩定性。
RocketMQ:開源的分散式訊息系統,基於高可用分散式叢集技術,提供低延時的、高可靠的訊息釋出與訂閱服務。
Dubbo:這個就不用多說了,在國內應用非常廣泛的一款高效能 Java RPC 框架。
Seata:阿里巴巴開源產品,一個易於使用的高效能微服務分散式事務解決方案。
Arthas:開源的Java動態追蹤工具,基於位元組碼增強技術,功能非常強大。
官方說明
https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/README-zh.md
注:
部落格:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程式猿
獲取程式設計相關電子書、教程推送與免費下載。
實現
1、開啟IDEA,新建Project-Spring Initializr
使用預設的url如果報錯
Initialization failed for 'https://start.spring.io' Please check URL...
修改URL為Custom的
2、選擇Type為Maven等專案配置
3、這裡為了從頭練習,啥也不選,直接點選next
4、 修改pom檔案
新增版本號屬性
<properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.3.7.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> </properties>
新增依賴
<!-- 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>
完整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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.badao</groupId> <artifactId>spring-cloud-alibaba-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>spring-cloud-alibaba-demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.3.7.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> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </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> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.3.7.RELEASE</version> <configuration> <mainClass>com.badao.springcloudalibabademo.SpringCloudAlibabaDemoApplication</mainClass> </configuration> <executions> <execution> <id>repackage</id> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
此時父工程就搭建完成了,整個專案是由maven進行管理的,這裡什麼都不選,因為後面要做底座+多個子模組的架構,
這個父工程就是底座。
在搭建時尤其要注意版本相容問題,即SpringCloud與SpringBoot的版本相容問題。
官方版本說明
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E