object storage system

reghao eaea7e13a2 update oss-media FileMetaTest il y a 5 mois
oss-api e0e07d0615 oss-api 的 StoreService 中添加一个根据 objectUrl 获取 signedUrl 的方法 il y a 6 mois
oss-media eaea7e13a2 update oss-media FileMetaTest il y a 5 mois
oss-sdk 440e3a6aa8 oss-sdk 的 OssConsoleClient 中将 URL 前缀 /bg/api/oss 修改为 /api/oss/sdk il y a 5 mois
oss-store 4a6578a9f0 oss-store 的 OssProperties 添加一个 consolePort 字段用于指定 oss-console 的 rpc 端口 il y a 5 mois
zzz 299e599cef update zzz/install_sdk.sh il y a 7 mois
.gitignore 00e29c059b 更新日志配置 il y a 2 ans
README.md cc93447e17 更新 README.md il y a 1 an
pom.xml a3a74c61c5 添加一个 oss-media 模块, 用于处理 oss 中存储文件的信息 il y a 1 an

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 项目实现

console 和 store

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

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

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

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

只能部署一个 console 实例

构建部署

pull 项目源码

cd ~/Downloads
git clone https://git.reghao.cn/reghao/oss.git

初始化 MySQL

cd ~/Downloads/oss/zzz
bash db_init.sh

执行 db_init.sh 会自动创建 oss 项目需要的数据库并初始化数据库表

需要自行指定 db_init.sh 脚本中的 host, username, password 等变量值

构建并运行

cd ~/Downloads/oss/zzz
bash build_jar.sh

执行 db_init.sh 会自动构建并运行 oss-store 应用 jar 包

build_jar.sh 脚本中的 proj_dir 变量默认是 ~/Downloads/oss

mvn 构建默认使用 dev 环境, 所以需要修改 oss-store 应用 resources/application-dev.yml 配置文件中的第三方服务配置

运行 oss-store 应用前需要根据环境修改 oss/oss-store/bin/oss.yml 文件中的配置

mysql 配置

server.tomcat.basedir

tomcat 服务器使用的临时目录, 不应将此目录设置到文件存储所在的磁盘

oss.storeHost

oss-store 所部署机器的 IP 地址

oss.storeDirs

存储文件使用的位置, 每个位置都必须是一块独立的磁盘, 推荐将单块磁盘挂载到此位置

oss.consoleHost

bnt 所部署机器的 IP 地址

默认执行 oss/oss-store/bin 目录中的 start.sh 脚本, 此时使用 oss.yml 配置文件

如果要使用 resources/application-dev.yml 配置文件, 则执行 start1.sh 脚本

停止应用

cd ~/Downloads/oss/oss-store/bin
bash shutdown.sh

执行 db_init.sh 会结束 oss-store 应用

其他依赖

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

oss-console 即 bnt 项目