地震道数据的获取方法、主节点服务器及工作节点服务器与流程

文档序号:12494213阅读:273来源:国知局
地震道数据的获取方法、主节点服务器及工作节点服务器与流程

本申请涉及数据处理技术领域,特别涉及一种地震道数据的获取方法、主节点服务器及工作节点服务器。



背景技术:

在油气工业,地震勘探被广泛用于确定潜在油藏区的位置,其基本流程可分为三个阶段:1)采集阶段,通过人工地震方法从野外工区采集地震数据;2)处理阶段,通过各种地震数据分析、处理以及成像算法得到野外工区的地底地质结构成像图;3)解释阶段,由地质专家和地球物理专家根据成像结果判断该工区是否可能为油藏区。如果确定该工区为油藏区,则进行下一步钻井工作。

地震数据是由一系列长度固定的地震道数据构成的。地震道数据包括道头和道体两部分,其中道体为采样的地震波振幅信息,道头为地震道的各项属性信息。地震道数据集指的是具有共同属性的地震道数据的集合。道头中的属性信息又称为排序关键字,这是由于按不同数量和不同种类的属性组合,地震道数据具有不同的排序方式。

在地震数据的处理阶段,由于地震数据规模较大(TB级)以及处理流程和处理算法的高复杂度,用于地震数据处理的各类应用通常都部署在高性能集群上,而地震数据存储在集群的集中存储系统上。当前,在进行地震道数据读取时,通常会预先设置多个具备固定排序方式的关键字组合,这些关键字组合与地震道数据之间可以存在关联关系。那么通过这些关键字组合,可以从集中存储系统中读取相关联的地震道数据。然而,如果交互式应用所用的关键字组合与预先设置的关键字组合不同,那么集中存储系统便无法根据输入的关键字组合查询到适配的地震道数据。在这种情况下,只能依次读取集中存储系统中的每一个地震道数据,从而判断读取的地震道数据是否是与输入的关键字组合相适配的数据。由上可见,现有技术中地震道的获取方式具有较大的限制,无法高效地读取地震处理过程中所需的地震道数据。

应该注意,上面对技术背景的介绍只是为了方便对本申请的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本申请的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。



技术实现要素:

本申请实施方式的目的在于提供一种地震道数据的获取方法、主节点服务器及工作节点服务器,能够提高地震道数据读取的效率。

为实现上述目的,本申请一方面提供一种分布式系统中地震道数据的获取方法,所述分布式系统中包括主节点服务器和至少一个工作节点服务器,各个所述工作节点服务器中分别存储至少一个数据块,各个所述数据块中包含至少一个地震道的数据,所述主节点服务器中包括与各个所述工作节点服务器一一对应的本地队列,所述方法包括:所述主节点服务器接收地震道数据获取请求,所述地震道数据获取请求中包括目标地震道的地震道编号;所述主节点服务器根据所述地震道编号,确定所述目标地震道对应的目标数据块;所述主节点服务器确定存储所述目标数据块的目标工作节点服务器,并将所述地震道编号存放于与所述目标工作节点服务器相对应的目标本地队列中;响应于所述目标工作节点服务器发来的任务获取请求,所述主节点服务器向所述目标工作节点服务器提供包含所述地震道编号的任务;所述主节点服务器接收所述目标工作节点服务器反馈的包含所述目标地震道数据的地震数据包。

为实现上述目的,本申请实施方式另一方面还提供一种主节点服务器,所述主节点服务器包括:地震道数据获取请求接收单元,用于接收地震道数据获取请求,所述地震道数据获取请求中包括目标地震道的地震道编号;目标数据块确定单元,用于根据所述地震道编号,确定所述目标地震道对应的目标数据块;地震道编号存放单元,用于确定存储所述目标数据块的目标工作节点服务器,并将所述地震道编号存放于与所述目标工作节点服务器相对应的目标本地队列中;任务提供单元,用于响应于所述目标工作节点服务器发来的任务获取请求,向所述目标工作节点服务器提供包含所述地震道编号的任务;地震数据包接收单元,用于接收所述目标工作节点服务器反馈的包含所述目标地震道数据的地震数据包。

