[发明专利]一种对于磁盘读写数据的多线程/多进程无锁处理方法及系统有效
申请号: | 201710512828.9 | 申请日: | 2017-06-29 |
公开(公告)号: | CN107368362B | 公开(公告)日: | 2020-10-30 |
发明(设计)人: | 徐海峰 | 申请(专利权)人: | 上海阅文信息技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 上海金盛协力知识产权代理有限公司 31242 | 代理人: | 郑鸣捷 |
地址: | 201203 上海*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 对于 磁盘 读写 数据 多线程 进程 处理 方法 系统 | ||
1.一种磁盘读写数据的多线程/多进程无锁处理方法,该方法包括:
步骤1:创建多个处理线程/多个处理进程并对每个处理线程/处理进程进行标识;
步骤2:为每个处理线程/处理进程不同地分配一个单独的文件或者是同一个文件中的某一段文件块,保证处理线程/处理进程单一地处理被分配到的文件或文件块;
步骤3:主socket接收磁盘操作请求,根据接收到的请求具有的线程标识/进程标识,将操作分配到对应的处理线程/处理进程,然后由对应的线程/进程进行处理;
其中步骤3中主socket根据接收到操作请求具有的线程标识/进程标识,将操作分配到其对应的处理线程/处理进程具体为根据操作请求具有的线程标识/进程标识采用负载均衡算法将操作分配到其对应的处理线程/处理进程;
其中对于无标识的磁盘操作请求,主socket采用负载均衡算法结合创建的处理线程/处理进程的标识,将请求分配到一个处理线程/处理进程,操作执行完毕后,处理线程/处理进程返回一个带有元数据的ID,所述ID上带有处理线程/处理进程的对应的标识,这个ID将由调用方进行处理;对于有标识的请求,负载均衡算法模块会接收到相关操作的元数据ID,主socket采用负载均衡算法会根据元数据的ID,将操作分配到其相关的生产线程/生产进程,然后由其相关的线程/进程进行处理,实现“谁生产谁负责”;对于计算机由于某些原因改变处理线程/处理进程的数量,导致部分带有标识的操作请求有一部分是无法定位到原先的线程/进程来处理的,主socket采用负载均衡算法将这种找不到原先线程/进程处理的操作都一一对应地分配到同一个线程/进程上处理,即在同一时刻,同一个标识,只会被分配到一个线程/进程处理。
2.如权利要求1中所述的多线程/多进程无锁处理方法,其中创建的多个处理线程/处理进程每个都合并有独占的磁盘IO读写线程/进程,用于执行相关的磁盘操作。
3.如权利要求1所述的多线程/多进程无锁处理方法,其中步骤3中由对应的线程/进程进行处理,具体包括:对于写入磁盘的请求分为2种处理方式:对于无标识的请求:相关的处理线程/处理进程使用循环排队和顺序写的方式来处理,当文件/文件块被写到一定的阀值,关闭当前的文件,重新打开一个文件或者重新获取一个新的文件块,继续写入;对于有标识的请求:重新打开标识中的文件/文件块,然后跟文件/文件块元数据ID上的标识信息进行校验,确定数据块的唯一性和版本正确性,如果正确,执行相应的写入操作。
4.如权利要求1所述的多线程/多进程无锁处理方法,其中步骤3中由对应的线程/进程进行处理,具体还包括:对于修改操作分为两种情况:1.新数据块大小小于原先的数据块大小:直接在元数据块上操作;2.新数据块大小大于原先的数据块大小,将新数据块的更改操作转换为新增操作,重新排队或者直接执行改操作。
5.一种执行如权利要求1-4中任一项所述的多线程/多进程无锁处理方法的集群存储系统,服务器/服务器机群创建多个处理线程/多个处理进程并对每个处理线程/处理进程进行标识,为每个处理线程/处理进程不同地分配一个单独的文件/同一个文件中的某一段文件块/磁盘阵列中一个磁盘/磁盘阵列集群的一个磁盘阵列,保证处理线程/处理进程单一地处理被分配到文件/文件块/磁盘集群中/磁盘集群中的一个磁盘阵列,主socket接收磁盘操作请求,根据接收到请求具有的线程标识/进程标识,通过负载均衡算法模块将操作分配到对应的处理线程/处理进程,由对应的线程/进程进行处理。
6.一种执行如权利要求1-4中任一项所述的多线程/多进程无锁处理方法的虚拟机存储系统,所述的主socket以及负载均衡算法模块被实现在宿主机上,该宿主机上通过虚拟机管理器生成多个虚拟机并为每个虚拟机分配一定的包括虚拟存储空间、CPU、内存的计算资源,运行每个虚拟机,并在每个虚拟机中创建各自的处理线程/处理进程并对每个处理线程/处理进程进行标识,每个处理线程/处理进程不同地分配各自虚拟机中的存储资源,宿主机中socket接收磁盘操作请求,根据接收到请求具有的线程标识/进程标识,通过负载均衡算法模块将操作分配到虚拟机中具有对应标识的处理线程/处理进程,由对应的线程/进程进行处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海阅文信息技术有限公司,未经上海阅文信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710512828.9/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置