spring cloud alibaba学习笔记
0 环境
- 系统环境: win10
- 编辑器: IDEA
- springcloud版本:H版
1 简介
spring cloud Alibaba 提供一套微服务开发一站式解决方案
- 主要功能
- 服务注册和发现
- 分布式配置中心
- 服务限流降级
- 分布式事务
- 消息驱动
组件
- Nacos
- Sentinel
- 优点
- 国产
- 比较全
- 阿里的经得起考验 值得信赖
2 Nacos
Nacos提供服务配置、服务发现和服务管理
1 安装和配置管理介绍
- Nacos的匹配规则:
需要配置 spring.application.name ,它是构成 Nacos 配置管理 dataId字段的一部分。
- 在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix 默认为
spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。
spring.profile.active
即为当前环境对应的profile
,注:当 - spring.profile.active 为空/未填写时,相对应的连接符-也将不存在(省略),dataId 的拼接格式变成${prefix}.${file-extension}
file-exetension` 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持properties 和 yaml 类型。
最终格式:
{spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
2 创建springboot项目 添加Nacos依赖
3 bootstrap.yml配置
# #{spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
spring:
application:
name: nacos
cloud:
nacos:
discovery:
#Nacos服务注册中心地址
server-addr: xxx:8848
config:
server-addr: xxx:8848
# file-extension: properties
file-extension: yaml
# 组名
group: DEFAULT_GROUP
server:
port: 3838
4 在网页上编辑配置
- yaml
- 若在bootstrap.yml开启的file-extension: properties 就会访问下面的
5 添加controller
@RestController
//Nacos的动态刷新
@RefreshScope
public class HelloController {
@Value("${name}")
String name;
@GetMapping("/hello")
public String hello(){
return name;
}
}
6 启动并访问端口
3 注册中心
1 provier项目
- 1 新建provider项目
- 2 application.yml配置
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: xxx:8848
- 3 controller
@RestController
public class HelloController {
@Value("${server.port}")
Integer port;
@GetMapping("/hello")
public String hello(){
return "hello: " + port;
}
}
- 4 项目打包
- 5 运行项目
运行java -jar nacos1-0.0.1-SNAPSHOT.jar --server.port=8081
和java -jar nacos1-0.0.1-SNAPSHOT.jar --server.port=8082
2 consumer项目
- 1 新建consumer项目
- 2 application.yml配置
-spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: xxx:8848
server:
port: 8087
- 3 在application配置bean
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
- 4 controller
@RestController
public class HelloController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/read")
public String read(){
return restTemplate.getForObject("http://nacos-provider/hello", String.class);
}
}
- 5 启动并访问项目
4 sentinel
或在windows下载
https://github.com/alibaba/Sentinel/releases/download/1.7.1/sentinel-dashboard-1.7.1.jar
然后在windows上启动这个jar包 官网
1 新建项目
2 application.properties配置
spring.application.name=sentinel
spring.cloud.sentinel.transport.dashboard=xx:8858
server.port=8081
3 创建controller
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "hello sentinel!!";
}
}
4 启动并访问
5 添加配置中心依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
<version>1.7.1</version>
</dependency>
6 配置application.properties
spring.application.name=sentinel
spring.cloud.sentinel.transport.dashboard=xxx:8858
server.port=8081
spring.cloud.sentinel.datasource.ds.nacos.server-addr=xxx:8848
spring.cloud.sentinel.datasource.ds.nacos.data-id=sentinel-rule
spring.cloud.sentinel.datasource.ds.nacos.group-id=DEFAULT_GROUP
spring.cloud.sentinel.datasource.ds.nacos.rule-type=flow
7 bootstrap.yml配置
若只单单配置上面的 这里不配置一下 启动会报错
spring:
cloud:
nacos:
config:
server-addr: xxx:8848
8 在nacos上配置
9 启动并访问
访问hello接口 刷新sentinel 打开sentinel的流控规则