spring cloud alibaba学习笔记

0 环境

  • 系统环境: win10
  • 编辑器: IDEA
  • springcloud版本:H版

1 简介

spring cloud Alibaba 提供一套微服务开发一站式解决方案

  • 主要功能
    • 服务注册和发现
    • 分布式配置中心
    • 服务限流降级
    • 分布式事务
    • 消息驱动

组件

  • Nacos
  • Sentinel
  • 优点
    • 国产
    • 比较全
    • 阿里的经得起考验 值得信赖

2 Nacos

Nacos提供服务配置、服务发现和服务管理

1 安装和配置管理介绍

Nacos安装

  • 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=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包 官网

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的流控规则

作者:以罗伊
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/my-ordinary/p/12601217.html