spring cloud Alibaba 提供一套微服務開發一站式解決方案html
- 主要功能
- 服務註冊和發現
- 分佈式配置中心
- 服務限流降級
- 分佈式事務
- 消息驅動
組件java
- Nacos
- Sentinel
- 優勢
- 國產
- 比較全
- 阿里的經得起考驗 值得信賴
Nacos提供服務配置、服務發現和服務管理git
Nacos安裝
github
須要配置 spring.application.name ,它是構成 Nacos 配置管理 dataId字段的一部分。web
${prefix}-${spring.profile.active}.${file-extension}
spring
prefix 默認爲
spring.application.name
的值,也能夠經過配置項spring.cloud.nacos.config.prefix
來配置。docker
spring.profile.active
即爲當前環境對應的profile
,注:當 - spring.profile.active 爲空/未填寫時,相對應的鏈接符-也將不存在(省略),dataId 的拼接格式變成${prefix}.${file-extension}
file-exetension` 爲配置內容的數據格式,能夠經過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持properties 和 yaml 類型。bootstrap
最終格式:
{spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
windows
# #{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
@RestController //Nacos的動態刷新 @RefreshScope public class HelloController { @Value("${name}") String name; @GetMapping("/hello") public String hello(){ return name; } }
spring: application: name: nacos-provider cloud: nacos: discovery: server-addr: xxx:8848
@RestController public class HelloController { @Value("${server.port}") Integer port; @GetMapping("/hello") public String hello(){ return "hello: " + port; } }
java -jar nacos1-0.0.1-SNAPSHOT.jar --server.port=8081
和java -jar nacos1-0.0.1-SNAPSHOT.jar --server.port=8082
-spring: application: name: nacos-consumer cloud: nacos: discovery: server-addr: xxx:8848 server: port: 8087
@Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); }
@RestController public class HelloController { @Autowired RestTemplate restTemplate; @GetMapping("/read") public String read(){ return restTemplate.getForObject("http://nacos-provider/hello", String.class); } }
或在windows下載
https://github.com/alibaba/Sentinel/releases/download/1.7.1/sentinel-dashboard-1.7.1.jar
而後在windows上啓動這個jar包 官網springboot
spring.application.name=sentinel spring.cloud.sentinel.transport.dashboard=xx:8858 server.port=8081
@RestController public class HelloController { @GetMapping("/hello") public String hello(){ return "hello sentinel!!"; } }
<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>
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
若只單單配置上面的 這裏不配置一下 啓動會報錯
spring: cloud: nacos: config: server-addr: xxx:8848
訪問hello接口 刷新sentinel 打開sentinel的流控規則