nacos配置中心和gateway网关使用

nacos配置中心和gateway网关



前言

涉及到springcloud都要注册到nacos中

微服务配置中心

引入依赖

  • 一般的我们要将服务注册到配置中心,需要服务发现的依赖,其次,如果你需要nacos管理配置,则需要配置中心依赖。
      <!--         服务注册/发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--         配置中心来做配置管理 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

创建配置文件

  • nacos创建配置文件,命名规范为服务名-环境.properties
    在这里插入图片描述
  • 每个微服务都需要注册nacos,被nacos所识别发现
spring:
  application:
    name: rainbow-oms
#  datasource:
#    username: root
#    password: 123456
#    url: jdbc:mysql://192.168.237.130:3306/enjoyment_oms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
#    driver-class-name: com.mysql.cj.jdbc.Driver

  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
  • 在微服务创建bootstrap.properties,优先级高需要指定配置nacos地址和服务名,让nacos识别
spring.cloud.nacos.config.server-addr=localhost:8848
spring.application.name=rainbow-oms

扫描bootstrap.properties文件,识别配置地址和名字,去nacos中查找,然后读取相应的配置文件

加入注解

  • @RefreshScope:修改nacos配置文件的内容,会实时变化
@RestController
@RequestMapping("oms/order")
@RefreshScope
public class OrderController {
    @Autowired
    private OrderService orderService;


    @Autowired
    private PmsFeign pmsFeign;

    @Value("${user.name}")
    private String name;
    @Value("${user.pwd}")
    private Integer pwd;

    @GetMapping("/testFeign")
    public R testFeign(){
        R r = pmsFeign.testFeign();
        return r.put("name",name).put("pwd",pwd);
    }

其他细节

命名空间

应用场景,项目分生产,开发,测试,我们可以用命名空间隔离

  • 新建命名空间

在这里插入图片描述

  • 使用
    在这里插入图片描述
  • bootstrap加上spring.cloud.nacos.config.namespace=1852a9aa-fd14-463b-a519-040cf460467a指定命名空间,就会读取该命名空间下的配置文件

配置分组

  • group就是配置分组,我们也可以指定组下面的文件
    在这里插入图片描述
    同一命名空间,不同分组

  • bootstrap加上spring.cloud.nacos.config.group=dev可以指定分组

在这里插入图片描述

通常每个微服务中有不同命名空间,然后每个微服务的环境使用不同分组(dev,pro,test)

指定读取配置文件

  • 可以在bootstrap中指定要读取的文件
  • 注释datasource配置,在nacos新建配置

在这里插入图片描述

  • bootstrap
spring.cloud.nacos.config.server-addr=localhost:8848
spring.application.name=rainbow-oms
spring.cloud.nacos.config.namespace=1852a9aa-fd14-463b-a519-040cf460467a
spring.cloud.nacos.config.group=dev
#指定额外读取配置文件
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
  • 最后访问同样可以

gateway网关

简单入门

  • 依赖
<!--        gateway网关-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
  • 注册nacos,nacos发现地址和服务名,和nacos config配置地址和服务名
  • 配置断言规则,部分配置省略
spring:
  application:
    name: rainbow-gateway
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    gateway:
      routes:
        - id: query_test
          uri: https://www.baidu.com
#  断言   http://localhost:88/?url=baidu  拦截请求路径参数有url=baidu就会跳转百度
          predicates:
            - Query=url,baidu
  • http://localhost:88/?url=baidu 访问,跳转百度

详细网关介绍看官网

负载均衡

  • 通常前端是只有一个地址的,当访问这个地址,请求可以转发到不同的微服务
    在这里插入图片描述

  • 前端地址 window.SITE_CONFIG[‘baseUrl’] = ‘http://localhost:88/api’;

  • 人人开源默认的验证码请求地址是:http://localhost:8080/renren-fast/captcha.jpg?uuid=xxxxx

gateway配置

spring:
  application:
    name: rainbow-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.237.130:8848
    gateway:
      routes:
        - id: renren_fast_route
          uri: lb://renren-fast
#          断言判断路径中是否有api,如果有就转发到http://renren-fast(localhost):8080/api/**
          predicates:
            - Path=/api/**
#              但此时路径中会凭接/api/**,我们需要重写路径http://renren-fast(localhost):8080/renren-fast/**
          filters:
            - RewritePath=/api/(?<segment>/?.*), /renren-fast/$\{segment}

看注释这里的重写是按/api/** 重写为 /renren-fast/**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值