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: 8082spring:application:name: nacos-providercloud:nacos:discovery:server-addr: 127.0.0.1:8848management: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: 8181spring:application:name: nacos-consumercloud:nacos:discovery:server-addr: 127.0.0.1:8848server-url:# 服务提供者 spring.application.namenacos-provider: http://nacos-provider
- 启动类添加 @EnableDiscoveryClient
- 配置 RestTemplate
@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}
- Controller
@RestController@RequestMapping("/consumer")public class ConsumerController {@Autowiredprivate 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: 8081spring:application:name: nacos-providercloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848file-extension: yamlmanagement: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-testcloud:sentinel:transport:dashboard: 127.0.0.1:8080
