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

    作者:以罗伊
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    浅析Dagger2依赖注入实现过程
    浅谈Java的包装类
    多媒体编程基础之RGB和YUV
    多媒体编程基础之色彩空间
    Android Studio实用快捷键汇总
    Testin云测试平台初体验
    一张图看Goodle Clean设计架构
    一张图看Google MVP设计架构
    WampServer中MySQL中文乱码解决
    使用javamail发送包含八位验证码的邮件(完美解决中文乱码问题)
  • 原文地址:https://www.cnblogs.com/my-ordinary/p/12601217.html
Copyright © 2020-2023  润新知