多磁盘服务器的数据处理装置及对应的处理方法
技术领域
本发明涉及数据存储领域,特别是一种多磁盘服务器的数据处理装置及对应的处理方法。
背景技术
多磁盘的服务器,在承载IO型业务时,如果数据规模较大,不论是何种磁盘类型,如SATA/SAS/SSD等,数据的频繁读写均容易产生较高的坏盘率。同时,相当多的业务在设计和部署时往往采用按单磁盘单业务进程的模式进行,因此坏盘时该磁盘上的业务进程故障或退出,势必对业务产生不良影响。
发明内容
为解决上述问题,本发明的目的在于提供一种多磁盘服务器的数据处理装置及对应的处理方法,使各磁盘上的数据分布更均匀,并提高维护效率。
本发明解决其问题所采用的技术方案是:
一种多磁盘服务器的数据处理装置,包括:
与多磁盘服务器对应的公共写队列;
用于接收用户的读或写请求的接收模块;
用于对多磁盘服务器进行索引查询的查询模块;
分别为每个磁盘设置有唯一写线程的写模块;
所述接收模块在接收到写请求时,将该写请求发送至查询模块,查询模块根据该写请求所对应的索引信息查找多磁盘服务器是否存在对应的写数据,若不存在,则输出一个可以存储该索引信息的空位置,并将该写请求写入公共写队列,与此同时,写模块中的各个写线程在判断自身所对应的磁盘正常时,则从公共写队列中竞争获取写请求,获得写请求的写线程将该写请求所对应的写数据写入对应的磁盘中,并将对应空位置存储的索引信息补充完整。
进一步,还包括:
用于从多磁盘服务器中读取数据的读模块,所述读模块包含有为每一磁盘设置的读线程;以及
分别为每一个磁盘对应设置的读队列;
所述接收模块在接收到读请求时,将该读请求发送至查询模块,查询模块根据该读请求的内存索引定位对应所要读取的数据所在的磁盘,并将该读请求写入该磁盘所对应的读队列,与此同时,读模块中的读线程检测到对应磁盘的读队列不为空时,则从该读队列中获取对应的读请求,并根据该读请求从对应磁盘中读取数据。
进一步,所述读模块为每一磁盘设置的读线程至少具有一个。
一种多磁盘服务器数据处理的方法,所述每一磁盘分别设置有对应的唯一写线程,且多磁盘服务器设置有对应的公共写队列,所述方法包括:
当用户发出写请求时,根据该写请求所对应的索引信息查询多磁盘服务器是否存在对应的写数据,若不存在,则输出一个可以存储该索引信息的空位置,并将该写请求写入公共队列,与此同时,每一写线程在判断自身所对应的磁盘正常时,则从公共写队列中竞争获取写请求,获得写请求的写线程将该写请求所对应的写数据写入对应的磁盘中,并将对应空位置存储的索引信息补充完整。
进一步,所述每一磁盘分别还对应设置有至少一个读线程和唯一的读队列,所述方法还包括:
当用户发出读请求时,根据该读请求的内存索引定位对应所要读取的数据所在的磁盘,并将该读请求写入该磁盘所对应的读队列,与此同时,该磁盘所对应的读线程检测到其对应的读队列不为空时,则从该读队列中获取对应的读请求,并根据该读请求从对应磁盘中读取数据。
本发明的有益效果是:
本发明采用一种多磁盘服务器的数据处理装置及对应的处理方法,所设置的读模块使磁盘服务器各磁盘的数据分布更均匀,充分达到各磁盘的负载均衡;当服务器某块磁盘故障时,不影响其它磁盘的工作,无需停机维护,可正常使用;某磁盘故障后,仅需热插拔式更换掉,无需准备运行环境、检查运行配置、启动业务进程等一系列故障恢复工作,在坏盘率高的业务中,该方法带来的效益尤其明显;业务进程中的写线程能自动检测并屏蔽故障硬盘,并能在换盘后自动恢复,人工运维成本非常低。
附图说明
下面结合附图和实例对本发明作进一步说明。
图1是本发明所对应的流程处理示意图。
具体实施方式
参照图1所示,本发明提供了一种多磁盘服务器的数据处理装置,包括:
与多磁盘服务器对应的公共写队列;
用于接收用户的读或写请求的接收模块;
用于对多磁盘服务器进行索引查询的查询模块;
分别为每个磁盘设置有唯一写线程的写模块;
所述接收模块在接收到写请求时,将该写请求发送至查询模块,查询模块根据该写请求所对应的索引信息查找多磁盘服务器是否存在对应的写数据,若不存在,则输出一个可以存储该索引信息的空位置,并将该写请求写入公共写队列,与此同时,写模块中的各个写线程在判断自身所对应的磁盘正常时,则从公共写队列中竞争获取写请求,获得写请求的写线程将该写请求所对应的写数据写入对应的磁盘中,并将对应空位置存储的索引信息补充完整。
以上是本发明在写数据时所对应的流程,与此同时,本发明还设置了相应的读流程,对应的,本发明所述数据处理装置还包括:
用于从多磁盘服务器中读取数据的读模块,所述读模块包含有为每一磁盘设置的读线程;以及
分别为每一个磁盘对应设置的读队列;
所述接收模块在接收到读请求时,将该读请求发送至查询模块,查询模块根据该读请求的内存索引定位对应所要读取的数据所在的磁盘,并将该读请求写入该磁盘所对应的读队列,与此同时,读模块中的读线程检测到对应磁盘的读队列不为空时,则从该读队列中获取对应的读请求,并根据该读请求从对应磁盘中读取数据。
为满足不同业务的读取性能的侧重指标,所述读模块为每一磁盘设置的读线程至少具有一个。
本发明所设置的读模块使磁盘服务器各磁盘的数据分布更均匀,充分达到各磁盘的负载均衡;当服务器某块磁盘故障时,不影响其它磁盘的工作,无需停机维护,可正常使用;某磁盘故障后,仅需热插拔式更换掉,无需准备运行环境、检查运行配置、启动业务进程等一系列故障恢复工作,在坏盘率高的业务中,该方法带来的效益尤其明显;业务进程中的写线程能自动检测并屏蔽故障硬盘,并能在换盘后自动恢复,人工运维成本非常低。
参照图1所示,本发明还提供了一种多磁盘服务器数据处理的方法,所述每一磁盘分别设置有对应的唯一写线程,且多磁盘服务器设置有对应的公共写队列,所述方法包括:
当用户发出写请求时,根据该写请求所对应的索引信息查询多磁盘服务器是否存在对应的写数据,若不存在,则输出一个可以存储该索引信息的空位置,并将该写请求写入公共队列,与此同时,每一写线程在判断自身所对应的磁盘正常时,则从公共写队列中竞争获取写请求,获得写请求的写线程将该写请求所对应的写数据写入对应的磁盘中,并将对应空位置存储的索引信息补充完整。
以上方法叙述了本发明对应的写流程。为了与该写流程对应,本发明还提供了对应的读流程。为实现该读流程,所述每一磁盘分别还对应设置有至少一个读线程和唯一的读队列,所述读流程对应的方法包括:
当用户发出读请求时,根据该读请求的内存索引定位对应所要读取的数据所在的磁盘,并将该读请求写入该磁盘所对应的读队列,与此同时,该磁盘所对应的读线程检测到其对应的读队列不为空时,则从该读队列中获取对应的读请求,并根据该读请求从对应磁盘中读取数据。
以上方法适用于网页存储***、二进制数据存储和查询***等各种***,例如:
对于网页存储***,具体数据路由到单台服务器后,查询线程首先在内存索引表内进行查找;然后根据请求类型将请求分发到特定队列,如果是写请求,则分发到唯一的一条写队列,如果是读请求,则分发到对应磁盘的读队列;写线程将竞争获取写请求,顺序写入数据文件,再回写索引信息到索引表;读线程则从自己负责的读队列获取读请求,读取数据后返回用户。
对于二进制数据存储和查询***,给每条二进制数据指定或生成唯一的key值,进行路由分布后到达单台服务器,查询线程根据key值进行查找定位,再交付给写线程或读线程进行处理,写线程采用竞争获取请求的方式,读线程则只处理分发给自己的读请求,实现二进制数据的均匀存储、故障自动检测与恢复。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。