• SpringCloud-Nacos/OpenFien/Gateway的基本介绍及快速上手


    Spring-Cloud-Alibaba-Nacos 注册中心

    下载、安装 Nacos

    下载地址:https://github.com/alibaba/nacos/releases

    下载后解压,打开 bin 目录,双击 startup.cmd 即可运行,出现错误可参考:https://www.cnblogs.com/songjilong/p/12620021.html

    引入 spring-cloud-alibaba、alibaba-nacos-discovery

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    配置服务名、注册中心地址

    spring:
      application:
        name: gulimall-coupon # 服务名称
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848 # nacos地址
    

    4、运行需要注册的服务、打开浏览器输入http://127.0.0.1:8848/nacos ,用户名密码默认是 nacos,进入后点击服务列表就可以看到所有注册的服务了

    Spring-Cloud-OpenFeign 远程调用

    引入 openfeign 依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    

    编写远程调用接口

    告诉 SpringCloud 这个接口需要调用的远程服务,接口方法的请求地址、名称、返回值要与被调用的方法一致

    //指定调用的远程服务名
    @FeignClient("gulimall-coupon")
    public interface CouponFeignService {
        @RequestMapping("/coupon/coupon/member/list")
        public R memberCoupons();
    }
    

    开启远程调用服务

    @SpringBootApplication
    @EnableDiscoveryClient
    //指定自己创建的远程接口的位置
    @EnableFeignClients(basePackages = "com.sjl.gulimall.member.feign")
    public class GulimallMemberApplication {
        public static void main(String[] args) {
            SpringApplication.run(GulimallMemberApplication.class, args);
        }
    }
    

    Spring-Cloud-Alibaba-Nacos 配置中心

    引入alibaba-nacos-config

     <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     </dependency>
    

    添加配置文件bootstrap.properties

    # 服务名
    spring.application.name=gulimall-coupon 
    # nacos地址
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848 
    

    开启动态刷新

    完成上述两步后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。要想打开动态刷新,还需要在当前类加上 @RefreshScope 注解

    @RefreshScope //开启动态刷新
    @RestController
    @RequestMapping("coupon/coupon")
    public class CouponController {
        @Value("${coupon.user.name}")
        private String name; //coupon.user.name=张三
        @Value("${coupon.user.age}")
        private Integer age; //coupon.user.age=18
    
        @RequestMapping("/test")
        public R test(){
            return R.ok().put("name", name).put("age", age);
        }
    }
    

    在Nacos新建配置文件

    进入 Nacos 控制台,新建一个配置文件,命名为服务名.properties

    动态的修改配置文件

    当我们将配置文件的值修改后,访问的数据也会 更新,如果配置中心和当前应用都配置了相同的项,优先使用配置中心的配置

    Nacos 配置中心的一些概念与细节

    命名空间

    用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 DataID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

    Nacos 中默认有一个 public 保留空间,默认所有新增的配置都放在这个空间中

    我们可以在 Nacos 可视化界面创建自己的命名空间

    新建一个配置文件,并发布,命名规则为服务名.properties

    bootstrap.properties 文件中指定命名空间的唯一标识,重启该服务,即可访问

    spring.cloud.nacos.config.namespace=5a8f07f8-9fc0-480e-9d31-1a1800b7530b
    

    配置集

    一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配
    置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级
    别等配置项。

    配置集ID

    Nacos中的某个配置集的 ID。 配置集ID是组织划分配置的维度之一。DataID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。DataID 通常采用类Java 包(如com.taobao.tc.refund.log.level) 的命名规则保证全局唯一性。 此命名规则非强制。

    类似配置文件名

    配置分组

    Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分DataID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_ GROUP。

    在 Nacos 中新建一个分组后,需要在 bootstrap.properties 中指定自己要使用的分组

    spring.cloud.nacos.config.group=dev
    

    通常将每个微服务创建自己的命名空间,使用dev、prod、test等名称作为配置分组,区分环境

    同时加载多个配置集

    有了 Nacos 配置中心,我们就可以将所有的配置文件都放在配置中心里管理,项目里只保留一个bootstrap.properties,非常便于管理

    比如,现在将我们原本的配置文件 application.yml 拆分为几个部分放到配置中心

    • 数据源配置:datasource.yml

      spring:
        datasource:
          url: jdbc:mysql://192.168.56.10:3306/gulimall_sms
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root
          password: root
      
    • mybatis 配置:mybatis.yml

      mybatis-plus:
        mapper-locations: classpath:/mapper/**/*.xml
        global-config:
          db-config:
            id-type: auto
      
    • 其他配置:other.yml

      server:
        port: 7000
      spring:
        application:
          name: gulimall-coupon
        datasource:
          url: jdbc:mysql://192.168.56.10:3306/gulimall_sms
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root
          password: root
        cloud:
          nacos:
            discovery:
              server-addr: 127.0.0.1:8848
      

    我们还需要在 bootstrap.properties 中配置如下信息

    • data-id:配置文件名

    • group:分组名

    • refresh:自动刷新(默认是false),即 修改了配置中心的值后是否刷新

    spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
    spring.cloud.nacos.config.ext-config[0].group=dev
    spring.cloud.nacos.config.ext-config[0].refresh=true
    
    spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
    spring.cloud.nacos.config.ext-config[1].group=dev
    spring.cloud.nacos.config.ext-config[1].refresh=true
    
    spring.cloud.nacos.config.ext-config[2].data-id=other.yml
    spring.cloud.nacos.config.ext-config[2].group=dev
    spring.cloud.nacos.config.ext-config[2].refresh=true
    

    点进源码可发现此配置是个 List 集合,因此可以配置多个

    配置完成后,可以访问相关接口测试一下


    更多配置请参考 Nacos 官方文档https://nacos.io/zh-cn/docs/what-is-nacos.html

    Spring-Cloud-Gatway API网关

    简介

    网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制等。而 springcloud gateway 作为 SpringCloud 官方推出的第二代网关框架,取代了 Zuul 网关。

    几种网关的性能对比

    使用

    开启服务注册发现、配置 Nacos 注册中心、配置中心地址、端口

    server:
      port: 88
    spring:
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848
    
    spring.application.name=gulimall-coupon
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    spring.cloud.nacos.config.namespace=24b9f0bf-ac39-431e-80f0-4daa0b923b7a
    

    配置路由,使我们输入localhost:88?query=baidu可以跳转到百度官网,输入localhost:88?query=qq可以跳转到qq官网

    spring:
      cloud:
        gateway:
          routes:
            - id: test_baidu
              uri: https://www.baidu.com
              predicates:
                - Query=query,baidu
            - id: test_qq
              uri: https://www.qq.com
              predicates:
                - Query=query,qq
    


    官方文档:https://cloud.spring.io/spring-cloud-gateway/2.1.x/single/spring-cloud-gateway.html

  • 相关阅读:
    java
    图解MotionEvent中getRawX、getRawY与getX、getY以及View中的getScrollX、getScrollY
    ListView分栏--制作分栏音乐列表
    Android中Touch事件的传递机制
    Android进程间通信之使用AIDL
    Android进程间通信之使用Messenger
    Android Mms之短信接收流程--从Framework到App
    Android组件的使用:ListView、GridView
    Android组件的使用:AutoCompleteTextView、Spinner
    Android组件的使用:DatePicker,TimePicker
  • 原文地址:https://www.cnblogs.com/songjilong/p/12628839.html
Copyright © 2020-2023  润新知