CN110321357B - 一种读写控制方法、装置及服务器 - Google Patents
一种读写控制方法、装置及服务器 Download PDFInfo
- Publication number
- CN110321357B CN110321357B CN201910516001.4A CN201910516001A CN110321357B CN 110321357 B CN110321357 B CN 110321357B CN 201910516001 A CN201910516001 A CN 201910516001A CN 110321357 B CN110321357 B CN 110321357B
- Authority
- CN
- China
- Prior art keywords
- data request
- write
- read
- node
- data
- 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.)
- Active
Links
Images
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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种读写控制方法、装置及服务器。该方法包括:监测针对数据仓库的数据请求;数据请求包括:读数据请求或写数据请求;根据数据请求所请求访问的存储位置的写锁节点的占用状态,给数据请求分配写锁节点;当数据请求为读数据请求且数据请求分配得到存储位置的读锁节点时,将写锁节点的占用状态更改为未占用并放行读数据请求;当数据请求为写数据请求且读锁节点未被占用时,放行写数据请求。这样,可以协调读操作和写操作按照顺序进行,避免了并行读写所带来的数据处理结果的错误甚至任务失败的问题。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种读写控制方法、装置及服务器。
背景技术
数据数仓(Data Warehouse,DW)是主流的存储海量数据的技术。目前,常常利用数据仓库来存储数据,并利用数据仓库中所存储的数据来进行数据分析和机器学习训练等。
发明人在实现本发明的过程中发现,数据仓库所涉及的数据操作主要是数据查询,即主要是读操作,所涉及的写操作很少。但是,当涉及到写操作并且写操作所请求修改的数据正在被其他数据处理流程所使用时,常常会导致相关数据处理结果的错误甚至任务失败。
发明内容
本发明实施例的目的在于提供一种读写控制方法、装置及服务器,以能够协调读操作和写操作按照顺序进行,避免并行读写所带来的数据处理结果的错误甚至任务失败的问题。具体技术方案如下:
第一方面,本发明实施例提供了一种读写控制方法,该方法可以包括:
监测针对数据仓库的数据请求;数据请求包括:读数据请求或写数据请求;
根据数据请求所请求访问的存储位置的写锁节点的占用状态,给数据请求分配写锁节点;
当数据请求为读数据请求且数据请求分配得到存储位置的读锁节点时,将写锁节点的占用状态更改为未占用并放行读数据请求;
当数据请求为写数据请求且读锁节点未被占用时,放行写数据请求。
可选地,在监测针对数据仓库的数据请求的步骤之前,还可以包括:
通过分布式***协调服务zookeeper为数据仓库中的每个存储单元创建写锁节点和读锁节点;存储单元包括:数据表或分区数据表中的一个分区。
可选地,根据数据请求所请求访问的存储位置的写锁节点的占用状态,给数据请求分配写锁节点的步骤,可以包括:
在数据请求所请求访问的存储位置的写锁节点下,创建第一临时顺序节点;
当第一临时顺序节点不为写锁节点下唯一的临时顺序节点时,确定写锁节点的占用状态为被占用,放弃给数据请求分配写锁节点;
当第一临时顺序节点为写锁节点下唯一的临时顺序节点时,给数据请求分配写锁节点。
可选地,第一临时顺序节点的序号为:在创建第一临时顺序节点后,写锁节点下临时顺序节点的总数目。
可选地,当数据请求为读数据请求且数据请求分配得到存储位置的读锁节点时,将写锁节点的占用状态更改为未占用并放行读数据请求的步骤,包括:
当数据请求为读数据请求时,在存储位置的读锁节点下创建临时节点,以给数据请求分配存储位置的读锁节点;
将写锁节点的占用状态更改为未占用并放行读数据请求。
可选地,当数据请求为写数据请求且读锁节点未被占用时,放行写数据请求的步骤,可以包括:
当数据请求为写数据请求时,监测读锁节点下的临时节点的数目;
当读锁节点下的临时节点的数目为零时,放行写数据请求。
第二方面,本发明实施例提供了一种读写控制装置,该装置可以包括:
监测模块,用于监测针对数据仓库的数据请求;数据请求包括:读数据请求或写数据请求;
分配模块,用于根据数据请求所请求访问的存储位置的写锁节点的占用状态,给数据请求分配写锁节点;
第一放行模块,用于在分配模块给数据请求分配写锁节点之后,当数据请求为读数据请求且数据请求分配得到存储位置的读锁节点时,将写锁节点的占用状态更改为未占用并放行读数据请求;
第二放行模块,用于在分配模块给数据请求分配写锁节点之后,当数据请求为写数据请求且读锁节点未被占用时,放行写数据请求。
可选地,在本发明实施例中,该装置还可以包括:
创建模块,用于在监测针对数据仓库的数据请求之前,通过分布式***协调服务zookeeper为数据仓库中的每个存储单元创建写锁节点和读锁节点;存储单元包括:数据表或分区数据表中的一个分区。
可选地,在本发明实施例中,分配模块可以包括
第一创建子模块,用于在数据请求所请求访问的存储位置的写锁节点下,创建第一临时顺序节点;
确定子模块,用于当第一临时顺序节点不为写锁节点下唯一的临时顺序节点时,确定写锁节点的占用状态为被占用,放弃给数据请求分配写锁节点;
分配子模块,用于当第一临时顺序节点为写锁节点下唯一的临时顺序节点时,给数据请求分配写锁节点。
可选地,在本发明实施例中,第一临时顺序节点的序号为:在创建第一临时顺序节点后,写锁节点下临时顺序节点的总数目。
可选地,在本发明实施例中,第一放行模块可以包括:
第二创建子模块,用于在分配模块给数据请求分配写锁节点之后且当数据请求为读数据请求时,在存储位置的读锁节点下创建临时节点,以给数据请求分配存储位置的读锁节点;
第一放行子模块,用于将写锁节点的占用状态更改为未占用并放行读数据请求。
可选地,在本发明实施例中,第二放行模块可以包括:
第一监测子模块,用于在分配模块给数据请求分配写锁节点之后且当数据请求为写数据请求时,监测读锁节点下的临时节点的数目;
第二放行子模块,用于当读锁节点下的临时节点的数目为零时,放行写数据请求。
第三方面,本发明实施例还提供了一种服务器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一项读写控制方法的方法步骤。
第四方面,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在服务器上运行时,使得服务器执行上述任一项读写控制方法的方法步骤。
第五方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在服务器上运行时,使得服务器执行上述任一项读写控制方法的方法步骤。
在本发明实施例中,可以监测针对数据仓库的数据请求,其中,该数据请求可以包括读数据请求或写数据请求。然后,可以根据该数据请求所请求访问的存储位置的写锁节点的占用状态,给该数据请求分配写锁节点。这样,可以给该读数据请求或写数据请求分配写锁节点。并且,在分配得到写锁节点之后,对于读数据请求而言,当读数据请求分配得到该存储位置的读锁节点时,可以将该写锁节点的占用状态更改为未占用并放行该读数据请求。这样,可以在不存在针对该存储位置的写操作时,对该存储位置执行读操作。另外,在分配得到写锁节点之后,对于写数据请求而言,当该存储位置的读锁节点未被占用时,可以放行该写数据请求。这样,可以在不存在针对该存储位置的读操作时,对该存储位置执行写操作。这样,使得针对数据仓库的读写操作只能为读操作或写操作,使读操作和写操作可以按照顺序进行,避免了并行读写所带来的数据处理结果的错误甚至任务失败的问题,保证了读写任务的正常进行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的一种读写控制方法的流程图;
图2为本发明实施例提供的另一种读写控制方法的流程图;
图3为本发明实施例提供的一种读写控制装置的结构示意图;
图4为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
为了解决现有技术中存在的问题,本发明实施例提供了一种读写控制方法、装置及服务器。
下面首先对本发明实施例提供的读写控制方法进行说明。
本发明实施例提供的读写控制方法可以应用于服务器,参见图1,该读写控制方法可以包括如下步骤:
S101:监测针对数据仓库的数据请求;数据请求包括:读数据请求或写数据请求;
在监测针对数据仓库的数据请求之前,该服务器可以通过zookeeper(分布式***协调服务)为数据仓库中的每个存储单元创建写锁节点和读锁节点。其中,数据仓库中的一个数据表可以为一个存储单元,该数据仓库中的一个分区数据表的一个分区也可以为一个存储单元。另外,该写锁节点和该读写节点均为持久化节点。
其中,当一个数据请求分配得到一个存储单元的写锁节点时,则该数据请求获得该存储单元的写数据权限。同理,当一个数据请求分配得到一个存储单元的读锁节点时,则该数据请求获得该存储单元的读数据权限。
可以理解的是,zookeeper是一个开放源码的分布式应用程序的协调服务,包含一个简单的原语集,是Hadoop(分布式计算)和Hbase(数据库)的重要组件,分布式应用可以使用它来实现诸如:统一命名服务、配置管理、分布式锁服务、数据同步等。其中,Hbase是一种开源的非关系型分布式数据库。
S102:根据数据请求所请求访问的存储位置的写锁节点的占用状态,给数据请求分配写锁节点;其中,在给数据请求分配写锁节点之后,若数据请求为读数据请求,则执行步骤S103;若数据请求为写数据请求,则执行步骤S104;
在监测到针对数据仓库的数据请求时,该服务器可以根据该数据请求所请求访问的存储位置的写锁节点的占用状态,给该数据请求分配写锁节点。其中,通过该存储位置可以确定该存储位置所在的存储单元。该存储位置的写锁节点为:存储位置所在的存储单元的写锁节点。
其中,在一种实现方式中,可以在该数据请求所请求访问的存储位置的写锁节点的占用状态为未被占用时,直接给该数据请求分配该写锁节点。这样,可以使该读数据请求或该写数据请求可以占用该写锁节点。
在另一种实现方式中,为了避免当写锁节点未被占用时各个数据请求对该写锁节点的争夺,可以在监测到数据请求后,在该写锁节点下创建该数据请求所对应的第一临时顺序节点。并且,当第一临时顺序节点不为写锁节点下唯一的临时顺序节点时,可以确定写锁节点的占用状态为被占用。在该种情况下,可以放弃给数据请求分配写锁节点,这样,可以保证每次只有一个数据请求能够获得对该存储位置所在的存储单元的写权限,从而可以保证写操作的正常进行。反之,当第一临时顺序节点为写锁节点下唯一的临时顺序节点时,则可以给该数据请求分配写锁节点,此时可以使该数据请求能够获得对该存储位置所在的存储单元的写权限。
其中,第一临时顺序节点中可以记录有:用于标识获取写锁节点的排队顺序的序号。并且,该第一临时顺序节点的序号可以为:在创建第一临时顺序节点后,该写锁节点下临时顺序节点的总数目,例如5。当然,也可以按照字母表中的字母进行标识,例如E,也并不局限于此。
S103:当数据请求为读数据请求且数据请求分配得到存储位置的读锁节点时,将写锁节点的占用状态更改为未占用并放行读数据请求;
当该数据请求分配得到该写锁节点时,则表明不存在其他数据请求对该存储位置进行写操作。那么,当该数据请求为读数据请求时,为了能够响应该数据请求,可以在该存储位置的读锁节点下创建临时节点,以给该数据请求分配存储位置的读锁节点。这样,使得该读数据请求可以获得读数据权限。在顺利获得读数据权限后,可以将写锁节点的占用状态更改为未占用,即释放该写锁节点并放行读数据请求。从而,使得可以对该存储位置所在的存储单元进行读操作。这样,可以在不存在针对该存储单元的写操作时,对该存储单元执行读操作。
S104:当数据请求为写数据请求且读锁节点未被占用时,放行写数据请求。
当该数据请求分配得到该写锁节点时,则表明不存在其他数据请求对该存储位置进行写操作。那么,当数据请求为写数据请求时,可以监测读锁节点下的临时节点的数目。当读锁节点下的临时节点的数目为零时,即不存在读操作时,可以放行该写数据请求。这样,可以在不存在针对该存储单元的读操作时,对该存储单元执行写操作。这样,使得针对数据仓库的读写操作只能为读操作或写操作,使读操作和写操作可以按照顺序进行,避免了并行读写所带来的数据处理结果的错误甚至任务失败的问题,保证了读写任务的正常进行。
在本发明实施例中,可以监测针对数据仓库的数据请求,其中,该数据请求可以包括读数据请求或写数据请求。然后,可以根据该数据请求所请求访问的存储位置的写锁节点的占用状态,给该数据请求分配写锁节点。这样,可以给该读数据请求或写数据请求分配写锁节点。并且,在分配得到写锁节点之后,对于读数据请求而言,当读数据请求分配得到该存储位置的读锁节点时,可以将该写锁节点的占用状态更改为未占用并放行该读数据请求。这样,可以在不存在针对该存储位置的写操作时,对该存储位置执行读操作。另外,在分配得到写锁节点之后,对于写数据请求而言,当该存储位置的读锁节点未被占用时,可以放行该写数据请求。这样,可以在不存在针对该存储位置的读操作时,对该存储位置执行写操作。这样,使得针对数据仓库的读写操作只能为读操作或写操作,使读操作和写操作可以按照顺序进行,避免了并行读写所带来的数据处理结果的错误甚至任务失败的问题,保证了读写任务的正常进行。
下面结合图2对本发明实施例提供的读写控制方法进行再次说明。
其中,图2中所示的服务器是指配置了zookeeper服务的服务器,该zookeeper服务可以为数据仓库中的每个存储单元创建写锁节点和读锁节点,这样,可以使用zookeeper服务来实现分布式环境下的读写锁。
参见图2,当数据使用方需要读取数据仓库中的数据时,数据使用方可以将读数据请求发送给数据仓库协调中间层。数据仓库协调中间层在接收到该读数据请求后,可以将该读数据请求发送给服务器。
服务器监测到该读数据请求后,可以在该读数据请求所请求访问的存储位置的写锁节点下创建第一临时顺序节点。当第一临时顺序节点为该写锁节点下唯一的临时顺序节点时,可以给该读数据请求分配该写锁节点。然后,可以给该读数据请求分配得到该存储位置的读锁节点。分配得到该读锁节点后,可以释放该写锁节点并放行该读数据请求,即将该数据请求发送至数据仓库进行读操作。
另外,当数据使用方需要向数据仓库中写入数据时,数据使用方可以将写数据请求发送给数据仓库协调中间层。数据仓库协调中间层在接收到该写数据请求后,可以将该写数据请求发送给服务器。
服务器监测到该写数据请求后,可以在该写数据请求所请求访问的存储位置的写锁节点下创建第一临时顺序节点。当第一临时顺序节点为该写锁节点下唯一的临时顺序节点时,可以给该写数据请求分配该写锁节点。然后,可以通过该存储位置的读数据节点上所注册的监听单元(zookeeper watcher),来监测该读数据节点下的临时节点的数目。当该数目为零时,可以放行该读数据请求,即可以将该写数据请求发送至数据仓库进行写操作。
其中,数据仓库协调中间层提供了数据使用方与服务器进行交互的接口。另外,数据仓库协调中间层与数据使用方可以设置在同一个电子设备中,也可以设置在不同的电子设备中,这都是合理的。
应用本发明实施例提供的读写控制方法,可以通过读写锁来协调多个使用方对分布式数据仓库中数据表和数据表分区的读写操作,避免了对同一数据表或分区数据表的分区同时进行写操作或同时进行读写操作,增强了基于分布式数据仓库的大数据离线处理流程的健壮性。进而,可以降低减少排查错误和验证数据正确性的成本。
相应于上述方法实施例,本发明实施例还提供了一种读写控制装置,参见图3,该装置可以包括:
监测模块301,用于监测针对数据仓库的数据请求;数据请求包括:读数据请求或写数据请求;
分配模块302,用于根据数据请求所请求访问的存储位置的写锁节点的占用状态,给数据请求分配写锁节点;
第一放行模块303,用于在分配模块302给数据请求分配写锁节点之后,当数据请求为读数据请求且数据请求分配得到存储位置的读锁节点时,将写锁节点的占用状态更改为未占用并放行读数据请求;
第二放行模块304,用于在分配模块302给数据请求分配写锁节点之后,当数据请求为写数据请求且读锁节点未被占用时,放行写数据请求。
应用本发明实施例提供的装置,可以监测针对数据仓库的数据请求,其中,该数据请求可以包括读数据请求或写数据请求。然后,可以根据该数据请求所请求访问的存储位置的写锁节点的占用状态,给该数据请求分配写锁节点。这样,可以给该读数据请求或写数据请求分配写锁节点。并且,在分配得到写锁节点之后,对于读数据请求而言,当读数据请求分配得到该存储位置的读锁节点时,可以将该写锁节点的占用状态更改为未占用并放行该读数据请求。这样,可以在不存在针对该存储位置的写操作时,对该存储位置执行读操作。另外,在分配得到写锁节点之后,对于写数据请求而言,当该存储位置的读锁节点未被占用时,可以放行该写数据请求。这样,可以在不存在针对该存储位置的读操作时,对该存储位置执行写操作。这样,使得针对数据仓库的读写操作只能为读操作或写操作,使读操作和写操作可以按照顺序进行,避免了并行读写所带来的数据处理结果的错误甚至任务失败的问题,保证了读写任务的正常进行。
可选地,在本发明实施例中,该装置还可以包括:
创建模块,用于在监测针对数据仓库的数据请求之前,通过分布式***协调服务zookeeper为数据仓库中的每个存储单元创建写锁节点和读锁节点;存储单元包括:数据表或分区数据表中的一个分区。
可选地,在本发明实施例中,分配模块302包括
第一创建子模块,用于在数据请求所请求访问的存储位置的写锁节点下,创建第一临时顺序节点;
确定子模块,用于当第一临时顺序节点不为写锁节点下唯一的临时顺序节点时,确定写锁节点的占用状态为被占用,放弃给数据请求分配写锁节点;
分配子模块,用于当第一临时顺序节点为写锁节点下唯一的临时顺序节点时,给数据请求分配写锁节点。
可选地,在本发明实施例中,第一临时顺序节点的序号为:在创建第一临时顺序节点后,写锁节点下临时顺序节点的总数目。
可选地,在本发明实施例中,第一放行模块303包括:
第二创建子模块,用于在分配模块302给数据请求分配写锁节点之后且当数据请求为读数据请求时,在存储位置的读锁节点下创建临时节点,以给数据请求分配存储位置的读锁节点;
第一放行子模块,用于将写锁节点的占用状态更改为未占用并放行读数据请求。
可选地,在本发明实施例中,第二放行模块304包括:
第一监测子模块,用于在分配模块302给数据请求分配写锁节点之后且当数据请求为写数据请求时,监测读锁节点下的临时节点的数目;
第二放行子模块,用于当读锁节点下的临时节点的数目为零时,放行写数据请求。
相应于上述方法实施例,本发明实施例还提供了一种服务器,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现上述任一所述的读写控制方法的方法步骤。
在本发明实施例中,服务器可以监测针对数据仓库的数据请求,其中,该数据请求可以包括读数据请求或写数据请求。然后,可以根据该数据请求所请求访问的存储位置的写锁节点的占用状态,给该数据请求分配写锁节点。这样,可以给该读数据请求或写数据请求分配写锁节点。并且,在分配得到写锁节点之后,对于读数据请求而言,当读数据请求分配得到该存储位置的读锁节点时,可以将该写锁节点的占用状态更改为未占用并放行该读数据请求。这样,可以在不存在针对该存储位置的写操作时,对该存储位置执行读操作。另外,在分配得到写锁节点之后,对于写数据请求而言,当该存储位置的读锁节点未被占用时,可以放行该写数据请求。这样,可以在不存在针对该存储位置的读操作时,对该存储位置执行写操作。这样,使得针对数据仓库的读写操作只能为读操作或写操作,避免了并行读写所带来的数据处理结果的错误甚至任务失败的问题,保证了读写任务的正常进行。
相应于上述方法实施例,在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一读写控制方法的方法步骤。
本发明实施例提供的计算机可读存储介质中存储的计算机程序被服务器的处理器执行后,服务器可以监测针对数据仓库的数据请求,其中,该数据请求可以包括读数据请求或写数据请求。然后,可以根据该数据请求所请求访问的存储位置的写锁节点的占用状态,给该数据请求分配写锁节点。这样,可以给该读数据请求或写数据请求分配写锁节点。并且,在分配得到写锁节点之后,对于读数据请求而言,当读数据请求分配得到该存储位置的读锁节点时,可以将该写锁节点的占用状态更改为未占用并放行该读数据请求。这样,可以在不存在针对该存储位置的写操作时,对该存储位置执行读操作。另外,在分配得到写锁节点之后,对于写数据请求而言,当该存储位置的读锁节点未被占用时,可以放行该写数据请求。这样,可以在不存在针对该存储位置的读操作时,对该存储位置执行写操作。这样,使得针对数据仓库的读写操作只能为读操作或写操作,避免了并行读写所带来的数据处理结果的错误甚至任务失败的问题,保证了读写任务的正常进行。
相应于上述方法实施例,在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一读写控制方法的方法步骤。
本发明实施例提供的计算机程序被服务器的处理器执行后,服务器可以监测针对数据仓库的数据请求,其中,该数据请求可以包括读数据请求或写数据请求。然后,可以根据该数据请求所请求访问的存储位置的写锁节点的占用状态,给该数据请求分配写锁节点。这样,可以给该读数据请求或写数据请求分配写锁节点。并且,在分配得到写锁节点之后,对于读数据请求而言,当读数据请求分配得到该存储位置的读锁节点时,可以将该写锁节点的占用状态更改为未占用并放行该读数据请求。这样,可以在不存在针对该存储位置的写操作时,对该存储位置执行读操作。另外,在分配得到写锁节点之后,对于写数据请求而言,当该存储位置的读锁节点未被占用时,可以放行该写数据请求。这样,可以在不存在针对该存储位置的读操作时,对该存储位置执行写操作。这样,使得针对数据仓库的读写操作只能为读操作或写操作,避免了并行读写所带来的数据处理结果的错误甚至任务失败的问题,保证了读写任务的正常进行。
上述服务器提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述服务器与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、服务器、计算机可读存储介质和计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (13)
1.一种读写控制方法,其特征在于,所述方法包括:
监测针对数据仓库的数据请求;所述数据请求包括:读数据请求或写数据请求;
根据所述数据请求所请求访问的存储位置的写锁节点的占用状态,给所述数据请求分配所述写锁节点;
当所述数据请求为读数据请求且所述数据请求分配得到所述存储位置的读锁节点时,将所述写锁节点的占用状态更改为未占用并放行所述读数据请求;
当所述数据请求为写数据请求且所述读锁节点未被占用时,放行所述写数据请求。
2.根据权利要求1所述的方法,其特征在于,在所述监测针对数据仓库的数据请求的步骤之前,还包括:
通过分布式***协调服务zookeeper为所述数据仓库中的每个存储单元创建写锁节点和读锁节点;所述存储单元包括:数据表或分区数据表中的一个分区。
3.根据权利要求1所述的方法,其特征在于,所述根据所述数据请求所请求访问的存储位置的写锁节点的占用状态,给所述数据请求分配所述写锁节点的步骤,包括:
在所述数据请求所请求访问的存储位置的写锁节点下,创建第一临时顺序节点;
当所述第一临时顺序节点不为所述写锁节点下唯一的临时顺序节点时,确定所述写锁节点的占用状态为被占用,放弃给所述数据请求分配所述写锁节点;
当所述第一临时顺序节点为所述写锁节点下唯一的临时顺序节点时,给所述数据请求分配所述写锁节点。
4.根据权利要求3所述的方法,其特征在于,所述第一临时顺序节点的序号为:在创建所述第一临时顺序节点后,所述写锁节点下临时顺序节点的总数目。
5.根据权利要求1所述的方法,其特征在于,所述当所述数据请求为读数据请求且所述数据请求分配得到所述存储位置的读锁节点时,将所述写锁节点的占用状态更改为未占用并放行所述读数据请求的步骤,包括:
当所述数据请求为读数据请求时,在所述存储位置的读锁节点下创建临时节点,以给所述数据请求分配所述存储位置的读锁节点;
将所述写锁节点的占用状态更改为未占用并放行所述读数据请求。
6.根据权利要求5所述的方法,其特征在于,所述当所述数据请求为写数据请求且所述读锁节点未被占用时,放行所述写数据请求的步骤,包括:
当所述数据请求为写数据请求时,监测所述读锁节点下的临时节点的数目;
当所述读锁节点下的临时节点的数目为零时,放行所述写数据请求。
7.一种读写控制装置,其特征在于,所述装置包括:
监测模块,用于监测针对数据仓库的数据请求;所述数据请求包括:读数据请求或写数据请求;
分配模块,用于根据所述数据请求所请求访问的存储位置的写锁节点的占用状态,给所述数据请求分配所述写锁节点;
第一放行模块,用于在所述分配模块给所述数据请求分配所述写锁节点之后,当所述数据请求为读数据请求且所述数据请求分配得到所述存储位置的读锁节点时,将所述写锁节点的占用状态更改为未占用并放行所述读数据请求;
第二放行模块,用于在所述分配模块给所述数据请求分配所述写锁节点之后,当所述数据请求为写数据请求且所述读锁节点未被占用时,放行所述写数据请求。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
创建模块,用于在监测针对数据仓库的数据请求之前,通过分布式***协调服务zookeeper为所述数据仓库中的每个存储单元创建写锁节点和读锁节点;所述存储单元包括:数据表或分区数据表中的一个分区。
9.根据权利要求7所述的装置,其特征在于,所述分配模块包括
第一创建子模块,用于在所述数据请求所请求访问的存储位置的写锁节点下,创建第一临时顺序节点;
确定子模块,用于当所述第一临时顺序节点不为所述写锁节点下唯一的临时顺序节点时,确定所述写锁节点的占用状态为被占用,放弃给所述数据请求分配所述写锁节点;
分配子模块,用于当所述第一临时顺序节点为所述写锁节点下唯一的临时顺序节点时,给所述数据请求分配所述写锁节点。
10.根据权利要求9所述的装置,其特征在于,所述第一临时顺序节点的序号为:在创建所述第一临时顺序节点后,所述写锁节点下临时顺序节点的总数目。
11.根据权利要求7所述的装置,其特征在于,所述第一放行模块包括:
第二创建子模块,用于在所述分配模块给所述数据请求分配所述写锁节点之后且当所述数据请求为读数据请求时,在所述存储位置的读锁节点下创建临时节点,以给所述数据请求分配所述存储位置的读锁节点;
第一放行子模块,用于将所述写锁节点的占用状态更改为未占用并放行所述读数据请求。
12.根据权利要求11所述的装置,其特征在于,所述第二放行模块包括:
第一监测子模块,用于在所述分配模块给所述数据请求分配所述写锁节点之后且当所述数据请求为写数据请求时,监测所述读锁节点下的临时节点的数目;
第二放行子模块,用于当所述读锁节点下的临时节点的数目为零时,放行所述写数据请求。
13.一种服务器,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6中任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910516001.4A CN110321357B (zh) | 2019-06-14 | 2019-06-14 | 一种读写控制方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910516001.4A CN110321357B (zh) | 2019-06-14 | 2019-06-14 | 一种读写控制方法、装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110321357A CN110321357A (zh) | 2019-10-11 |
CN110321357B true CN110321357B (zh) | 2021-06-29 |
Family
ID=68119561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910516001.4A Active CN110321357B (zh) | 2019-06-14 | 2019-06-14 | 一种读写控制方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110321357B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176576A (zh) * | 2019-12-28 | 2020-05-19 | 北京浪潮数据技术有限公司 | 一种存储卷的元数据修改方法、装置、设备及存储介质 |
CN111352944B (zh) * | 2020-02-10 | 2023-08-18 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备与存储介质 |
CN111367995B (zh) * | 2020-02-10 | 2023-07-21 | 北京百度网讯科技有限公司 | 基于服务锁的数据同步方法及装置、电子设备与存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999378A (zh) * | 2012-12-03 | 2013-03-27 | 中国科学院软件研究所 | 一种读写锁实现方法 |
CN105208124A (zh) * | 2015-09-29 | 2015-12-30 | 华为技术有限公司 | 管理锁的方法及装置、确定锁管理服务器的方法及装置 |
CN107632794A (zh) * | 2017-10-20 | 2018-01-26 | 北京小米移动软件有限公司 | 读写锁控制方法及装置 |
CN109032526A (zh) * | 2018-07-26 | 2018-12-18 | 郑州云海信息技术有限公司 | 用于分布式文件***的数据处理方法及装置 |
CN109271258A (zh) * | 2018-08-28 | 2019-01-25 | 百度在线网络技术(北京)有限公司 | 读写锁重入的实现方法、装置、终端及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942269B (zh) * | 2014-03-26 | 2017-05-31 | 北京京东尚科信息技术有限公司 | 对文件***进行操作的方法和装置 |
CN109359081B (zh) * | 2015-12-14 | 2022-05-17 | 华为技术有限公司 | 一种集群中锁管理的方法、锁服务器及客户端 |
EP3553647B1 (en) * | 2015-12-31 | 2023-10-25 | Huawei Technologies Co., Ltd. | Data write method, apparatus, and system |
CN105653406B (zh) * | 2015-12-31 | 2019-05-24 | 华为技术有限公司 | 一种管理分布式存储***的方法及分布式存储*** |
-
2019
- 2019-06-14 CN CN201910516001.4A patent/CN110321357B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999378A (zh) * | 2012-12-03 | 2013-03-27 | 中国科学院软件研究所 | 一种读写锁实现方法 |
CN105208124A (zh) * | 2015-09-29 | 2015-12-30 | 华为技术有限公司 | 管理锁的方法及装置、确定锁管理服务器的方法及装置 |
CN107632794A (zh) * | 2017-10-20 | 2018-01-26 | 北京小米移动软件有限公司 | 读写锁控制方法及装置 |
CN109032526A (zh) * | 2018-07-26 | 2018-12-18 | 郑州云海信息技术有限公司 | 用于分布式文件***的数据处理方法及装置 |
CN109271258A (zh) * | 2018-08-28 | 2019-01-25 | 百度在线网络技术(北京)有限公司 | 读写锁重入的实现方法、装置、终端及存储介质 |
Non-Patent Citations (1)
Title |
---|
"基于ZooKeeper的分布式同步框架设计与实现";黄毅斐;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140215;论文正文第2.2、3.4、4.1、4.4、4.5节 * |
Also Published As
Publication number | Publication date |
---|---|
CN110321357A (zh) | 2019-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108595157B (zh) | 区块链数据的处理方法、装置、设备和存储介质 | |
US11586673B2 (en) | Data writing and reading method and apparatus, and cloud storage system | |
CN110321357B (zh) | 一种读写控制方法、装置及服务器 | |
KR101959153B1 (ko) | 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템 | |
CN108897628B (zh) | 一种分布式锁的实现方法、装置及电子设备 | |
CN108009261B (zh) | 一种数据同步方法、装置及电子设备 | |
US20060212871A1 (en) | Resource allocation in computing systems | |
US9916102B1 (en) | Managing data storage reservations on a per-family basis | |
CN107659450B (zh) | 大数据集群资源的分配方法、分配装置及存储介质 | |
CN107463593A (zh) | 库存扣减方法及其设备 | |
CN112463058B (zh) | 一种碎片数据整理方法、装置及存储节点 | |
CN108173839A (zh) | 权限管理方法及*** | |
TW201727517A (zh) | 資料儲存與業務處理的方法及裝置 | |
CN108022028B (zh) | 一种资源处理方法及装置 | |
CN107276914A (zh) | 基于cmdb的自助资源分配调度的方法 | |
CN112181317B (zh) | 一种基于容器云的业务数据分级存储方法及装置 | |
CN110659303A (zh) | 一种数据库节点的读写控制方法及装置 | |
WO2022267676A1 (zh) | 共享内存的数据处理方法、装置、设备和介质 | |
CN107102898B (zh) | 一种基于numa架构的内存管理、构建数据结构的方法及装置 | |
CN111143327B (zh) | 一种数据处理方法及装置 | |
US11709750B2 (en) | Dynamically mapping software infrastructure utilization | |
CN113849482A (zh) | 一种数据迁移方法、装置及电子设备 | |
US20200159452A1 (en) | Object Storage System with Access Control Quota Status Check | |
CN112783843A (zh) | 数据读取方法、装置及电子设备 | |
CN111782634A (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 |