CN110569112A - 日志数据写入方法及对象存储守护装置 - Google Patents
日志数据写入方法及对象存储守护装置 Download PDFInfo
- Publication number
- CN110569112A CN110569112A CN201910863963.7A CN201910863963A CN110569112A CN 110569112 A CN110569112 A CN 110569112A CN 201910863963 A CN201910863963 A CN 201910863963A CN 110569112 A CN110569112 A CN 110569112A
- Authority
- CN
- China
- Prior art keywords
- wal
- transaction
- thread
- configuration information
- partition
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Abstract
本发明公开了一种日志数据写入方法及对象存储守护装置,可以使CEPH的KV数据库中的WAL模式处于关闭状态,将所述数据写入请求所请求写入的数据封装为至少一个事务;根据KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区。本发明通过WAL并行模式的配置信息中的WAL线程池中的WAL线程数量,使得OSD可以使用多个WAL线程来并行对多个事务进行处理,加快了事务的处理速度。
Description
技术领域
本发明涉及分布式存储技术领域,尤其涉及一种日志数据写入方法及对象存储守护装置。
背景技术
CEPH(又称Ceph File System)是开源的统一分布式存储系统,是目前最主流的开源存储项目之一。
现有的CEPH可以将数据首先写入KV(Key-value,键-值)数据库中,然后再将KV数据库中的数据写入磁盘中以进行本地存储。为了在存储出错时可以进行数据恢复,现有的CEPH在KV数据库中内置了WAL(Write-Ahead Logging,预写日志系统)模式,该WAL模式可以将客户端发送的数据写入WAL分区中以便存储出错时进行数据恢复。但是,现有的WAL模式通过一个WAL线程来用串行的方式处理WAL队列中的各事务,这大大降低了数据写入的速度。同时,由于在WAL分区写入完成后才会进行KV数据库的写入,因此现有技术也会延误KV数据库中数据的写入。
发明内容
鉴于上述问题,本发明提供一种克服上述问题或者至少部分地解决上述问题的一种日志数据写入方法及对象存储守护装置,技术方案如下:
一种日志数据写入方法,应用于CEPH的OSD中,所述CEPH的KV数据库中的WAL模式处于关闭状态,所述方法包括:
所述OSD获得客户端发送的数据写入请求;
所述OSD将所述数据写入请求所请求写入的数据封装为至少一个事务;
所述OSD根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区。
可选的,所述WAL并行模式的配置信息中包括:WAL线程池中的WAL线程数量和WAL分区的流量要求,所述使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区,包括:
对根据所述配置信息设置的WAL线程池中的任一空闲WAL线程:当该空闲WAL线程对应的WAL队列中有新事务时,判断该新事务所需写入的第一WAL分区是否满足所述WAL分区的流量要求,如果是,则使用该空闲WAL线程将该新事务写入所述第一WAL分区,其中,所述WAL线程池中的WAL线程数量根据WAL并行模式的配置信息设定。
可选的,所述WAL并行模式的配置信息中包括:WAL线程的自杀时长,所述方法还包括:
如果所述WAL线程在所述自杀时长内未成功处理所述事务,则退出所述WAL线程。
可选的,在所述OSD将所述数据写入请求所请求写入的数据封装为至少一个事务之前,所述方法还包括:
确定所述数据写入请求所请求写入的数据对应的至少一个PG;
为确定的各PG添加PG锁。
可选的,所述使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区,包括:
对任一事务:根据该事务中的数据对应的PG及所述WAL线程池中的WAL线程数量,确定需处理该事务的一个WAL线程;
使用确定的所述一个WAL线程对该事务进行处理,以将各该事务写入WAL分区。
可选的,还包括:
在将各所述事务写入WAL分区后,向所述客户端或其他OSD返回数据已成功写入的响应。
一种对象存储守护装置,位于CEPH中,所述CEPH的KV数据库中的WAL模式处于关闭状态,所述装置包括:请求获得单元、事务封装单元和事务提交单元,
所述请求获得单元,用于获得客户端发送的数据写入请求;
所述事务封装单元,用于将所述数据写入请求所请求写入的数据封装为至少一个事务;
所述事务提交单元,用于根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区。
可选的,所述WAL并行模式的配置信息中包括:WAL线程池中的WAL线程数量和WAL分区的流量要求,所述事务提交单元具体用于:
根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并对根据所述配置信息设置的WAL线程池中的任一空闲WAL线程:当该空闲WAL线程对应的WAL队列中有新事务时,判断该新事务所需写入的第一WAL分区是否满足所述WAL分区的流量要求,如果是,则使用该空闲WAL线程将该新事务写入所述第一WAL分区,其中,所述WAL线程池中的WAL线程数量根据WAL并行模式的配置信息设定。
可选的,所述WAL并行模式的配置信息中包括:WAL线程的自杀时长,所述装置还包括:进程退出单元,用于在所述WAL线程在所述自杀时长内未成功处理所述事务时,退出所述WAL线程。
可选的,所述装置还包括:PG确定单元和PG锁单元,
所述PG确定单元,用于确定所述数据写入请求所请求写入的数据对应的至少一个PG;
所述PG锁单元,用于为确定的各PG添加PG锁。
借由上述技术方案,本发明提供的一种日志数据写入方法及对象存储守护装置,可以使CEPH的KV数据库中的WAL模式处于关闭状态,将所述数据写入请求所请求写入的数据封装为至少一个事务;根据KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区。本发明通过WAL并行模式的配置信息中的WAL线程池中的WAL线程数量,使得OSD可以使用多个WAL线程来并行对多个事务进行处理,加快了事务的处理速度。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种日志数据写入方法的流程图;
图2示出了CEPH中的一个节点设备的示意图;
图3示出了本发明实施例提供的一种对象存储守护装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,本发明实施例提供了一种日志数据写入方法,应用于CEPH的OSD中,所述CEPH的KV数据库中的WAL模式处于关闭状态,该方法可以包括:
S100、所述OSD获得客户端发送的数据写入请求;
其中,CEPH是一种分布式对象存储系统,Ceph的系统架构可以划分为四部分:客户端、元数据服务器、对象存储集群和集群监视器。对象存储集群中包括多个OSD(ObjectStore Device,对象存储设备)。
OSD负责存储数据、处理数据副本、数据恢复、数据平衡同时与监视器以及其他的OSD保持心跳,并将监控信息上报给监视器。与其他的分布式存储系统通过查询中心化的数据表来确定数据存储位置不同,OSD通过CRUSH算法实现数据的定位。
所述OSD可以为主OSD,也可以为从属OSD。可以理解的是,客户端会通过CRUSH算法计算得到数据写入请求所需发送的各OSD,其中,有一个为主OSD,其余为从属OSD。客户端会将数据写入请求发送至主OSD中,主OSD会将数据写入请求发送至各从属OSD中。
具体的,每个OSD在获得数据写入请求后进行的处理可以是相同的或不同的。
图2为CEPH中的一个节点设备的示意图,该节点设备的物理层包括SSD1、HDD1和HDD2。逻辑层将SSD1分为PART1至PART3,将HDD1映射为HDD1-1,将HDD2映射为HDD2-1。应用层将HDD2-1映射为OSD2,将HDD1-1映射为OSD1,将PART1映射为WAL1,将PART2映射为WAL2,将PART3映射为数据库DB。
S200、所述OSD将所述数据写入请求所请求写入的数据封装为至少一个事务;
其中,上述请求写入的数据包括:原始数据和元数据。
所述OSD可以确定所述数据写入请求所请求写入的数据对应的至少一个PG(Placement Group Lock),为确定的各PG添加PG锁。可以理解的是,PG锁是PG级别的一致性锁,用来保证PG内写入数据的一致性。添加了PG锁的PG只能被一个数据写入请求写入数据,其他数据写入请求需等待该数据写入请求完成后再进行写入。通过PG锁,本发明可以保证数据的一致性,防止出现写冲突。其中,数据写入请求可以携带有所请求写入的数据对应的PG的标识。
在其他实施例中,所述OSD也可以将所述数据写入请求所请求写入的数据封装为一个事务或两个事务。具体的,当数据写入请求所请求写入的数据的数据量大于预设数据量时,本发明可以将请求写入的数据中的原始数据封装为一个事务,然后将请求写入的数据中的元数据封装为一个事务。当数据写入请求所请求写入的数据的数据量不大于预设数据量时,本发明可以将请求写入的数据中的原始数据和元数据一起封装为一个事务。
在实际应用中,本发明可以使用一个WAL线程来处理一个事务。
S300、所述OSD根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区。
具体的,所述WAL并行模式的配置信息中包括:KV线程池中的KV线程数量、WAL线程池中的WAL线程数量、WAL分区的流量要求、WAL线程的自杀时长、WAL线程的超时时长、KV数据库后端参数和KV数据库配置参数中的至少一种。
下面分别对配置信息中的上述参数进行说明:
所述KV线程池中的KV线程数量为可同时操作KV数据库的线程数,数量上可以是n(n∈N+)。当KV数据库对应的DB分区的存储介质为固态介质时,KV线程数量可以配置为8。
所述WAL线程池中的WAL线程数量定义了可同时操作WAL分区的线程数,数量上可以是n(n∈N+),当承载WAL分区的介质为固态介质时,建议配置为8。
所述WAL线程超时时间定义了WAL线程执行单次IO的超时时间,可以是n(n∈N+),单位为秒(s),建议配置为30s。
所述WAL线程自杀时间定义了WAL线程执行单次IO的最大超时时间,应大上述定义的WAL线程超时时间,可以是n(n∈N+),单位为秒(s),建议配置为120s。
所述WAL最大IOPS定义了WAL分区上每秒最大的IO请求数,可以是n(n∈N+),当承载WAL分区的介质为固态介质时,建议配置为2048。
所述WAL最大吞吐量定义了WAL分区上每秒最大IO的流量,可以是n(n∈N+),当承载WAL分区的介质为固态介质时,建议配置为256MB。
所述KV数据库后端定义存储元数据所使用的KV数据库,可以是Leveldb或Rocksdb。
所述KV数据库配置参数是一个组合参数,定义了一系列子参数用来控制所述KV数据库的行为,其中子参数“disableWAL=true”为必选参数。
具体的,本发明可以通过“disableWAL=true”来使所述CEPH的KV数据库中的WAL模式处于关闭状态,这样就终止了串行处理事务的现有WAL模式。同时,本发明通过所述WAL并行模式的配置信息中的WAL线程池中的WAL线程数量,使得OSD可以使用多个WAL线程来并行对多个事务进行处理,加快了事务的处理速度。
通过实际测试,本发明的方法如按照512KB顺序写,则相比现有技术可以提升写性能37%,如按照4KB随机写,则可相比现有技术可以提升写性能32%。
具体的,所述WAL并行模式的配置信息中可以包括:WAL线程池中的WAL线程数量和WAL分区的流量要求。此时,所述使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区,可以包括:
对根据所述配置信息设置的WAL线程池中的任一空闲WAL线程:当该空闲WAL线程对应的WAL队列中有新事务时,判断该新事务所需写入的第一WAL分区是否满足所述WAL分区的流量要求,如果是,则使用该空闲WAL线程将该新事务写入所述第一WAL分区,其中,所述WAL线程池中的WAL线程数量根据WAL并行模式的配置信息设定。
具体的,当通过多个WAL线程并行对事务进行处理时,可能会有多个事务同时写入一个WAL分区,如果不对写入WAL分区的流量进行限制,则当流量较大时,将会出现卡死等现象。因此为了保证数据的顺利写入,本发明可以通过WAL分区的流量要求来限制数据的写入。具体的,WAL分区的流量要求可以包括:WAL分区单位时间内的最大IO请求数和/或WAL分区单位时间内的最大IO流量。
具体的,所述判断该新事务所需写入的第一WAL分区是否满足所述WAL分区的流量要求,包括:
判断该新事务所需写入的第一WAL分区的空闲IO请求数是否不小于1,判断该新事务所需写入的第一WAL分区的空闲IO流量是否不小于该事物写入时产生的IO流量,如果上述两个判断的结果均为是,则确定该新事务所需写入的第一WAL分区满足所述WAL分区的流量要求,否则,确定该新事务所需写入的第一WAL分区不满足所述WAL分区的流量要求。
其中,上述空闲IO请求数=WAL分区单位时间内的最大IO请求数-当前IO请求数。上述空闲IO流量=WAL分区单位时间内的最大IO流量-当前IO流量。
在本发明其他实施例中,当所述WAL并行模式的配置信息中包括:WAL线程的自杀时长时,图1所示方法还可以包括:
如果所述WAL线程在所述自杀时长内未成功处理所述事务,则退出所述WAL线程。
可选的,本发明可以对WAL线程处理事务所花费的时长进行计时,当所花费的时长超过WAL线程超时时间时,则控制WAL线程再次对事务进行处理,当所花费的时长超过自杀时长时,则可以退出WAL线程,不再对该事务处理。当然,当所花费的时长超过自杀时长时,还可以向客户端或主OSD返回写入失败的响应。
在本发明一可选实施例中,所述使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区,可以包括:
对任一事务:根据该事务中的数据对应的PG及所述WAL线程池中的WAL线程数量,确定需处理该事务的一个WAL线程;
使用确定的所述一个WAL线程对该事务进行处理,以将各该事务写入WAL分区。
由于本发明可以通过多个WAL线程对各事务并行处理,因此当有新事务写入WAL队列时,本发明可以根据事务中的数据对应的PG及所述WAL线程池中的WAL线程数量,确定需处理该事务的一个WAL线程。具体的,本发明可以为各WAL线程设置一个WAL线程编号,然后将事务中的数据对应的PG的ID除以所述WAL线程池中的WAL线程数量,获得余数,根据余数对应的WAL线程编号确定需处理该事务的一个WAL线程。可选的,本发明为WAL线程设置的WAL线程编号可以为从0开始的自然数序列。
在实际应用中,本发明还可以设置多个WAL队列,具体的,本发明设置的WAL队列的数量可以和所述WAL线程池中的WAL线程数量相同。这样,一个WAL队列由一个WAL线程负责。由于WAL队列有多个,因此本发明可以为各WAL队列设置WAL队列编号,然后将事务中的数据对应的PG的ID除以WAL队列的数量,获得余数,根据余数对应的WAL队列编号确定该事务所需放入的一个WAL队列,然后使用负责该WAL队列的WAL线程对该事务进行处理。
当然,本发明也可以仅设置一个WAL队列,由多个WAL线程共同负责该WAL队列中的事务,具体的,每个事务可以由一个WAL线程负责处理。
在本发明其他实施例中,图1所示方法还可以包括:
在将各所述事务写入WAL分区后,向所述客户端或主OSD返回数据已成功写入的响应。
可选的,当各从属OSD将各所述事务写入WAL分区后,向所述主OSD返回数据已成功写入的响应。当主OSD将各所述事务写入WAL分区且收到各从属OSD返回的数据已成功写入的响应后,主OSD向所述客户端或其他OSD返回数据已成功写入的响应。
当将各事务写入WAL分区后,本发明可以进一步根据数据写入请求将数据写入KV数据库中,然后将数据从KV数据库中写入磁盘中。
具体的,本发明的日志数据写入方法,还可以包括:
所述OSD将所述事务提交至KV队列中并通知KV线程处理所述KV队列中的事务;
所述KV线程将所述KV队列中的事务提交至KV数据库中,所述KV线程将所述KV数据库的事务持久化到OSD磁盘。
可选的,本发明可以通过异步IO的方式将事务持久化到OSD磁盘,所述KV线程将所述KV队列中的事务提交至KV数据库中,所述KV线程将所述KV数据库的事务持久化到OSD磁盘的过程可以具体包括:
所述KV线程在接收到通知后,刷新所述OSD磁盘,将已提交至所述OSD磁盘的事务同步到所述OSD磁盘;
所述KV线程依次获取所述KV队列中的事务并将所述事务提交至所述KV数据库,可选的,所述KV线程可以通过缓冲IO的方式将所述事务提交至所述KV数据库。
所述KV线程清理所述KV数据库中已持久化到OSD磁盘的事务;
所述KV线程将所述KV队列中已提交至所述KV数据库的事务转移至IO队列;可以理解的是,在将一个事务从KV队列中转移至IO队列后,KV队列中将不存在该事务。
所述OSD从所述IO队列中获取事务并将所述事务提交至OSD磁盘。
可选的,KV队列可以有多个,每个KV队列都可以由一个KV线程负责处理。本发明可以对事务添加PG锁,并根据PG锁的ID确定处理该事务的KV线程的索引号,然后将事务添加至具有该索引号的KV线程对应的KV队列中。
具体的,本发明可以为各KV线程设置一个KV线程编号,然后将事务对应的PG的ID除以KV线程数量,获得余数,根据余数对应的KV线程编号确定需处理该事务的一个KV线程。可选的,本发明为KV线程设置的KV线程编号可以为从0开始的自然数序列。
与上述方法实施例相对应,本发明还提供了一种对象存储守护装置。
本发明实施例提供的一种对象存储守护装置,位于CEPH中,所述CEPH的KV数据库中的WAL模式处于关闭状态,如图3所示,该装置可以包括:请求获得单元100、事务封装单元200和事务提交单元300,
所述请求获得单元100,用于获得客户端发送的数据写入请求;
所述事务封装单元200,用于将所述数据写入请求所请求写入的数据封装为至少一个事务;
所述事务提交单元300,用于根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区。
可选的,所述WAL并行模式的配置信息中包括:WAL线程池中的WAL线程数量和WAL分区的流量要求,所述事务提交单元300具体用于:
根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并对根据所述配置信息设置的WAL线程池中的任一空闲WAL线程:当该空闲WAL线程对应的WAL队列中有新事务时,判断该新事务所需写入的第一WAL分区是否满足所述WAL分区的流量要求,如果是,则使用该空闲WAL线程将该新事务写入所述第一WAL分区,其中,所述WAL线程池中的WAL线程数量根据WAL并行模式的配置信息设定。
可选的,所述WAL并行模式的配置信息中包括:WAL线程的自杀时长,所述装置还包括:进程退出单元,用于在所述WAL线程在所述自杀时长内未成功处理所述事务时,退出所述WAL线程。
可选的,图3所示装置还可以包括:PG确定单元和PG锁单元,
所述PG确定单元,用于确定所述数据写入请求所请求写入的数据对应的至少一个PG;
所述PG锁单元,用于为确定的各PG添加PG锁。
所述事务提交单元300具体用于:根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并对任一事务:根据该事务对应的PG及所述WAL线程池中的WAL线程数量,确定需处理该事务的一个WAL线程;使用确定的所述一个WAL线程对该事务进行处理,以将各该事务写入WAL分区。
可选的,图3所示装置还可以包括:响应返回单元,用于在所述事务提交单元300将各所述事务写入WAL分区后,向所述客户端或其他OSD返回数据已成功写入的响应。
所述对象存储守护装置包括处理器和存储器,上述请求获得单元100、事务封装单元200和事务提交单元300等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来进行日志数据写入。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述日志数据写入方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述日志数据写入方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
控制所述CEPH的KV数据库中的WAL模式处于关闭状态;
获得客户端发送的数据写入请求;
将所述数据写入请求所请求写入的数据封装为至少一个事务;
根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
控制所述CEPH的KV数据库中的WAL模式处于关闭状态;
获得客户端发送的数据写入请求;
将所述数据写入请求所请求写入的数据封装为至少一个事务;
根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种日志数据写入方法,其特征在于,应用于CEPH的OSD中,所述CEPH的KV数据库中的WAL模式处于关闭状态,所述方法包括:
所述OSD获得客户端发送的数据写入请求;
所述OSD将所述数据写入请求所请求写入的数据封装为至少一个事务;
所述OSD根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区。
2.根据权利要求1所述的方法,其特征在于,所述WAL并行模式的配置信息中包括:WAL线程池中的WAL线程数量和WAL分区的流量要求,所述使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区,包括:
对根据所述配置信息设置的WAL线程池中的任一空闲WAL线程:当该空闲WAL线程对应的WAL队列中有新事务时,判断该新事务所需写入的第一WAL分区是否满足所述WAL分区的流量要求,如果是,则使用该空闲WAL线程将该新事务写入所述第一WAL分区,其中,所述WAL线程池中的WAL线程数量根据WAL并行模式的配置信息设定。
3.根据权利要求1所述的方法,其特征在于,所述WAL并行模式的配置信息中包括:WAL线程的自杀时长,所述方法还包括:
如果所述WAL线程在所述自杀时长内未成功处理所述事务,则退出所述WAL线程。
4.根据权利要求1所述的方法,其特征在于,在所述OSD将所述数据写入请求所请求写入的数据封装为至少一个事务之前,所述方法还包括:
确定所述数据写入请求所请求写入的数据对应的至少一个PG;
为确定的各PG添加PG锁。
5.根据权利要求4所述的方法,其特征在于,所述使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区,包括:
对任一事务:根据该事务中的数据对应的PG及所述WAL线程池中的WAL线程数量,确定需处理该事务的一个WAL线程;
使用确定的所述一个WAL线程对该事务进行处理,以将各该事务写入WAL分区。
6.根据权利要求1至5中任一项所述的方法,其特征在于,还包括:
在将各所述事务写入WAL分区后,向所述客户端或其他OSD返回数据已成功写入的响应。
7.一种对象存储守护装置,其特征在于,位于CEPH中,所述CEPH的KV数据库中的WAL模式处于关闭状态,所述装置包括:请求获得单元、事务封装单元和事务提交单元,
所述请求获得单元,用于获得客户端发送的数据写入请求;
所述事务封装单元,用于将所述数据写入请求所请求写入的数据封装为至少一个事务;
所述事务提交单元,用于根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并使用根据所述配置信息设置的WAL线程池中的多个WAL线程对所述WAL队列中的各所述事务进行并行处理,以将各所述事务写入WAL分区。
8.根据权利要求7所述的装置,其特征在于,所述WAL并行模式的配置信息中包括:WAL线程池中的WAL线程数量和WAL分区的流量要求,所述事务提交单元具体用于:
根据所述KV数据库外的WAL并行模式的配置信息将各所述事务提交至至少一个WAL队列中,并对根据所述配置信息设置的WAL线程池中的任一空闲WAL线程:当该空闲WAL线程对应的WAL队列中有新事务时,判断该新事务所需写入的第一WAL分区是否满足所述WAL分区的流量要求,如果是,则使用该空闲WAL线程将该新事务写入所述第一WAL分区,其中,所述WAL线程池中的WAL线程数量根据WAL并行模式的配置信息设定。
9.根据权利要求7所述的装置,其特征在于,所述WAL并行模式的配置信息中包括:WAL线程的自杀时长,所述装置还包括:进程退出单元,用于在所述WAL线程在所述自杀时长内未成功处理所述事务时,退出所述WAL线程。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:PG确定单元和PG锁单元,
所述PG确定单元,用于确定所述数据写入请求所请求写入的数据对应的至少一个PG;
所述PG锁单元,用于为确定的各PG添加PG锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910863963.7A CN110569112B (zh) | 2019-09-12 | 2019-09-12 | 日志数据写入方法及对象存储守护装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910863963.7A CN110569112B (zh) | 2019-09-12 | 2019-09-12 | 日志数据写入方法及对象存储守护装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569112A true CN110569112A (zh) | 2019-12-13 |
CN110569112B CN110569112B (zh) | 2022-04-08 |
Family
ID=68779497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910863963.7A Active CN110569112B (zh) | 2019-09-12 | 2019-09-12 | 日志数据写入方法及对象存储守护装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569112B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857577A (zh) * | 2020-06-29 | 2020-10-30 | 烽火通信科技股份有限公司 | 一种分布式存储系统下物理硬盘的管理方法与装置 |
CN113126919A (zh) * | 2021-04-02 | 2021-07-16 | 山东英信计算机技术有限公司 | 一种RocksDB性能提升方法、系统及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729442A (zh) * | 2013-12-30 | 2014-04-16 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
CN105159768A (zh) * | 2015-09-09 | 2015-12-16 | 浪潮集团有限公司 | 一种任务管理方法及云数据中心管理平台 |
US20160110403A1 (en) * | 2014-10-19 | 2016-04-21 | Microsoft Corporation | High performance transactions in database management systems |
US20160239346A1 (en) * | 2013-11-12 | 2016-08-18 | Oxide Interactive, LLC | Method and system of a hierarchical task scheduler for a multi-thread system |
CN107590182A (zh) * | 2017-08-03 | 2018-01-16 | 华南理工大学 | 一种分布式日志收集方法 |
CN108197233A (zh) * | 2017-12-29 | 2018-06-22 | 飞狐信息技术(天津)有限公司 | 一种数据管理方法、中间件及数据管理系统 |
CN108520024A (zh) * | 2018-03-22 | 2018-09-11 | 河海大学 | 基于Spark Streaming的双周期爬虫系统及其运行方法 |
US20180270306A1 (en) * | 2017-03-16 | 2018-09-20 | Oracle International Corporation | Coexistence of a synchronous architecture and an asynchronous architecture in a server |
CN108733496A (zh) * | 2017-04-24 | 2018-11-02 | 腾讯科技(上海)有限公司 | 事件处理方法和装置 |
CN109344137A (zh) * | 2018-10-09 | 2019-02-15 | 广东网安科技有限公司 | 一种日志存储方法及系统 |
CN109684050A (zh) * | 2018-12-06 | 2019-04-26 | 成都佰纳瑞信息技术有限公司 | 一种并行化的事务执行器及其使用方法 |
CN109918178A (zh) * | 2019-03-06 | 2019-06-21 | 恒生电子股份有限公司 | 事务提交方法及相关装置 |
-
2019
- 2019-09-12 CN CN201910863963.7A patent/CN110569112B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160239346A1 (en) * | 2013-11-12 | 2016-08-18 | Oxide Interactive, LLC | Method and system of a hierarchical task scheduler for a multi-thread system |
CN103729442A (zh) * | 2013-12-30 | 2014-04-16 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
US20160110403A1 (en) * | 2014-10-19 | 2016-04-21 | Microsoft Corporation | High performance transactions in database management systems |
CN107077495A (zh) * | 2014-10-19 | 2017-08-18 | 微软技术许可有限责任公司 | 数据库管理系统中的高性能事务 |
CN105159768A (zh) * | 2015-09-09 | 2015-12-16 | 浪潮集团有限公司 | 一种任务管理方法及云数据中心管理平台 |
US20180270306A1 (en) * | 2017-03-16 | 2018-09-20 | Oracle International Corporation | Coexistence of a synchronous architecture and an asynchronous architecture in a server |
CN108733496A (zh) * | 2017-04-24 | 2018-11-02 | 腾讯科技(上海)有限公司 | 事件处理方法和装置 |
CN107590182A (zh) * | 2017-08-03 | 2018-01-16 | 华南理工大学 | 一种分布式日志收集方法 |
CN108197233A (zh) * | 2017-12-29 | 2018-06-22 | 飞狐信息技术(天津)有限公司 | 一种数据管理方法、中间件及数据管理系统 |
CN108520024A (zh) * | 2018-03-22 | 2018-09-11 | 河海大学 | 基于Spark Streaming的双周期爬虫系统及其运行方法 |
CN109344137A (zh) * | 2018-10-09 | 2019-02-15 | 广东网安科技有限公司 | 一种日志存储方法及系统 |
CN109684050A (zh) * | 2018-12-06 | 2019-04-26 | 成都佰纳瑞信息技术有限公司 | 一种并行化的事务执行器及其使用方法 |
CN109918178A (zh) * | 2019-03-06 | 2019-06-21 | 恒生电子股份有限公司 | 事务提交方法及相关装置 |
Non-Patent Citations (2)
Title |
---|
JORIS WALRAEVENS: ""Asymptotics of Queue Length Distributions in Priority Retrial Queues"", 《PERFORMANCE EVALUATION (2018)》 * |
马文龙: ""Key-Value型NoSQL本地存储系统研究"", 《计算机学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857577A (zh) * | 2020-06-29 | 2020-10-30 | 烽火通信科技股份有限公司 | 一种分布式存储系统下物理硬盘的管理方法与装置 |
CN113126919A (zh) * | 2021-04-02 | 2021-07-16 | 山东英信计算机技术有限公司 | 一种RocksDB性能提升方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110569112B (zh) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9990132B2 (en) | Off-heap direct-memory data stores, methods of creating and/or managing off-heap direct-memory data stores, and/or systems including off-heap direct-memory data store | |
US7562200B1 (en) | Method, system, apparatus, and computer-readable medium for locking and synchronizing input/output operations in a data storage system | |
US8935456B2 (en) | Method and system for integrating database memory management in virtual machines | |
US11163452B2 (en) | Workload based device access | |
US20240061812A1 (en) | Metadata control in a load-balanced distributed storage system | |
US8943259B2 (en) | Relieving memory pressure in a host using database memory management | |
US10356150B1 (en) | Automated repartitioning of streaming data | |
US20180136842A1 (en) | Partition metadata for distributed data objects | |
JP6412244B2 (ja) | 負荷に基づく動的統合 | |
US9984139B1 (en) | Publish session framework for datastore operation records | |
US11914894B2 (en) | Using scheduling tags in host compute commands to manage host compute task execution by a storage device in a storage system | |
CN110569112B (zh) | 日志数据写入方法及对象存储守护装置 | |
US20230273859A1 (en) | Storage system spanning multiple failure domains | |
US9898223B2 (en) | Small storage volume management | |
US11954362B2 (en) | Flash registry with on-disk hashing | |
US11875198B2 (en) | Synchronization object issue detection using object type queues and associated monitor threads in a storage system | |
CN113568908A (zh) | 一种键值请求并行调度方法及系统 | |
US9317306B2 (en) | Computer device and memory management method thereof | |
US11200210B2 (en) | Method of efficient backup of distributed file system files with transparent data access | |
CN116450328A (zh) | 内存分配方法、装置、计算机设备和存储介质 | |
US11327889B2 (en) | Multi-access to a data file stored in a data-storage system related to a buffer memory | |
US11481190B2 (en) | Selecting a plurality of processing systems to sort a data set | |
CN107102898B (zh) | 一种基于numa架构的内存管理、构建数据结构的方法及装置 | |
US11907551B2 (en) | Performance efficient and resilient creation of network attached storage objects | |
Liu | Rethinking Storage System Design in Distributed NVRAM+ RDMA Clusters |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220317 Address after: Room 1601, no.6, financial Third Street, Wuxi Economic Development Zone, Jiangsu Province, 214000 Applicant after: Jiangsu Anchao cloud Software Co.,Ltd. Address before: 214001 room b2286, Sagittarius block, software park, No. 18, Zhenze Road, Xinwu District, Wuxi City, Jiangsu Province Applicant before: Huayunchao Integration Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |