当前位置:   article > 正文

nacos网关_nacos网关配置

nacos网关配置

目录

拉取docker镜像

环境配置

网关搭建架构

wemedia-gateway网关配置

依赖

启动类配置

 

网关yml配置

nacos配置中心配置网关

wdmedia服务配置

依赖

启动类配置

yml配置

 nacos配置

nacos中的配置共享

nacos配置

 wmedia模块中yml的配置


参考:https://blog.csdn.net/qq_14996421/article/details/124284209

拉取docker镜像

参考网址:https://zhuanlan.zhihu.com/p/626959761

  1. 拉取镜像 :docker pull nacos/nacos-server:v2.1.1
  2. 创建容器 :
  3. docker run --env PREFER_HOST_MODE=hostname --env MODE=standalone --env NACOS_AUTH_ENABLE=true -p 8848:8848 -p 9848:9848 -p 9849:9849 nacos/nacos-server:v2.1.1

映射网址:http://192.168.74.128:8848/nacos

账号密码均为nacos

环境配置

网关搭建架构

wemedia-gateway网关配置

依赖

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-gateway</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>com.alibaba.cloud</groupId>
  7. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  8. </dependency>
  9. <dependency>
  10. <groupId>com.alibaba.cloud</groupId>
  11. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  12. </dependency>

启动类配置

  1. package com.heima.wemedia.gateway;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  5. @SpringBootApplication
  6. @EnableDiscoveryClient
  7. public class WemediaGatewayAplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(WemediaGatewayAplication.class,args);
  10. }
  11. }

分析:

@EnableDiscoveryClient 是 Spring Cloud 中的一个注解,用于启用服务发现功能。服务发现是分布式系统中的一项关键功能,它允许服务实例能够注册自己并被其他服务发现。

网关yml配置

  1. server:
  2. port: 51602
  3. spring:
  4. application:
  5. name: leadnews-wemedia-gateway
  6. cloud:
  7. nacos:
  8. discovery:
  9. server-addr: 192.168.74.128:8848
  10. config:
  11. server-addr: 192.168.74.128:8848
  12. file-extension: yml

分析:  

   discovery:
        server-addr: 192.168.74.128:8848
      config:
        server-addr: 192.168.74.128:8848

nacos.discovery.server-addr 属性指定 Nacos 服务注册中心的位置,也就是 Nacos 用来进行服务发现的地方。

nacos.config.server-addr 属性则指定了 Nacos 配置中心的位置,也就是 Nacos 用来存储应用配置的地方。

