GiPS设计与实现.pptVIP

  • 4
  • 0
  • 约2.69千字
  • 约 14页
  • 2018-08-22 发布于江苏
  • 举报
GiPS设计与实现

GiPS设计与实现 赵俊彦 闫梦龙 郭辉 Contents Introduction GiPS是一个面向数据密集型应用的分布式文件系统,整个系统由Master节点、Data节点和客户端组成。它屏蔽了操作系统和硬件的异构性,具有一定的容错性和可扩展性。 整个系统的设计,参考了GFS和Hadoop系统的架构,使用ICE和C++进行实现。 Design Architecture Assumption 在GiPS系统中,文件的存储和组织是以块为单位的。1个文件可以由多个块组成,1个块只存储1个文件的内容。在设计这个系统时,我们假设Master是不易出错的,而数据节点因为频繁的I/O操作,容易发生错误。 Modules module ClientMaster { sequencestring desIPList; //储存节点列表的结构 //文件块结构 struct FileBlock { long blockID; //文件的块序号 string indexID; //所属文件的ID desIPList IPs; //储存这个块的节点列表 }; sequenceFileBlock FileObject; //用于储存一个文件的全部块信息的结构 sequencestring list; //用于保存全部文件名的结构 // 用于处理client请求的接口 interface FileObjectsManager { // 得到某个文件的存储信息 bool getFileObjectStorageInformation(string fileName, out FileObject fileObj); // 设置某个文件的存储信息 bool setFileObjectStorageInformation(string fileName, FileObject fileObj); // 在写文件之前,请求master为这个文件分配存储节点 desIPList getStorageNodes(); // 列出当前系统中的全部文件 list getFSList(); // 创建目录 bool createFolder(string folderName); // 删除目录 bool deleteFolder(string folderName); // 删除文件 bool deleteFile(string fileName); }; }; module Cluster { // clerk节点向master发送的心跳消息结构 struct HeartBeatMessage { string ip; //本节点ip int blockNum; //当前节点中文件的块数 }; // 备份时,一个文件块副本的结构 struct ReplicaInfo { string replicaID; //需要被备份的文件块索引ID string clerkIP; //目的节点的ip }; // clerk在master上注册的回调函数 interface ClerkCallBack { // 报告clerk当前的状态 idempotent void reportState(out HeartBeatMessage hbMsg); // 对某个副本执行备份操作 bool replicaCopy(ReplicaInfo repInfo); // 对某个副本执行删除操作 bool replicaDelete(string replicaID); }; dictionarystring, ClerkCallBack * ClerkMap; // clerk向master注册的接口 interface ClusterMessenger { void clerkCallBackRegister(string clerkIP, ClerkCallBack *clerkcb); }; }; module ClientClerk { //二进制数据流 sequencebyte BinaryData; interface FileIOManager { //向GiPS写文件 bool writeFile(string blockIndex, BinaryData data); //从GiPS中读文

文档评论(0)

1亿VIP精品文档

相关文档