学成在线-媒资管理1

一、nacos网关搭建

1.架构

项目采用Spring Cloud Gateway作为网关,网关在请求路由时需要知道每个微服务实例的地址,项目使用Nacos作用服务发现中心和配置中心,整体的架构图如下:

image

流程如下:

1、微服务启动,将自己注册到Nacos,Nacos记录了各微服务实例的地址

2、网关从Nacos读取服务列表,包括服务名称、服务地址等

3、请求到达网关,网关将请求路由到具体的微服务

要使用网关首先搭建Nacos,Nacos有两个作用:

1、服务发现中心

微服务将自身注册至Nacos,网关从Nacos获取微服务列表

2、配置中心

微服务众多,它们的配置信息也非常复杂,为了提供系统的可维护性,微服务的配置信息统一在Nacos配置

2.依赖

1
2
3
4
5
6
7
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>

上传

1
2
3
4
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

下载

1
2
3
4
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

3.配置文件

配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

#微服务配置
spring:
application:
name: content-api
cloud:
nacos:
server-addr: 192.168.101.65:8848
discovery:
namespace: dev
group: xuecheng-plus-project
config:
namespace: dev
group: xuecheng-plus-project
file-extension: yaml
refresh-enabled: true

//拓展配置
extension-configs:
- data-id: content-service-${spring.profiles.active}.yaml
group: xuecheng-plus-project
refresh: true
profiles:
active: dev

公共配置文件

1
2
3
4
5
6
7
shared-configs:
- data-id: swagger-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
- data-id: logging-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true

4.nacos详解

image-20260311184326991

高端

image-20260311184531586

5.网关搭建

Spring Cloud Gateway作为网关

Spring Cloud Gateway详解

image-20260311185810214

组件

image-20260311190011085

作用

image-20260311190032877

二、分布式文件系统

本项目采用MinIO构建分布式文件系统,MinIO 是一个非常轻量的服务,可以很简单的和其他应用的结合使用,它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。

它一大特点就是轻量,使用简单,功能强大,支持各种平台,单个文件最大5TB,兼容 Amazon S3接口,提供了 Java、Python、GO等多版本SDK支持。

官网:https://min.io

中文:https://www.minio.org.cn/,http://docs.minio.org.cn/docs/

MinIO集群采用去中心化共享架构,每个结点是对等关系,通过Nginx可对MinIO进行负载均衡访问

1.核心特点

image-20260311191224100

2.纠删码技术

image-20260311191250389

3.SDK使用

1
https://docs.min.io/docs/java-client-quickstart-guide.html

引入依赖

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.3</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.8.1</version>
</dependency>

创建上传代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//创建minio客户端
MinioClient minioClient =
MinioClient.builder()
.endpoint("http://192.168.101.65/.io")
.credentials("minioadmin", "minioadmin")
.build();

//执行上传方法
@Test
public void test_upload() throws IOException, ServerException, InsufficientDataException, ErrorResponseException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {

//参数信息
UploadObjectArgs testbucket = UploadObjectArgs.builder()
.bucket("testbucket")
.object("001/test001.png")//添加子目录
.filename("D:\\图片\\background\\2026021019076.png")
.build();

//上传文件
minioClient.uploadObject(testbucket);
}

4.校验完整性

image-20260311200253139