Spring Cloud Alibaba(一)
Spring Cloud Alibaba
1. 前言
我们在上一个章节中已经完成了 Spring Cloud
微服务相关组件的学习,目前我们针对微服务的另一种解决方案 Spring Cloud Alibaba
进行学习,目前 Alibaba
微服务体系使用还是较多的。
如下是上一章 Spring Cloud 的文档和代码
- Spring Cloud 代码:https://github.com/wicksonZhang/Spring-Cloud
- Spring Cloud 文档:https://github.com/wicksonZhang/Spring-Cloud/tree/main/doc
2. Spring Cloud Alibaba
是什么
官方文档:https://spring.io/projects/spring-cloud-alibaba/
中文文档:https://github.com/alibaba/spring-cloud-alibaba/blob/2022.x/README-zh.md
Spring Cloud Alibaba
是由阿里巴巴公司与 Spring 社区合作开发的微服务框架的衍生项目。Spring Cloud Alibaba
在继承了 Spring Cloud
的优势基础上,融入了一些与阿里巴巴技术栈紧密集成的组件,以满足该生态系统中的特定需求。以下是具体的组件介绍:
- Nacos: 作为注册中心和配置中心,
Nacos
提供了动态服务发现、配置管理和服务管理的平台。相较于Spring Cloud
中可能需要结合Spring Cloud Eureka
和Spring Cloud Config
才能实现服务发现和配置管理,Nacos
简化了这一过程。 - Sentinel:
Sentinel
是一款开源的流量控制和服务熔断的库,具备实时流量控制、服务熔断以及系统负载保护等功能。鉴于Spring Cloud Hystrix
已停止更新,Sentinel
成为了替代方案,为微服务提供了稳定性和可用性的保障。 - RocketMQ: 作为分布式消息中间件,
RocketMQ
用于在微服务架构中进行异步通信和事件驱动。它为Spring Cloud Alibaba
提供了可靠的消息传递机制,促进了微服务之间的协同工作。 - Seata:
Seata
是一款开源的分布式事务解决方案,专注于解决微服务架构中的分布式事务一致性问题。通过集成Seata
,Spring Cloud Alibaba
提供了全局事务的协调和管理,确保了数据的一致性。 - Dubbo:
Dubbo
是一款高性能、轻量级的开源RPC
框架,用于微服务之间的远程调用。在Spring Cloud Alibaba
中,集成了Dubbo
,使得微服务之间的远程通信更为便捷高效。
通过这些组件的集成,Spring Cloud Alibaba
为开发者提供了更加完善和与阿里巴巴技术栈高度兼容的微服务解决方案。
3. 项目初始化
项目地址:https://github.com/wicksonZhang/Spring-Cloud-Alibaba.git
我们的项目是从
Spring Cloud
体系中进行迁移出来的,所以大部分还是使用到了以前的公共模块和依赖。
项目结构
pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<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>cn.wickson.cloud.alibaba</groupId>
<artifactId>Spring-Cloud-Alibaba</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<!--子项目基本信息-->
<modules>
<module>01-spring-cloud-alibaba-common</module>
</modules>
<!-- 统一管理jar包版本 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring.boot.version>2.4.2</spring.boot.version>
<spring.cloud.version>2020.0.1</spring.cloud.version>
<spring.cloud.alibaba.version>2021.1</spring.cloud.alibaba.version>
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<lombok.version>1.16.18</lombok.version>
<hutool.version>5.8.12</hutool.version>
<mapstruct.version>1.5.3.Final</mapstruct.version>
</properties>
<!--项目依赖包统一管理-->
<dependencyManagement>
<dependencies>
<!--spring boot 2.4.2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud 2020.0.1 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud alibaba 2021.1 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!--hutool工具依赖包-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<optional>true</optional>
</dependency>
<!--MapStruct依赖包-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<!--mapstruct-processor依赖包-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Wickson Blog!
评论