基于Pick-kX算法的分布式存储系统设计与实现

上传人:206****923 文档编号:46841968 上传时间:2018-06-28 格式:PDF 页数:80 大小:1.80MB
返回 下载 相关 举报
基于Pick-kX算法的分布式存储系统设计与实现_第1页
第1页 / 共80页
基于Pick-kX算法的分布式存储系统设计与实现_第2页
第2页 / 共80页
基于Pick-kX算法的分布式存储系统设计与实现_第3页
第3页 / 共80页
基于Pick-kX算法的分布式存储系统设计与实现_第4页
第4页 / 共80页
基于Pick-kX算法的分布式存储系统设计与实现_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《基于Pick-kX算法的分布式存储系统设计与实现》由会员分享,可在线阅读,更多相关《基于Pick-kX算法的分布式存储系统设计与实现(80页珍藏版)》请在金锄头文库上搜索。

1、 电 子 科 技 大 学 UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA 硕士学位论文 MASTER THESIS 论文题目 基于基于Pick-kX算法的分布式存储系统设计与实现算法的分布式存储系统设计与实现 学科专业 计算机应用技术计算机应用技术 学 号 201121060429201121060429 作者姓名 方方 伟伟 指导教师 郝玉洁郝玉洁 教授教授 分类号 密级 UDC 学 位 论 文 基于基于 Pick-KX 算法的分布式存储系统算法的分布式存储系统设计与实现设计与实现 (题目和副题目) 方方 伟伟 (作者姓名)

2、指导教师 郝玉洁郝玉洁 教授教授 电子科技大学电子科技大学 成都成都 申请学位级别 硕士硕士 学科专业 计算机应用技术计算机应用技术 提交论文日期 2014.03.25 论文答辩日期 2014.05.22 学位授予单位和日期 电子科技大学电子科技大学 2014 年年 06 月月 29 日日 答辩委员会主席 评阅人 DESIGN AND IMPLEMENTATION OF DISTRIBUTED STORAGE SYSTEM BASED ON A Pick - KX ALGORITHM A Master Thesis Submitted to University of Electronic S

3、cience and Technology of China Major: Technology of Computer Application Author: Fang Wei Advisor: Prof.Hao Yujie School : School of Computer Science storeEventLoop *el; int daemonize; char *pidfile; int port; char *bindaddrSTORE_BINDADDR_MAX; int bindaddr_count; int ipfdSTORE_BINDADDR_MAX; int ipfd

4、_count; char *unixsocket; int unixsocketfd; list *clients; list *slaves; char *logfile; int syslog_enabled; u_int maxclients; 其中: (1) configfile 是 storeServer 的配置文件的路径,在系统启动时,从 configfile中读取配置文件,对系统进行初始化。 电子科技大学硕士学位论文 26 (2) el 是 storeEventLoop 类型的指针数组,保存服务器的事件。 (3) daemonize 表示服务器进程是否是守护进程,1 表示是守护进

5、行,0 表示不是守护进程。 (4) pidfile 是守护进程的 pidfile,保存守护进程的进程标识符。 (5) port 是服务器监听端口。 (6) bindaddr 表示 port 需要绑定的 ip 地址数组,默认大小为 16。 (7) bindaddr_count 表示 bindaddr 数组中元素的个数。 (8) ipfd 是服务器网络接口接收客户端连接的连接套接字数组。 (9) ipfd_count 是 ipfd 数组中元素的个数。 (10) unixsocket 是创建 unix 域套接字的文件名。 (11) unixsocketfd 是 unix 域套接字描述符。 (12)

6、clients 保存客户端列表,当客户端连接服务器时,服务器会为客户端 创建一个 storeClient 对象,并加入到该列表中。 (13) slaves 保存 storeSlave 的列表, storeSlave 启动时, 会向 storeMaster 发起连接请求,storeMaster 接受到 storeSlave 发起的连接请求时,会给 storeSlave 创建一个 storeClient 对象,并加入到该列表中。 (14) logfile 是日志保存文件路径,系统中产生的日志会保存在该文件中。 (15) syslog_enabled 表示是否开启系统日志,1 表示开启,0 表示不开

