CN110069557A - 数据传输方法、装置、设备及存储介质 - Google Patents
数据传输方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110069557A CN110069557A CN201910202064.2A CN201910202064A CN110069557A CN 110069557 A CN110069557 A CN 110069557A CN 201910202064 A CN201910202064 A CN 201910202064A CN 110069557 A CN110069557 A CN 110069557A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- storage layer
- target storage
- pending
- 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.)
- Granted
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 93
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000015654 memory Effects 0.000 claims description 83
- 230000006870 function Effects 0.000 claims description 50
- 238000005538 encapsulation Methods 0.000 claims description 24
- 238000009825 accumulation Methods 0.000 claims description 19
- 238000004458 analytical method Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 15
- 238000012546 transfer Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 241001269238 Data Species 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000002045 lasting effect Effects 0.000 description 2
- 239000002773 nucleotide Substances 0.000 description 2
- 125000003729 nucleotide group Chemical group 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及云处理领域,本发明公开了一种数据传输方法、装置、设备及存储介质,通过根据键值存储数据库LevelDB在消费者端设置目标存储层;在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输,可以有效提高资源利用率,提升数据写入读取速度,保证了数据完整性,有效避免了数据丢失。
Description
技术领域
本发明涉及云处理领域,尤其涉及一种数据传输方法、装置、设备及存储介质。
背景技术
在日常办公过程中,现阶段,各大公司开源项目中对于磁盘读写、数据库读写缓冲大多是利用消息队列实现,且多多是通过网络读写,但是存在资源利用率较低,可靠性较差且实现步骤比较繁琐的问题,如果本地磁盘损坏,则存在数据丢失的风险。
发明内容
本发明的主要目的在于提供一种数据传输方法、装置、设备及存储介质,旨在解决现有技术中磁盘读写存在资源利用率较低,可靠性较差且实现步骤比较繁琐的技术问题。
为实现上述目的,本发明提供一种数据传输方法,所述数据传输方法包括以下步骤:
根据键值存储数据库LevelDB在消费者端设置目标存储层;
在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;
在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输。
优选地,所述根据键值存储数据库LevelDB在消费者端设置目标存储层的步骤,包括:
在键值存储数据库LevelDB的基础上封装序列化功能API,根据所述序列化功能API设置虚拟存储层。
优选地,所述在键值存储数据库LevelDB的基础上封装序列化功能API,根据所述序列化功能API设置虚拟存储层的步骤,包括:
在键值存储数据库LevelDB的内存中分配出预设数量的目标内存空间;
根据预设排序函数和预设封装格式将序列化功能API与所述目标内存空间的操作代码结合,建立所述目标内存空间对应的操作接口;
将建立了操作接口的预设数量的目标内存空间作为目标存储层。
优选地,所述在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层的步骤,包括:
在接收完生产者端发送的待处理数据时,通过LevelDB将所述待处理数据以预设数据格式缓存至所述目标存储层。
优选地,所述在接收完生产者端发送的待处理数据时,通过LevelDB将所述待处理数据以预设数据格式缓存至所述目标存储层的步骤,包括:
在所述目标存储层中建立预设队列模式,根据所述预设队列模式持续接收生产者端发送的待处理数据;
在接收完所述生产者端发送的待处理数据时,在LevelDB中创建线程池,所述线程池中包括多个线程;
对所述待处理数据进行分析,获得所述待处理数据中各数据单元对应的数据类型;
将所述数据类型相同的数据单元分为一组,以组为单位根据预设传输策略为各组数据单元安排对应的目标线程。
根据预设数据格式对各组数据单元进行格式处理,将格式处理后的各组数据单元以对应的目标线程缓存至所述目标存储层。
优选地,所述在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输的步骤,包括:
在接收到数据消费指令时,根据所述数据消费指令在所述目标存储层中找到对应的数据索引,作为目标数据索引;
根据所述目标数据索引查找到对应的目标数据,通过所述目标存储层的输入输出接口将所述目标数据进行传输。
优选地,所述在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输的步骤之后,所述方法还包括:
获取所述目标数据的当前调用状态;
根据所述当前调用状态获取所述目标数据的缓存时间;
将所述缓存时间与预设缓存时间比较,确定所述目标数据对应的缓存是否为超时缓存;
在所述目标数据对应的缓存为超时缓存时,将所述目标数据对应的缓存在所述目标存储层中删除。
此外,为实现上述目的,本发明还提出一种数据传输设备,所述数据传输设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据传输程序,所述数据传输程序配置为实现如上文所述的数据传输方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有数据传输程序,所述数据传输程序被处理器执行时实现如上文所述的数据传输方法的步骤。
此外,为实现上述目的,本发明还提供一种数据传输装置,所述数据传输装置包括:设置模块、缓存模块和传输模块;
其中,所述设置模块,用于根据键值存储数据库LevelDB在消费者端设置目标存储层;
缓存模块,用于在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;
传输模块,用于在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输。
本发明提出的数据传输方法,通过根据键值存储数据库LevelDB在消费者端设置目标存储层;在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输,可以有效提高资源利用率,提升数据写入读取速度,保证了数据完整性,有效避免了数据丢失。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的数据传输设备结构示意图;
图2为本发明数据传输方法第一实施例的流程示意图;
图3为本发明数据传输方法第二实施例的流程示意图;
图4为本发明数据传输方法第三实施例的流程示意图;
图5为本发明数据传输装置第一实施例的功能模块图。
本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的解决方案主要是:本发明通过根据键值存储数据库LevelDB在消费者端设置目标存储层;在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输,可以有效提高资源利用率,提升数据写入读取速度,保证了数据完整性,有效避免了数据丢失,解决了现有技术中磁盘读写存在资源利用率较低,可靠性较差且实现步骤比较繁琐的技术问题。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的数据传输设备结构示意图。
如图1所示,该数据传输设备可以包括:处理器1001,例如中央处理器(CentralProcessingUnit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccessMemory,RAM)存储器,也可以是稳定的存储器(Non-volatileMemory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的数据传输设备结构并不构成对该数据传输设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作装置、网络通信模块、用户端接口模块以及数据传输程序。
根据键值存储数据库LevelDB在消费者端设置目标存储层;
在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;
在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输。
进一步地,处理器1001可以调用存储器1005中存储的数据传输程序,还执行以下操作:
在键值存储数据库LevelDB的基础上封装序列化功能API,根据所述序列化功能API设置虚拟存储层。
进一步地,处理器1001可以调用存储器1005中存储的数据传输程序,还执行以下操作:
在键值存储数据库LevelDB的内存中分配出预设数量的目标内存空间;
根据预设排序函数和预设封装格式将序列化功能API与所述目标内存空间的操作代码结合,建立所述目标内存空间对应的操作接口;
将建立了操作接口的预设数量的目标内存空间作为目标存储层。
进一步地,处理器1001可以调用存储器1005中存储的数据传输程序,还执行以下操作:
在接收完生产者端发送的待处理数据时,通过LevelDB将所述待处理数据以预设数据格式缓存至所述目标存储层。
进一步地,处理器1001可以调用存储器1005中存储的数据传输程序,还执行以下操作:
在所述目标存储层中建立预设队列模式,根据所述预设队列模式持续接收生产者端发送的待处理数据;
在接收完所述生产者端发送的待处理数据时,在LevelDB中创建线程池,所述线程池中包括多个线程;
对所述待处理数据进行分析,获得所述待处理数据中各数据单元对应的数据类型;
将所述数据类型相同的数据单元分为一组,以组为单位根据预设传输策略为各组数据单元安排对应的目标线程。
根据预设数据格式对各组数据单元进行格式处理,将格式处理后的各组数据单元以对应的目标线程缓存至所述目标存储层。
进一步地,处理器1001可以调用存储器1005中存储的数据传输程序,还执行以下操作:
在接收到数据消费指令时,根据所述数据消费指令在所述目标存储层中找到对应的数据索引,作为目标数据索引;
根据所述目标数据索引查找到对应的目标数据,通过所述目标存储层的输入输出接口将所述目标数据进行传输。
进一步地,处理器1001可以调用存储器1005中存储的数据传输程序,还执行以下操作:
获取所述目标数据的当前调用状态;
根据所述当前调用状态获取所述目标数据的缓存时间;
将所述缓存时间与预设缓存时间比较,确定所述目标数据对应的缓存是否为超时缓存;
在所述目标数据对应的缓存为超时缓存时,将所述目标数据对应的缓存在所述目标存储层中删除。
本实施例通过上述方案,通过根据键值存储数据库LevelDB在消费者端设置目标存储层;在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输,可以有效提高资源利用率,提升数据写入读取速度,保证了数据完整性,有效避免了数据丢失。
基于上述硬件结构,提出本发明数据传输方法实施例。
参照图2,图2为本发明数据传输方法第一实施例的流程示意图。
在第一实施例中,所述数据传输方法包括以下步骤:
步骤S10、根据键值存储数据库LevelDB在消费者端设置目标存储层。
需要说明的是,所述键值存储数据库LevelDB是能够处理十亿级别规模键值Key-Value型数据持久性存储的C++程序库,LevelDB在存储数据时,是根据记录的key值有序存储的,即相邻的key值在存储文件中是依次顺序存储的,而应用可以自定义key大小比较函数,LevelDB可以按照用户自定义的比较函数依序存储键值记录;通过LevelDB可以在消费者端设置目标存储层,用于存储待处理数据。
所述步骤S10具体包括以下步骤:
在键值存储数据库LevelDB的基础上封装序列化功能API,根据所述序列化功能API设置虚拟存储层。
应当理解的是,所述序列化功能应用程序编程接口(Application ProgrammingInterface,API)为具有序列功能的预先设定的函数,一般的,可以根据键值存储数据库LevelDB在消费者端的本地磁盘中设置目标存储层,在LevelDB的基础上封装序列化功能API,通过所述本地磁盘作为介质,可以为缓冲后续磁盘输入输出接口的目标数据进行传输,封装的目的是为了不修改LevelDB的代码,并且方便对所述存储层中的数据进行调用,可以有效提高资源利用率,提升数据写入读取速度,保证了数据完整性。
进一步地,所述在键值存储数据库LevelDB的基础上封装序列化功能API,根据所述序列化功能API设置虚拟存储层具体包括以下步骤:
在键值存储数据库LevelDB的内存中分配出预设数量的目标内存空间;
根据预设排序函数和预设封装格式将序列化功能API与所述目标内存空间的操作代码结合,建立所述目标内存空间对应的操作接口;
将建立了操作接口的预设数量的目标内存空间作为目标存储层。
可以理解的是,可以在键值存储数据库LevelDB的内存中分配出预设数量的目标内存空间,所述预设数量为预先设置的内存空间对应的数量,可以是在levelDB中的内存MemTable中分配出预设数量的目标内存空间,所述预设数量可以根据历史进程数量确定;
应当理解的是,所述预设排序函数为预先设置的排序函数,所述预设封装格式为预先设置的封装格式,根据预设排序函数和预设封装格式将序列化功能API与目标内存空间的操作代码结合,建立目标内存空间的操作接口,将多个建立了操作接口的目标内存空间作为目标存储层,可以是获得目标内存空间的操作数据,将所述操作数据分解成字节流,根据预设排序函数将序列化功能API与目标内存空间的操作代码进行有机结合,通过操作代码的结合,可以建立与所述目标内存空间对应的操作接口,所述序列化功能API可以包括但不限于插入PUT接口,获取GET接口,设置SET接口,删除DELETE接口,将所述虚拟存储层与所述消费者端的本地磁盘进行关联,将关联之后的虚拟存储层作为所述消费者端的目标存储层。
步骤S20、在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层。
可以理解的是,在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层,所述生产者端和所述消费者端都可以是一堆线程,将所述待处理数据缓存至所述目标存储层后,可以在后续消费指令到达时进行数据传输,所述目标存储层可以通过本地磁盘作为介质,作为消息队列网络读写的蓄水池。
步骤S30、在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输。
应当理解的是,在接收到数据消费指令时,可以根据所述目标存储层的输入输出接口将对应的目标数据进行传输,能够有效提高资源利用率。
本实施例通过上述方案,通过根据键值存储数据库LevelDB在消费者端设置目标存储层;在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输,可以有效提高资源利用率,提升数据写入读取速度,保证了数据完整性,有效避免了数据丢失。
进一步地,图3为本发明数据传输方法第二实施例的流程示意图,如图3所示,基于第一实施例提出本发明数据传输方法第二实施例,在本实施例中,所述步骤S20,具体包括以下步骤:
步骤S21、在接收完生产者端发送的待处理数据时,通过LevelDB将所述待处理数据以预设数据格式缓存至所述目标存储层。
需要说明的是,所述预设数据格式为预先设置是数据格式,在接收完生产者端发送的待处理数据时,可以通过LevelDB将所述待处理数据以预设数据格式缓存至所述目标存储层。
在具体实现中,通过LevelDB将所述待处理数据根据预设数据格式缓存至所述目标存储层中,同时可以记录启示缓存时间以及当前调用状态;数据通过LevelDB缓冲到磁盘上,所以即使下游的落地失败,数据仍然会保存在磁盘上,因为利用LevelDB本身的lsm策略,写的吞吐量可以达到近乎append写效率,而非低效的随机写的效率。
进一步地,所述步骤S21包括以下步骤:
在所述目标存储层中建立预设队列模式,根据所述预设队列模式持续接收生产者端发送的待处理数据;
在接收完所述生产者端发送的待处理数据时,在LevelDB中创建线程池,所述线程池中包括多个线程;
对所述待处理数据进行分析,获得所述待处理数据中各数据单元对应的数据类型;
将所述数据类型相同的数据单元分为一组,以组为单位根据预设传输策略为各组数据单元安排对应的目标线程。
根据预设数据格式对各组数据单元进行格式处理,将格式处理后的各组数据单元以对应的目标线程缓存至所述目标存储层。
应当理解的是,所述预设队列模式为预先设置的队列,根据所述预设队列模式持续接收生产者端发送的待处理数据,在接收完所述生产者端发送的待处理数据时,可以在LevelDB中创建线程池,所述线程池中包括多个线程,进而根据所述待处理数据的数据类型进行数据缓存。
可以理解的是,根据预设队列模式持续接收所述生产者端发送的多个待处理数据;对于生产者会生成任务并持久化在存储上,消费者会不断的消费存储层上的数据,并往下游持久或者当即消费计算,接收待处理数据是一个持续的过程,持续接收生产者端发送的待处理数据,在将所述待处理数据缓存至所述目标存储层之前,还需要对所述待处理数据进行分析,获得所述待处理数据的数据类型,根据所述数据类型在所述目标存储层中建立对应的数据索引,并将数据索引进行存储,所述数据索引与所述待处理数据对应,不同的数据类型对应不同的数据索引,通过存储数据建立索引,可以实现在海量数据中快速定位需求数据。
应当理解的是,在将所述待处理数据缓存至所述目标存储层之前,还需要在LevelDB中创建线程池,线程池中包含有多个线程,将数据类型相同的待处理数据分为一组,以组为单位根据预设传输策略安排对应的线程传输同一组的待处理数据,安排对应的线程可以是通过预设哈希算法将数据在各线程中分配,进而将对应的待处理数据与线程匹配对应,线程传输可以是同步线程传输,也可以是异步线程传输,当然也可以是其他传输方式,本实施例对此不加以限制。
本实施例通过上述方案,通过在所述目标存储层中建立预设队列模式,根据所述预设队列模式持续接收生产者端发送的待处理数据;在接收完所述生产者端发送的待处理数据时,在LevelDB中创建线程池,所述线程池中包括多个线程;对所述待处理数据进行分析,获得所述待处理数据中各数据单元对应的数据类型;将所述数据类型相同的数据单元分为一组,以组为单位根据预设传输策略为各组数据单元安排对应的目标线程;根据预设数据格式对各组数据单元进行格式处理,将格式处理后的各组数据单元以对应的目标线程缓存至所述目标存储层,可以有效提高资源利用率,提升数据写入读取速度,保证了数据完整性,有效避免了数据丢失。
进一步地,图4为本发明数据传输方法第三实施例的流程示意图,如图4所示,基于第二实施例提出本发明数据传输方法第三实施例,在本实施例中,所述步骤S30包括以下步骤:
步骤S31、在接收到数据消费指令时,根据所述数据消费指令在所述目标存储层中找到对应的数据索引,作为目标数据索引。
需要说明的是,所述数据消费指令为所述消费者端生成的消费指令,通过查找所述目标存储层中的数据索引,作为所述目标数据索引。
步骤S32、根据所述目标数据索引查找到对应的目标数据,通过所述目标存储层的输入输出接口将所述目标数据进行传输。
应当理解的是,根据所述数据消费指令在所述目标存储层中找到对应的索引,根据所述目标索引可以查到对应的目标数据,再通过输入输出口可以对所述目标数据进行传输,可以有效提高资源利用率,提升数据写入读取速度。
进一步地,所述步骤S30之后,所述方法还包括以下步骤:
获取所述目标数据的当前调用状态;
根据所述当前调用状态获取所述目标数据的缓存时间;
将所述缓存时间与预设缓存时间比较,确定所述目标数据对应的缓存是否为超时缓存;
在所述目标数据对应的缓存为超时缓存时,将所述目标数据对应的缓存在所述目标存储层中删除。
需要说明的是,所述当前调用状态为所述目标数据当前的调用状态,根据所述调用状态可以分析出所述目标数据的缓存时间,所述预设缓存时间为预先设置的缓存时间,根据所述缓存时间与所述预设缓存时间比较结果,可以确定所述目标数据对应的缓存是否为超时缓存,将所述目标数据对应的缓存在所述目标存储层中删除。
可以理解的是,在对应的目标数据传输完成后,将所述目标数据对应的缓存在所述目标存储层中删除,可以通过检测所述目标数据的当前调用状态确定所述目标数据是否传输完成;通过所述开始缓存时间和当前时间可以确定不同的待处理数据的缓存时间,通过将所述缓存时间与预设超时缓存时间比较,可以确定已经超时缓存的数据,即可以认定已经超时缓存的数据为无用数据,此时可以将无用数据对应的缓存从所述目标存储层中清楚,从而避免了目标存储层的数据冗杂,提高目标存储层存储空间的利用率。
本实施例通过上述方案,通过在接收到数据消费指令时,根据所述数据消费指令在所述目标存储层中找到对应的数据索引,作为目标数据索引;根据所述目标数据索引查找到对应的目标数据,通过所述目标存储层的输入输出接口将所述目标数据进行传输,可以有效提高资源利用率,提升数据写入读取速度,保证了数据完整性,有效避免了数据丢失。
基于上述数据传输方法的实施例,本发明进一步提供一种数据传输装置。
参照图5,图5为本发明数据传输装置第一实施例的功能模块图。
本发明数据传输装置第一实施例中,该数据传输装置包括:设置模块10、缓存模块20和传输模块30;
其中,所述设置模块10,用于根据键值存储数据库LevelDB在消费者端设置目标存储层。
需要说明的是,所述键值存储数据库LevelDB是能够处理十亿级别规模键值Key-Value型数据持久性存储的C++程序库,LevelDB在存储数据时,是根据记录的key值有序存储的,即相邻的key值在存储文件中是依次顺序存储的,而应用可以自定义key大小比较函数,LevelDB可以按照用户自定义的比较函数依序存储键值记录;通过LevelDB可以在消费者端设置目标存储层,用于存储待处理数据。
进一步地,所述设置模块10包括:
封装模块,用于在键值存储数据库LevelDB的基础上封装序列化功能API,根据所述序列化功能API设置虚拟存储层。
应当理解的是,所述序列化功能应用程序编程接口(Application ProgrammingInterface,API)为具有序列功能的预先设定的函数,一般的,可以根据键值存储数据库LevelDB在消费者端的本地磁盘中设置目标存储层,在LevelDB的基础上封装序列化功能API,通过所述本地磁盘作为介质,可以为缓冲后续磁盘输入输出接口的目标数据进行传输,封装的目的是为了不修改LevelDB的代码,并且方便对所述存储层中的数据进行调用,可以有效提高资源利用率,提升数据写入读取速度,保证了数据完整性。
进一步地,所述封装模块包括:
空间分配模块,用于在键值存储数据库LevelDB的内存中分配出预设数量的目标内存空间。
接口建立模块,用于根据预设排序函数和预设封装格式将序列化功能API与所述目标内存空间的操作代码结合,建立所述目标内存空间对应的操作接口。
存储层建立模块,用于将建立了操作接口的预设数量的目标内存空间作为目标存储层。
可以理解的是,可以在键值存储数据库LevelDB的内存中分配出预设数量的目标内存空间,所述预设数量为预先设置的内存空间对应的数量,可以是在levelDB中的内存MemTable中分配出预设数量的目标内存空间,所述预设数量可以根据历史进程数量确定;
应当理解的是,所述预设排序函数为预先设置的排序函数,所述预设封装格式为预先设置的封装格式,根据预设排序函数和预设封装格式将序列化功能API与目标内存空间的操作代码结合,建立目标内存空间的操作接口,将多个建立了操作接口的目标内存空间作为目标存储层,可以是获得目标内存空间的操作数据,将所述操作数据分解成字节流,根据预设排序函数将序列化功能API与目标内存空间的操作代码进行有机结合,通过操作代码的结合,可以建立与所述目标内存空间对应的操作接口,所述序列化功能API可以包括但不限于插入PUT接口,获取GET接口,设置SET接口,删除DELETE接口,将所述虚拟存储层与所述消费者端的本地磁盘进行关联,将关联之后的虚拟存储层作为所述消费者端的目标存储层。
缓存模块20,用于在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层。
可以理解的是,在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层,所述生产者端和所述消费者端都可以是一堆线程,将所述待处理数据缓存至所述目标存储层后,可以在后续消费指令到达时进行数据传输,所述目标存储层可以通过本地磁盘作为介质,作为消息队列网络读写的蓄水池。
进一步地,所述缓存模块20包括:
格式缓存模块,用于在接收完生产者端发送的待处理数据时,通过LevelDB将所述待处理数据以预设数据格式缓存至所述目标存储层。
需要说明的是,所述预设数据格式为预先设置是数据格式,在接收完生产者端发送的待处理数据时,可以通过LevelDB将所述待处理数据以预设数据格式缓存至所述目标存储层。
在具体实现中,通过LevelDB将所述待处理数据根据预设数据格式缓存至所述目标存储层中,同时可以记录启示缓存时间以及当前调用状态;数据通过LevelDB缓冲到磁盘上,所以即使下游的落地失败,数据仍然会保存在磁盘上,因为利用LevelDB本身的lsm策略,写的吞吐量可以达到近乎append写效率,而非低效的随机写的效率。
进一步地,所述格式缓存模块包括:
队列接收模块,用于在所述目标存储层中建立预设队列模式,根据所述预设队列模式持续接收生产者端发送的待处理数据;
线程池创建模块,用于在接收完所述生产者端发送的待处理数据时,在LevelDB中创建线程池,所述线程池中包括多个线程;
数据分析模块,用于对所述待处理数据进行分析,获得所述待处理数据中各数据单元对应的数据类型;
线程安排模块,用于将所述数据类型相同的数据单元分为一组,以组为单位根据预设传输策略为各组数据单元安排对应的目标线程。
格式处理模块,用于根据预设数据格式对各组数据单元进行格式处理,将格式处理后的各组数据单元以对应的目标线程缓存至所述目标存储层。
应当理解的是,所述预设队列模式为预先设置的队列,根据所述预设队列模式持续接收生产者端发送的待处理数据,在接收完所述生产者端发送的待处理数据时,可以在LevelDB中创建线程池,所述线程池中包括多个线程,进而根据所述待处理数据的数据类型进行数据缓存。
可以理解的是,根据预设队列模式持续接收所述生产者端发送的多个待处理数据;对于生产者会生成任务并持久化在存储上,消费者会不断的消费存储层上的数据,并往下游持久或者当即消费计算,接收待处理数据是一个持续的过程,持续接收生产者端发送的待处理数据,在将所述待处理数据缓存至所述目标存储层之前,还需要对所述待处理数据进行分析,获得所述待处理数据的数据类型,根据所述数据类型在所述目标存储层中建立对应的数据索引,并将数据索引进行存储,所述数据索引与所述待处理数据对应,不同的数据类型对应不同的数据索引,通过存储数据建立索引,可以实现在海量数据中快速定位需求数据。
应当理解的是,在将所述待处理数据缓存至所述目标存储层之前,还需要在LevelDB中创建线程池,线程池中包含有多个线程,将数据类型相同的待处理数据分为一组,以组为单位根据预设传输策略安排对应的线程传输同一组的待处理数据,安排对应的线程可以是通过预设哈希算法将数据在各线程中分配,进而将对应的待处理数据与线程匹配对应,线程传输可以是同步线程传输,也可以是异步线程传输,当然也可以是其他传输方式,本实施例对此不加以限制。
传输模块30,用于在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输。
应当理解的是,在接收到数据消费指令时,可以根据所述目标存储层的输入输出接口将对应的目标数据进行传输,能够有效提高资源利用率。
进一步地,所述传输模块30包括:
索引模块,用于在接收到数据消费指令时,根据所述数据消费指令在所述目标存储层中找到对应的数据索引,作为目标数据索引。
需要说明的是,所述数据消费指令为所述消费者端生成的消费指令,通过查找所述目标存储层中的数据索引,作为所述目标数据索引。
查找模块,用于根据所述目标数据索引查找到对应的目标数据,通过所述目标存储层的输入输出接口将所述目标数据进行传输。
应当理解的是,根据所述数据消费指令在所述目标存储层中找到对应的索引,根据所述目标索引可以查到对应的目标数据,再通过输入输出口可以对所述目标数据进行传输,可以有效提高资源利用率,提升数据写入读取速度。
进一步地,所述传输模块30还包括:
调用状态获取模块,用于获取所述目标数据的当前调用状态;
缓存时间确定模块,用于根据所述当前调用状态获取所述目标数据的缓存时间;
缓存比较模块,用于将所述缓存时间与预设缓存时间比较,确定所述目标数据对应的缓存是否为超时缓存;
删除模块,用于在所述目标数据对应的缓存为超时缓存时,将所述目标数据对应的缓存在所述目标存储层中删除。
需要说明的是,所述当前调用状态为所述目标数据当前的调用状态,根据所述调用状态可以分析出所述目标数据的缓存时间,所述预设缓存时间为预先设置的缓存时间,根据所述缓存时间与所述预设缓存时间比较结果,可以确定所述目标数据对应的缓存是否为超时缓存,将所述目标数据对应的缓存在所述目标存储层中删除。
可以理解的是,在对应的目标数据传输完成后,将所述目标数据对应的缓存在所述目标存储层中删除,可以通过检测所述目标数据的当前调用状态确定所述目标数据是否传输完成;通过所述开始缓存时间和当前时间可以确定不同的待处理数据的缓存时间,通过将所述缓存时间与预设超时缓存时间比较,可以确定已经超时缓存的数据,即可以认定已经超时缓存的数据为无用数据,此时可以将无用数据对应的缓存从所述目标存储层中清楚,从而避免了目标存储层的数据冗杂,提高目标存储层存储空间的利用率。
本实施例通过上述方案,通过根据键值存储数据库LevelDB在消费者端设置目标存储层;在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输,可以有效提高资源利用率,提升数据写入读取速度,保证了数据完整性,有效避免了数据丢失。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有数据传输程序,所述数据传输程序被处理器执行时实现如下操作:
根据键值存储数据库LevelDB在消费者端设置目标存储层;
在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;
在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输。
进一步地,所述数据传输程序被处理器执行时还实现如下操作:
在键值存储数据库LevelDB的基础上封装序列化功能API,根据所述序列化功能API设置虚拟存储层。
进一步地,所述数据传输程序被处理器执行时还实现如下操作:
在键值存储数据库LevelDB的内存中分配出预设数量的目标内存空间;
根据预设排序函数和预设封装格式将序列化功能API与所述目标内存空间的操作代码结合,建立所述目标内存空间对应的操作接口;
将建立了操作接口的预设数量的目标内存空间作为目标存储层。
进一步地,所述数据传输程序被处理器执行时还实现如下操作:
在接收完生产者端发送的待处理数据时,通过LevelDB将所述待处理数据以预设数据格式缓存至所述目标存储层。
进一步地,所述数据传输程序被处理器执行时还实现如下操作:
在所述目标存储层中建立预设队列模式,根据所述预设队列模式持续接收生产者端发送的待处理数据;
在接收完所述生产者端发送的待处理数据时,在LevelDB中创建线程池,所述线程池中包括多个线程;
对所述待处理数据进行分析,获得所述待处理数据中各数据单元对应的数据类型;
将所述数据类型相同的数据单元分为一组,以组为单位根据预设传输策略为各组数据单元安排对应的目标线程。
根据预设数据格式对各组数据单元进行格式处理,将格式处理后的各组数据单元以对应的目标线程缓存至所述目标存储层。
进一步地,所述数据传输程序被处理器执行时还实现如下操作:
在接收到数据消费指令时,根据所述数据消费指令在所述目标存储层中找到对应的数据索引,作为目标数据索引;
根据所述目标数据索引查找到对应的目标数据,通过所述目标存储层的输入输出接口将所述目标数据进行传输。
进一步地,所述数据传输程序被处理器执行时还实现如下操作:
获取所述目标数据的当前调用状态;
根据所述当前调用状态获取所述目标数据的缓存时间;
将所述缓存时间与预设缓存时间比较,确定所述目标数据对应的缓存是否为超时缓存;
在所述目标数据对应的缓存为超时缓存时,将所述目标数据对应的缓存在所述目标存储层中删除。
本实施例通过上述方案,通过根据键值存储数据库LevelDB在消费者端设置目标存储层;在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输,可以有效提高资源利用率,提升数据写入读取速度,保证了数据完整性,有效避免了数据丢失。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据传输方法,其特征在于,所述方法包括:
根据键值存储数据库LevelDB在消费者端设置目标存储层;
在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;
在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输。
2.如权利要求1所述的方法,其特征在于,所述根据键值存储数据库LevelDB在消费者端设置目标存储层的步骤,包括:
在键值存储数据库LevelDB的基础上封装序列化功能API,根据所述序列化功能API设置虚拟存储层。
3.如权利要求2所述的方法,其特征在于,所述在键值存储数据库LevelDB的基础上封装序列化功能API,根据所述序列化功能API设置虚拟存储层的步骤,包括:
在键值存储数据库LevelDB的内存中分配出预设数量的目标内存空间;
根据预设排序函数和预设封装格式将序列化功能API与所述目标内存空间的操作代码结合,建立所述目标内存空间对应的操作接口;
将建立了操作接口的预设数量的目标内存空间作为目标存储层。
4.如权利要求3所述的方法,其特征在于,所述在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层的步骤,包括:
在接收完生产者端发送的待处理数据时,通过LevelDB将所述待处理数据以预设数据格式缓存至所述目标存储层。
5.如权利要求4所述的方法,其特征在于,所述在接收完生产者端发送的待处理数据时,通过LevelDB将所述待处理数据以预设数据格式缓存至所述目标存储层的步骤,包括:
在所述目标存储层中建立预设队列模式,根据所述预设队列模式持续接收生产者端发送的待处理数据;
在接收完所述生产者端发送的待处理数据时,在LevelDB中创建线程池,所述线程池中包括多个线程;
对所述待处理数据进行分析,获得所述待处理数据中各数据单元对应的数据类型;
将所述数据类型相同的数据单元分为一组,以组为单位根据预设传输策略为各组数据单元安排对应的目标线程。
根据预设数据格式对各组数据单元进行格式处理,将格式处理后的各组数据单元以对应的目标线程缓存至所述目标存储层。
6.如权利要求5所述的方法,其特征在于,所述在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输的步骤,包括:
在接收到数据消费指令时,根据所述数据消费指令在所述目标存储层中找到对应的数据索引,作为目标数据索引;
根据所述目标数据索引查找到对应的目标数据,通过所述目标存储层的输入输出接口将所述目标数据进行传输。
7.如权利要求1-6中任一项所述的方法,其特征在于,所述在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输的步骤之后,所述方法还包括:
获取所述目标数据的当前调用状态;
根据所述当前调用状态获取所述目标数据的缓存时间;
将所述缓存时间与预设缓存时间比较,确定所述目标数据对应的缓存是否为超时缓存;
在所述目标数据对应的缓存为超时缓存时,将所述目标数据对应的缓存在所述目标存储层中删除。
8.一种数据传输装置,其特征在于,所述装置包括:设置模块、缓存模块和传输模块;
其中,所述设置模块,用于根据键值存储数据库LevelDB在消费者端设置目标存储层;
缓存模块,用于在接收完生产者端发送的待处理数据时,将所述待处理数据缓存至所述目标存储层;
传输模块,用于在接收到数据消费指令时,通过所述目标存储层的输入输出接口将对应的目标数据进行传输。
9.一种数据传输设备,其特征在于,所述数据传输设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据传输程序,所述数据传输程序配置为实现如权利要求1至7中任一项所述的数据传输方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有数据传输程序,所述数据传输程序被处理器执行时实现如权利要求1至7中任一项所述的数据传输方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910202064.2A CN110069557B (zh) | 2019-03-16 | 2019-03-16 | 数据传输方法、装置、设备及存储介质 |
PCT/CN2019/118537 WO2020186791A1 (zh) | 2019-03-16 | 2019-11-14 | 数据传输方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910202064.2A CN110069557B (zh) | 2019-03-16 | 2019-03-16 | 数据传输方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110069557A true CN110069557A (zh) | 2019-07-30 |
CN110069557B CN110069557B (zh) | 2023-10-20 |
Family
ID=67365276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910202064.2A Active CN110069557B (zh) | 2019-03-16 | 2019-03-16 | 数据传输方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110069557B (zh) |
WO (1) | WO2020186791A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767281A (zh) * | 2020-05-15 | 2020-10-13 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN112422243A (zh) * | 2020-11-22 | 2021-02-26 | 广州技象科技有限公司 | 基于进程优化的数据传输方法和装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486421B (zh) * | 2020-12-16 | 2024-05-28 | 上海达梦数据库有限公司 | 一种数据存储方法、装置、电子设备及存储介质 |
CN113885802A (zh) * | 2021-09-30 | 2022-01-04 | 杭州贝嘟科技有限公司 | 数据传输方法、装置、电子装置和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239252A (zh) * | 2013-06-21 | 2014-12-24 | 华为技术有限公司 | 数据存储系统的数据传输方法、装置及系统 |
CN106254489A (zh) * | 2016-08-16 | 2016-12-21 | 王淼 | 一种无文件传输的云渲染系统及其方法 |
US9870168B1 (en) * | 2014-12-22 | 2018-01-16 | Emc Corporation | Key-value store with internal key-value storage interface |
US20180322301A1 (en) * | 2014-10-13 | 2018-11-08 | Amazon Technologies, Inc. | Commit and rollback of data streams provided by partially trusted entities |
CN108897613A (zh) * | 2018-05-07 | 2018-11-27 | 广西英腾教育科技股份有限公司 | 数据处理方法、系统及计算机设备 |
CN108965355A (zh) * | 2017-05-18 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 用于数据传输的方法、装置及计算机可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2509505A (en) * | 2013-01-04 | 2014-07-09 | Ibm | Issuing a write to a secondary storage device, when a write to a primary storage device takes too long |
CN108021688B (zh) * | 2017-12-15 | 2019-05-21 | 北京明朝万达科技股份有限公司 | 一种数据处理方法及装置 |
CN108595121B (zh) * | 2018-04-17 | 2021-03-02 | 湖北文理学院 | 数据存储方法和装置 |
-
2019
- 2019-03-16 CN CN201910202064.2A patent/CN110069557B/zh active Active
- 2019-11-14 WO PCT/CN2019/118537 patent/WO2020186791A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239252A (zh) * | 2013-06-21 | 2014-12-24 | 华为技术有限公司 | 数据存储系统的数据传输方法、装置及系统 |
US20180322301A1 (en) * | 2014-10-13 | 2018-11-08 | Amazon Technologies, Inc. | Commit and rollback of data streams provided by partially trusted entities |
US9870168B1 (en) * | 2014-12-22 | 2018-01-16 | Emc Corporation | Key-value store with internal key-value storage interface |
CN106254489A (zh) * | 2016-08-16 | 2016-12-21 | 王淼 | 一种无文件传输的云渲染系统及其方法 |
CN108965355A (zh) * | 2017-05-18 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 用于数据传输的方法、装置及计算机可读存储介质 |
CN108897613A (zh) * | 2018-05-07 | 2018-11-27 | 广西英腾教育科技股份有限公司 | 数据处理方法、系统及计算机设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767281A (zh) * | 2020-05-15 | 2020-10-13 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN112422243A (zh) * | 2020-11-22 | 2021-02-26 | 广州技象科技有限公司 | 基于进程优化的数据传输方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020186791A1 (zh) | 2020-09-24 |
CN110069557B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110069557A (zh) | 数据传输方法、装置、设备及存储介质 | |
CN105117351B (zh) | 向缓存写入数据的方法及装置 | |
CN101162441B (zh) | 数据的存取装置和方法 | |
CN104238962B (zh) | 向缓存中写入数据的方法及装置 | |
CN110134514A (zh) | 基于异构内存的可扩展内存对象存储系统 | |
CN109388590B (zh) | 提升多通道dma访问性能的动态缓存块管理方法和装置 | |
US20080222380A1 (en) | System and method for dynamic memory allocation | |
CN104778222B (zh) | 基于usb存储设备的媒体库建立及更新方法 | |
CN102446139B (zh) | 一种数据存储方法及装置 | |
CN110334035A (zh) | 数据储存系统的控制单元以及逻辑至物理映射表更新方法 | |
CN103514210B (zh) | 小文件处理方法及装置 | |
CN105468642A (zh) | 数据的存储方法及装置 | |
CN109240607B (zh) | 一种文件读取方法和装置 | |
CN106383666B (zh) | 一种数据存储方法及装置 | |
CN101983376A (zh) | 访问装置、信息记录装置、信息记录系统、文件管理方法和程序 | |
US20210271640A1 (en) | File loading method and apparatus, electronic device, and storage medium | |
CN103425435B (zh) | 磁盘存储方法及磁盘存储系统 | |
CN104750432B (zh) | 一种数据存储方法及装置 | |
CN109471843A (zh) | 一种元数据缓存方法、系统及相关装置 | |
CN108664577B (zh) | 一种基于flash空闲区的文件管理方法及系统 | |
CN104572505A (zh) | 一种保证海量数据缓存最终一致性的系统及方法 | |
US11385900B2 (en) | Accessing queue data | |
CN107329695A (zh) | 一种分布式存储内存管理方法、系统及计算机存储介质 | |
CN101783814A (zh) | 海量存储系统的元数据存储方法 | |
CN107632786A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |