SpringCloud+Gateway+nacos+sentinel入门

nacos的安装

从官方网站(https://github.com/alibaba/nacos/releases)下载稳定版1.3.2

以单机模式启动nacos

1
bin/nacos -m standalone

创建2个工程

spring-nacos-provider, spring-nacos-gateway

spring-nacos-provider

  1. 在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
<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>

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-configuration-processor</artifactId>

<optional>true</optional>

</dependency>

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<optional>true</optional>

</dependency>
  1. 添加配置文件bootstrap.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html

# Nacos认证信息

spring.cloud.nacos.config.username=nacos

spring.cloud.nacos.config.password=nacos

spring.cloud.nacos.config.contextPath=/nacos

# 设置配置中心服务端地址

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

# Nacos 配置中心的namespace,默认为 public

spring.cloud.nacos.config.namespace=public

spring.cloud.nacos.config.file-extension=yaml
  1. 修改配置文件application.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server:

port: 8081

spring:

application:

name: demo-service

cloud:

nacos:

discovery:

namespace: public

password: nacos

server-addr: 127.0.0.1:8848

username: nacos
  1. 添加一个HelloController
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@RestController

@Slf4j

public class HelloController {

@GetMapping("/foo")

public String foo(String name) {

return "hello "+ name;

}

}
  1. 启动项目后,访问http://localhost:8081/foo?name=张三,可以得到如下图示

image-20210423141827576

此时服务提供端已经配置好了

spring-nacos-gateway

  1. 在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
<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

</dependency>

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-gateway</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-configuration-processor</artifactId>

<optional>true</optional>

</dependency>

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<optional>true</optional>

</dependency>

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>1.2.72</version>

</dependency>

<dependency>

<groupId>com.alibaba.csp</groupId>

<artifactId>sentinel-spring-cloud-gateway-adapter</artifactId>

<version>1.8.0</version>

</dependency>

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>

</dependency>

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-alibaba-sentinel-datasource</artifactId>

</dependency>
  1. 添加配置文件bootstrap.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html

# Nacos认证信息

spring.cloud.nacos.config.username=nacos

spring.cloud.nacos.config.password=nacos

spring.cloud.nacos.config.contextPath=/nacos

# 设置配置中心服务端地址

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

# Nacos 配置中心的namespace,默认为 public

spring.cloud.nacos.config.namespace=public

spring.cloud.nacos.config.file-extension=yaml
  1. 修改配置文件application.yml
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
server:

port: 8080

spring:

application:

name: gateway

cloud:

nacos:

discovery:

namespace: public

password: nacos

server-addr: 127.0.0.1:8848

username: nacos

gateway:

discovery:

locator:

enabled: true

lower-case-service-id: true

routes:

- id: spring-nacos-provider

uri: lb://spring-nacos-provider

predicates:

- Path=/provider/**

filters:

- StripPrefix=1
  1. 启动应用,访问http://localhost:8080/provider/foo?name=张三

image-20210423142014725

完成网关接入。下面配合nacos,添加配置

在nacos中添加spring-nacos-provider.yaml的配置,注意选择类型为yaml

1
2
3
didi:

title: "架构师"

修改HelloController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@RestController

@Slf4j

public class HelloController {

@Value("${didi.title}")

private String title;


@GetMapping("/foo")

public String foo(String name) {

return "hello "+ name + ", my title is " + title;

}

}

推荐文章