zoukankan      html  css  js  c++  java
  • day2 springcloud组件(nacos注册/配置中心 feign组件请求调用 gateway网关)

    springcloud相关配置

    官方文档https://github.com/alibaba/spring-cloud-alibaba

    在公共模块common中的pom.xml中加入

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    dependencyManagement是作为依赖管理的配置 里面的dependency配置包没有引入 作用相当于为以后引入的com.alibaba.cloud包定义了版本号




    一.nacos服务注册中心Nacos Discovery
    官方https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme.md
    1)pom.xml引入依赖 
    <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     </dependency>

    2)nacos安装及配置
    https://github.com/alibaba/nacos/releases/download/1.4.1/nacos-server-1.4.1.zip
    https://github.com/alibaba/nacos/releases/download/1.4.1/nacos-server-1.4.1.tar.gz
    将startup.cmd中的MODE="cluster"集群模式改为MODE="standalone"单机模式 启动startup.cmd
    默认启动端口8848
    在需要使用注册中心的模块中yml加入配置
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    启动类中加上注解@
    EnableDiscoveryClient即注册到了注册中心

    nacos还有管理平台http://localhost:8848/nacos
    默认账号密码nacos/nacos
    此时服务列表为空 因为需为服务起名才能看见 yml加上
    spring.application.name=名称 就能看到了



    二.Fengin远程调用其它服务组件
    1)引入依赖
    <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>

    2)配置过程

    启动类加上去扫描feign包的注解
      @EnableFeignClients(basePackages = "com.hb.gulimail.member.feign")
    扫描包中新增个Feign接口 如
    @FeignClient("coupon")
    public interface FeignTest {
    @RequestMapping("/coupon/coupon/list")
    public R list();
    }
    @FeignClient("coupon")是配置需调用的服务名 同时会自动注入bean
    @RequestMapping即调用coupon服务中对应的接口



    三.nacos配置中心
    1)引入nacos配置中心依赖
    <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     </dependency>

     2)添加/src/main/resources/bootstrap.properties

    spring.application.name=coupon
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    //bootstrap.properties优先级比spplication.properties高
    //服务名为coupon对应的在nacos的配置文件是coupon.properties

    可以在controller中加上@RefreshScope热加载

    3)配置命名空间/组

    nacos中有命名空间菜单选项 对配置文件配置管理中有group组的选项

    建议配置命名空间/组最终方案:每个微服务创建自己的命名空间,然后使用配置分组区分环境(dev/test/prod)

      即每个微服务都创建命名空间 每个空间中的配置文件都区分(dev/test/prop)环境

    # 可以选择对应的命名空间 # 写上对应环境的命名空间ID
    spring.cloud.nacos.config.namespace=b176a68a-6800-4648-833b-be10be8bab00
    # 更改配置分组
    spring.cloud.nacos.config.group=DEFAULT_GROUP

    #默认nacos中的配置文件名称是 服务名.properties 改为yaml后缀方式为

    #指定文件类型
    spring.cloud.nacos.config.file-extension=yaml

     

    4)多配置集

    项目的配置信息可能不会全放同一个配置文件中 nacos也考虑到这种情况

     )bootstrap.properties中配置

    //指定nacos中配置文件的位置 组
    spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
    spring.cloud.nacos.config.extension-configs[0].group=dev
    spring.cloud.nacos.config.extension-configs[0].refresh=true
    
    spring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yml
    spring.cloud.nacos.config.extension-configs[1].group=dev
    spring.cloud.nacos.config.extension-configs[1].refresh=true
    
    spring.cloud.nacos.config.extension-configs[2].data-id=other.yml
    spring.cloud.nacos.config.extension-configs[2].group=dev
    spring.cloud.nacos.config.extension-configs[2].refresh=true

    四.Gateway网关

    网关是请求流量的入口,常用功能包括路由转发,权限校验,限流控制等。springcloud gateway取代了zuul网关。

    1)三大核心概念

    Route: 发一个请求给网关,网关要将请求路由到指定的服务。路由有id,目的地uri,断言的集合,匹配了断言就能到达指定位置
    Predicate断言: 就是java里的断言函数,匹配请求里的任何信息,包括请求头等。根据请求头路由哪个服务
    Filter: 过滤器请求和响应都可以被修改。
    //白话:断言就是根据请求中的信息判断得请求到 可能类似mvc的handlemapping

    断言 过滤器参考

    https://cloud.spring.io/spring-cloud-gateway/2.2.x/reference/html/#gateway-request-predicates-factories

    https://cloud.spring.io/spring-cloud-gateway/2.2.x/reference/html/#gatewayfilter-factories

    2)配置例子

    spring:
      cloud:
        gateway:
          routes:
            - id: test_route
              uri: https://www.baidu.com
              predicates:
                - Query=url,baidu
    
            - id: qq_route
              uri: https://www.qq.com
              predicates:
                - Query=url,qq
    
            - id: product_route
              uri: lb://gulimall-product
              predicates:
                - Path=/api/product/**
              filters:
                - RewritePath=/api/(?<segment>.*),/${segment}
    
            - id: third_party_route
              uri: lb://gulimall-third-party
              predicates:
                - Path=/api/thirdparty/**
              filters:
                - RewritePath=/api/thirdparty/(?<segment>.*),/${segment}
    
            - id: member_route
              uri: lb://gulimall-member
              predicates:
                - Path=/api/member/**
              filters:
                - RewritePath=/api/(?<segment>.*),/${segment}
    
            - id: ware_route
              uri: lb://gulimall-ware
              predicates:
                - Path=/api/ware/**
              filters:
                - RewritePath=/api/(?<segment>.*),/${segment}
    
            - id: admin_route
              uri: lb://renren-fast
              predicates:
                - Path=/api/**
              filters:
                - RewritePath=/api/(?<segment>.*),/renren-fast/${segment}
  • 相关阅读:
    关于oc中自动引用计数 小结
    xcode6中导航栏 控制view用程序编写
    oc中深拷贝与浅拷贝
    关于c语言 指针课堂随笔
    oc中设置手动引用和自动引用图解
    利用xcode6做出牛的一逼的计算器
    利用xcode6 使用代码写出英格兰国旗
    oc中字典的应用详解
    c和oc排序程序与见解
    关于Xcode6beta2 新学者使用 工程的建立
  • 原文地址:https://www.cnblogs.com/hbhb/p/14500311.html
Copyright © 2011-2022 走看看