谷粒商城-day03-服务配置中心Nacos和网关Gateway

nacos 配置中心

基本配置

引入依赖

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

新建 bootstrap.propeties 文件

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

不使用配置中心的方式

coupon.user.name=zhangsan
coupon.user.age=18
@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private Integer age;
@RequestMapping("/test")
public R test(){
    return R.ok().put("name", name).put("age", age);
}

GET http://localhost:7000/coupon/coupon/test

{
  "msg": "success",
  "code": 0,
  "name": "zhangsan",
  "age": 18
}

存在的问题,需要更改源码才能修改配置

使用配置中心的方式

image-20210212120145208

获取的配置默认是 当前应用名.properties 文件

新建一个配置,重启项目

{
  "msg": "success",
  "code": 0,
  "name": "zhangsan",
  "age": 18
}

但是不能动态更新

Controller 类加上 @RefreshScope 注解

@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {

就可以动态更新了,在不重启应用的情况下可以更改配置了

命名空间

用途1:利用 namespace 来做 开发,测试,生产,环境隔离
image-20210212121536641 image-20210212121813771

创建三个名称空间

image-20210212121959968

默认使用的是 public 名称空间

bootstrap.properties 里面加上

# namespace
spring.cloud.nacos.config.namespace=c0634c19-b34d-4ec4-8d9c-7b0afa66e745
image-20210212122456449

再去测试就可以切换到test 下面的配置了

image-20210212122540540
用途2:利用 namespace 来做 微服务模块,环境隔离

根据模块名分别创建两个命名空间

克隆配置

image-20210212123032665
总结

两种隔离的方式

配置分组

image-20210212131852523

新增一个1111分组

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

# namespace
spring.cloud.nacos.config.namespace=6968c1e1-c80f-4aa9-89de-56f3a06a4f2d
# group
spring.cloud.nacos.config.group=1111

最佳实践

使用 namespace 区分微服务,使用 分组区分 环境 test dev prod

image-20210212132659189

# namespace
spring.cloud.nacos.config.namespace=6968c1e1-c80f-4aa9-89de-56f3a06a4f2d
# group
spring.cloud.nacos.config.group=dev
{
  "msg": "success",
  "code": 0,
  "name": "coupon-dev",
  "age": 18
}

加载多数据集

image-20210212133454480
# namespace
spring.cloud.nacos.config.namespace=6968c1e1-c80f-4aa9-89de-56f3a06a4f2d
# group
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

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

image-20210212133535511

Gateway网关

加入模块 gulimall-gateway

添加 Gateway 依赖

<dependency>
    <groupId>com.zhouzhou.gulimall</groupId>
    <artifactId>gulimall-common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

开启服务的注册发现

加上 @EnableDiscoveryClient 注解

application.properties: nacos 服务注册与发现相关的配置 还有端口配置

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=gulimall-gateway
server.port=88

nacos 配置中心相关的配置

先创建一个 gateway 名称空间

image-20210212172826687
spring:
    application:
        name: guliall-gateway

bootstrap.properties:

spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

# namespace
spring.cloud.nacos.config.namespace=75db34bd-5133-4310-bd32-e1d0c2e0e31c
# group
#spring.cloud.nacos.config.group=dev

取消 数据源的自动化配置

@EnableDiscoveryClient
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class GulimallGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallGatewayApplication.class, args);
    }

}

gateway网关模块就可以运行起来了

下面我们进行具体的配置

我们完成访问 http://localhost:88/?url=baidu 跳转到百度

访问 http://localhost:88/?url=qq 跳转到 qq

application.yml

spring:
  cloud:
    gateway:
      routes:
        - id: baidu_route
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu
        - id: qq_route
          uri: https://im.qq.com/
          predicates:
            - Query=url,qq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值