object storage system

reghao 9fb2b3e8dc FileMetaMapper 添加 updateSetDelete 方法 1 ano atrás
oss-api 9fb2b3e8dc FileMetaMapper 添加 updateSetDelete 方法 1 ano atrás
oss-media 99715eaffb 调整磁盘数据模型和相应接口 1 ano atrás
oss-sdk c5c920b92b OssConsoleClient 中的 /api/admin/oss 修改为 /api/oss 1 ano atrás
oss-store 9fb2b3e8dc FileMetaMapper 添加 updateSetDelete 方法 1 ano atrás
zzz af928360e0 update init_schema.sh 1 ano atrás
.gitignore 00e29c059b 更新日志配置 2 anos atrás
README.md 99715eaffb 调整磁盘数据模型和相应接口 1 ano atrás
pom.xml a3a74c61c5 添加一个 oss-media 模块, 用于处理 oss 中存储文件的信息 1 ano atrás

README.md

oss

一个文件存储系统, 提供文件的存储, 访问和删除等服务, 不支持文件修改.

依赖

  • os:Linux
  • jdk:11
  • maven:3.9
  • mysql:5.7

架构

oss 项目模块:

  • oss-api
  • oss-sdk > 可看作 oss 的 client, 第三方使用引入此包可对 oss 中的数据进行操作 > > 和 aliyun-oss-java-sdk 类似
  • oss-store > 监听 4010 HTTP 端口和 14010 RPC 端口 > > 存储节点
  • oss-console > 监听 4030 HTTP 端口和 14030 RPC 端口 > > 管理存储节点 > > 本模块由 bnt 项目实现

oss-console 和 oss-store 之间的关系如下图所示:

store 和 console 之间使用 dubbo rpc 进行通信

每台作为存储节点的机器上都需要且只能一个部署 store 实例

在 store 的配置文件中指定 mgr 的地址

只能部署一个 console 实例

初始化 MySQL

  • 1.oss/zzz/oss_init.sql 文件是系统的初始数据
  • 2.执行 oss/zzz/init_schema.sh 脚本可完成数据库的创建和初始化 > 需要自行指定脚本中的 host, username, password, db 等变量值
  • 3.然后可以开始构建和部署系统

构建

根据需要构建的类型使用 wget 获取构建脚本:

# 构建 jar 包使用此脚本
wget https://git.reghao.cn/reghao/oss/raw/master/zzz/build_jar.sh

# 构建 docker 镜像使用此脚本
wget https://git.reghao.cn/reghao/oss/raw/master/zzz/build_image.sh
  • 1.修改构建脚本中的 base_dir 变量的值
  • 2.执行构建脚本
  • 3.构建完成 > 如果使用 build_jar.sh 脚本构建, 生成的 jar 包会存放在 oss/oss-store/bin 目录中 > > 如果使用 build_image.sh 脚本构建, 生成的镜像则使用 docker images | grep 'oss-store' 命令查看

部署

oss-store 应用强依赖 oss-console, 必须先启动 oss-console 后再启动 oss-store

jar 包

部署 oss-store 流程:

  • 1.修改 oss/oss-store/bin/oss.yml 文件中的配置 > mysql 配置 > > server.tomcat.basedir > > tomcat 服务器使用的临时目录, 不应将此目录设置到文件存储所在的磁盘 > > oss.storeHost > > oss-store 所部署机器的 IP 地址 > > oss.storeDirs > > 存储文件使用的位置, 每个位置都必须是一块独立的磁盘, 推荐将单块磁盘挂载到此位置 > > > > oss.consoleHost > > oss-console 所部署机器的 IP 地址 >
  • 2.使用 cd 命令切换到 oss/oss-store/bin 目录
  • 3.执行 start1.sh 脚本 > 如果不使用 oss.yml 配置, 则执行 start2.sh 脚本

docker 镜像

docker run -d --name=bntweb --network=host \
-v /opt/disk/1:/opt/disk/1 \
reghao/oss-store:12345678

自行指定生成的 image

image 格式是 REPOSITORY:TAG

使用 -v 将 host 目录挂载到容器目录

docker 镜像使用 resources/application-test.yml 配置