7、启。 (16) maxclients 表示服务器可以接受客户端最大连接请求的数量。 2.storeClient。storeClient 代表客户端的数据结构,当客户端或者 storeSlave 连接 storeMaster 时,storeMaster 会为它们实例化一个 storeClient 的对象,保存客户端和服务器连接套接字、客户端的类别信息、客户端当前的状态、客户端的请求数据缓冲区、服务器响应数据缓冲区和当前客户端请求处理状态等信息。 storeClient 具体结构如下: struct storeClient int fd; int clientType; int state; sd

8、s requestBuf; int requestPos; sds responseBuf; int responsePos; int currentSevState; 第三章 分布式存储系统设计与实现 27 char *id; 其中: (1) fd 是客户端或 storeSlave 与 storeMaster 之间的连接套接字描述符。 (2) clientType 表示客户端类型,在系统中客户端主要有两种类型:STORE_CLIENT 代表普通的用户客户端,STORE_SLAVE 代表系统中所有StoreSlave 处理节点。 (3) state是 客 户 端 当 前 的 状 态 , 该 变

9、 量 有 两 种 可 能 的 取 值 :CLIENT_CONNECTED表 示 客 户 端 和 服 务 器 保 持 连 接 ,CLIENT_DISCONNECTED 表示客户端和服务器之间已断开连接。 (4) requestBuf 是服务器缓存客户端请求数据而开辟的空间,它是一个 sds 数据类型的动态字符串,sds 是一个结构体,它的三个成员如下:len 表示当前 buf 中字符数量, free 表示 buf 中可用的字符数量, buf 是存放数据的字符数组。 struct sds int len; int free; char *buf; (5)requestPos表示服务器当前对requ

10、estBuf中的数据已经进行处理的位置指针。 (6) responseBuf 是服务器响应客户端请求数据缓冲区,它也是 sds 动态字符串类型。 (7) currentSevState表示当前客户端请求处理的状态信息, 它具有如下几个值:TASK_PENDING 表示服务器当前还没有处理客户端的请求;TASK_HANDLING表示服务器正在处理当前客户端的请求; TASK_SUCCUSS 表示服务器已经成功处理客户端的请求。 (8) id 是客户端的标志符,值是当前用户的注册名。 3. storeEventLoop。storeEventLoop 是有关系统事件处理的重要数据结构,它保存着系统中

11、所有的时间事件和读写事件。storeEventLoop 具体结构如下: struct storeEventLoop int setsize; long long timeEventNextId; storeFileEvent *fileEvents; storeFiredEvent *firedEvents; 电子科技大学硕士学位论文 28 storeTimeEvent *timeEventHead; int stop; void *apiData; 其中: (1) setsize 表示当前 storeEventLoop 数组大小,storeServer 的 el 成员指向该分配的空间,默认空

12、间为 maxclients (2) timeEventNextId 是下一个将要处理的时间事件的 ID。 (3) fileEvents 是 struct storeFileEvents 类型的数组,storeFileEvents 有 4 个成员,如下:mask 代表当前的事件类型,它有两种取值:STORE_READABLE 和STORE_WRITABLE,分别表示当前可读和可写。rfileProc 和 wfileProc 都是一个storeFilePoc 类型的函数指针,分别指向可读事件的处理函数和可写事件的处理函数,clientData 是 void *类型的指针,指向 storeClien

13、t 类型的对象。 struct storeFileEvent int mask; storeFileProc *rfileProc; storeFileProc *wfileProc; void *clientData; (4) firedEvents 是一个 storeFiredEvent 结构体类型的数组,表示当前已经准备就绪的读写事件,它有两个成员,如下:mask 表示当前事件的类型,取值有STORE_READABLE 和 STORE_WRITABLE,fd 表示当前准备就绪的套接字描述符。 struct storeFiredEvent int mask; int fd; (5) tim

14、eEventHead 是时间事件的头结点, 系统的时间事件构成一个单链表, 每个结点是 storeTimeEvent 结构体类型。 该结构体有如下几个数据成员: id 表示该时间事件的 ID,when_sec 表示该时间事件将要发生的秒数,when_ms 表示该时间事件将要发生的毫秒数,timeProc 是 storeTimeProc 类型的函数指针,它指向时间事件处理函数,当时间事件发生时,调用该函数对该时间事件进行处理,clientData是 void *类型的指针,指向 storeClient 类型的对象,next 指向下一个时间事件节点。 第三章 分布式存储系统设计与实现 29 struct storeTimeEvent long long id; long when_sec; long when_ms; storeTimeProc *timePr

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号