Browse Source

完善README

gitlink
Sydonian 1 year ago
parent
commit
f7d0bfe9bb
6 changed files with 85 additions and 6 deletions
  1. +27
    -1
      README.md
  2. +9
    -1
      agent/README.md
  3. +17
    -1
      client/README.md
  4. +20
    -1
      common/README.md
  5. +5
    -1
      coordinator/README.md
  6. +7
    -1
      scanner/README.md

+ 27
- 1
README.md View File

@@ -1,2 +1,28 @@
# storage
# 跨中心存储系统


## 目录结构
此仓库是一个go module,但包含了多个服务的源码,你可以在每个服务的目录中找到main.go。可以通过编译脚本的参数来指定生成哪一个服务。

- `agent`:Agent服务的源码。
- `client`:Client服务的源码。
- `common`:存放在几个服务之间共享的代码以及一些数据结构定义。
- `coordinator`:Coordinator服务的源码。
- `scanner`:Scanner服务的源码。

同时还有以下两个与编译相关的目录:
- `build`:服务编译后的输出目录,只会在编译后生成。
- `magefiles`:mage工具使用的编译脚本。

## 编译
运行编译脚本需要使用mage工具,此处是[仓库链接](https://github.com/magefile/mage)。

安装好mage工具之后,进入到仓库根目录,使用`mage agent`即可编译Agent服务。与此相同的还有`mage client`、`mage coodinator`、`mage scanner`。可以同时指定多个参数来编译多个服务,如果要一次性编译所有服务,可以使用`mage bin`。

使用`mage confs`命令可以将`common/assets/confs`的配置文件拷贝到输出目录,使用`mage scripts`将`scripts`目录里的脚本拷贝到输出目录。

使用`mage all`可以一次性完成编译、拷贝工作。

可以通过增加额外的参数来指定编译目标平台,比如`mage win amd64 agent`。支持的操作系统参数有`win`、`linux`,支持的CPU架构参数有`amd64`、`arm64`。这些参数同样可以和`bin`、`all`参数一起使用。

注意:编译目标平台参数必须在编译二进制参数之前。

+ 9
- 1
agent/README.md View File

@@ -1,2 +1,10 @@
# storage-agent
# Agent服务

## 目录结构
- `internal`:服务源码。
- `config`:服务使用的配置文件结构定义。
- `grpc`:通过grpc对外提供的接口。实现了.proto文件里定义的接口,这个文件位于`common\pkgs\grpc\agent\agent.proto`。
- `mq`:通过rabbitmq对外提供的接口。实现了`common\pkgs\mq\agent`目录里文件定义的接口。
- `task`:需要在后台异步运行的任务。


+ 17
- 1
client/README.md View File

@@ -1,2 +1,18 @@
# storage-client
# Client服务

## 目录结构
- `internal`:服务源码。
- `cmdline`:此服务提供的命令行功能。
- `config`:服务使用的配置文件结构定义。
- `http`:此服务提供的http接口。
- `services`:服务的功能,被cmdline和http调用。
- `task`:需要在后台异步运行的任务。

## 命令行
Client程序可以作为一个命令行程序使用,能在`internal/cmdline`中找到它提供的所有命令。

使用时按照`./client <命令前缀1> <命令前缀2>... <命令函数参数1> <命令函数参数2>...`的方式编写命令。命令前缀在每个文件的init函数中能找到。

以列出某个Bucket下所有Package的命令PackageListBucketPackages为例,它的命令前缀是`pkg ls`,它的函数签名是`PackageListBucketPackages(ctx CommandContext, bucketID cdssdk.BucketID)`,忽略掉会自动填写的ctx参数,需要通过命令行提供的就是bucketID参数,假设为5,因此调用它的命令是:`./client pkg ls 5`。

可以通过使用`serve http`命令将Client程序作为一个http服务启动,并保持运行。

+ 20
- 1
common/README.md View File

@@ -1,2 +1,21 @@
# storage-common
# 公共库
这个目录存放的是在storage仓库的几个程序之间共享的代码和数据结构定义。

## 目录结构
- `assets`:存放程序会读取使用的配置文件等。会在编译时一并复制到输出目录。
- `confs`:服务的配置文件。
- `scripts`:脚本文件。
- `consts`:常量定义。
- `globals`:全局变量定义,主要是各种客户端的Pool。
- `magefiles`:mage工具的脚本。
- `models`:公共数据结构定义。
- `pkgs`:一些相对独立的功能模块。
- `cmd`:公用的业务逻辑,比如上传Package和下载Package。
- `db`:数据库的数据结构和操作函数。
- `distlock`:分布式锁服务,核心机制使用的是`common/pkgs/distlock`,增加了根据存储系统的业务需求设计的锁。
- `ec`:纠删码的库。
- `grpc`:存放proto文件,以及使用protogen工具生成的代码文件。
- `ioswitch`:IOSwitch模块。
- `iterator`:迭代器。
- `mq`:各个服务的rabbitmq接口的声明。
- `utils`:一些暂时没有归类的工具函数。

+ 5
- 1
coordinator/README.md View File

@@ -1,2 +1,6 @@
# storage-coordinator
# Coordinator服务

## 目录结构
- `internal`:服务源码。
- `config`:服务使用的配置文件结构定义。
- `mq`:通过rabbitmq对外提供的接口。实现了`common\pkgs\mq\coodinator`目录里文件定义的接口。

+ 7
- 1
scanner/README.md View File

@@ -1,2 +1,8 @@
# storage-scanner
# Scanner服务

## 目录结构
- `internal`:服务源码。
- `config`:服务使用的配置文件结构定义。
- `event`:被投递到队列顺序执行的事件。
- `mq`:通过rabbitmq对外提供的接口。实现了`common\pkgs\mq\scanner`目录里文件定义的接口。
- `tickevent`:定时执行的事件。

Loading…
Cancel
Save