nacos配置中心配置网关

  1. spring:
  2. cloud:
  3. gateway:
  4. globalcors:
  5. cors-configurations:
  6. '[/**]': # 匹配所有请求
  7. allowedOrigins: "*" #跨域处理 允许所有的域
  8. allowedMethods: # 支持的方法
  9. - GET
  10. - POST
  11. - PUT
  12. - DELETE
  13. routes:
  14. # 平台管理
  15. - id: wemedia
  16. uri: lb://leadnews-wemedia
  17. predicates:
  18. - Path=/wemedia/**
  19. filters:
  20. - StripPrefix= 1

分析:

  1. globalcors.cors-configurations['[/**]'] 定义了一条全局 CORS 规则,其中的 '[[//]]' 表示匹配所有请求。这条规则允许任何来源的请求(allowedOrigins 设置为 '*')并且支持四种 HTTP 方法(GET, POST, PUT 和 DELETE)。
  2. routes 是一个列表,定义了一系列的路由规则。每一条路由都有一个唯一的 id、uri 和一系列的断言和过滤器。
    • id: wemedia 表示该路由的 ID 名称。
    • uri: lb://leadnews-wemedia 指定该路由的目标 URI。这里的 "lb://" 是负载均衡的意思,表明该目标 URI 是一个服务实例的集群。
    • predicates: 列表定义了匹配路由规则的一系列条件。这里只有一条断言 'Path=/wemedia/**' ,它的意思是只有当请求的路径是以 "/wemedia" 开头的时,才会匹配到这个路由。
    • filters: 列表定义了对匹配到该路由的请求进行预处理和后处理的一些操作。这里只有一条过滤器 'StripPrefix= 1' ,它的意思是去掉请求路径前面的一个前缀,使得请求的实际路径比请求URI少一层路径。

总之,这段代码设置了Spring Cloud Gateway 的跨域规则,并定义了一条路由规则,将所有以 "/wemedia" 开头的请求转发到了 "leadnews-wemedia" 这个服务集群,并在转发之前删除掉请求路径的第一个前缀。

wdmedia服务配置

依赖

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>com.alibaba.cloud</groupId>
  7. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  8. </dependency>

启动类配置

  1. package com.heima.wemedia;
  2. import com.baomidou.mybatisplus.annotation.DbType;
  3. import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
  4. import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
  5. import org.mybatis.spring.annotation.MapperScan;
  6. import org.springframework.boot.SpringApplication;
  7. import org.springframework.boot.autoconfigure.SpringBootApplication;
  8. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  9. import org.springframework.cloud.openfeign.EnableFeignClients;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.scheduling.annotation.EnableScheduling;
  12. @SpringBootApplication
  13. @EnableDiscoveryClient
  14. @MapperScan("com.heima.wemedia.mapper")
  15. @EnableFeignClients(basePackages = "com.heima.apis")
  16. public class WemediaApplication {
  17. public static void main(String[] args) {
  18. SpringApplication.run(WemediaApplication.class,args);
  19. }
  20. @Bean
  21. public MybatisPlusInterceptor mybatisPlusInterceptor() {
  22. MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  23. interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
  24. return interceptor;
  25. }
  26. }

yml配置

  1. server:
  2. port: 51803
  3. spring:
  4. application:
  5. name: leadnews-wemedia
  6. cloud:
  7. nacos:
  8. discovery:
  9. server-addr: 192.168.74.128:8848
  10. config:
  11. server-addr: 192.168.74.128:8848
  12. file-extension: yml
  13. extension-configs:
  14. - data-id: lead-redis.yaml
  15. group: DEFAULT_GROUP
  16. refresh: true

 nacos配置

  1. spring:
  2. kafka:
  3. bootstrap-servers: 192.168.74.128:9092
  4. producer:
  5. retries: 10
  6. key-serializer: org.apache.kafka.common.serialization.StringSerializer
  7. value-serializer: org.apache.kafka.common.serialization.StringSerializer
  8. datasource:
  9. driver-class-name: com.mysql.jdbc.Driver
  10. url: jdbc:mysql://localhost:3306/leadnews_wemedia?useSSL=false&useUnicode=true&characterEncoding=utf8
  11. username: root
  12. password: root
  13. # 设置Mapper接口所对应的XML文件位置,如果你在Mapper接口中有自定义方法,需要进行该配置
  14. mybatis-plus:
  15. mapper-locations: classpath*:mapper/*.xml
  16. # 设置别名包扫描路径,通过该属性可以给包中的类注册别名
  17. type-aliases-package: com.heima.model.user.pojos
  18. minio:
  19. accessKey: minio
  20. secretKey: minio123
  21. bucket: leadnews
  22. endpoint: http://192.168.74.128:9000
  23. readPath: http://192.168.74.128:9000

在nacos配置中,可以配置这个服务需要的一些配置放在nacos配置中心中。

nacos中的配置共享

nacos配置

 wmedia模块中yml的配置

  1. server:
  2. port: 51803
  3. spring:
  4. application:
  5. name: leadnews-wemedia
  6. cloud:
  7. nacos:
  8. discovery:
  9. server-addr: 192.168.74.128:8848
  10. config:
  11. server-addr: 192.168.74.128:8848
  12. file-extension: yml
  13. extension-configs:
  14. - data-id: lead-redis.yaml
  15. group: DEFAULT_GROUP
  16. refresh: true

分析

这段配置看起来是用于配置某个应用的配置中心的动态配置刷新(Dynamic Configuration Refresh)的一部分。这是典型的 Spring Cloud Config 的配置。

  • extension-configs: 这是一个配置项的列表,用于指定要加载的外部配置文件。

    • - data-id: lead-redis.yaml: 这里指定了一个配置文件的数据 ID,通常对应于配置中心中的一个配置文件。在这个例子中,是 lead-redis.yaml

    • group: DEFAULT_GROUP: 这可能是一个配置文件所属的分组,这样可以更好地组织和管理不同配置文件。

    • refresh: true: 这个标志表示配置文件是否支持动态刷新。当配置中心的配置发生变化时,带有这个标志的配置文件可以被动态地刷新,应用程序不需要重新启动即可应用新的配置。

总的来说,这段配置指定了一个或多个外部的配置文件,其中至少有一个支持动态刷新。这是一种在微服务架构中实现配置热加载的常见做法,允许你在不重启应用的情况下更新配置。

nacos集群

参考:19-Nacos-服务实例的权重设置_哔哩哔哩_bilibili

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号