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的流控規則