为实现上述目的,本申请实施方式另一方面还提供一种分布式系统中地震道数据的获取方法,所述分布式系统中包括主节点服务器和至少一个工作节点服务器,所述方法包括:所述工作节点服务器向所述主节点服务器发送地震数据读取请求;所述工作节点服务器接收所述主节点服务器提供的地震数据读取任务,并将所述地震数据读取任务存放至自身的任务池中,所述地震数据读取任务中包括至少一个地震道编号;所述工作节点服务器从自身的任务池中提取当前地震数据读取任务,并从本地存储器中读取所述当前地震数据读取任务中各个地震道编号对应的地震道数据;所述工作节点服务器将读取的地震道数据反馈至所述主节点服务器处。

为实现上述目的,本申请实施方式另一方面还提供一种工作节点服务器,所述工作节点服务器包括:读取请求发送单元,用于向主节点服务器发送地震数据读取请求;任务接收单元,用于接收所述主节点服务器提供的地震数据读取任务,并将所述地震数据读取任务存放至自身的任务池中,所述地震数据读取任务中包括至少一个地震道编号;地震道数据读取单元,用于从自身的任务池中提取当前地震数据读取任务,并从本地存储器中读取所述当前地震数据读取任务中各个地震道编号对应的地震道数据;数据反馈单元,用于将读取的地震道数据反馈至所述主节点服务器处。

由以上本申请实施方式提供的技术方案可见,本申请通过主节点服务器可以确定地震道数据获取请求中携带的地震道编号对应的目标数据块,然后可以确定存储所述目标数据块的目标工作节点服务器。主节点服务器可以将该地震道编号存放于目标工作节点服务器对应的本地队列中。这样,目标工作节点服务器后续可以从本地队列中获取包含该地震道编号的任务,从而可以从本地存储器中直接读取对应的地震道数据,而无需从别的工作节点服务器中读取,加快了数据读取的速度。再者,每个工作节点服务器可以同时进行数据读取,这种并行的数据读取方式也进一步提高了数据读取的效率。

参照后文的说明和附图,详细公开了本申请的特定实施方式,指明了本申请的原理可以被采用的方式。应该理解,本申请的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本申请的实施方式包括许多改变、修改和等同。

针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。

应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。

附图说明

所包括的附图用来提供对本申请实施方式的进一步的理解,其构成了说明书的一部分,用于例示本申请的实施方式,并与文字描述一起来阐释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本申请实施方式中地震道数据的获取方法的流程示意图;

图2为本申请实施方式中地震道数据的获取方法的整体示意图;

图3为本申请实施方式中主节点服务器的功能模块图;

图4为本申请实施方式中工作节点服务器的功能模块图。

具体实施方式

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施方式,都应当属于本申请保护的范围。

本申请实施方式提供一种分布式系统中地震道数据的获取方法。所述分布式系统中可以包括主节点服务器和至少一个工作节点服务器,所述主节点服务器可以与各个工作节点服务器进行数据互通。在本实施方式中,地震道数据存储于各个工作节点服务器的本地存储器中。在本实施方式中,所有的地震道数据可以作为一个整体的数据文件,该数据文件可以被划分为多个数据块,每个工作节点服务器均可以存储一部分数据块。在每个数据块中,均可以包含至少一个地震道的数据。请参阅图1和图2,虽然下文描述流程包括以特定顺序出现的多个操作,但是应该清楚了解,这些过程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行(例如使用并行处理器或多线程环境)。所述方法包括以下步骤。

步骤S11:所述主节点服务器接收地震道数据获取请求,所述地震道数据获取请求中包括目标地震道的地震道编号。

在本实施方式中,所述主节点服务器可以与负责地震数据处理的应用相连接,从而可以接收应用发来的地震道数据获取请求,所述地震道数据获取请求中可以包括目标地震道的地震道编号。在本实施方式中,地震道编号可以为数字编号,地震道编号可以从1开始依次编排。在实际应用场景中,所述主节点服务器也可以接收应用发来的地震道集数据获取请求,所述地震道集数据获取请求中可以包括多个地震道的编号,针对每个地震道的编号,可以采用同样的处理方式。

步骤S12:所述主节点服务器根据所述地震道编号,确定所述目标地震道对应的目标数据块。

