赞
踩
目录
参考:https://blog.csdn.net/qq_14996421/article/details/124284209
参考网址:https://zhuanlan.zhihu.com/p/626959761
- 拉取镜像 :docker pull nacos/nacos-server:v2.1.1
-
- 创建容器 :
- 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
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-gateway</artifactId>
- </dependency>
- <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>
- package com.heima.wemedia.gateway;
-
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-
-
- @SpringBootApplication
- @EnableDiscoveryClient
- public class WemediaGatewayAplication {
-
- public static void main(String[] args) {
- SpringApplication.run(WemediaGatewayAplication.class,args);
- }
- }
分析:
@EnableDiscoveryClient
是 Spring Cloud 中的一个注解,用于启用服务发现功能。服务发现是分布式系统中的一项关键功能,它允许服务实例能够注册自己并被其他服务发现。
- server:
- port: 51602
- spring:
- application:
- name: leadnews-wemedia-gateway
- cloud:
- nacos:
- discovery:
- server-addr: 192.168.74.128:8848
- config:
- server-addr: 192.168.74.128:8848
- 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 用来存储应用配置的地方。
- spring:
- cloud:
- gateway:
- globalcors:
- cors-configurations:
- '[/**]': # 匹配所有请求
- allowedOrigins: "*" #跨域处理 允许所有的域
- allowedMethods: # 支持的方法
- - GET
- - POST
- - PUT
- - DELETE
- routes:
- # 平台管理
- - id: wemedia
- uri: lb://leadnews-wemedia
- predicates:
- - Path=/wemedia/**
- filters:
- - StripPrefix= 1
分析:
globalcors.cors-configurations['[/**]']
定义了一条全局 CORS 规则,其中的 '[[//]]' 表示匹配所有请求。这条规则允许任何来源的请求(allowedOrigins 设置为 '*')并且支持四种 HTTP 方法(GET, POST, PUT 和 DELETE)。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" 这个服务集群,并在转发之前删除掉请求路径的第一个前缀。
- <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>
- package com.heima.wemedia;
-
- import com.baomidou.mybatisplus.annotation.DbType;
- import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
- import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
- import org.mybatis.spring.annotation.MapperScan;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
- import org.springframework.cloud.openfeign.EnableFeignClients;
- import org.springframework.context.annotation.Bean;
- import org.springframework.scheduling.annotation.EnableScheduling;
-
- @SpringBootApplication
- @EnableDiscoveryClient
- @MapperScan("com.heima.wemedia.mapper")
- @EnableFeignClients(basePackages = "com.heima.apis")
- public class WemediaApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(WemediaApplication.class,args);
- }
-
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor() {
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
- return interceptor;
- }
- }
- server:
- port: 51803
- spring:
- application:
- name: leadnews-wemedia
- cloud:
- nacos:
- discovery:
- server-addr: 192.168.74.128:8848
- config:
- server-addr: 192.168.74.128:8848
- file-extension: yml
- extension-configs:
- - data-id: lead-redis.yaml
- group: DEFAULT_GROUP
- refresh: true
- spring:
- kafka:
- bootstrap-servers: 192.168.74.128:9092
- producer:
- retries: 10
- key-serializer: org.apache.kafka.common.serialization.StringSerializer
- value-serializer: org.apache.kafka.common.serialization.StringSerializer
- datasource:
- driver-class-name: com.mysql.jdbc.Driver
- url: jdbc:mysql://localhost:3306/leadnews_wemedia?useSSL=false&useUnicode=true&characterEncoding=utf8
- username: root
- password: root
- # 设置Mapper接口所对应的XML文件位置,如果你在Mapper接口中有自定义方法,需要进行该配置
- mybatis-plus:
- mapper-locations: classpath*:mapper/*.xml
- # 设置别名包扫描路径,通过该属性可以给包中的类注册别名
- type-aliases-package: com.heima.model.user.pojos
- minio:
- accessKey: minio
- secretKey: minio123
- bucket: leadnews
- endpoint: http://192.168.74.128:9000
- readPath: http://192.168.74.128:9000
在nacos配置中,可以配置这个服务需要的一些配置放在nacos配置中心中。
- server:
- port: 51803
- spring:
- application:
- name: leadnews-wemedia
- cloud:
- nacos:
- discovery:
- server-addr: 192.168.74.128:8848
- config:
- server-addr: 192.168.74.128:8848
- file-extension: yml
- extension-configs:
- - data-id: lead-redis.yaml
- group: DEFAULT_GROUP
- refresh: true
分析
这段配置看起来是用于配置某个应用的配置中心的动态配置刷新(Dynamic Configuration Refresh)的一部分。这是典型的 Spring Cloud Config 的配置。
extension-configs
: 这是一个配置项的列表,用于指定要加载的外部配置文件。
- data-id: lead-redis.yaml
: 这里指定了一个配置文件的数据 ID,通常对应于配置中心中的一个配置文件。在这个例子中,是 lead-redis.yaml
。
group: DEFAULT_GROUP
: 这可能是一个配置文件所属的分组,这样可以更好地组织和管理不同配置文件。
refresh: true
: 这个标志表示配置文件是否支持动态刷新。当配置中心的配置发生变化时,带有这个标志的配置文件可以被动态地刷新,应用程序不需要重新启动即可应用新的配置。
总的来说,这段配置指定了一个或多个外部的配置文件,其中至少有一个支持动态刷新。这是一种在微服务架构中实现配置热加载的常见做法,允许你在不重启应用的情况下更新配置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。