Skip to content

Latest commit

 

History

History
295 lines (231 loc) · 11.5 KB

分布式文件系统使用说明.md

File metadata and controls

295 lines (231 loc) · 11.5 KB

分布式文件系统使用说明

##1、 搭建服务节点群

1.参照多节点组网章节,进行多节点组网,并部署系统合约;系统合约部署成功以后将输出系统代理合约(SystemProxy)、FileInfoManager和FileServerManager三个合约地址, 示例输出如下:

系统合约部署

2.配置config.json文件中的dfsGroup,dfsNode,dfsStorage三个参数,并更新systemproxyaddress参数为上一步得到的系统代理合约地址,具体参数定义请参看参数配置文件章节;在群组和节点的关系定义上,通常一个节点只允许加入一个群组,多个节点如果配置一样的群组ID,节点启动以后将加入到同一个群组当中,反之亦然。

3.重启群组所有节点即可用启动DFS服务。DFS服务启动后,即可以通过JAVA SDK提供的方法进行文件存取操作。

##2、使用说明 JAVA SDK提供的接口功能包括文件上传,文件删除,文件下载,查询文件服务节点,添加服务节点,删除服务节点等。所提供接口为异步回调节接口,用户需要自定义回调监听处理类。SDK的核心类为DfsEngine,位于仓库的tool/java目录,为eclipse工程,依赖于同级目录的web3j项目。

###2.1接口说明

(1). 初始化服务
  • 接口名称:init
  • 接口功能说明:初始化服务
  • 参数说明
输入参数 参数类型 参数说明
host String 主机地址
port int JSONRPC端口
listener IJuListener 监听回调接口
walletPasswd String 加密口令
walletFile String 钱包文件
fileContract String 文件合约地址
serverContract String 文件服务合约地址
输出参数 参数说明 参数说明
返回值 int 0 :成功 其他:失败
(2). 添加服务节点(所有启动的节点都需要添加)
  • 接口名称:addServer
  • 接口功能说明:添加服务节点
  • 参数说明
输入参数 参数类型 参数说明
newServer FileServer 分布式文件服务节点
输出参数 参数类型 参数说明
返回值 int 0 :成功 其他:失败
  • 接口名称:addServerCallback
  • 接口功能说明:添加文件服务节点对应回调接口(即注册监听器回调函数)
  • 参数说明
输入参数 参数类型 参数说明
server FileInfo 文件信息
ret int 返回值
输出参数 参数类型 参数说明
NA NA NA
(3). 文件类操作类接口
a. 上传文件
  • 接口名称:uploadFile
  • 接口功能说明:上传文件
  • 参数说明
输入参数 参数类型 参数说明
fileInfo FileInfo 文件信息
file String 文件路径
输出参数 参数类型 参数说明
返回值 int 0 :成功 其他:失败
  • 接口名称:uploadFileCallback
  • 接口功能说明:上传文件对应回调接口(即注册监听器回调函数)
  • 参数说明
输入参数 参数类型 参数说明
fileInfo FileInfo 文件信息
ret int 返回值
输出参数 参数类型 参数说明
NA NA NA
b. 下载文件
  • 接口名称:downloadFile
  • 接口功能说明:下载文件
  • 参数说明
输入参数 参数类型 参数说明
fileServer FileServer 文件服务节点信息
fileid String 文件ID
store_path String 文件存储完整路径
ret int 返回值
输出参数 参数类型 参数说明
NA NA NA
  • 接口名称:downloadFileCallback
  • 接口功能说明:下载文件对应回调接口(即注册监听器回调函数)
  • 参数说明
输入参数 参数类型 参数说明
fileInfo FileInfo 文件信息
ret int 返回值
输出参数 参数类型 参数说明
NA NA NA
c. 删除文件
  • 接口名称:deleteFile
  • 接口功能说明:删除文件
  • 参数说明
输入参数 参数类型 参数说明
fileServer FileServer 文件服务节点信息
fileid String 文件ID
输出参数 参数类型 参数说明
返回值 int 0 :成功 其他:失败
  • 接口名称:deleteFileCallback
  • 接口功能说明:删除文件对应回调接口(即注册监听器回调函数)
  • 参数说明
输入参数 参数类型 参数说明
fileInfo FileInfo 文件信息
ret int 返回值
输出参数 参数类型 参数说明
NA NA NA
(4). 文件服务器信息节点操作类接口
a. 添加文件服务器节点
  • 接口名称:addServer
  • 接口功能说明:添加文件服务器节点
  • 参数说明