在本实施方式中,在工作节点服务器中都是以数据块的形式来存储地震道数据。多个地震道的数据可以包含于同一个数据块中。在数据块进行存储时,分布式系统可以记录数据块与工作节点服务器的关联关系。该关联关系可以作为一个数据表存储于分布式系统的存储中心内。这样,通过访问该数据表,便可以获知数据块与工作节点服务器的对应关系。

在本实施方式中,根据所述地震道编号,所述主节点服务器可以确定待读取的地震道数据包含于哪个数据块中。具体地,所述主节点服务器可以按照下述公式,确定所述地震道编号对应的偏移量:

σ=N×L

其中,σ表示所述偏移量,N表示所述地震道编号,N为大于或者等于1的整数,L表示地震道的数据长度。

在本实施方式中,所述主节点服务器可以基于所述偏移量,按照下述公式确定所述目标地震道对应的目标数据块的编号:

其中,k表示所述目标数据块的编号,M表示各个数据块的长度,表示向上取整运算符。

例如,所述地震道编号为10,每个地震道的数据长度为20,那么所述偏移量便可以为200。也就是说,编号为10的地震道的数据可以为偏移量从181到200的数据。假设各个数据块的长度为50,那么计算得到的目标数据块的编号便可以为4。也就是说,待获取的地震道数据位于编号为4的数据块中。

步骤S13:所述主节点服务器确定存储所述目标数据块的目标工作节点服务器,并将所述地震道编号存放于与所述目标工作节点服务器相对应的目标本地队列中。

在本实施方式中,可以通过分布式系统中的运行时系统来定义分布式系统中的主节点master服务器以及各个工作节点worker服务器。具体地,可以通过在分布式系统中的一个节点上启动守护进程,从而将该节点设置为master服务器。同样的,可以在分布式系统中的多个节点上分别启动守护进程,从而将该多个节点设置为worker服务器。

在设置了maser服务器和worker服务器之后,可以在master服务器中创建与worker服务器一一对应的本地队列,这些本地队列中可以存放地震道的编号。在worker服务器中可以创建数据读取线程池、任务池以及任务请求线程。所述任务请求线程可以用于向master服务器发送任务获取请求,所述任务池可以存放从master服务器获取的任务,所述数据读取线程池中的各个线程可以用于读取不同编号的地震道数据。

在本实施方式中,数据块与工作节点服务器之间的关联关系可以通过各自的编号来关联。例如,编号为4的数据块与编号为5的工作节点服务器相关联。这样,根据预先确定的数据块的编号与工作节点服务器之间的关联关系,所述主节点服务器便可以确定所述目标数据块的编号关联的目标工作节点服务器。

在本实施方式中,为了提高读取数据的效率,可以为各个worker服务器分配本地数据的读取任务。例如,某个worker服务器中存储了编号为5的数据块,该数据块中包含了编号从1至3的地震道的数据。那么针对编号从1至3的地震道的数据读取任务便可以存放于该worker服务器对应的本地队列中。

步骤S14:响应于所述目标工作节点服务器发来的任务获取请求,所述主节点服务器向所述目标工作节点服务器提供包含所述地震道编号的任务。

在本实施方式中,主节点服务器可以将各个地震道编号按照上述步骤的处理方式存放至对应的本地队列中,然后各个工作节点服务器便可以向主节点服务器发起任务获取请求。所述主节点服务器可以将多个地震道的编号封装于同一个任务中。这样,工作节点服务器便可以针对任务中的各个地震道编号,获取相应的地震道数据。

步骤S15:所述主节点服务器接收所述目标工作节点服务器反馈的包含所述目标地震道数据的地震数据包。

在本实施方式中,目标工作节点服务器在完成请求的任务后,可以将该任务中涉及的地震道数据作为一个地震数据包一起发送给主节点服务器。主节点服务器在接收到工作节点服务器发来的地震数据包后,可以将接收的地震数据包存储于数据缓冲区中,后续可以数据缓冲区中的地震数据包发送给应用。

