概述

同 SpringCloud 一样,SpringCloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 SpringCloud 编程模型轻松使用这些组件来开发分布式应用服务。
Spring Cloud Alibaba 新一代微服务解决方案 Spring Cloud Alibaba 参考文档

作为 SpringCloud 体系下的新实现,SpringCloud Alibaba 跟官方的组件或其它的第三方实现如 Netflix, Consul,Zookeeper 等对比,具备了更多的功能:

- SpringCloud
Netflix
SpringCloud
官方
SpringCloud
Zookeeper
SpringCloud
Consul
SpringCloud Kubernetes SpringCloud
Alibaba
分布式配置 Archaius SpringCloud Config Zookeeper Consul Config Map Nacos
服务注册/发现 Eureka - - Consul Api Server Nacos
服务熔断 Hystrix - - - - Sentinel
服务调用 Feign OpenFeign、RestTemplate - - - Dubbo RPC
服务路由/网关 Zuul SpringCloud Gateway - - - Dubbo Proxy
分布式消息 - SCS RabbitMQ - - - SCS RabbitMQ
负载均衡 Ribbon - - - - Dubbo LB
分布式事务 - - - - - Seata
Sidecar SpringCloud Netflix Sidecar - - - - SpringCloud Alibaba Sidecar

SpringCloud Alibaba系列组件

SpringCloud Alibaba系列组件

准备工作

我这里是建了一个父级maven项目spring-cloud-alibaba-parent方便统一管理版本
改动版本的时候直接修改<properties>内的版本即可

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
<?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.coderxi</groupId>
<artifactId>spring-cloud-alibaba-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<!--none-->
</modules>
<packaging>pom</packaging>

<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.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
<spring-cloud.version>Hoxton.SR9</spring-cloud.version>
</properties>

<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>
<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>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<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>
</dependencies>
</project>

Nacos

Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

Nacos 的关键特性包括:

  • 服务发现和服务健康监测
  • 动态配置服务
  • 动态 DNS 服务
  • 服务及其元数据管理

Nacos Discovery(服务发现)

  • 在有了父项目的基础上,只需要创建一个新的maven moudule,pom配置如下配置~非常干净
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?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>
    <parent>
    <groupId>com.coderxi</groupId>
    <artifactId>spring-cloud-alibaba-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>order-service</artifactId>
    <description>订单模块</description>

    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    </dependencies>

    </project>
  • 接下来,配置一下src/main/resources/application.yml并启动项目即可
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    server:
    port: 9001
    spring:
    application:
    name: order-service
    cloud:
    nacos:
    discovery:
    server-addr: localhost:8848
    namespace: public
    username: nacos
    password: nacos