CN106843748A - 一种提高数据写入移动存储设备速度的方法和系统 - Google Patents
一种提高数据写入移动存储设备速度的方法和系统 Download PDFInfo
- Publication number
- CN106843748A CN106843748A CN201611061221.5A CN201611061221A CN106843748A CN 106843748 A CN106843748 A CN 106843748A CN 201611061221 A CN201611061221 A CN 201611061221A CN 106843748 A CN106843748 A CN 106843748A
- Authority
- CN
- China
- Prior art keywords
- data
- write
- thread
- storage device
- movable storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种提高数据写入移动存储设备速度的方法和系统,属于计算机数据处理技术领域。本发明所述的方法包括以下步骤:(1)客户端发来请求,服务器端处理后生成写入数据,启动应用程序;(2)应用程序创建多个工作线程,分配多个缓存区;(3)应用程序将写入数据传给分发线程;(4)分发线程将写入数据传递给对应的多个整理线程,多个整理线程将数据写入对应的缓存区,并修改拼接后的数据长度;(5)当满足触发条件时,整理线程通知写入线程将数据写入到移动存储设备。采用本发明所述的方法和系统可以在不必改动移动存储设备硬件和固件的情况下,通过上位机缓存以及多线程分区写入的方法来大幅提高短数据写入移动存储介质的速度。
Description
技术领域
本发明属于计算机数据处理技术领域,具体涉及一种提高数据写入移动存储设备速度的方法及系统。
背景技术
随着政务、税务、财务等行业电子化的推广和普及,对电子票据、电子公文这种短数据的传输和存储的需求越来越大。通过专用网络和数据服务器可以满足一部分这样的需求,但也有相当多的情况下不便于使用网络,比如专用网络无法覆盖的地区,或是使用者自身不具备使用专网的资格,这种情况下就需要移动存储介质来传输这些数据。这种存储介质,除了要能够保护数据的安全,还要具有较大的容量和很高的传输速率,因为对于服务器来说,性能的瓶颈不在于处理并发的请求,而在于将生成的端数据写入存储介质,比如地方财政部门处理预算单位拨款请求的服务器、淘宝商户的开票服务器等等。
现有技术中,常规的做法是,不开辟上位机缓存,也不会创建各司其职的工作线程,直接调用操作系统的DeviceIOControl接口(windows平台)或是ioctl接口(linux平台)将每个请求按先后顺序写入。USB协议的特点是,随着连续写入数据时间的增加,写入速度逐渐上升,所以写入的数据块越大,平均速度越快。而上述的常规做法就是来多大数据就写入多大数据,无法发挥USB协议的优势。对于写入数据小频率又高的场景,常规做法对整个系统的性能会有很严重的影响。
发明内容
针对现有技术中存在的缺陷,本发明的目的是提供一种提高数据写入移动存储设备速度的方法和系统。该方法和系统能够在不必改动移动存储设备硬件和固件的情况下,通过上位机缓存以及多线程分区写入的方法来大幅提高短数据写入移动存储介质的速度。
为达到以上目的,本发明采用的技术方案是:一种提高数据写入移动存储设备速度的方法,包括以下步骤:
(1)客户端发来请求,服务器端处理后生成写入数据,启动应用程序;
(2)应用程序创建多个工作线程,分配多个缓存区;
(3)应用程序将写入数据传给分发线程;
(4)分发线程将写入数据传递给对应的多个整理线程,多个整理线程将数据写入对应的缓存区,并修改拼接后的数据长度;
(5)当满足触发条件时,整理线程通知写入线程将数据写入到移动存储设备。
进一步,步骤(3)中,应用程序在写入数据时将写入的起始地址、数据长度和数据传给分发线程。
更进一步,应用程序与分发线程使用广播消息方式通信。
进一步,步骤(4)中,分发线程根据起始地址做出判断,将写入请求传递给对应的整理线程。
更进一步,整理线程根据移动存储设备容量大小和写入数据的零碎程度,将整个存储空间分成若干缓存区,每个整理线程负责管理一个缓存区,职责是整理要写入这个缓存区的零碎数据,将零碎数据拼接成大块数据并写入其管理的缓存区,并实时修改已拼接数据的长度。
进一步,分发线程与整理线程使用消息队列方式通信,将写入请求按先后顺序排进队列。为了避免队列越来越长,就要在缓冲区的划分上做出权衡,比如多划分几个缓存区,这样每个整理线程负责的区域会变小,其工作量就会减少,视具体情况而定。
进一步,如果划分的缓存区较多,则创建多个写入线程,每个写入线程负责若干缓存区。
进一步,步骤(5)中,所述的触发条件是某个缓存区内数据达到设定的长度,或是该缓存区距离上次写入设备经过了设定的时间。
本发明还提供了一种提高数据写入移动存储设备速度的系统,包括以下装置:
应用程序模块,用于创建所有的工作线程,分配所有缓存区,并将写入数据传给分发模块;
分发模块,由分发线程实现,用于将数据写入对应的缓存区,将写入地址和待写入数据传递给整理模块;
整理模块,由多个整理线程实现,用于整理要写入这个缓存区块的零碎数据,将零碎数据拼接成大块数据并写入其管理的缓存区,并实时修改已拼接数据的长度;
缓存模块,由多个缓存区块组成,用于存储写入地址和待写入数据;
写入线程模块,由写入线程实现,当满足触发条件时,用于将数据写入移动存储设备。
本发明的效果在于:采用本发明所述的方法和系统,可以在不必改动移动存储设备硬件和固件的情况下,通过上位机缓存以及多线程分区写入的方法来大幅提高短数据写入移动存储介质的速度。
附图说明
图1是本发明所述方法的流程图;
图2是本发明所述方法及系统的原理图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步描述。
本发明涉及了一种在写入数据小、写入频率高的场景下,提高数据存储速度的方法。将需要多次写入的小块零碎数据,拼接成大块数据后再一次性写入,以写入大数据的方式来发挥USB传输的性能。提高了数据的存储速度。
本发明所述的系统与方法中所提到的移动存储设备可以是一种带有隐藏区的U盘,也可以是其他带USB接口的移动存储设备,通过“起始地址+数据长度”的方式来读写数据,使用USB接口与上位机(PC机或服务器)通信,以及具有与此设备有连接能力的上位机。
如图1所示,一种提高数据写入移动存储速度的方法,包括以下步骤:
(1)客户端发来请求,服务器端处理后生成写入数据,启动应用程序,S1;
(2)应用程序创建多个工作线程,分配多个缓存区,S2;
(3)应用程序将写入数据传给分发线程,S3;
(4)分发线程将写入数据传递给对应的多个整理线程,多个整理线程将数据写入对应的缓存区,并修改拼接后的数据长度,S4;
(5)当满足触发条件时,整理线程通知写入线程将数据写入到移动存储设备,S5。
本实施例中,步骤(3)中,应用程序在写入数据时将写入的起始地址、数据长度和数据传给分发线程。
应用程序与分发线程使用广播消息方式通信。由于分发线程只负责分发不处理数据,所以对于每个写入请求,分发的工作在下一个广播消息到来之前就能结束。
步骤(4)中,分发线程根据起始地址做出判断,将写入请求传递给对应的整理线程。
根据移动存储设备容量大小和写入数据的零碎程度,将整个存储空间分成若干缓存区(视具体情况而定),每个整理线程负责一个缓存区,职责是整理要写入这个缓存区的零碎数据,将零碎数据拼接成大块数据并写入其管理的缓存区,并实时修改已拼接数据的长度(有可能是多个长度)。
整理线程需要处理数据时,对于每个写入请求,需要一定的时间处理。所以分发线程与整理线程使用消息队列方式通信,将写入请求按先后顺序排进队列。为了避免队列越来越长,就要在缓冲区的划分上做出权衡,比如多划分几个缓存区,这样每个整理线程负责的区域会变小,其工作量就会减少,视具体情况而定。
如果划分的缓存区较多,则为了能够及时处理整理线程的消息,也可视具体情况创建多个写入线程,每个写入线程负责若干缓存区。
步骤(5)中,当某个缓存区中内数据达到触发条件后,由管理该缓存区的整理线程通知写入线程将数据写入移动存储设备。
这里要设置两个触发条件,一是数据块达到一定长度,二是该缓存区距离上次写入设备经过了多少时间。两个条件,无论哪个先满足,整理线程都会通知写入线程将数据写入移动存储设备。长度和时间是根据写入请求的频率来确定的,写入频率越高,这两个值就越小。
本实施例中,若以每秒1024次写入数据,平均每次写入1024字节为例,长度可以定为10M字节,时间定为10秒。若长度设定为100M字节的话,则时间可以设定为100秒,以此类推,只要长度除以时间的结果满足每秒钟累积的数据总量即可。
写入线程收到通知后,将拼接好的大块数据写入移动存储设备。
如图2所示,一种提高数据写入移动存储设备速度的系统,包括以下装置:
应用程序模块,用于创建所有的工作线程,分配所有缓存区,并将写入数据传给分发模块;
分发模块,由分发线程实现,用于将数据写入对应的缓存区,将写入地址和待写入数据传递给整理模块;
整理模块,由多个整理线程实现,用于整理要写入这个缓存区块的零碎数据,将零碎数据拼接成大块数据并写入其管理的缓存区,并实时修改已拼接数据的长度;
缓存模块,由多个缓存区块组成,用于存储写入地址和待写入数据;
写入线程模块,由写入线程实现,当满足触发条件时,用于将数据写入移动存储设备。所述的触发条件是某个缓存区内数据达到设定的长度,或是该缓存区距离上次写入设备经过了设定的时间
通过上述实施例可以看出,本发明与现有的常规做法相比,其技术效果在于:
1、本发明开辟大块的上位机缓存,这个缓存不一定是内存,也可以在磁盘上开辟,与读写移动存储设备相比,上位机读写磁盘的时间损耗可忽略不计;
2、本发明创建各司其职的工作线程来有条不紊的消化缓存中的数据;
3、本发明根据每种线程的工作内容,使用不同的方法进行线程间通信,确保线程处理数据的同步,同时也避免了写入请求越积越多。
本领域技术人员应该明白,本发明所述的方法和系统并不限于具体实施方式中所述的实施例,上面的具体描述只是为了解释本发明的目的,并非用于限制本发明。本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围,本发明的保护范围由权利要求及其等同物限定。
Claims (10)
1.一种提高数据写入移动存储设备速度的方法,包括以下步骤:
(1)客户端发来请求,服务器端处理后生成写入数据,启动应用程序;
(2)应用程序创建多个工作线程,分配多个缓存区;
(3)应用程序将写入数据传给分发线程;
(4)分发线程将写入数据传递给对应的多个整理线程,多个整理线程将数据写入对应的缓存区,并修改拼接后的数据长度;
(5)当满足触发条件时,整理线程通知写入线程将数据写入到移动存储设备。
2.如权利要求1所述的一种提高数据写入移动存储设备速度的方法,其特征是:步骤(3)中,应用程序在写入数据时将写入的起始地址、数据长度和数据传给分发线程。
3.如权利要求2所述的一种提高数据写入移动存储设备速度的方法,其特征是:应用程序与分发线程使用广播消息方式通信。
4.如权利要求2至3任一项所述的一种提高数据写入移动存储设备速度的方法,其特征是:步骤(4)中,分发线程根据起始地址做出判断,将写入数据传递给对应的整理线程。
5.如权利要求4所述的一种提高数据写入移动存储设备速度的方法,其特征是:整理线程根据移动存储设备容量大小和写入数据的零碎程度,将整个存储空间分成若干缓存区,每个整理线程负责管理一个缓存区,职责是整理要写入这个缓存区的零碎数据,将零碎数据拼接成大块数据并写入其管理的缓存区,并实时修改已拼接数据的长度。
6.如权利要求5所述的一种提高数据写入移动存储设备速度的方法,其特征是:分发线程与整理线程使用消息队列方式通信,将写入请求按先后顺序排进队列。
7.如权利要求6所述的一种提高数据写入移动存储设备速度的方法,其特征是:如果划分的缓存区较多,则创建多个写入线程,每个写入线程负责若干缓存区。
8.如权利要求7所述的一种提高数据写入移动存储设备速度的方法,其特征是:步骤(5)中,所述的触发条件是某个缓存区内数据达到设定的长度,或是该缓存区距离上次写入设备经过了设定的时间。
9.一种提高数据写入移动存储设备速度的系统,包括以下装置:
应用程序模块,用于创建多个工作线程,分配多个缓存区,并将写入数据传给分发模块;
分发模块,由分发线程实现,用于将数据写入对应的缓存区,将写入地址和待写入数据传递给整理模块;
整理模块,由多个整理线程实现,用于整理要写入这个缓存区块的零碎数据,将零碎数据拼接成大块数据并写入其管理的缓存区,并实时修改已拼接数据的长度;
缓存模块,由多个缓存区块组成,用于存储写入地址和待写入数据;
写入线程模块,由写入线程实现,当满足触发条件时,用于将数据写入移动存储设备。
10.如权利要求9所述的一种提高数据写入移动存储设备速度的系统,其特征在于:所述的触发条件是某个缓存区内数据达到设定的长度,或是该缓存区距离上次写入设备经过了设定的时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611061221.5A CN106843748A (zh) | 2016-11-28 | 2016-11-28 | 一种提高数据写入移动存储设备速度的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611061221.5A CN106843748A (zh) | 2016-11-28 | 2016-11-28 | 一种提高数据写入移动存储设备速度的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106843748A true CN106843748A (zh) | 2017-06-13 |
Family
ID=59146076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611061221.5A Pending CN106843748A (zh) | 2016-11-28 | 2016-11-28 | 一种提高数据写入移动存储设备速度的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106843748A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032512A (zh) * | 2018-07-10 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种实现数据追加写的方法、装置及设备 |
CN109491620A (zh) * | 2018-11-23 | 2019-03-19 | 柏科数据技术(深圳)股份有限公司 | 存储数据重写方法、装置、服务器及存储介质 |
CN111984198A (zh) * | 2020-08-25 | 2020-11-24 | 北京一起教育信息咨询有限责任公司 | 消息队列实现方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544118A (zh) * | 2012-07-17 | 2014-01-29 | 群联电子股份有限公司 | 存储器储存装置、其存储器控制器与数据写入方法 |
CN104503710A (zh) * | 2015-01-23 | 2015-04-08 | 福州瑞芯微电子有限公司 | 一种提高闪存写入速度的方法和装置 |
CN105224237A (zh) * | 2014-05-26 | 2016-01-06 | 华为技术有限公司 | 一种数据存储方法及装置 |
CN105242874A (zh) * | 2015-09-09 | 2016-01-13 | 天津瑞发科半导体技术有限公司 | 一种闪存存储器控制装置及一种闪存移动存储装置 |
-
2016
- 2016-11-28 CN CN201611061221.5A patent/CN106843748A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544118A (zh) * | 2012-07-17 | 2014-01-29 | 群联电子股份有限公司 | 存储器储存装置、其存储器控制器与数据写入方法 |
CN105224237A (zh) * | 2014-05-26 | 2016-01-06 | 华为技术有限公司 | 一种数据存储方法及装置 |
CN104503710A (zh) * | 2015-01-23 | 2015-04-08 | 福州瑞芯微电子有限公司 | 一种提高闪存写入速度的方法和装置 |
CN105242874A (zh) * | 2015-09-09 | 2016-01-13 | 天津瑞发科半导体技术有限公司 | 一种闪存存储器控制装置及一种闪存移动存储装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032512A (zh) * | 2018-07-10 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种实现数据追加写的方法、装置及设备 |
CN109491620A (zh) * | 2018-11-23 | 2019-03-19 | 柏科数据技术(深圳)股份有限公司 | 存储数据重写方法、装置、服务器及存储介质 |
CN109491620B (zh) * | 2018-11-23 | 2020-08-14 | 柏科数据技术(深圳)股份有限公司 | 存储数据重写方法、装置、服务器及存储介质 |
CN111984198A (zh) * | 2020-08-25 | 2020-11-24 | 北京一起教育信息咨询有限责任公司 | 消息队列实现方法、装置及电子设备 |
CN111984198B (zh) * | 2020-08-25 | 2024-02-27 | 北京一起教育信息咨询有限责任公司 | 消息队列实现方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9396030B2 (en) | Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications | |
US9465662B2 (en) | Processor with efficient work queuing | |
US10325219B2 (en) | Parallel retrieval of training data from multiple producers for machine learning systems | |
CN109308280A (zh) | 数据处理方法和相关设备 | |
CN105677580A (zh) | 访问缓存的方法和装置 | |
CN102195874A (zh) | 数据分组的预提取 | |
CN113641457A (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
CN106843748A (zh) | 一种提高数据写入移动存储设备速度的方法和系统 | |
CN103348320A (zh) | 通用图形处理单元中的计算资源管线化 | |
CN105793835B (zh) | 用于支持计算环境中的i/o虚拟化的系统和方法 | |
CN106095604A (zh) | 一种多核处理器的核间通信方法及装置 | |
US10303627B2 (en) | Hardware queue manager with water marking | |
US8806168B2 (en) | Producer-consumer data transfer using piecewise circular queue | |
CN103677674A (zh) | 一种数据处理方法及装置 | |
CN109471843A (zh) | 一种元数据缓存方法、系统及相关装置 | |
CN111124270A (zh) | 缓存管理的方法、设备和计算机程序产品 | |
CN101488919A (zh) | 存储地址分配方法和装置 | |
CN104346404B (zh) | 一种访问数据的方法、设备及系统 | |
CN113127382A (zh) | 用于追加写的数据读取方法、装置、设备和介质 | |
CN104407990B (zh) | 一种磁盘访问方法及装置 | |
CN107018170A (zh) | 一种数据同步方法和设备 | |
US20060106749A1 (en) | Method, apparatus, and computer program product for implementing enhanced circular queue using loop counts | |
CN113742131B (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
CN109213745A (zh) | 一种分布式文件存储方法、装置、处理器及存储介质 | |
CN107911317B (zh) | 一种报文调度方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170613 |
|
RJ01 | Rejection of invention patent application after publication |