spring cloud alibaba學習筆記

0 環境

  • 系統環境: win10
  • 編輯器: IDEA
  • springcloud版本:H版

1 簡介

spring cloud Alibaba 提供一套微服務開發一站式解決方案html

  • 主要功能
    • 服務註冊和發現
    • 分佈式配置中心
    • 服務限流降級
    • 分佈式事務
    • 消息驅動

組件java

  • Nacos
  • Sentinel
  • 優勢
    • 國產
    • 比較全
    • 阿里的經得起考驗 值得信賴

2 Nacos

Nacos提供服務配置、服務發現和服務管理git

1 安裝和配置管理介紹

Nacos安裝
github

  • Nacos的匹配規則:

須要配置 spring.application.name ,它是構成 Nacos 配置管理 dataId字段的一部分。web

  • 在 Nacos Spring Cloud 中,dataId 的完整格式以下:

${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

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=8081java -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包 官網springboot

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

相關文章
相關標籤/搜索