在本申请一个实施方式中,直接采用多节点并行读取的方式会遇到负载不均衡问题。当地震数据的规模较小时,该地震数据文件对应的数据块在多节点间的分布可能会很不均匀,那么在分配地震道编号后可能会引起数据块较多的节点读取数据所需时间远长于其它块较少的节点,降低了整体读取效率。鉴于此,在本实施方式中在将各个地震道编号分配完成之后,可以进行负载均衡的操作。当然,在具体应用过程中,还可以是在每次收到工作节点服务器的任务请求后,进行一次针对本地队列的负载均衡操作,然后再给任务分配地震道编号。在本实施方式中,为了保证数据的完备性,每个数据块均可以设置多个备份数据块,同一个数据块的备份数据块可以存储于不同的工作节点服务器中。这样,当某个工作节点服务器对应的本地队列中地震道编号数量较多时,可以将部分地震道编号转移至存储备份数据块的其它工作节点服务器处,以达到负载均衡的要求。具体地,所述主节点服务器可以从各个本地队列中确定存放地震道编号数量最多的待转移本地队列。然后可以判断所述待转移本地队列中的地震道编号数量与任务中封装的地震道编号数量之间的大小关系,如果所述待转移本地队列中的地震道编号数量小于或者等于任务中封装的地震道编号数量,那么进行一次任务便可以处理所有的地震道编号,在这种情况下便无需进行转移。当所述待转移本地队列中的地震道编号数量大于任务中封装的地震道编号数量时,所述主节点服务器可以确定所述待转移本地队列对应的待转移的地震道编号数量。

在本实施方式中,所述主节点服务器可以按照下述公式确定所述待转移本地队列对应的待转移的地震道编号数量:

D=Tmax-Tave

其中,D表示所述待转移的地震道编号数量,Tmax表示所述待转移本地队列中存放的地震道编号的数量,Tave表示所有本地队列中存放的地震道编号的平均数量。

进一步地,尽管待转移本地队列中的地震道编号的数量较多,但是如果待转移的地震道编号数量小于或者等于任务中封装的地震道编号数量,那么该工作节点服务器在下次执行任务时,同样可以处理所有的地震道编号,在这种情况下也无需进行转移。

当所述待转移的地震道编号数量大于任务中封装的地震道编号数量时,表明下一次执行任务时,待转移工作节点服务器无法处理完所有的地震道编号,在这种情况下为了提高数据读取的效率,便可以进行负载均衡的过程。具体地,所述主节点服务器可以从所述待转移本地队列中取出已存放的一个地震道编号,并将取出的地震道编号重新存放至另一个本地队列中,所述另一个本地队列对应的工作节点服务器中存储的数据块包含所述取出的地震道编号对应的地震道数据。也就是说,转移至的另一个本地队列对应的工作节点服务器中需要存储转移的地震道编号对应的数据块,这样便可以仍然满足从本地读取数据的要求。

具体地,所述主节点服务器可以确定所述取出的地震道编号对应的备份数据块。确定备份数据块的过程与步骤S12中确定目标数据块的过程一致。所述主节点服务器可以根据数据块与工作节点服务器之间的关联关系,查询存储所述备份数据块的至少一个备份工作节点服务器,并获取各个备份工作节点服务器对应的本地队列中已存放的地震道编号的数量。这样,所述主节点服务器可以将所述取出的地震道编号存放于地震道编号的数量最少的备份工作节点服务器对应的本地队列中。当然,如果备份工作节点服务器只有一个,则直接将待转移的地震道编号存放于该备份工作节点服务器中。

在本实施方式中,所述主节点服务器可以重复上述从所述待转移本地队列中取出地震道编号并重新存放的步骤,直至取出的地震道编号的数量达到所述待转移的地震道编号数量为止,这样便可以完成负载均衡的过程。

请参阅图1和图2,在工作节点服务器这一侧,本申请实施方式同样提供一种分布式系统中地震道数据的获取方法,所述方法可以包括以下步骤。

步骤S21:所述工作节点服务器向所述主节点服务器发送地震数据读取请求。

在本实施方式中,在主工作节点服务器在本地队列中分配完地震道编号后,各个工作节点服务器便可以开始处理数据读取的任务。具体地,工作节点服务器可以通过任务请求线程向所述主节点服务器发送地震数据读取请求。所述地震数据读取请求中可以携带工作节点服务器本身的编号,从而告知主节点服务器当前是哪个工作节点服务器在发送地震数据读取请求。

步骤S22:所述工作节点服务器接收所述主节点服务器提供的地震数据读取任务,并将所述地震数据读取任务存放至自身的任务池中,所述地震数据读取任务中包括至少一个地震道编号。

