目录
拉取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
拉取镜像 :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
环境配置
网关搭建架构
wemedia-gateway网关配置
依赖
<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 中的一个注解,用于启用服务发现功能。服务发现是分布式系统中的一项关键功能,它允许服务实例能够注册自己并被其他服务发现。
网关yml配置
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 用来存储应用配置的地方。
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" 这个服务集群,并在转发之前删除掉请求路径的第一个前缀。
wdmedia服务配置
依赖
<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;
}
}
yml配置
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
nacos配置
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配置中心中。
nacos中的配置共享
nacos配置
wmedia模块中yml的配置
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
: 这个标志表示配置文件是否支持动态刷新。当配置中心的配置发生变化时,带有这个标志的配置文件可以被动态地刷新,应用程序不需要重新启动即可应用新的配置。
-
总的来说,这段配置指定了一个或多个外部的配置文件,其中至少有一个支持动态刷新。这是一种在微服务架构中实现配置热加载的常见做法,允许你在不重启应用的情况下更新配置。