Spring Cloud Alibaba
SpringCloud | Hoxton.SR9 |
---|---|
SpringCloud Alibaba | 2.2.6.RELEAS |
Nacos | 1.4.2 |
Sentinel | 1.8.1 |
Seata | 1.3.0 |
1、Nacos
版本说明 · alibaba/spring-cloud-alibaba Wiki (github.com)
Nacos 支持 AP 和 CP 模式的切换
父 POM
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<spring.cloud.version>Hoxton.SR9</spring.cloud.version>
<spring.cloud.alibaba.version>2.2.6.RELEASE</spring.cloud.alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.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>
</dependencies>
</dependencyManagement>
1.1 服务发现
1.1.1 服务提供者
- POM
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- yaml
server:
port: 8082
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
management:
endpoints:
web:
exposure:
exclude: '*'
- 启动类添加 @EnableDiscoveryClient
- Controller
@RestController
@RequestMapping("/test")
public class TestController {
@Value("${server.port}")
private String port;
@GetMapping("/port")
public Object getPort(){
return port;
}
}
1.1.2 消费者
- POM
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- yaml
server:
port: 8181
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
server-url:
# 服务提供者 spring.application.name
nacos-provider: http://nacos-provider
- 启动类添加 @EnableDiscoveryClient
- 配置 RestTemplate
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
- Controller
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@Value("${server-url.nacos-provider}")
private String serverUrl;
@GetMapping("/port")
public Object getPort(){
return restTemplate.getForObject(serverUrl+"/test/port",String.class);
}
}
1.2 配置中心
- POM
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- bootstrap.yml
server:
port: 8081
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
management:
endpoints:
web:
exposure:
exclude: '*'
- application.yaml
spring:
profiles:
active: dev
- 启动类添加 @EnableDiscoveryClient
- Controller
@RestController
// 动态刷新
@RefreshScope
@RequestMapping("/test")
public class TestController {
@Value("${config.info}")
private String config;
@GetMapping("/config")
public Object getConfig(){
return config;
}
}
- 配置文件名称
{spring.profiles.active}.${file-extension}
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。spring.profiles.active
即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当**spring.profiles.active**
为空时,对应的连接符**-**
也将不存在,dataId 的拼接格式变成**${prefix}.${file-extension}**
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
2、Sentinel
- POM
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
- yaml
spring:
application:
name: sentinel-test
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:8080