




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
详细设计说明书详细设计说明书 2 目录目录 1 简介简介 1 1 1 编写目的 1 1 2 软件名称 1 1 3 术语和缩略词 1 1 4 参考资料 1 2 详细设计模板详细设计模板 2 2 1 文件 包设计 我整理 MDS CORE TRASH模块的 其他的都比较少 具体要整理的内容参照代码 没有 的添加上去 由 XX 整理 整理完成后把这个留言删掉 2 2 2 主要模块类图 6 2 2 1 MDS模块类图 6 2 2 2 OSD模块类图 11 2 2 3 客户端模块类图 14 2 3 相关时序图 流程图 15 2 3 1 Namespace 15 2 3 2 FSClient 23 2 3 3通信模块 29 2 3 4 副本模块 34 2 4 类 接口设计 35 1 1 简介简介 1 1 编写目的编写目的 本文档系统地描述了存储服务器 v2 0 的详细设计 主要阅读对象为系统实现者 以及后期上层应用 的开发者 本文档的目的在于从详细设计的角度使系统开发人员和测试人员明确功能范围 可以有针对性的进行 系统开发 测试 验收等各方面工作 1 2 软件名称软件名称 软件中文名称 存储服务器 v2 0 软件英文名称 JTang Storage Server v2 0 1 3 术语和缩略词术语和缩略词 1 4 参考资料参考资料 2 2 详细设计模板详细设计模板 2 1 文件 包设计文件 包设计 我整理 我整理 MDS core Trash 模块的 其他的都比模块的 其他的都比 较少较少 具体要整理的内容参照代码 没有的添加上去具体要整理的内容参照代码 没有的添加上去 由 由 XX 整理 整理 整理完成后把这个留言删掉 整理完成后把这个留言删掉 系统名称系统名称JTang Storage Server 模块名模块名元数据管理模块 客户端模块 通信模块元数据管理模块 客户端模块 通信模块 各子模块名称各子模块名称 Package 名名 jtang fs JTang Storage Server Package 组成组成 类名类名功能功能 MDS元数据服务器 C S 通信模式 server 端 MDS Call基本通信请求类 MDS Connection基本连接类 封装唯一 socket 的输入输出流 维护 Call 队列 MDS Handler基本请求处理类 循环处理 Call 队列中的挂 起请求 mds MDSLauncher元数据服务器启动 关闭控制 类名类名功能功能 MetaData描述了文件的元数据信息 存储了文件的所 有相关信息 IMetaDataManager元数据管理接口类 提供对数据库中存储的 元数据进行各种操作 MetaDataManagerImpl元数据管理接口类 提供对数据库中存储的 元数据进行各种操作 TrashManager将已经删除了的元数据暂时存入 trash 数据表 中 TrashManager 管理这些数据 mds metadata MetaDataRowMapperSpring 框架中 RowMapper 子类 用于一次取 回很多查询结果的对象 3 DBManager数据库管理类 用来初始化数据库 类名类名功能功能 INode缓存中虚拟目录树中的节点 INodeFile继承 INode 缓存中虚拟目录树中的文件节 点 INodeDirectory继承 INode 缓存中虚拟目录树中的目录节 点 可进行获取 添加 移除 INode 等目录 操作 MDSCache缓存管理类 是数据库中元数据的部分映像 Access记录文件的访问信息 AccessInfo管理 Access mds cache Path路径处理工具类 类名类名功能功能 Namespace命名空间管理接口类 负责提供统一命名空 间操作接口 mds namespace NamespaceImpl实现 Namespace 接口 类名类名功能功能mds replication ReplicationManager根据文件的访问信息进行副本生成管理 类名类名功能功能 ClientCreateHandler对创建元数据请求进行处理 创建一个新的 元数据 ClientDeleteHandler对删除元数据请求进行处理 ClientExistsHandler判断该文件元数据是否存在 ClientIsdirHandler判断该元数据是否目录类型 ClientListingHandler对列出文件列表请求进行处理 返回元数据 数组 ClientMkdirHandler创建类型为目录的元数据 ClientOpenHandler对打开元数据请求进行处理 获取需要的元 数据 ClientRenameHandler对元数据进行重命名操作 ClientSizeofpathHandler计算该路径对应的文件夹得所占空间大小 ClientSunoffilesHandler计算文件数 ClientSunofsubdirHandler计算子文件数 MDSListAllNodesHandler获取当前所有有效 OSD 节点信息 MDSUpdateMetaDataHandler更行元数据信息 mds handler OSDCheckReplicationHandlerOSD 端向 MDS 端检查副本状态 类名类名功能功能 Client实现文件系统 client 模型 实现 client 端通信 流程 维护 client 端连接队列 提供实现文 件系统基本功能调用的函数 core ICallClient 端调用接口 4 Server服务器端接口 SpringContextSpring 环境设置于启动 Constants定义传输所用常量 类名类名功能功能 FileInfo文件信息描述类 继承于 Writable 封装元 数据的信息 FileItem文件信息描述类 FSParamC S 模式基本通信参数类 继承于 Writable 传递参数 FSResultC S 模式基本通信参数类 继承于 Writable 返回结果 munication HeartbeatInfo节点间心跳信息类 ConfigurationFile配置文件类 CpuMemInfoCPU 内存信息类 DataNodeManager节点管理类 JFSConfig读取节点管理配置文件类 OSDId对 OSD 的 id 进行管理 core distribution OSDInfoOSD 节点信息类 类名类名功能功能 CallHandlerHandler 处理父类 AbstractCallHandlerCallHandler 的实现 CallHandlerFactory处理 Handler 工厂类 为不同的 op 返回对应 的处理类 DefaultCallHandler对请求类型不明的请求进行处理 返回失败 的信息 GenericCallHandlerFactory元数据处理机制的工厂 core handler HeartBeatHandler针对 HeartBeatInfo 请求的处理类 对获取心 跳信息的请求进行处理 类名类名功能功能 Trash垃圾文件信息 TrashCleaner垃圾文件清理工具类 trash TrashManager垃圾文件管理 类名类名功能功能client FSClient提供客户端 API 接口 如创建目录 删除文 件 上传下载文件等 5 MDSCaller封装 client 接口 提供文件系统基本功能接 口调用 对 MDS 发送文件服务器的操作请 求 FSInputStream封装文件服务器下载文件流 FSOutputStream封装文件服务器上传文件流 Task存储与 OSD 交互的信息 JFSClientJFS 客户端 ID 形式的 API 接口 类名类名功能功能 ArrayWritable封装 socket 操作接口的数组实现类 元素类 型为 Class Writable 或者其子类 BooleanWritable封装 socket 操作接口的布朗实现类 DatagramWritable封装 socket 操作接口的数据传送实现类 DataInputBuffer为 Writable 操作封装 socket 操作 DataOutputBuffer为 Writable 操作封装 socket 操作 IntWritable封装 socket 操作接口的整数实现类 LongWritable封装 socket 操作接口的长整数实现类 NullWritable封装 socket 操作接口的空值 Writable 实现类 TwoDArrayWritable封装 socket 操作接口的二维数组实现类 元 素类型为 Writable 或者其子类 UTF8封装 socket 操作接口的字符串传送实现类 Writable封装 socket 操作接口的 Writable 实现类 派生 一系列 Writbale 子类 WritableComparable为 Writable 类实现定义比较接口 io WritableComparator为 Writable 类实现定义比较方法 类名类名功能功能 OSD数据服务器 C S 通信模式 server 端 OSD Call基本通信请求类 OSD Connection基本连接类 封装唯一 socket 的输入输出流 维护 Call 队列 OSD Handler基本请求处理类 循环处理 Call 队列中的挂 起请求 OSDLauncher对象存储服务器的启动 关闭控制 ReadRequest处理对 OSD 的读请求 osd WriteRequest处理对 OSD 的写请求 osd handlerClientFileSizeHandler获取 OSD 上某文件的大小 6 OSDClearTrashHandler清理 OSD 上的垃圾文件 OSDCopyHandler把 OSD 上的文件数据复制到另外一台 OSD 上 OSDReadHandler读取 OSD 上的文件数据 OSDWriteHandler把文件数据写入到 OSD Locator对象存储生成类osd storage StorageManager对象存储管理类 FileServerException FSInputStreamException FSOutputStreamException MDManagerException MDSCacheException NamespaceException exception StorageException 2 2 主要模块类图主要模块类图 2 2 1 MDS 模块类图模块类图 MDS 模块中主要包括 MDS 服务器类 namespace 包 metadata 包 cache 包 handler 包以及 replication 包 详细类图见下 7 2 2 1 1 MDS 类图类图 MDS模块中 MDS为服务器类 MDS服务器类为主要类 其内部还定义了实现java完成端口模型的Call Connection Listener Handler等类 其中 Listener为端口监听类 其绑定与服务器的某一端口 监 听客户连接 并为每个客户连接封装一个connection为其监听数据 Call类为通信协议中基本传递类 其 封装了客户端到服务器的请求和服务器到客户端的结果 Connection为端口访问类 其封装了对socket端 口的读写方法 数据皆从此端口中读出 Handler为请求处理分配类 其不断的检查请求队列 如果队列 不为空 则弹出优先级最高的请求 由handler检查其操作类型并生成相应的handler处理 8 2 2 1 2 Namespace 包类图包类图 接口类 Namespace 提供给外部操作命名空间的接口 NamespaceImpl 实现了该接口 在 NamespaceImpl 中 主要有两个类级别的属性 MDSCache 以及 IMetaDataManager 其中 MDSCache 主要负 责元数据服务器缓存的操作 它在操作命名空间的过程中逐渐加载数据库中的元数据信息 构建部分虚拟 文件系统目录树 以加速元数据的操作 IMetaDataManager 是接口类 由 MetaDataManagerImpl 类来实现 该类主要对存储在数据库中的元数据进行操作 9 2 2 1 3 Metadata 包类图包类图 该模块中 MetaData是元数据类 IMetaDataManager接口类提供对存储在数据库的元数据进行插入 更新 查找 删除等接口 MetaDataManagerImpl类实现了IMetaDataManager接口 MetaDataRowMapper是 数据库查询 插入等工具类 DBManager是数据库初始化类 10 2 2 1 4 Cache 包类图包类图 接口INode表示虚拟目录系统中的一个节点 INodeFile INodeDirectory分别继承它 其中 前者表 示文件 后者表示目录 类MDSCache将文件系统以虚拟目录树的结构驻于内存中 从而可以向客户提供方 便 快速地元数据操作 其中MDSCache提供的操作主要有 添加文件节点 addINodeFile 添加目录节 点 addINodeDirectory 获得节点 getINode 获得文件节点 getFileINode 获得目录节点 getDirectoryINode 列举目录节点内容 getListing 创建目录 mkdirs 重命名 renameTo Access类纪录文件的访问信息 AccessInfo类对Access类的实例化对象进行管理 例如 添加 addAccess 删除 removeAccess 等 11 2 2 1 5 Replication 包类图包类图 在该包中 ReplicationMangager类实现了根据文件的访问信息从而决定文件的最大副本数功能 该 类的各种属性是可配置的 其主要任务由类MaxReplication实现 MaxReplication类继承了定时器类 TimerTask 将周期性地根据文件的访问信息进行修改文件的最大副本数 2 2 2 OSD 模块类图模块类图 OSD 模块中主要包括 OSD 服务器类 storage 包以及 handler 包详细类图见下 12 2 2 2 1 OSD 类图类图 OSD模块中 OSD为服务器类 其内部还定义了实现java完成端口模型的Call Connection Listener Handler等类 其中 Listener为端口监听类 其绑定与服务器的某一端口 监听客户连接 并为每个客 户连接封装一个connection为其监听数据 Call类为通信协议中基本传递类 其封装了客户端到服务器的 请求和服务器到客户端的结果 Connection为端口访问类 其封装了对socket端口的读写方法 数据皆从 此端口中读出 Handler为请求处理分配类 其不断的检查请求队列 如果队列不为空 则弹出优先级最 高的请求 由handler检查其操作类型并生成相应的handler处理 ReadRequest类定义了由windows客户端 传递的针对文件的读请求类 其中文件路径由uuid表示 读取长度由bufferLength表示 支持文件随即读 13 取 2 2 2 2 storage 包图包图 在storage模块中 Locator类负责对文件对象的封装 对OSD上文件对象的访问都通过该类来实 现 而StorageManager类则是负责管理OSD上所有文件对象的管理类 是外部获取OSD文件对象的入口 14 2 2 3 客户端模块类图客户端模块类图 在客户端模块中 FSClient 负责为外部提供一个客户端操作的 API 接口 它包含一系列的客户端操作 mkdir 创建目录 rename 重命名文件或目录 delete 删除文件或目录 upload 上传文件 以及 download 下载文件 等 而 JFSClient 则是为外部提供 ID 形式的 API 接口 其包含的客户端操作与 FSClient 大同小异 MDSCaller 则具体实现了客户端与 MDS 服务器交互的操作 客户端通过 MDSCalle 来 向 MDS 发送元数据请求 FSInputStream 与 FSOutputStream 分别封装了数据的下载上传流 所有的上传下 载预操作都在这两个类里面完成 而 Task 则是定义了数据传输的具体类型 15 2 3 相关时序图 流程图相关时序图 流程图 2 3 1 Namespace 2 3 1 1 获取节点 获取节点 getINode String path 获取节点的基本过程为 1 根据路径从缓存中获取节点 如果有则直接返回 否则进行下一步 2 根据路径从数据库中加载对应的元数据 MetaData 如果没有则返回空 否则进行下一步 3 将路径 path 所涉及到的尚没有加载到缓存中的每层元数据均加载到缓存中 例如 path 为 a b c 如果 缓存中只有根目录 目标节点为 c 则这一步的目标是把中间涉及到的节点 b 也加入到缓存中 其时序图如下所示 16 其流程图如下 17 18 2 3 1 2 获取子节点 获取子节点 getChildren String path 获取子节点的基本过程为 1 根据路径从缓存中获取目录节点 INodeDirectory 如果节点不会空且该节点预取值 isPrefetched 为 true 则直接从缓存中获取子节点并返回给用户 否则进行下一步 2 调用 getINode 获取该 path 对应的节点 parent 如果为空则返回为空 否则进行下一步 3 根据 parent 的 ID 从数据库中查询该 ID 下的子元数据 并设置 parent 的 isPrefetched 为 true 最火返回 INode 数组 其时序图如下所示 19 其流程图如下 20 2 3 1 3 删除节点 删除节点 delete String path 删除节点的基本过程为 1 调用 getINode 获取 path 对应的节点 node node 为空出错 否则进行下一步 2 从缓存中删除该节点 3 从数据库删除该元数据 4 判断 node 是否为目录 如果是的话则调用递归删除 否则结束 其时序图如下所示 其流程图如下 21 22 2 3 1 4 添加文件 创建目录以及提交到数据库等添加文件 创建目录以及提交到数据库等 添加文件或创建目录的基本过程为 1 调用 getINode 获取 path 对应的节点 node node 不为空出错 否则进行下一步 2 现在缓存中添加该节点 接下来 由 client 传入 set 相关参数赋给该 node 节点 接下来调用提交到数据库方法 commit 2 3 1 5 重命名 重命名 rename String oldname String newname 重命名的节本过程流为 1 先获取 oldname 对应的 inode 并判断其是否为空 若空则抛出异常 否则进行下一步 2 将 newname 路径中的父目录均加载到缓存中 然后获取 newname 对应的 inode 并判断 inode 是否为空 若不为空则抛出异常 否则进行下一步 3 调用 MDSCache 中的 renameTo 将其重命名 最后在数据库更新该元数据信息 其时序图如下 23 2 3 2 FSClient 2 3 2 1 创建目录创建目录 mkdir UTF8 src 客户端创建目录的基本流程如下 1 客户首先调用 FSClient 客户端接口 mkdir 函数 2 FSClient 客户端以 OP CLIENT NMKDIR 以及目录名为请求参数通过 MDSCaller 向 MDS 发送请求 3 由 ClientMkdirHandler 执行处理请求 并由 NamespaceImpl 进行创建目录元数据操作 最后返回操作 结果 其时序图如下 2 3 2 2 列出文件列表列出文件列表 ls UTF8 src 客户端列出文件列表的基本流程如下 1 客户首先调用 FSClient 客户端接口 listing 函数 2 FSClient 客户端以 OP CLIENT LISTING 以及路径名为请求参数通过 MDSCaller 向 MDS 发送请求 3 由 ClientListingHandler 执行处理请求 并由 NamespaceImpl 进行获取元数据操作 最后返回文件 元数据 24 其时序图如下 2 3 2 3 重命名文件重命名文件 目录目录 rename UTF8 src UTF8 dst 客户端重命名的基本流程如下 1 客户首先调用 FSClient 客户端接口 rename 函数 2 FSClient 客户端以 OP CLIENT RENAMETO 以及新旧目录名为请求参数通过 MDSCaller 向 MDS 发送请求 3 由 ClientRenameHandler 执行处理请求 并由 NamespaceImpl 进行重命名操作 最后返回操作结果 其时序图如下 25 2 3 2 4 删除文件删除文件 目录目录 delete UTF8 src 客户端删除文件 目录的基本流程如下 1 客户首先调用 FSClient 客户端接口 delete 函数 2 FSClient 客户端以 OP CLIENT DELETE 以及路径名为请求参数通过 MDSCaller 向 MDS 发送请求 3 由 ClientDeleteHandler 执行处理请求 并由 NamespaceImpl 进行删除元数据操作 最后返回操作结 果 其时序图如下 27 28 2 3 2 5 下载下载 download UTF8 src UTf8 dst 流程图流程图 29 2 3 2 6 上传上传 upload UTF8 src UTf8 dst 流程图流程图 30 2 3 3 通信模块通信模块 2 3 3 1 客户端发送请求客户端发送请求 客户端发送请求的基本过程是 1 客户端得到 mdsCaller 对象的访问权 通过 mdsCaller 对象调用文件系统基本接口 2 mdsCaller 针对不同的接口调用内置 Client 对象的不同接口 3 Client 首先得到与服务器的连接 如果是第一次连接 则连接服务器 并将 request 封装入 Call 调用得 到 Connection 对象的 sendParam 方法 4 Connection 阻塞调用 DataInputStream 的 readInt 方法 5 之后调用 Writable 对象的 Write 方法 将 Call 解包发送 6 Connection 对象读入 server 返回的 Call 包 调用 Writable 对象的 readFields 方法读取数据 7 读取完毕 调用 CallComplete Client 返回 FSResult 31 2 3 3 2 服务器端接受请求服务器端接受请求 服务器端接受请求的基本流程是 1 Listenner 监听服务端口 察看有无入站连接 如有 建立封装此连接的 Connection 对象 2 Connetion 对象得到 socket 连接的 InputStream 与 OutputStream 阻塞读取该连接 3 Connection 对象读取到请求 id 准备读取请求 建立空白 FSParam 对象 调用 FSParam 对象的 readFields 方法读取数据 4 建立封装 FSParam 对象的 Call 包 并将其压入请求队列 Connection 队列等待处理县城结束 5 Handler 轮询请求队列 发现请求后弹出 并调用 server 的 Call 函数处理 6 Call 函数根据不同的 op 生成不同的 Handler 进行处理 处理结束后 通知 Connection 挂起线程处理结 束 7 Connection 对象向 OutputStream 写回处理结果 32 8 Connection 对象继续阻塞读取该连接 2 3 3 3 服务器端启动过程服务器端启动过程 服务器端启动过程是 1 Server 启动 Listernner Listener 开始监听服务端口 2 启动 Handler 池 备用 Handler 进入准备状态 循环检测请求队列 3 检测到入站连接 建立封装 Socket 对象的 Connection 调用 Connection 对象 Start 方法 阻塞读取 Socket 数据 4 将读取的数据封装为 Param 调用 Server 的 Call 函数进行处理 5 针对不同的操作建立不同 Handler 进行处理 返回 FSResult 6 Connection 将 FSResult 写入 Socket 如发送后 Socket 关闭 则 Connection 失效 如 Socket 继续工作 33 则继续步骤 3 2 3 3 4 服务器端返回请求服务器端返回请求 服务器端返回请求流程是 1 服务器接受到请求 调用 Call 函数 2 Call 函数调用 CallHandlerFactory 类 CallHandlerFactory 根据不同的操作 op 生成不同的 Hanlder 处理 类 3 Handler 将参数读入 进行逻辑处理 并生成 FSResult 4 服务器调用 FSResults 的 Writable 接口的 write 方法 将 FSResult 拆包发送 34 2 3 3 5 windows 客户端启动过程客户端启动过程 Windows 客户端启动过程是 1 启动 Dokan 监视文件系统请求 启动 ClientManager 2 得到文件系统请求后 调用 ClientManager 的 getClient 函数得到空闲 Client 对象 3 调用 Client 对象的 requestServer 函数发送请求 等待返回结果 4 Client 的到空闲 Connection 对象 如果是第一次连接 则连接服务器创建新连接 Connection 等待 socket 数据 5 Client 调用 Connection 的 sendRequest 方法 将 Call 发送 6 调用 Writable 对象的 write 方法将 Call 拆包发送 7 Connection 读取 Call 的 id 将请求从发送队列中移出 并调用 FSResult 的 readFileds 函数读取数据 8 Connection 调用 CallComplte 通知结果已返回 Client 的 requestServer 函数返回结果 9 文件请求函数根据结果进行处理 满足文件系统请求 35 2 3 4 副本模块副本模块 OSD检查本地存储的文件 并加入osdFilesQueue 队列是否为空 取出其中一文件uuid 向MDS查询 非空 所查文件是否备份完成 查询成功 将该文件的FileInfo放入队列osdPendingList 未完成 队列是否为空 为该文件选择备份节点 向其它节点拷贝文件数据 备份成功 设置返回数组 收集对应osd信息 将对应修改过的元数据返回mds 并修改mds上的元数据信息 下一个文件 osd备份完成 挂起一段时间 重新检查osd 本节点备份已完成 下一个文件 36 2 4 类 接口设计类 接口设计 Namespace Package jtang fs mds namespace Declaration public interface Namespace Description 其主要成员变量和方法如下 Fields MethodsDescription INode getINode String path 根据根据 path 获取相应的节点 返回获取相应的节点 返回 INode INode getChildren String path 根据根据 path 获取该节点下的所有子节点 返回获取该节点下的所有子节点 返回 INode 数组数组 boolean delete String path 根据根据 path 删除对应的节点 成功则返回删除对应的节点 成功则返回 true 否则返回 否则返回 false INode addINodeFile String path 添加该添加该 path 对应的节点 并返回该对应的节点 并返回该 INode INodeDirectory mkdir String path 根据根据 path 创建单一文件夹 返回创建单一文件夹 返回 INodeDirectory mkdirs String path 根据根据 path 创建文件夹 如果中间路径文件夹不存在 递归创建创建文件夹 如果中间路径文件夹不存在 递归创建 rename String oldname String newname 重命名重命名 commit INode inode 提交提交 INode 信息至数据库信息至数据库 sumOfSubdirectory String path 统计该统计该 path 所对应的目录下的子目录树 递归计算 所对应的目录下的子目录树 递归计算 sumOfFiles String path 统计该统计该 path 所对应的目录下的文件数 递归计算 所对应的目录下的文件数 递归计算 sizeOfPath String path 计算该计算该 path 所对应的节点大小 如果是文件返回文件大小 如所对应的节点大小 如果是文件返回文件大小 如 果是目录递归计算该目录总大小果是目录递归计算该目录总大小 Package jtang fs client MDSCaller Declaration public class MDSCaller Description 封装文件系统功能调用 其主要成员变量和方法如下 Fields MethodsDescription public FSResults call FSParam p 通用通用 Call 函数函数 public boolean rename UTF8 src UTF8 dst 更改文件名为更改文件名为 src 的文件至的文件至 dst 文件名文件名 public boolean delete UTF8 src 删除文件名为删除文件名为 src 的文件的文件 public boolean exists UTF8 src 判断文件名为判断文件名为 src 的文件是否存在的文件是否存在 public boolean mkdirs UTF8 src 建立文件夹名为建立文件夹名为 src 的文件加的文件加 public long sizeOfPath UTF8 src 测量测量 src 的路径长度的路径长度 public int sumOfFiles UTF8 src 测量路径测量路径 src 下的文件数目下的文件数目 public FSResults createMetaData UTF8 src java lang Long size 创建文件名为创建文件名为 src 大小为 大小为 size 的元数据的元数据 public FileInfo listing UTF8 src 列出当前路径下的文件列表列出当前路径下的文件列表 Metadata Package jtang fs mds metadata Declaration public interface IMetaDataManager 37 Description 其主要成员变量和方法如下 Fields MethodsDescription insert MetaData metadata 插入元数据到数据库插入元数据到数据库 update MetaData metadata 更新元数据到数据库更新元数据到数据库 updateSizeByID String id long size 根据根据 id 更新元数据的大小更新元数据的大小 MetaData find String id 根据根据 id 获取元数据 返回的元数据含有虚拟路径信息获取元数据 返回的元数据含有虚拟路径信息 MetaData findByID String id根据根据 id 获取元数据 返回的元数据不含有虚拟路径信息获取元数据 返回的元数据不含有虚拟路径信息 MetaData lookup String name String pid 根据根据 name 以及父目录以及父目录 id 获取元数据获取元数据 MetaData load String path 根据虚拟路径根据虚拟路径 path 查询元数据查询元数据 MetaData getChildren String id 获取以该获取以该 id 为父目录为父目录 id 的所有元数据信息的所有元数据信息 boolean remove MetaData metadata 删除该元数据删除该元数据 metadata 成功返回 成功返回 true 否则 否则 false boolean removeByID String id 根据根据 id 删除对应的元数据删除对应的元数据 MDSCache Package jtang fs mds cahce Declaration public class MDSCache Description 其主要成员变量和方法如下 Fields MethodsDescription INodeDirectory rootDir根目录根目录 INodeDirectory getRootDir 返回根目录返回根目录 rootDir boolean delete String path 在缓存中删除该在缓存中删除该 path 对应的节点对应的节点 INode INodeFile addINodeFile String path 根据根据 path 在缓存中添加文件在缓存中添加文件 INodeFile 并返回该 并返回该 INodeFile INodeDirectory addINodeDirectory String path 根据根据 path 在缓存中添加目录在缓存中添加目录 INodeDirectory INodeFile getFileINode String src 根据虚拟路径获取文件节点根据虚拟路径获取文件节点 INodeFile INodeDirectory getDirectoryINode String src 根据虚拟路径获取目录节点根据虚拟路径获取目录节点 INodeDirectory INode getINode String src 根据虚拟路径获取节点根据虚拟路径获取节点 INode List getListing String src 列举该虚拟路径所对应目录下的内容 如果虚拟路径对应的是列举该虚拟路径所对应目录下的内容 如果虚拟路径对应的是 文件节点则出错文件节点则出错 boolean mkdirs String path 递归创建文件夹递归创建文件夹 renameTo String src String dst 重命名节点重命名节点 isDir String src 判断该路径是否为目录判断该路径是否为目录 int getExistingPathIndex byte components INode existing 获取节点数组获取节点数组 existing 中第一个为空的下标中第一个为空的下标 Constants Package jtang fs core Declaration public class Constants Description 定义程序中使用到的常量 其主要成员变量和方法如下 名称名称值值 OP ERROR0 OP FAILURE3 MDS 操作操作1 9 OP HEARTBEAT1 OP HEARTBEAT ACK2 38 客户端操作客户端操作20 59 OP CLIENT OPEN20 OP CLIENT CREATE21 OP CLIENT RENAMETO22 OP CLIENT DELETE23 OP CLIENT LISTING24 OP CLIENT EXISTS25 OP CLIENT ISDIR26 OP CLIENT MKDIRS27 OP CLIENT SIZEOFPATH28 OP CLIENT SUMOFFILES29 OP CLIENT SUMOFSUBDIR30 OP CLIENT CREATE JFS31 OP CLIENT OPEN JFS32 OP CLIENT UPDATE JFS33 OP CLIENT DELETE JFS34 OP CLIENT TRYAGAIN35 客户端的客户端的 ACK60 99 OP CLIENT OPEN ACK60 OP CLIENT CREATE ACK61 OP CLIENT RENAMETO62 OP CLIENT DELETE63 OP CLIENT LISTING64 OP CLIENT EXISTS65 OP CLIENT ISDIR66 OP CLIENT MKDIRS67 OP CLIENT SIZEOFPATH68 OP CLIENT SUMOFFILES69 OP CLIENT SUMOFSUBDIR70 OP CLIENT CREATE JFS71 OP CLIENT OPEN JFS72 OP CLIENT UPDATE JFS ACK73 OP CLIENT DELETE JFS ACK74 OSD 操作操作100 120 OP OSD WRITE101 OP OSD READ102 OP OSD READBLOCK103 OSD 的的 ACK121 OP OSD READBLOCK ACK123 FSClient Package jtang fs client Declaration public class FSClient Description 其主要成员变量和方法如下 Fields MethodsDescription parseArgs String argv int i 处理输入的参数处理输入的参数 39 open UTF8 src 根据路径获取元数据以及创建输入流 并返回输入流根据路径获取元数据以及创建输入流 并返回输入流 create UTF8 src 根据路径创建元数据 并返回输出流根据路径创建元数据 并返回输出流 exists UTF8 src 判断路径在文件服务器上是否存在判断路径在文件服务器上是否存在 mkdir UTF8 src 根据路径创建目录根据路径创建目录 listFiles UTF8 src 列出路径下的文件列表列出路径下的文件列表 rename UTF8 src UTF8 dst 根据新旧路径名重命名文件或者目录根据新旧路径名重命名文件或者目录 delete UTF8 src 根据路径删除文件或者目录根据路径删除文件或者目录 isDir UTF8 src 判断该路径是否目录判断该路径是否目录 upload UTF8 src UTF8 dst 上传文件上传文件 download UTF8 src UTF8 dst 下载文件下载文件 Client Package jtang fs core Declaration public class Client Description 通讯协议客户端 其主要成员变量和方法如下 名称名称值值 public void stop 停止客户端运行停止客户端运行 public void setTimeout int timeout 设置客户端进行阻塞设置客户端进行阻塞 socket 操作的时间操作的时间 public Writable call Writable param InetSocketAddress address 对对 ip 地址为地址为 address 的服务器发出请求 参数为的服务器发出请求 参数为 param public Writable call Writable params InetSocketAddress addresses 对对 ip 地址为地址为 address 数组内数据的服务器发出请求 参数为数组内数据的服务器发出请求 参数为 param 数组对应的元素数组对应的元素 Writable Package jtang fs io Declaration Interface Writable Description 基本通讯传输接口 其主要成员变量和方法如下 名称名称值值 void write java io DataOutput out Socket 写接口 将类成员写入写接口 将类成员写入 socket void readFields java io DataInput in Socket 读接口 读数据并放入成员变量内读接口 读数据并放入成员变量内 WritableComparable Package jtang fs io Declaration public interface WritableComparable Description 基本通许参数比较类接口 其主要成员变量和方法如下 名称名称值值 void readFields java io DataInput in Socket 读接口 读数据并放入成员变量内读接口 读数据并放入成员变量内 40 void write java io DataOutput out Socket 写接口 将类成员写入写接口 将类成员写入 socket ArrayWritable Package jtang fs io Declaration public class ArrayWritable Description 实现 Writable 接口的数组实现类 其主要成员变量和方法如下 名称名称值值 public void setValueClass java lang Class valueClass 设置参数类类型设置参数类类型 public java lang Class getValueClass 得到参数类类型得到参数类类型 public java lang String toStrings 将将 Array 元素以元素以 string 数组方式返回数组方式返回 public java lang Object toArray 将将 Array 元素以数组形式返回元素以数组形式返回 public void set Writable values 设置设置 value 值为值为 values 表示的表示的 Writable 集合集合 public Writable get 得到得到 value 表示的表示的 Writable 集合集合 public void readFields java io DataInput in Socket 读接口 读数据并放入成员变量内读接口 读数据并放入成员变量内 public void wri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游景区空地租赁及旅游产品开发合同
- 2025年草书符号训练题库及答案
- 动物疫病防控科技创新的策略及实施路径
- 2025年5G网络在智慧交通中的应用与挑战报告
- 伸缩门的施工方案
- 钳工专业知识试题及答案
- 第四节 生态工程在环境保护中的应用说课稿-2025-2026学年高中生物北师大版2019选择性必修2 生物与环境-北师大版2019
- 专题25.2随机事件的概率(原卷版)
- 合规专业面试题及答案
- 专业知识和实务试题及答案
- 洪恩识字识字卡(001-100)可直接打印剪裁
- GB/T 16400-2023绝热用硅酸铝棉及其制品
- 颈椎病诊治与康复指南2023年版
- 关于网络强国的重要思想专题PPT
- 子宫肌瘤手术治疗单病种质控查检表
- 岗位任职资格要求表
- 环境影响评价内部质量控制体系
- 马克思主义科学技术方法论
- 北师大版六年级数学上册-观察的范围
- 底流式消能池水力计算
- 信息技术学习评价表
评论
0/150
提交评论