目录
拉取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-gatewaycloud:nacos:discovery:server-addr: 192.168.74.128:8848config:server-addr: 192.168.74.128:8848file-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- DELETEroutes:# 平台管理- id: wemediauri: lb://leadnews-wemediapredicates:- 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);}@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}
yml配置
server:port: 51803
spring:application:name: leadnews-wemediacloud:nacos:discovery:server-addr: 192.168.74.128:8848config:server-addr: 192.168.74.128:8848file-extension: ymlextension-configs:- data-id: lead-redis.yamlgroup: DEFAULT_GROUPrefresh: true
nacos配置
spring:kafka:bootstrap-servers: 192.168.74.128:9092producer:retries: 10key-serializer: org.apache.kafka.common.serialization.StringSerializervalue-serializer: org.apache.kafka.common.serialization.StringSerializerdatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/leadnews_wemedia?useSSL=false&useUnicode=true&characterEncoding=utf8username: rootpassword: root
# 设置Mapper接口所对应的XML文件位置,如果你在Mapper接口中有自定义方法,需要进行该配置
mybatis-plus:mapper-locations: classpath*:mapper/*.xml# 设置别名包扫描路径,通过该属性可以给包中的类注册别名type-aliases-package: com.heima.model.user.pojosminio:accessKey: miniosecretKey: minio123bucket: leadnewsendpoint: http://192.168.74.128:9000readPath: http://192.168.74.128:9000
在nacos配置中,可以配置这个服务需要的一些配置放在nacos配置中心中。
nacos中的配置共享
nacos配置
wmedia模块中yml的配置
server:port: 51803
spring:application:name: leadnews-wemediacloud:nacos:discovery:server-addr: 192.168.74.128:8848config:server-addr: 192.168.74.128:8848file-extension: ymlextension-configs:- data-id: lead-redis.yamlgroup: DEFAULT_GROUPrefresh: 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