在本实施方式中,主节点服务器在接收到工作节点服务器发来的地震数据读取请求后,可以提取其中的工作节点服务器编号,并向该编号对应的工作节点服务器发送地震数据读取任务,所述地震数据读取任务中可以包括至少一个地震道编号。

步骤S23:所述工作节点服务器从自身的任务池中提取当前地震数据读取任务,并从本地存储器中读取所述当前地震数据读取任务中各个地震道编号对应的地震道数据。

在本实施方式中,工作节点在接收到地震数据读取任务后,可以将该任务存放于自身的任务池中,以便后续进行处理。此外,所述工作节点服务器还可以检测自身的任务池是否被填满,若否,可以再次向所述主节点服务器发送地震数据读取请求,以进一步地获取下一个地震数据读取任务,从而保证工作节点服务器能够持续不断地处理任务。

步骤S24:所述工作节点服务器将读取的地震道数据反馈至所述主节点服务器处。

在本实施方式中,所述工作节点服务器可以依次从自身的任务池中提取任务,并从本地读取任务中包含的地震道编号对应的地震道数据。在读取了任务中涉及的所有地震道数据后,便可以将读取的地震道数据反馈至所述主节点服务器处。然后工作节点服务器便可以从自身的任务池中提取下一个任务进行处理。

请参阅图3,本申请实施方式还提供一种主节点服务器,所述主节点服务器包括:

地震道数据获取请求接收单元100,用于接收地震道数据获取请求,所述地震道数据获取请求中包括目标地震道的地震道编号;

目标数据块确定单元200,用于根据所述地震道编号,确定所述目标地震道对应的目标数据块;

地震道编号存放单元300,用于确定存储所述目标数据块的目标工作节点服务器,并将所述地震道编号存放于与所述目标工作节点服务器相对应的目标本地队列中;

任务提供单元400,用于响应于所述目标工作节点服务器发来的任务获取请求,向所述目标工作节点服务器提供包含所述地震道编号的任务;

地震数据包接收单元500,用于接收所述目标工作节点服务器反馈的包含所述目标地震道数据的地震数据包。

在本实施方式中,所述地震道编号存放单元300和所述任务提供单元400之间,可以存在负载均衡单元310,用于在每次收到工作节点服务器的任务请求后,进行一次针对本地队列的负载均衡操作。

请参阅图4,本申请实施方式还提供一种工作节点服务器,所述工作节点服务器包括:

读取请求发送单元110,用于向主节点服务器发送地震数据读取请求;

任务接收单元210,用于接收所述主节点服务器提供的地震数据读取任务,并将所述地震数据读取任务存放至自身的任务池中,所述地震数据读取任务中包括至少一个地震道编号;

地震道数据读取单元310,用于从自身的任务池中提取当前地震数据读取任务,并从本地存储器中读取所述当前地震数据读取任务中各个地震道编号对应的地震道数据;

数据反馈单元410,用于将读取的地震道数据反馈至所述主节点服务器处。

需要说明的是,上述各个功能模块的具体实现方式与步骤S11至S15以及步骤S21至S24中的描述一致,这里便不再赘述。

由以上本申请实施方式提供的技术方案可见,本申请通过主节点服务器可以确定地震道数据获取请求中携带的地震道编号对应的目标数据块,然后可以确定存储所述目标数据块的目标工作节点服务器。主节点服务器可以将该地震道编号存放于目标工作节点服务器对应的本地队列中。这样,目标工作节点服务器后续可以从本地队列中获取包含该地震道编号的任务,从而可以从本地存储器中直接读取对应的地震道数据,而无需从别的工作节点服务器中读取,加快了数据读取的速度。再者,每个工作节点服务器可以同时进行数据读取,这种并行的数据读取方式也进一步提高了数据读取的效率。

上面对本申请的各种实施方式的描述以描述的目的提供给本领域技术人员。其不旨在是穷举的、或者不旨在将本发明限制于单个公开的实施方式。如上所述,本申请的各种替代和变化对于上述技术所属领域技术人员而言将是显而易见的。因此,虽然已经具体讨论了一些另选的实施方式,但是其它实施方式将是显而易见的,或者本领域技术人员相对容易得出。本申请旨在包括在此已经讨论过的本发明的所有替代、修改、和变化,以及落在上述申请的精神和范围内的其它实施方式。

本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。

虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1