输入参数 参数类型 参数说明
fileServer FileServer 文件服务节点信息
输出参数 参数类型 参数说明
返回值 int 0 :成功 其他:失败
  • 接口名称:addServerCallback
  • 接口功能说明:添加文件服务器节点对应回调接口(即注册监听器回调函数)
  • 参数说明
输入参数 参数类型 参数说明
server FileInfo 文件信息
ret int 返回值
输出参数 参数类型 参数说明
NA NA NA
b. 删除文件服务器节点
  • 接口名称:deleteServer
  • 接口功能说明:删除文件服务器节点
  • 参数说明
输入参数 参数类型 参数说明
serverid String 文件服务节点ID
输出参数 参数类型 参数说明
返回值 int 0 :成功 其他:失败
  • 接口名称:deleteServerCallback
  • 接口功能说明:删除文件服务器节点对应回调接口(即注册监听器回调函数)
  • 参数说明
输入参数 参数类型 参数说明
server FileServer 文件服务节点信息
ret int 返回值
输出参数 参数类型 参数说明
NA NA NA
c. 查询文件服务器节点列表
  • 接口名称:listServers
  • 接口功能说明:获取文件服务节点列表
  • 参数说明
输入参数 参数类型 参数说明
NA NA NA
输出参数 参数类型 参数说明
返回值 int 0 :成功 其他:失败
  • 接口名称:listServersCallback
  • 接口功能说明:获取文件服务节点列表对应回调接口(即注册监听器回调函数)
  • 参数说明
输入参数 参数类型 参数说明
fileservers Vector 文件服务节点信息
ret int 返回值
输出参数 参数类型 参数说明
NA NA NA
d. 按组查询文件服务器节点信息列表
  • 接口名称:listFilesByGroup
  • 接口功能说明:按节点群组列举出所有文件信息
  • 参数说明
输入参数 参数类型 参数说明
group String 服务节点群ID
输出参数 参数类型 参数说明
返回值 int 0 :成功 其他:失败
  • 接口名称:listServersByGroupCallback
  • 接口功能说明:按节点群组列举出所有文件信息对应回调接口(即注册监听器回调函数)
  • 参数说明
输入参数 参数类型 参数说明
fileservers Vector 文件信息列表
ret int 返回值
输出参数 参数类型 参数说明
NA NA NA
e. 操作异常或错误下的回调接口
  • 接口名称:errorCallback
  • 接口功能说明:按节点群组列举出所有文件信息
  • 参数说明
输入参数 参数类型 参数说明
code int 错误码
error String 错误信息
输出参数 参数类型 参数说明
NA NA NA

###2.2使用举例 下面是一个完整展示如何使用分布式文件存储和访问功能的实例。示例代码可以参看源码工程,源代码具体位置为com.sample包的HelloDfs类。

1.定义回调监听类

public class HelloListener implements IDfsListener{
//回调接口实现
...
...
}

2.初始化SDK

String walletPassword = "1111";//钱包口令
String keyPath = "E:\\keys\\2429feaf-0e46-ddd5-5b72-0594e0a4ab00.json";//钱包文件
String fileContract = "0x9e86c1b4c4d82607298faac27da7d78364434c58";//文件信息合约地址
String fileServerContract = "0x0d76426479e438fe0d261dbb165cd3adcc4a1dd7";//文件服务合约地址
Strign host = "192.168.1.232";//服务节点主机
int port = 8545;//JSONRPC端口
init(host, port, TestListener, walletPassword, keyPath, fileContract, fileServerContract);//初始化

3.添加文件服务节点

FileServer fileServer = new FileServer();
fileServer.setGroup("group1");
fileServer.setId("0c1585a170e75c14564427f2faa8d74850c65765a10ce9aa4fcc55c7cdd60ab7768dd7fa066145d0ebada2214705fca7f464186e61ea163a18e6ebb9c99c7627");
fileServer.setHost("192.168.1.232");
fileServer.setPort(8545);
fileServer.setInfo("the master node");
fileServer.setOrganization("weiwan");
fileServer.setEnable(1);
Calendar calendar = Calendar.getInstance();
fileServer.setUpdateTime((int)calendar.getTime().getTime()/1000);   
addServer(fileServer);//添加文件服务节点,等待回调add_server_back成功

4.上传文件

FileInfo fileInfo = new FileInfo();
fileInfo.setOwner("weiwan");
fileInfo.setPriviliges("rwx");
String file = "E:"+ File.separatorChar + "test.txt";
uploadFile(fileInfo, file);//上传文件,等待回调upload_file_back
//...回调成功
//回调返回文件ID,可以使用文件ID下载和操作文件
//另外在配置文件目录,可以查看文件