CN116975085A - 异步数据处理方法、系统以及电子设备 - Google Patents
异步数据处理方法、系统以及电子设备 Download PDFInfo
- Publication number
- CN116975085A CN116975085A CN202310668253.5A CN202310668253A CN116975085A CN 116975085 A CN116975085 A CN 116975085A CN 202310668253 A CN202310668253 A CN 202310668253A CN 116975085 A CN116975085 A CN 116975085A
- Authority
- CN
- China
- Prior art keywords
- execution
- data processing
- node
- coordinator
- context
- 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
- 238000003672 processing method Methods 0.000 title abstract description 24
- 238000012545 processing Methods 0.000 claims abstract description 260
- 238000000034 method Methods 0.000 claims description 113
- 230000008569 process Effects 0.000 claims description 49
- 230000015654 memory Effects 0.000 claims description 38
- 239000012634 fragment Substances 0.000 claims description 35
- 238000004590 computer program Methods 0.000 claims description 19
- 238000002955 isolation Methods 0.000 claims description 14
- 238000013468 resource allocation Methods 0.000 claims description 9
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 description 45
- 230000006870 function Effects 0.000 description 27
- 238000005192 partition Methods 0.000 description 27
- 230000007246 mechanism Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000007405 data analysis Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000000926 separation method Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010223 real-time analysis Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 239000002253 acid Substances 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008033 biological extinction Effects 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011981 development test Methods 0.000 description 1
- 238000004141 dimensional analysis Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 239000002699 waste material 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种异步数据处理方法、系统以及电子设备,其涉及大数据领域中的数据处理技术领域,该方法适用于异步数据处理系统,该异步数据处理系统包括前端节点、协调器以及至少一个工作节点,对于本申请实施例提供的异步数据处理方法,协调器接收到前端节点发送的数据处理计划后,将数据处理计划转换为至少一个执行计划分片,并以执行计划分片为粒度将其分配给工作节点,不仅能够提升数据处理的吞吐量,还能够基于实际需求对工作节点进行扩展,即能够提升异步数据处理系统的性能以及异步数据处理系统的扩展性。
Description
技术领域
本申请实施例涉及大数据领域中的数据处理技术领域,并且更具体地,涉及一种异步数据处理方法、系统以及电子设备。
背景技术
隔离的执行上下文意味着第一个应用程序不能访问在另一个隔离的执行上下文中的第二个应用程序的对象(或者属于系统运行时环境的对象),除非第二个应用程序(或者系统运行时环境)显式地提供了用于访问数据的接口。可以由防火墙来执行隔离的执行上下文。
为了能够在使用隔离的执行上下文的计算环境或类似环境中的安全而又高性能的共享,CN101004694A公开了一种隔离的执行上下文之间数据转移的方法和装置,在该方法中,在第一个隔离的执行上下文中执行的第一个应用程序拥有的对象可以被在第二个隔离的执行上下文中执行的第二个应用程序所访问。具体地,将该对象与该第一个隔离的执行上下文相关联,接收到该对象可以被第二个应用程序所访问的请求后,通过将与该对象相关联的隔离的执行上下文改变为该第二个隔离的执行上下文,将该对象的所有权转移到第二个应用程序,从而使该对象能够被第二个应用程序所访问。
此外,企业可以利用大数据来分析发现商业洞见,广告、电商等服务,大数据系统通常会聚合实时数据来不断分析,以挖掘新鲜的产品和用户数据,这些数据被广泛用于在线和离线场景中。大数据解决方案通常使用不同系统的组合来构建混合事务分析处理系统,这导致系统的数据冗余和数据同步过于复杂。尤其是,由于处理实时大数据对混合事务分析处理系统的工作负载需求过大,即便通过转移对象的所有权会能够在使用隔离的执行上下文的计算环境或类似环境中的安全而又高性能的共享,也会导致混合事务分析处理系统面临高并发混合数据处理负载、高吞吐实时数据写入以及高弹性和高伸缩性的需求。
发明内容
本申请实施例提供了一种异步数据处理方法、系统以及电子设备,能够提升系统的性能以及系统的扩展性。
第一方面,本申请实施例提供了一种异步数据处理方法,该方法适用于异步数据处理系统,该异步数据处理系统包括前端节点、协调器以及至少一个工作节点,该方法包括:
该前端节点接收应用程序发送的数据处理请求,并向该协调器发送基于该数据处理请求生成的数据处理计划;
该协调器将该数据处理计划转化为至少一个执行计划分片,并将该至少一个执行计划分片中的第一执行计划分片分配给该至少一个工作节点中的第一工作节点;
该第一工作节点执行该第一执行计划分片,并向该协调器发送该第一执行计划分片的第一执行结果;
该协调器基于收到的该第一执行结果确定该数据处理请求的数据处理结果,并通过该前端节点向该应用程序发送该数据处理结果。
第二方面,本申请实施例提供了一种异步数据处理系统,包括:
前端节点、协调器以及至少一个工作节点;
该前端节点用于:接收应用程序发送的数据处理请求,并向该协调器发送基于该数据处理请求生成的数据处理计划;
该协调器用于:将该数据处理计划转化为至少一个执行计划分片,并将该至少一个执行计划分片中的第一执行计划分片分配给该至少一个工作节点中的第一工作节点;
该第一工作节点用于:执行该第一执行计划分片,并向该协调器发送该第一执行计划分片的第一执行结果;
该协调器还用于:基于收到的该第一执行结果确定该数据处理请求的数据处理结果,并通过该前端节点向该应用程序发送该数据处理结果。
第三方面,本申请实施例提供了一种电子设备,包括:
处理器,适于实现计算机指令;以及,
计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令适于由处理器加载并执行上文涉及的第一方面提供的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,该计算机指令被计算机设备的处理器读取并执行时,使得计算机设备执行上文涉及的第一方面提供的方法。
第五方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上文涉及的第一方面提供的方法。
基于以上技术方法,对于本申请实施例提供的异步数据处理方法,协调器接收到前端节点发送的数据处理计划后,将数据处理计划转换为至少一个执行计划分片,并以执行计划分片为粒度将其分配给工作节点,不仅能够提升数据处理的吞吐量,还能够基于实际需求对工作节点进行扩展,即能够提升系统的性能以及系统的扩展性。
附图说明
图1是本申请实施例提供的混合事务分析处理系统的示意性框图。
图2是本申请实施例提供的异步数据处理系统的示意性框图。
图3是本申请实施例提供的异步数据处理方法的示意性流程图。
图4是本申请实施例提供的并行的执行数据处理的方法的示例。
图5是本申请实施例提供的执行分片实例的执行过程的示例。
图6是本申请实施例提供的调度组的示例。
图7是本申请实施例提供的优化单点查询和单点写入的方法的示例。
图8是本申请实施例提供的读写分离框架的示例。
图9是本申请实施例提供的异步数据处理系统的另一示意性框图。
图10是本申请实施例提供的电子设备的示意性框图。
具体实施方式
下面将结合具体实施例对本申请提供的技术方案进行清楚完整地描述。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
此外,在本申请实施例中涉及的术语“指示”可以是直接指示,也可以是间接指示,还可以是表示具有关联关系。举例说明,A指示B,可以表示A直接指示B,例如B可以通过A获取;也可以表示A间接指示B,例如A指示C,B可以通过C获取;还可以表示A和B之间具有某种关联关系。术语“对应”可表示两者之间具有直接对应或间接对应的关系,也可以表示两者之间具有关联关系,也可以是指示与被指示、配置与被配置等关系。描述“在……时”可以被解释成为“如果”或“若”或“当……时”或“响应于”。类似地,取决于语境,短语“如果确定……”或“如果检测(陈述的条件或事件)……”可以被解释成为“当确定……时”或“响应于确定……”或“当检测(陈述的条件或事件)……时”或“响应于检测(陈述的条件或事件)……”。术语“预定义”或“预定义规则”可以通过在设备(例如,包括终端设备和网络设备)中预先保存相应的代码、表格或其他可用于指示相关信息的方式来实现,本申请对于其具体的实现方式不做限定。比如预定义可以是指协议中定义的。术语“多个”是指两个或两个以上。术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。具体地,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请提供的方案涉及大数据(Big data)技术领域。
具体地,本申请提供的方案涉及大数据处理或分析进行数据处理的技术领域。
其中,大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着“云”时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、“云”计算平台、互联网和可以进行扩展的存储系统。
例如,本申请涉及的方案主要面向电子商务、广告推荐、数据分析等重要业务场景,企业可以利用大数据来分析发现商业洞见,广告、电商等服务,大数据系统通常会聚合实时数据来不断分析,以挖掘新鲜的产品和用户数据,这些数据被广泛用于在线和离线场景中。大数据解决方案通常使用不同系统的组合来构建混合事务分析处理系统,这导致系统的数据冗余和数据同步过于复杂。本申请通过统一混合服务和分析处理,可以支持实时数据读取和低延迟的服务以及交互式分析处理,同时也支持与其他系统(如ORACLE、MySQL)的联合查询执行。
本申请提供的方案还可以涉及数据库技术领域。
具体地,本申请提供的方案涉及将数据库的读写技术领域。
其中,数据库(Database),可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理系统(英语:Database Management System,DBMS):是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型作分类,例如关系式、可扩展标记语言(Extensible MarkupLanguage,XML);或依据所支持的计算机类型作分类,例如服务器群集、移动电话;或依据所用查询语言作分类,例如SQL(结构化查询语言(Structured Query Language)、XQuery;或依据性能冲量重点作分类,例如最大规模、最高运行速度;或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
例如,本申请涉及的大数据系统在挖掘出新鲜的产品和用户数据后,可将这些数据存储在数据库中,以支持实时数据读取和低延迟的服务以及交互式分析处理,同时也可以支持与其他系统(如ORACLE、MySQL)的联合查询执行。
本申请提供的方案还可以涉及云计算技术领域。
具体地,本申请提供的方案涉及对大数据进行基于“云计算”的处理和分析的技术领域。
其中,“云计算”(cloud computing)指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义“云计算”指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。“云计算”是网格计算(Grid Computing)、分布式计算(DistributedComputing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network StorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,“云计算”迅速发展起来。不同于以往的并行分布式计算,“云计算”的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
本申请提供的方案还可以涉及“云存储”技术领域。
具体地,本申请提供的方案涉及对大数据的处理结果和分析结果进行“云存储”的技术领域。
其中,“云存储”(cloud storage)是在“云计算”概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷,分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID entity,ID)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储系统分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而将物理存储空间分配给逻辑卷。
为便于理解本申请提供的技术方案,下面对相关术语进行说明。
联机事务处理(Online Transaction Processing,OLTP):指的是一种在实时环境下处理交易和业务操作的数据库处理系统。在OLTP系统中,每个交易和业务操作都被视为一个事务,这个事务必须满足ACID属性:原子性、一致性、隔离性和持久性。这意味着在一个事务中,所有的操作要么全部成功,要么全部失败,保证了数据的完整性和一致性。
联机分析处理(Online Analytical Processing,OLAP):是一种数据分析和处理技术,可以用来快速地对大规模数据进行复杂的分析和查询。它主要用于数据仓库和商业智能系统中,可以通过多维数据分析的方式,对数据进行多维度的探索和分析,可以实现对数据的多角度、多维度的分析,从而更好地支持决策分析。
混合事务分析处理系统:是一种混合事务处理和分析处理的综合系统,将交易处理和分析处理放在同一个系统中,能够解决数据复制和数据同步问题。
缓存(cache)命中率:缓存命中率是指终端用户访问加速节点时,如果该节点有缓存了要被访问的数据时就叫做命中,如果没有的话需要回原服务器取,就是没有命中,取数据的过程与用户访问是同步进行的,所以即使是重新取的新数据,用户也不会感觉到有延时,缓存命中率是判断加速效果好坏的重要因素之一。
进程:是指一个内存中运行的应用程序,例如已经在内存中运行的程序。一个进程都有一个独立的内存空间,一个电脑可以同时运行多个进程;进程也是程序的一次执行过程,包括了动态创建、调度和消亡的整个过程,是系统运行程序的基本单位。
线程:是进程中的一个执行单元,线程是依赖于进程,负责当前进程中程序的执行,一个进程中至少有一个线程,即单线程程序。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。
微线程:也可以称为协程(Coroutines),是一种比线程更加轻量级的微线程。类比一个进程可以拥有多个线程,一个线程也可以拥有多个微线程。微线程不是进程,也不是线程,微线程可以是一个函数,可以在某个地方挂起,并且可以重新在挂起处继续运行。所以说,微线程与进程、线程相比,不是一个维度的概念。
一个进程可以包含多个线程,一个线程也可以包含多个微线程。也就是说,一个线程内可以有多个那样的特殊函数在运行。但是有一点值得注意,一个线程内的多个微线程的运行是串行的。换言之,如果有多核CPU的话,多个进程或一个进程内的多个线程是可以并行运行的,但是一个线程内的多个微线程却绝对串行的,无论有多少个CPU(核)。这个比较好理解,毕竟微线程虽然是一个特殊的函数,但仍然是一个函数。一个线程内可以运行多个函数,但是这些函数都是串行运行的。当一个微线程运行时,其余的微线程必须挂起。
并行:指两个或多个事件在同一时刻发生,即同时发生且同时处理的执行者不是一个。
并发:指两个或多个事件在同一个时间段内发生,即交替的发生且执行者是一个。
同步:同步是指一个进程在执行某个请求的时候,如果该请求需要一段时间才能返回信息,那么这个进程会一直等待下去,直到收到返回信息才继续执行下去。
异步:进程不需要一直等待下去,而是继续执行下面的操作,不管其他进程的状态,当有信息返回的时候会通知进程进行处理,这样就可以提高执行的效率了,即异步是:发出的一个请求,该请求会在后台自动发出并获取数据,然后对数据进行处理,在此过程中,我们可以继续做其他操作,不管它怎么发出请求,不关心它怎么处理数据。
有向无环图(Directed Acyclic Graph,DAG):在数学,特别是图论和计算机科学中,DAG指的是一个无回路的有向图。如果有一个非DAG,且A点出发向B经C可回到A,形成一个环。将从C到A的边的方向改为从A到C,则变成DAG。在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个DAG。因为有向图中一个点经过两种路线到达另一个点未必形成环,因此DAG未必能转化成树,但任何有向树均为DAG。
如前所述,企业可以利用大数据来分析发现商业洞见,广告、电商等服务,大数据系统通常会聚合实时数据来不断分析,以挖掘新鲜的产品和用户数据,这些数据被广泛用于在线和离线场景中。大数据解决方案通常使用不同系统的组合来构建混合事务分析处理系统,这导致系统的数据冗余和数据同步过于复杂。
尤其是,在推荐服务等典型的业务场景中,实时数据和特征变得非常重要,因为混合事务分析处理系统可以基于这些实时数据提供个性化的推荐。为了实现这些目标,混合事务分析处理系统后端的大数据技术栈已经变得极其复杂。
图1是本申请实施例提供的混合事务分析处理系统的示意性框图。
如图1所示,混合事务分析处理系统也可称为混合查询负载系统,其包括的系统包括但不限于:日志系统、数据库、报表系统、分析系统以及推荐系统。
其中,日志系统的数据和数据库的数据经过筛选得到实时数据,实时数据经过实时加工,例如通过特征处理平台进行实时的数据加工,可以得到实时特征。进一步的,实时数据可被读取到报表系统中以支持报表系统提供的实时查询能力,实时数据还可以被读取到分析系统中以支持分析系统提供的实时分析能力。
为了捕捉个性化的实时行为,推荐系统提供的推荐服务严重依赖于实时特征和不断更新的模型。通常有以下两种实时特征:
1.平台积极收集大量的实时事件,包括日志事件(如页面浏览,用户点击),以及交易数据。这些事件的体积非常大,其中绝大部分是非事务型日志数据,这些事件立即被读取到数据技术栈中以备将来使用,但更重要的是它们与各种维度下的数据联接在一起来生成有用的特征,这些特征实时地被写入推荐系统,这种实时数据处理需要极低的延迟和高吞吐量的实时点查询。特征处理平台还通过滑动窗口聚合实时事件来派生许多特征,涉及多种维度和时间粒度,例如5分钟项目点击、7天页面浏览和30天周转率。这些聚合是根据滑动窗口的粒度以批处理方式或流(flow)处理方式进行的,并被读取到报表系统和分析系统中。这些实时数据也用于生成训练数据,以持续更新推荐模型,一整套支持推荐系统的检测、验证、分析和细化流程,包括但不限于对收集的事件进行实时的分析、检测关键指标和进行A/B实验,以及大规模的批量查询以评估模型性能并确定优化方法。
然而,由于混合事务分析处理系统包括的系统过多,这会导致混合事务分析处理系统的数据冗余和数据同步过于复杂,进而导致整个系统面临如下几个挑战:
1.高并发混合查询负载。
混合事务分析处理系统面临着OLAP系统前所未有的高并发混合查询负载。实际上,相比OLAP系统的查询负载,混合事务分析处理系统的服务查询负载的并发度通常要高得多。在实际应用中,混合事务分析处理系统的服务查询可能以每秒几百个个查询的速率到达,这比OLAP系统的查询速率高了1个数量级。
此外,混合事务分析处理系统的服务查询的延迟要求比OLAP系统的查询更严格。如何在多路复用中满足这些不同的查询并充分利用计算资源是非常具有挑战性的。OLAP系统通常使用进程/线程并发模型,即使用单独的进程或线程来处理查询,并依赖操作系统来调度并发查询。这种设计在上下文切换时引起的昂贵成本限制了系统的并发度,因此不再适用于混合事务分析处理系统。
2.高吞吐实时数据写入。
在处理高并发查询工作负载的同时,混合事务分析处理系统还需要处理高吞吐量的数据写入。在所有写入的数据中从OLTP系统同步数据的传统方式仅占很小一部分,而大多数数据来自于各种没有强事务语义的实时日志数据等数据源。写入量可以比混合事务分析处理系统观察到的数据还要高得多。例如在上述场景中,写入速率可以达到每秒数千万。此外,与传统的OLAP系统不同,混合事务分析处理系统需要实时数据写入的数据必须在亚秒内可见以确保分析数据的新鲜度。
3.高弹性和高伸缩性。
写入和查询工作负载可能会出现突变,因此,需要混合事务分析处理系统具有弹性和伸缩性并能及时反应。本申请观察到在实际应用中,峰值写入吞吐量达到平均值的2.5倍,而峰值查询吞吐量达到平均值的3倍。此外写入和查询工作负载中的突变并不一定同时发生,这要求系统独立扩展存储和计算。
有鉴于此,本申请提供了一种异步数据处理方法,通过统一混合服务和分析处理,可以支持实时数据读取和低延迟的服务以及交互式分析处理,同时也支持与其他系统(如ORACLE、MySQL)的联合查询执行。
具体而言,本申请提供的异步数据处理方法将数据处理计划转换为执行计划分片的任务,并以执行计划分片为粒度将其分配给工作节点,不仅能够提升数据处理的吞吐量,还能够基于实际需求对工作节点进行扩展,即能够提升系统的性能以及系统的扩展性。
此外,高并发系统特别是有大量I/O的系统,频繁地等待或者任务切换是常见的系统瓶颈。异步处理是一种已经被证明行之有效的避免这些瓶颈,并把高并发系统性能推到极致的方法。
异步处理系统的整个后端,包括执行引擎、存储引擎和其它组件,统一使用异步无锁编程框架能够最大化异步执行的效果。每个分段的实例使用调度框架里面的一个线程级别隔离的执行上下文(逻辑调度单位),使得一个分段中的所有算子和存储引擎可以异步执行并且无锁安全访问绝大多数资源。
但是,线程级别隔离的执行上下文会有如下问题:
1.在操作系统层面。
线程切换是一个不小的开销。为了把因为等待I/O而空闲的CPU利用起来,需要把很多CPU浪费在线程切换上。严重的时候线程切换能浪费掉一半以上的CPU。
2.线程的数目很难掌握。
不同的查询、不同的数据、不同的缓存(cache)命中率,被I/O阻塞的可能性差异会非常大,以至于需要的线程数量的差别非常大。这种情况下使用固定线程数目的线程池性能影响很大,线程多了会引起多余的切换,加剧切换的开销;线程过少可能会导致没法把空闲的CPU都利用起来。而相比于线程切换,线程的创建和销毁会带来更大的开销,所以想要通过动态创建线程来保持恰当的线程数,这也是不太可能的。
工作单元进行线程切换时,需要在执行切换前把当前线程(任务)的状态保存下来,以便下次切换回这个线程时可以再次加载这个线程的状态,然后加载下一线程的状态并执行。任务的状态保存及再加载,这段过程就叫做上下文切换。而并发查询的工作单元之间切换上下文的开销会成为系统的瓶颈。
有鉴于此,本实施例提供了一个名为执行上下文的用户空间线程,作为工作单元的资源抽象,功能类似于线程但是创建、销毁、调度、切换的开销要小得多。具体地的,该异步数据处理方法将执行上下文作为系统线程和用户任务之间的资源抽象,并采用了基于执行上下文的服务资源调度机制和负载均衡机制,能够用于解决处理实时大数据的工作负载需求不足的问题,且解决了使用不同系统组合处理这些负载时产生的过多数据重复和系统之间复杂的数据同步所带来的挑战。
与被抢占调度的线程不同,被抢占的线程调度指的是一个线程只能同时执行一个任务,如果线程切换到执行另外一个任务,需要重新创建和销毁内存资源,其创建和销毁成本很高。本实施例中,执行上下文是平稳协作调度的,不使用任何系统调用或同步原语;或者说,执行上下文相当于细粒度的协程,切换到执行另外的任务时不需要重新创建和销毁资源。因此,执行上下文之间的切换成本几乎可以忽略不计。调度程序采用执行上下文作为基本调度单元。计算资源以执行上下文为粒度分配,进一步调度其内部任务。一个执行上下文将在其分配的线程上执行。可以根据业务逻辑的需要,创建足够多的“线程”去并发使用CPU,而不必担心切换的开销大、或者CPU用不满;当业务逻辑需要使用CPU时,直接根据并发度的需要去创建多个这样的“线程”,用完即销毁。由此,不仅使得业务逻辑能够灵活控制任务的并行度,还能够避免系统不必受制于底层框架。
此外,该异步数据处理方法通过将计算和存储层解耦以及将读写分离,不仅能够在每个层次上进行灵活的扩展,使得整个系统能够根据实际工作量进行可扩展的部署,提升了系统的扩展性,还能够实现高吞吐量的数据写入以及优化了查询性能。
在实际业务应用中,本申请提供的查询方法在系统吞吐量和端到端查询延迟方面的表现均优于其他系统,是处理大数据工作负载的一种可扩展和高效的解决方案。
下面结合附图对本申请提供的异步数据处理方法适用的异步数据处理系统进行详细说明。
图3是本申请实施例提供的异步数据处理系统的示意性框图。
如图3所示,该异步数据处理系统可包括前端节点、协调器、存储管理器以及资源管理器。工作节点可包括资源管理和调度程序、上下文池以及一个或多个分片。前端节点可接收数据处理请求,并基于数据处理请求生成数据处理计划;然后将数据处理计划转发给协调器,以便协调器将数据处理计划分配给工作节点进行并行处理。
其中,异步数据处理系统中的各个组件的介绍如下:
1.表组:包括多张表。根据相关性将表进行分组的,将经常进行关联的表组合在一起有助于消除不必要的数据传输。可以被分为多个表组(Table group)分片,其也可称为数据库分片,每个数据库分片包含一个表的基础数据和所有相关索引的分区。
2.前端节点:是异步数据处理系统中用于接收来自客户端提交的数据处理请求并向客户端返回数据处理结果的节点。具体地,前端节点可包括优化器,前端节点可将优化器生成的数据处理计划转发给协调器,以便协调器将数据处理计划分配给工作节点进行并行处理。前端节点还可以负责与存储管理器同步元数据信息。
3.协调器:作用是将数据处理计划分派到不同的工作节点上执行,并与存储管理器和资源管理器同步本地副本的位置和负载信息以便派发数据处理计划。同时协调器还支持将单一数据处理跨越系统(如Hive和HBase)和其他数据处理引擎执行,以便与其他服务进行交互。协调器可以将要在不同系统中执行的操作编译为单独的分片,并由协调器将这些分片分派到目标处理系统。
4.执行上下文:是异步数据处理系统中的一个资源抽象,用于管理并行执行的各种任务。执行上下文是超轻量级的,可以在系统线程池中协作调度,几乎没有上下文切换的开销。异步数据处理系统将客户端提交的数据处理请求细分为精细的工作单元,并将它们映射到执行上下文中进行调度,使异步数据处理系统能够多路复用大量数据处理任务。执行上下文还有利于保持不同数据处理之间的资源隔离,以便低延迟的服务工作负载与分析工作负载可以在同一系统中并存而不会被阻塞。
5.上下文池:指的是执行上下文池,它是一个资源分配单元。每个上下文池包含了不同类型的执行上下文,每个执行上下文都代表一个任务的执行上下文和资源消耗,上下文池用于:分类别和优先级调度不同类型的任务,以便于资源分配和调度。上下文池中的上下文数量和资源占用可根据需求进行动态伸缩,以适应不同类型任务的并行度和访问模式。
6.资源管理和调度程序:提供基于执行上下文的调度机制来协作调度系统线程池(即上下文池)中的执行上下文。执行上下文是超级轻量级的,可以创建和销毁几乎没有任何成本。它提供一种异步任务接口,将用户的写和读取任务划分为细粒度的工作单元,并将这些工作单元映射到执行上下文进行调度。资源管理和调度程序可以将执行上下文分组到不同的调度组中,每个调度组都有自己的资源份额,并且责任是保证每个调度组的消耗份额,并在调度组之间实施资源隔离和公平性。
在实际过程中,前端节点接收客户端提交的数据处理请求并返回数据处理结果。对于每个数据处理请求,前端节点中的优化器生成数据处理计划,将其并行化为有向无环图(Directed Acyclic Graph,DAG)的执行分片实例。协调器将数据处理计划中的执行分片实例分派给工作节点,每个节点将执行分片实例映射为工作单元。工作节点是一组物理资源,即CPU核心和内存。每个工作节点可以保存包含多个数据库分片的内存表。在工作节点中,工作单元作为执行上下文在上下文池中执行。调度程序在系统线程之上通过预配置的调度策略调度上下文池。
此外,资源管理器用于管理数据库分片在工作节点间的分配:资源管理器负责向集群添加/删除工作节点。工作节点定期向资源管理器发送心跳。在工作节点故障或集群中的工作量激增时,资源管理器动态地向集群中添加新的工作节点。异步数据处理系统允许执行单个数据处理跨越系统和其他数据处理引擎。例如当执行分片实例需要访问未存储在异步数据处理系统中的数据时,协调器将它们分发到存储所需数据的其他系统中。例如,可以通过设计一组统一的数据处理API,使在异步数据处理系统中执行的工作单元可以与其他执行引擎通信。非系统执行引擎具有独立于系统的数据处理和调度机制。
图3是本申请实施例提供的异步数据处理方法100的示意性流程图,该方法100可以由任何具有数据处理能力的电子设备或系统(例如,该系统可以是图2所示的异步数据处理系统)执行。例如,该电子设备或系统可实施为服务器。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、以及大数据和人工智能平台等用于提供基础“云”计算服务的云服务器,服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
应当理解,该异步数据处理方法100可以面向大数据查询、电子商务、广告推荐、数据分析等重要业务场景。例如,企业或应用程序可以利用该异步数据处理方法100查询基于大数据来分析发现的商业洞见,广告、电商推荐等服务。再如,企业或应用程序可以利用该异步数据处理方法100查询对聚合的实时数据进行分析挖掘的新鲜产品和数据。再如,企业可利用该异步数据处理方法100查询企业内部的用户标签和广告等业务,为大数据和广告业务赋能。该异步数据处理方法100可应用于在线和离线场景。
需要说明的是,该异步数据处理方法100符合法律法规对用户隐私的保护要求。具体地,该异步数据处理方法100涉及对大数据的分析和处理,为了保护用户隐私,在使用或获取用户数据时,该异步数据处理方法100中使用的数据可以是经过用户授权或同意的数据,例如,该异步数据处理方法100中使用的数据可以是经过用户对数据的获取进行授权和/或用户对数据的用途进行授权后获取的数据。
如图3所示,该方法100适用于异步数据处理系统,该异步数据处理系统包括前端节点、协调器以及至少一个工作节点,该方法100可包括:
S110,前端节点接收应用程序发送的数据处理请求,并向该协调器发送基于该数据处理请求生成的数据处理计划。
示例性地,该数据处理计划可以是表示为DAG的处理计划。
S120,协调器将该数据处理计划转化为至少一个执行计划分片,并将该至少一个执行计划分片中的第一执行计划分片分配给该至少一个工作节点中的第一工作节点。
S130,第一工作节点执行该第一执行计划分片,并向该协调器发送该第一执行计划分片的第一执行结果。
示例性地,该第一工作节点可以存储有数据库分片,进而基于该数据库分片执行该第一执行计划分片。
示例性地,该第一工作节点可以从存储有数据库分片的单元获取分片文件,进而基于分片文件中的数据库分片执行该第一执行计划分片。
值得注意的是,工作节点存储有数据库分片时,可以工作节点之间迁移数据库分片。在具体实现中,读/写分片任务的执行计划分片总是分配到托管数据库分片的工作节点。如果一个数据库分片成为热点,或者一个工作节点超负荷,系统支持将一些数据库分片从超负荷的工作节点迁移到具有更多可用资源的其他工作节点。为了迁移数据库分片,本申请将数据库分片在存储管理器中标记为失败,并遵循标准的数据库分片恢复过程(例如通过标注数据库分片的副本恢复。)在新的工作节点中恢复它,通过数据库分片的只读副本,这样可以将只读任务的执行计划分片分配到位于多个工作节点的数据库分片的只读副本中,从而实现负载均衡,以提升系统性能。
S140,协调器基于收到的该第一执行结果确定该数据处理请求的数据处理结果,并通过该前端节点向该应用程序发送该数据处理结果。
本实施例中,协调器接收到前端节点发送的数据处理计划后,将数据处理计划转换为至少一个执行计划分片,并以执行计划分片为粒度将其分配给工作节点,不仅能够提升数据处理的吞吐量,还能够基于实际需求对工作节点进行扩展,即能够提升系统的性能以及系统的扩展性。
图4是本申请实施例提供的并行的执行数据处理的方法的示例。
如图4所示,前端节点接收到查询请求后,前端节点中的优化器生成表示为DAG的查询计划,并在分区界限处将DAG分为执行计划分片。共有三种类型的执行计划分片:读取/写入/查询执行计划分片。读取/写入执行计划分片包含读取/写入运算符访问表(即读取执行计划分片包含读取运算符访问表,写入执行计划分片包含写入运算符访问表),而查询执行计划分片包含非读取/写入运算符(即查询执行计划分片包括非读取运算符和非写入运算符)。然后,将每个执行计划分片按照数据并行方式并行化为多个执行分片实例,例如,每个读取/写入执行分片实例处理一个数据库分片。数据并行是指将大数据拆分成若干个部分,在多个处理单元上并行处理这些部分,最后将结果合并成一个完整的结果的处理方式。前端节点将查询计划转发给协调器。协调器将执行计划分片分派给工作节点。读取/写入执行计划分片始终被分派到托管访问的数据库分片的工作节点。可以在任何工作节点上执行查询执行计划分片,并考虑到工作节点的工作负载来进行分派,以实现负载平衡。工作节点的工作量信息可以与存储管理器和资源管理器同步。在工作节点中,执行计划分片划分为执行分片实例,并将其映射到工作单元,工作单元是异步查询系统中查询执行的基本单元。工作单元可以在运行时动态生成。例如,一个查询的执行计划分片需要并发执行,并发读为3,那么对应3个工作单元。
应当理解,图4仅以数据处理请求为查询请求为例对本申请提供的异步数据处理方法进行了说明,不应理解为对本申请的限制。
在一些实施例中,该S130可包括:
该第一工作节点将该第一执行计划分片,划分为至少一个执行分片实例;该第一工作节点将该至少一个执行分片实例中的第一执行分片实例映射至第一执行上下文;然后,该第一工作节点基于该第一执行上下文调度该第一工作节点中的工作单元;该第一工作节点利用调度的该工作单元执行该第一执行分片实例,并向该协调器发送该第一执行分片实例的执行结果;其中,该第一执行上下文为系统线程池中的用户空间线程关联的执行上下文,该第一执行结果包括该第一执行分片实例的执行结果。
示例性地,该第一工作节点包括该至少一个执行分片实例对应的至少一个执行上下文。该至少一个执行分片实例与该至少一个执行上下文一一对应。
示例性地,该第一工作节点利用调度的该工作单元可以是一个或多个工作单元,该工作单元可以指并发查询的基本单元,例如一个查询的执行分片实例需要并发执行且并发读为3,那么对应3个工作单元。
图5是本申请实施例提供的执行分片实例的执行过程的示例。
如图5所示,该第一工作节点可以利用调度的该工作单元,基于Poll操作执行该第一执行分片实例,Poll指的是I/O多路复用的函数,操作系统可以通过poll函数执行该第一执行分片实例,得到该第一执行分片实例的执行结果。
本实施例中,工作节点是实际的物理资源,其可以执行多个线程,该执行上下文可以是微线程,是系统线程池中的用户空间线程关联的执行上下文,其作为工作单元的资源抽象或其作为系统线程和用户任务之间的资源抽象,功能类似于线程;或者说,执行上下文是抽象的资源,用于在线程之间分配CPU和内存资源,一个线程可以执行多个执行上下文。但是值得注意的是,由于其调度和管理是由独立的线程池和调度框架来实现的,从而让多个任务可以安全高效地共享同一批计算资源,且创建、销毁、调度、切换的开销要小得多,能工提升系统性能。
示例性地,该第一工作节点可以采用基于执行上下文的服务资源调度机制和负载均衡机制,以解决处理实时大数据的工作负载需求不足的问题,且解决了使用不同系统组合处理这些负载时产生的过多数据重复和系统之间复杂的数据同步所带来的挑战。
其中,基于执行上下文的服务资源调度机制是:基于系统线程池中提供用户空间线程关联的执行上下文对工作节点中的工作单元进行调度。执行上下文是超轻量级的,可以在几乎无成本的情况下创建和销毁。一个系统线程池会对应多个线程,每个线程可以执行轻量级的执行上下文。每当有新的执行上下文,就会加入用户的系统线程池的任务队列,等待线程来执行对应的执行上下文。
示例性地,若该第一执行分片实例为读取分片实例,则第一该第一执行上下文调度该第一工作节点中的工作单元可以是读取同步工作单元。
具体地,读取分片实例最初映射到一个读取同步工作单元,该读取同步工作单元从元数据文件中获取分片存储器的当前版本,包括只读的内存表快照和分片文件列表。内存表快照是指在内存表中数据被写入磁盘之前的副本。当内存表被填满时,会将内存表快照写入磁盘作为分片文件。接下来,读取同步工作单元生成多个读取应用工作单元,以并行的方式读取内存表和分片文件,并在读取数据上执行下游运算符。这个机制利用内部运算的高并行性机制,可以更好地利用网络和I/O带宽,提升查询性能。
示例性地,若该第一执行分片实例为写入分片实例,则第一该第一执行上下文调度该第一工作节点中的工作单元可以是写操作同步工作单元。
写入分片实例将所有非写操作映射到一个写操作同步工作单元;然后,写操作同步工作单元将写入的数据日志持久化到预写入日志中。然后,写同步工作单元生成多个写应用工作单元,每个写应用工作单元并行更新一个分片存储器。
示例性地,该第一执行上下文调度该第一工作节点中的工作单元可以是特殊的工作单元。例如,该特殊的工作单元可以是与异步数据处理系统之外的系统进行通信的工作单元。
具体地,为了与开源世界中可用的丰富服务进行交互(例如Hive和HBase),该异步数据处理系统允许其他查询系统进程中的单个查询跨越系统和其他物理隔离。在查询编译期间,异步数据处理系统将要在不同系统中执行的运算符编译为单独的片段,然后由异步数据处理系统中的协调器将其分配到它们所在的系统。与异步数据处理系统互动的其他系统被抽象为特殊的工作单元,每个工作单元都映射到异步数据处理系统统一管理的执行上下文,这个工作单元可以与异步数据处理系统之外的系统进行通信。
此外,异步数据处理系统除了访问其他系统中的数据外,还可以作为系统安全中的沙箱隔离机制,例如用户可以提交带有可能不安全的用户定义函数的查询,异步数据处理系统可以将这些函数的执行传播到执行引擎进程中,这些进程可以在与异步数据处理系统中其他用户物理隔离的上下文中执行这些函数。
示例性地,该异步数据处理系统可以在工作节点内的线程之间重新分配执行上下文。
具体地,在工作节点中,资源管理器将执行上下文,在每个执行上下文池内的线程之间重新分配以平衡工作负载。资源调度器可以执行以下三种类型的重新分配:(1)、新创建的执行上下文总是分配给线程池中执行上下文数量最少的线程;(2)、资源调度器定期在线程之间重新分配执行上下文,使得线程之间的执行上下文数量差距最小;(3)、资源调度器还支持工作负载截取。一旦某一个线程没有执行上下文可以调度,它就从在同一线程池中具有最大执行上下文数量的线程截取一个执行上下文。
值得注重的是,本实施例中涉及的执行上下文的重新分配仅在它没有运行任何任务时进行。
当然,在其他可替代实施例中,协调器将该数据处理计划转化为至少一个执行计划分片后,还可以将该第一执行计划分片,划分为至少一个执行分片实例,并将该至少一个执行分片实例中的第一执行分片实例分配给该至少一个工作节点中的第一工作节点,以便该第一工作节点执行该第一执行分片实例,本申请对此不作具体限定。
下面对执行上下文的结构进行说明。
一、执行上下文的任务队列。
执行上下文的任务队列可包括以下两个队列:
1.无锁内部队列,存储由当前执行上下文提交的任务。工作节点收到的任务是协调器分配的执行分片实例,执行上下文提交的任务指:映射到执行上下文的执行分片实例。
2.线程安全的提交队列,存储由其他执行上下文提交的任务。一旦安排,提交队列中的任务将被重新定位到内部队列中,以便进行无锁调度。
内部队列中的任务按照先进先出队列(First in First out,FIFO)顺序进行调度。
二、执行上下文的状态。
在执行上下文的生命周期中,其会在可运行、阻塞和挂起三种状态之间切换。挂起意味着执行上下文无法被调度,因为其任务队列为空。将任务提交到执行上下文会将其状态切换为可运行状态,表示执行上下文可以被调度。如果执行上下文中的所有任务都被阻塞,例如由于输入/输出(Input/Output,I/O)停滞,则执行上下文会切换并将其状态设置为阻塞。一旦接收到新任务或被阻塞的任务返回,阻塞的执行上下文就会再次变为可运行状态。执行上下文可以被外部取消或加入。取消执行上下文将导致未完成的任务失败并将其挂起。在执行上下文被加入后,它不能接收新任务,并在完成其当前任务后挂起自己。执行上下文是在系统线程池上协作调度的,因此上下文切换的开销几乎可以忽略不计。只有当执行上下文可运行时,才会被调度。
三、上下文池。
在工作节点中,将执行上下文分为不同的池,以隔离和设定优先级。执行上下文隔离池可分为三种类型:数据绑定执行上下文池,查询执行上下文池和后台执行上下文池。
数据绑定执行上下文池:
用于控制数据绑定部分的并发执行。它包括预写入日志执行上下文和数据表执行上下文,其中预写入日志执行上下文负责写入同步操作,而数据表执行上下文负责执行对应数据表的读取操作和写入操作。它们都是单线程执行的,以消除并发操作之间的同步开销。此外它们还可以根据不同的操作类型进行资源隔离和优先级调整。
查询执行上下文池:
用于处理用户数据处理请求,每个查询工作单元将查询应用工作单元映射到一个查询执行上下文。
后台执行上下文池:
用于处理一些更耗费资源的后台任务,提高系统吞吐量。主要功能用于内存表刷新和分片文件压缩等。为了限制后台执行上下文的资源消耗,本申请在不同的线程池中隔离查询执行上下文和后台执行上下文,并以较低的优先级执行后台执行上下文。采用这种设计系统可以实现非常高的写入吞吐量而不会产生锁的开销。
在一些实施例中,该第一工作节点按照数据处理为并行处理的方式,将该第一执行计划分片划分为该至少一个执行分片实例。
在一些实施例中,该第一工作节点在执行上下文隔离的多个调度组中确定第一调度组;该多个调度组的时间配额相同,或该多个调度组中不同的调度组之间的时间配额的差值小于或等于预设阈值;该第一工作节点将该第一调度组中的执行上下文作为该第一执行上下文,并将该第一执行分片实例映射至该第一执行上下文。
示例性地,调度组的时间配额是可配置的。
示例性地,资源调度器可以分配一个时间配额给调度组,其值与分配给此第一工作节点的时间配额成比例。基于此,调度组的时间配额被进一步分成其执行上下文的时间配额,执行上下文只能消耗分配给其自身调度组的时间配额。
本实施例中,设计了一个调度组来隔离不同的执行上下文,该调度组隔离本质上是:协程(Coroutines)级别的隔离。同一个查询由多个执行上下文执行,这些执行上下文可以被归类到一个调度组,不同的调度组可以用公平的策略切分时间片。调度组隔离保证了当异步数据处理系统中同时跑一个大查询(分析型)和一个小查询(点查)的时候,小查询不至于因为抢不到CPU而被大查询阻塞住。
换言之,本实施例中,通过引入调度组,能够保证在多租户场景下的查询级别SLO(用于衡量服务的可靠性和可用性,通常包含服务可用时间、响应时间、问题解决时间等指标),例如大规模分析查询不应该阻塞对延迟比较敏感的服务查询。
图6是本申请实施例提供的调度组的示例。
如图6所述,该多个调度组可包括调度组1和调度组2,调度组1和调度组2均包括4个执行上下文、两个核心以及两个线程。其中,调度组1的线程在调度组1的核心上执行,调度组1的执行上下文可作为调度组1的线程上的微线程在调度组1的线程上执行;类似的,调度组2的线程在调度组2的核心上执行,调度组2的执行上下文可作为调度组2的线程上的微线程在调度组2的线程上执行。即每个调度组会有2个线程和2个核心来执行具体的4个执行上下文。
在一些实施例中,该多个调度组包括不同任务类型对应的调度组:该第一工作节点将该多个调度组中与该第一执行分片实例的任务类型相匹配的调度组,确定为该第一调度组。
示例性地,该任务类型可以包括数据接收类型和查询类型。
为了将数据接收负载与查询负载分开,本申请将数据绑定的执行上下文和查询执行上下文隔离到不同的调度组中。数据绑定的执行上下文需要处理所有查询共享的同步操作,用于接收工作负载(读取同步工作节点通常是轻量级节点),本申请将所有数据绑定的执行上下文分组到一个单独的数据绑定调度组中。相反,将各种查询的查询执行上下文放入单独的查询调度组中。分配足够大的时间配额给数据绑定调度组来处理所有的接收工作负载。默认情况下,所有查询调度组都被分配相同的时间配额以强制执行公平的资源分配。
在一些实施例中,该多个调度组包括不同优先级的调度组;若该第一执行分片实例的任务为内存表更新业务或数据库分片压缩业务,则该第一工作节点将该多个调度组中优先级等级最低的调度组,确定为该第一调度组。
在一些实施例中,该第一调度组在第一时间段内的时间配额为该第一调度组中的执行上下文在该第一时间段内的时间配额的和,该第一执行上下文在该第一时间段内的时间配额为:该异步数据处理系统中的资源管理器为该第一执行上下文分配的时间配额与第一参数的乘积;该第一参数根据该第一执行上下文在第二时间段内的状态确定,该第一时间段位于该第二时间段之后。
换言之,对于一个调度组(SG),其执行上下文的CPU时间量在一个时间段内受到两个因素的影响:(1)、资源管理器分配的时间配额;(2)、其在上一个时间间隔中占用的CPU时间量。
示例性地,调度组在一个时间段内的时间配额根据其执行上下文在上一个时间间隔中的状态进行调整。
示例性地,假设将资源管理器为第i个执行上下文分配的时间配额表示为EC_sharei,将第i个执行上下文在一个时间段内的时间配额表示为EC_share_avgi,将第i个调度组SGi在一个时间段内的时间配额表示为SG_share_avgi。
示例性地,可通过以下公式计算EC_share_avgi和SG_share_avgi:
其中,ΔTrun表示第i个执行上下文在上一个时间段内处于可执行状态的时间间隔,ΔTsudpend第i个执行上下文在上一个时间段内处于暂停状态的时间间隔,ΔTblock分别表第i个执行上下文在上一个时间段内处于阻塞状态的时间间隔。
在一些实施例中,该第一工作节点计算该第一调度组中每一个执行上下文的用于表征历史资源分配状态的第二参数;然后,该第一工作节点基于该每一个执行上下文的第二参数,将该第一调度组中第二参数最小的执行上下文确定为该第一执行上下文,并将该第一执行分片实例映射至该第一执行上下文。
示例性地,对于第j个调度组SGj中的第i个执行上下文ECi,可以维护一个虚拟运行时间(即该第二参数),反映其历史资源分配状态。将第i个执行上下文ECi在上一个时间段内分配到的CPU时间表征为ΔCPU_timei,并将第i个执行上下文ECi在上一个时间段内虚拟运行时的增量表示为Δruntimei,则Δruntimei可以通过以下公式计算:
由此,工作节点中的线程调度器在选择下一个需要调度的执行上下文时,线程调度器会始终选择那个拥有最小Δruntimei的执行上下文,以合理调度执行上下文。
在一些实施例中,该第一工作节点将该资源管理器为该每一个执行上下文分配的时间配额与该资源管理器为该第一调度组所分配的时间配额相乘,得到第一数值;然后,该第一工作节点可以利用该第一数值除以该第一调度组在该第一时间段内的时间配额,得到第二数值;该第一工作节点利用该每一个执行上下文在该第二时间段内的时间配额除以该第二数值,得到该第二参数。
在一些实施例中,若该数据处理请求包括的任务类型包括除预先定义的任务类型之外的任务类型,则该前端节点基于该数据处理请求生成该数据处理计划,并向该协调器发送该数据处理计划;若该数据处理请求包括的任务类型为预先定义的任务类型,则该方法还包括:该前端节点向该至少一个工作节点中默认的第二工作节点发送该数据处理请求;该第二工作节点处理该数据处理请求,并通过该协调器向该前端节点发送该数据处理请求的数据处理结果。
示例性地,前端节点基于该数据处理请求生成该数据处理计划之前,可以确定是否生成该数据处理计划,例如常规路径可以利用优化器生成该数据处理计划,并按照前述的方式分配执行计划分片给工作节点,优化的查询路径可以不采用该数据处理计划,而是直接利用固定前端节点(具有分配功能的一个模块)将数据处理请求直接分配给工作节点,工作节点上部署的处理引擎和存储引擎可以直接基于数据处理请求返回数据处理请求的数据处理结果。
图7是本申请实施例提供的优化单点查询和单点写入的方法的示例。
如图7所示,前端节点对结构化查询语言(Structured Query Language,SQL)进行解析和认证,并分发至执行引擎的不同执行模块。
执行引擎可以根据SQL的特征走不同的执行路径。
如果是单点查/单点写的场景会跳过优化器,直接分发至后端获取数据,减少数据传送链路,从而实现更优的性能。整个执行链路也叫固定数据处理计划,单点查(与HBase的关键字值(Key Value,KV)查询)、单点写场景会直接采用固定数据处理计划。
如果是OLAP查询和OLAP写入场景,首先会由优化器对SQL进行解析,生成执行计划,在执行计划中会预估出算子执行成本(Cost)、统计信息、空间裁剪等。优化器会通过生成的执行计划,决定使用专用查询引擎、MySQL、PostGreSQL查询引擎或Hive查询引擎对算子进行真正的计算。
执行引擎决定正确的执行计划,通过存储引擎进行数据获取,最后对每个分片上的数据进行合并,返回至客户端。
本实施例中,将固定数据处理计划设计为基于独有的执行引擎进行查询优化方式,而传统的SQL执行要经过优化器、协调器、查询引擎、存储引擎等多个组件,相当于,固定数据处理计划选择了短路径优化执行SQL,绕过了优化器、协调器、部分查询引擎的开销。换言之,固定数据处理计划通过固定的前端节点直接对接固定查询引擎,实现SQL执行效率的成倍提升,是支持高吞吐实时写入,高并发查询的关键优化方法。
在一些实施例中,若该至少一个执行计划分片为多个执行计划分片,且该协调器确定将该多个执行计划分片均分配给该第一工作节点,则该协调器利用异步处理的方式,将该多个执行计划分片分配给该第一工作节点。
本实施例中,协调器采用异步拉取的方式调度工作节点中的工作单元以生成数据处理结果的详细信息,即该协调器利用异步处理的方式,将该多个执行计划分片分配给该第一工作节点,其与需要多个线程合作的传统并发模型相比,协调器不需要使用多个线程来发送同步的执行计划分片,只需要一个线程将该多个执行计划分片分配给该第一工作节点,这种方法更自然、更有效,能够提升系统性能。
进一步的,该第一工作节点中的工作单元收到协调器分配的执行计划分片后,读取外部输入的分片文件,并输出执行计划分片的执行结果给协调器,以便协调器基于收到的执行结果确定数据处理结果。
以数据处理请求为查询请求为例,协调器分配执行计划分片的过程可以包括:协调器针对执行计划分片向工作节点发送的拉取请求,拉取式查询执行从协调器开始,协调器向写出分片的工作单元发送拉取请求。写出分片的工作单元处理拉取请求时,接收器工作单元进一步向其依赖的工作单元发送拉取请求。接收器工作单元发送拉取请求后,读工作单元从相应的分片文件中通过列扫描读取一批数据,并以格式为<batch data,EOS>的结果中返回查询记录的批处理结果,EOS是一个布尔类型(bool)的值,表明工作节点中的工作单元是否已完成其工作。
协调器在接收到前一个拉取请求的结果时,协调器通过检查返回的EOS来判断查询是否已完成。如果查询尚未完成,则发送另一轮拉取请求。
如果一个工作单元依赖于多个上游工作单元,则需要同时从多个输入中拉取以提高查询执行的并行性和计算/网络资源的利用率。
在工作节点间的发送的拉取请求可以通过函数调用实现,它将拉取任务插入到托管接收器工作单元的执行上下文的任务队列中。工作节点间的拉取请求封装为源和目标工作节点之间的RPC调用。RPC调用包含接收工作单元的ID,根据该ID,目标工作节点将拉取任务插入到相应执行上下文的任务队列中。
基于上面的示例,异步数据处理系统可以基于拉取的反压机制,防止工作单元接收过多的拉取请求而受到压倒。
首先,限制一个工作单元每次可以发出的并发拉取请求的数量。其次,在为多个下游工作单元生成输出的工作单元中,处理拉取请求可能会导致为多个下游工作单元生成新输出。这些输出被缓冲等待来自相应工作单元的拉取请求。为了防止工作单元中的输出缓冲区增长过快,拉取比其他工作单元更频繁的下游工作单元将暂时减缓向这个工作单元发送新的拉取请求。调度器可以支持预拉取未来请求的结果,以减少查询延迟。在这种情况下,一组预拉取任务被排队等待。预拉取任务的结果在预拉取缓冲区中排队。在处理拉取请求时,预拉取缓冲区中的结果可以立即返回,并创建一个新的预拉取任务。
在一些实施例中,该至少一个工作节点按照任务类型划分为至少一个节点组:该协调器将该至少一个节点组中与该第一执行计划分片的任务类型相匹配的节点组中的工作节点确定为该第一工作节点,并将该第一执行计划分片分配给该第一工作节点。
示例性地,该至少一个节点组和包括读节点组和写节点组,进而实现完整的读写分离功能,保障不同业务场景的服务等级协议(Service-Level Agreement,SLA),在高吞吐的数据写入和复杂的架构作业、OLAP、AdHoc查询、线上服务等场景中,负载之间物理上完全隔离,不会因写入产生查询的抖动。
示例性地,该至少一个节点组能够针对多任务类型的负载实现细粒度资源分配。
示例性地,该至少一个节点组可包括一个主节点组和至少一个辅节点组,例如,一个主节点组可以配置多个辅节点组,节点组之间可以根据业务情况配置不同规格。
示例性地,该至少一个节点组中不同节点组中的节点的使用核数不同。例如,使用核数最多的节点作为在线Serving节点组,核数较多的节点作为OLAP只读节点组,核数中等的节点作为写入和加工节点组,核数最少的节点作为开发测试节点组。
图8是本申请实施例提供的读写分离框架的示例。
如图8所示,该至少一个节点组可包括一个主节点组和一个辅节点组,主节点组可用于数据的读取和写入,辅节点组只用于数据的读取。主节点组、辅节点组通过元数据服务存储数据库分片的原数据。具体实现中,用于读和写操作的工作节点组成的节点组,用于读操作的工作节点组成的节点组。结合流程来说,协调器分配执行计划分片时,基于执行计划分片的类型将其分配到相应的节点组中的工作节点上。相应的,主节点组中的工作节点的工作单元收到执行计划分片后,向存储层发送读写请求;辅节点组中的工作节点中的工作单元收到执行计划分片后,向存储层发送读请求;进而实现完整的读写分离功能。
以上结合附图详细描述了本申请的优选实施方式,但是,本申请并不限于上文涉及的实施方式中的具体细节,在本申请的技术构思范围内,可以对本申请的技术方案进行多种简单变型,这些简单变型均属于本申请的保护范围。例如,在上文涉及的具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本申请对各种可能的组合方式不再另行说明。又例如,本申请的各种不同的实施方式之间也可以进行任意组合,只要其不违背本申请的思想,其同样应当视为本申请所公开的内容。
还应理解,在本申请的各种方法实施例中,上文涉及的各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文对本申请实施例示例性给出的方法进行了说明,下面对本申请实施例示例性给出的装置进行说明。
图9是本申请实施例提供的异步数据处理系统200的另一示意性框图。
如图9所示,该异步数据处理系统200可包括:
前端节点210、协调器220和至少一个工作节点;
前端节点210用于:接收应用程序发送的数据处理请求,并向该协调器发送基于该数据处理请求生成的数据处理计划;
协调器220用于:将该数据处理计划转化为至少一个执行计划分片,并将该至少一个执行计划分片中的第一执行计划分片分配给该至少一个工作节点中的第一工作节点230;
第一工作节点230用于:执行该第一执行计划分片,并向该协调器发送该第一执行计划分片的第一执行结果;
协调器220还用于:基于收到的该第一执行结果确定该数据处理请求的数据处理结果,并通过该前端节点向该应用程序发送该数据处理结果。
在一些实施例中,该第一工作节点230具体用于:
将该第一执行计划分片,划分为至少一个执行分片实例;
将该至少一个执行分片实例中的第一执行分片实例映射至第一执行上下文;
基于该第一执行上下文调度该第一工作节点230中的工作单元;
利用调度的该工作单元执行该第一执行分片实例,并向该协调器220发送该第一执行分片实例的执行结果;
其中,该第一执行上下文为系统线程池中的用户空间线程关联的执行上下文,该第一执行结果包括该第一执行分片实例的执行结果。
在一些实施例中,该第一工作节点230具体用于:
按照数据处理为并行处理的方式,将该第一执行计划分片划分为该至少一个执行分片实例。
在一些实施例中,该第一工作节点230具体用于:
在执行上下文隔离的多个调度组中确定第一调度组;该多个调度组的时间配额相同,或该多个调度组中不同的调度组之间的时间配额的差值小于或等于预设阈值;
将该第一调度组中的执行上下文作为该第一执行上下文,并将该第一执行分片实例映射至该第一执行上下文。
在一些实施例中,该多个调度组包括不同任务类型对应的调度组:
其中,该第一工作节点230具体用于:
将该多个调度组中与该第一执行分片实例的任务类型相匹配的调度组,确定为该第一调度组。
在一些实施例中,该多个调度组包括不同优先级的调度组;
其中,该第一工作节点230具体用于:
若该第一执行分片实例的任务为内存表更新业务或数据库分片压缩业务,则将该多个调度组中优先级等级最低的调度组,确定为该第一调度组。
在一些实施例中,该第一调度组在第一时间段内的时间配额为该第一调度组中的执行上下文在该第一时间段内的时间配额的和,该第一执行上下文在该第一时间段内的时间配额为:该异步数据处理系统中的资源管理器为该第一执行上下文分配的时间配额与第一参数的乘积;该第一参数根据该第一执行上下文在第二时间段内的状态确定,该第一时间段位于该第二时间段之后。
在一些实施例中,该第一工作节点230具体用于:
计算该第一调度组中每一个执行上下文的用于表征历史资源分配状态的第二参数;
基于该每一个执行上下文的第二参数,将该第一调度组中第二参数最小的执行上下文确定为该第一执行上下文,并将该第一执行分片实例映射至该第一执行上下文。
在一些实施例中,该第一工作节点230具体用于:
将该资源管理器为该每一个执行上下文分配的时间配额与该资源管理器为该第一调度组所分配的时间配额相乘,得到第一数值;
利用该第一数值除以该第一调度组在该第一时间段内的时间配额,得到第二数值;
利用该每一个执行上下文在该第二时间段内的时间配额除以该第二数值,得到该第二参数。
在一些实施例中,该前端节点210具体用于:
若该数据处理请求包括的任务类型包括除预先定义的任务类型之外的任务类型,则基于该数据处理请求生成该数据处理计划,并向该协调器220发送该数据处理计划;
若该数据处理请求包括的任务类型为预先定义的任务类型,则该前端节点210还用于:
向该至少一个工作节点中默认的第二工作节点发送该数据处理请求;
该第二工作节点用于:处理该数据处理请求,并通过该协调器220向该前端节点210发送该数据处理请求的数据处理结果。
在一些实施例中,该协调器220具体用于:
若该至少一个执行计划分片为多个执行计划分片,且该协调器220确定将该多个执行计划分片均分配给该第一工作节点230,则利用异步处理的方式,将该多个执行计划分片分配给该第一工作节点230。
在一些实施例中,该至少一个工作节点按照任务类型划分为至少一个节点组:
其中,该协调器220具体用于:
将该至少一个节点组中与该第一执行计划分片的任务类型相匹配的节点组中的工作节点确定为该第一工作节点230,并将该第一执行计划分片分配给该第一工作节点230。
应理解,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,异步数据处理系统200可以对应于执行本申请实施例的方法100中的相应主体,并且异步数据处理系统200中的各个单元分别为了实现方法100中的相应流程,为了简洁,在此不再赘述。
此外,该异步数据处理系统200也可以对应于图2所示的异步数据处理系统,为了简洁,在此不再赘述。
还应当理解,本申请实施例涉及的异步数据处理系统200中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。在本申请的其它实施例中,该异步数据处理系统200也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
此外,本申请实施例涉及的异步数据处理系统200可以通过在包括例如中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的通用计算机的通用计算设备上运行能够执行相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造本申请实施例涉及的异步数据处理系统200,以及来实现本申请实施例示例性给出的方法。其中,该计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于电子设备中,并在其中运行,来实现本申请实施例示例性给出的相应方法。
换言之,上文涉及的单元可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过软硬件结合的形式实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件组合执行完成。可选地,软件可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上文涉及的方法实施例中的步骤。
图10是本申请实施例提供的电子设备300的示意性框图。
如图10所示,该电子设备300至少包括处理器310以及计算机可读存储介质320。其中,处理器310以及计算机可读存储介质320可通过总线或者其它方式连接。计算机可读存储介质320用于存储计算机程序321,计算机程序321包括计算机指令,处理器310用于执行计算机可读存储介质320存储的计算机指令。处理器310是电子设备300的计算核心以及控制核心,其适于实现一条或多条计算机指令,具体适于加载并执行一条或多条计算机指令从而实现相应方法流程或相应功能。
处理器310也可称为中央处理器(Central Processing Unit,CPU)。处理器310可以包括但不限于:通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立元件门或者晶体管逻辑器件、分立硬件组件等等。
计算机可读存储介质320可以是高速RAM存储器,也可以是非不稳定的存储器(Non-VolatileMemory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器310的计算机可读存储介质。具体而言,计算机可读存储介质320包括但不限于:易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。
如图10所示,该电子设备300还可以包括收发器330。
其中,处理器310可以控制该收发器330与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器330可以包括发射机和接收机。收发器330还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该电子设备300中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。值得注意的是,该电子设备300可以是任一具有数据处理能力的电子设备;该计算机可读存储介质320中存储有计算机指令;由处理器310加载并执行计算机可读存储介质320中存放的计算机指令,以实现本申请实施例中的相应步骤;具体实现中,计算机可读存储介质320中的计算机指令由处理器310加载并执行相应步骤,为避免重复,此处不再赘述。
根据本申请的另一方面,本申请还提供了一种芯片。该芯片可以是一种集成电路芯片,具有信号的处理能力,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。该芯片还可以称为系统级芯片,系统芯片,芯片系统或片上系统芯片等。该芯片可应用到各种能够安装芯片的电子设备中,使得安装有该芯片的通信设备能够执行本申请实施例中的公开的各方法、步骤及逻辑框图。例如,该芯片可以是处理器310,其适于实现一条或多条计算机指令,具体适于加载并执行一条或多条计算机指令从而实现相应方法流程或相应功能。
根据本申请的另一方面,本申请还提供了一种计算机可读存储介质(Memory)。该计算机可读存储介质是电子设备300中的记忆设备,用于存放程序和数据。例如,计算机可读存储介质320。可以理解的是,此处的计算机可读存储介质320既可以包括电子设备300中的内置存储介质,当然,也可以包括电子设备300所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了电子设备300的操作系统。并且,在该存储空间中还存放了适于被处理器310加载并执行的一条或多条的计算机指令,这些计算机指令可以是一个或多个的计算机程序321(包括程序代码)中的指令。
根据本申请的另一方面,本申请还提供了一种计算机程序产品或计算机程序。该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。例如,计算机程序321。此时,数据处理设备300可以是计算机,处理器310从计算机可读存储介质320读取该计算机指令,处理器310执行该计算机指令,使得该计算机执行上文涉及的各种可选方式中提供的各种方法。换言之,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行这些计算机程序指令时,全部或部分地运行本申请实施例的流程或实现本申请实施例的功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质进行传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元以及流程步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为其超出本申请的记载范围。
最后需要说明的是,以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种异步数据处理方法,其特征在于,所述方法适用于异步数据处理系统,所述异步数据处理系统包括前端节点、协调器以及至少一个工作节点,所述方法包括:
所述前端节点接收应用程序发送的数据处理请求,并向所述协调器发送基于所述数据处理请求生成的数据处理计划;
所述协调器将所述数据处理计划转化为至少一个执行计划分片,并将所述至少一个执行计划分片中的第一执行计划分片分配给所述至少一个工作节点中的第一工作节点;
所述第一工作节点执行所述第一执行计划分片,并向所述协调器发送所述第一执行计划分片的第一执行结果;
所述协调器基于收到的所述第一执行结果确定所述数据处理请求的数据处理结果,并通过所述前端节点向所述应用程序发送所述数据处理结果。
2.根据权利要求1所述的方法,其特征在于,所述第一工作节点执行所述第一执行计划分片,并向所述协调器发送所述第一执行计划分片的第一执行结果,包括:
所述第一工作节点将所述第一执行计划分片,划分为至少一个执行分片实例;
所述第一工作节点将所述至少一个执行分片实例中的第一执行分片实例映射至第一执行上下文;
所述第一工作节点基于所述第一执行上下文调度所述第一工作节点中的工作单元;
所述第一工作节点利用调度的所述工作单元执行所述第一执行分片实例,并向所述协调器发送所述第一执行分片实例的执行结果;
其中,所述第一执行上下文为系统线程池中的用户空间线程关联的执行上下文,所述第一执行结果包括所述第一执行分片实例的执行结果。
3.根据权利要求2所述的方法,其特征在于,所述第一工作节点将所述第一执行计划分片,划分为至少一个执行分片实例,包括:
所述第一工作节点按照数据处理为并行处理的方式,将所述第一执行计划分片划分为所述至少一个执行分片实例。
4.根据权利要求2所述的方法,其特征在于,所述第一工作节点将所述至少一个执行分片实例中的第一执行分片实例映射至第一执行上下文,包括:
所述第一工作节点在执行上下文隔离的多个调度组中确定第一调度组;所述多个调度组的时间配额相同,或所述多个调度组中不同的调度组之间的时间配额的差值小于或等于预设阈值;
所述第一工作节点将所述第一调度组中的执行上下文作为所述第一执行上下文,并将所述第一执行分片实例映射至所述第一执行上下文。
5.根据权利要求4所述的方法,其特征在于,所述多个调度组包括不同任务类型对应的调度组:
其中,所述第一工作节点在执行上下文隔离的多个调度组中确定第一调度组,包括:
所述第一工作节点将所述多个调度组中与所述第一执行分片实例的任务类型相匹配的调度组,确定为所述第一调度组。
6.根据权利要求4所述的方法,其特征在于,所述多个调度组包括不同优先级的调度组;
其中,所述第一工作节点在执行上下文隔离的多个调度组中确定第一调度组,包括:
若所述第一执行分片实例的任务为内存表更新业务或数据库分片压缩业务,则所述第一工作节点将所述多个调度组中优先级等级最低的调度组,确定为所述第一调度组。
7.根据权利要求4所述的方法,其特征在于,所述第一调度组在第一时间段内的时间配额为所述第一调度组中的执行上下文在所述第一时间段内的时间配额的和,所述第一执行上下文在所述第一时间段内的时间配额为:所述异步数据处理系统中的资源管理器为所述第一执行上下文分配的时间配额与第一参数的乘积;所述第一参数根据所述第一执行上下文在第二时间段内的状态确定,所述第一时间段位于所述第二时间段之后。
8.根据权利要求7所述的方法,其特征在于,所述第一工作节点将所述第一调度组中的执行上下文作为所述第一执行上下文,并将所述第一执行分片实例映射至所述第一执行上下文,包括:
所述第一工作节点计算所述第一调度组中每一个执行上下文的用于表征历史资源分配状态的第二参数;
所述第一工作节点基于所述每一个执行上下文的第二参数,将所述第一调度组中第二参数最小的执行上下文确定为所述第一执行上下文,并将所述第一执行分片实例映射至所述第一执行上下文。
9.根据权利要求8所述的方法,其特征在于,所述第一工作节点计算所述第一调度组中每一个执行上下文的用于表征历史资源分配状态的第二参数,包括:
所述第一工作节点将所述资源管理器为所述每一个执行上下文分配的时间配额与所述资源管理器为所述第一调度组所分配的时间配额相乘,得到第一数值;
所述第一工作节点利用所述第一数值除以所述第一调度组在所述第一时间段内的时间配额,得到第二数值;
所述第一工作节点利用所述每一个执行上下文在所述第二时间段内的时间配额除以所述第二数值,得到所述第二参数。
10.根据权利要求1至9中任一项所述的方法,其特征在于,所述向所述协调器发送基于所述数据处理请求生成的数据处理计划,包括:
若所述数据处理请求包括的任务类型包括除预先定义的任务类型之外的任务类型,则所述前端节点基于所述数据处理请求生成所述数据处理计划,并向所述协调器发送所述数据处理计划;
若所述数据处理请求包括的任务类型为预先定义的任务类型,则所述方法还包括:
所述前端节点向所述至少一个工作节点中默认的第二工作节点发送所述数据处理请求;
所述第二工作节点处理所述数据处理请求,并通过所述协调器向所述前端节点发送所述数据处理请求的数据处理结果。
11.根据权利要求1至9中任一项所述的方法,其特征在于,所述协调器将所述至少一个执行计划分片中的第一执行计划分片分配给所述至少一个工作节点中的第一工作节点,包括:
若所述至少一个执行计划分片为多个执行计划分片,且所述协调器确定将所述多个执行计划分片均分配给所述第一工作节点,则所述协调器利用异步处理的方式,将所述多个执行计划分片分配给所述第一工作节点。
12.根据权利要求1至9中任一项所述的方法,其特征在于,所述至少一个工作节点按照任务类型划分为至少一个节点组:
其中,所述将所述至少一个执行计划分片中的第一执行计划分片分配给所述至少一个工作节点中的第一工作节点,包括:
所述协调器将所述至少一个节点组中与所述第一执行计划分片的任务类型相匹配的节点组中的工作节点确定为所述第一工作节点,并将所述第一执行计划分片分配给所述第一工作节点。
13.一种异步数据处理系统,其特征在于,包括:
前端节点、协调器以及至少一个工作节点;
所述前端节点用于:接收应用程序发送的数据处理请求,并向所述协调器发送基于所述数据处理请求生成的数据处理计划;
所述协调器用于:将所述数据处理计划转化为至少一个执行计划分片,并将所述至少一个执行计划分片中的第一执行计划分片分配给所述至少一个工作节点中的第一工作节点;
所述第一工作节点用于:执行所述第一执行计划分片,并向所述协调器发送所述第一执行计划分片的第一执行结果;
所述协调器还用于:基于收到的所述第一执行结果确定所述数据处理请求的数据处理结果,并通过所述前端节点向所述应用程序发送所述数据处理结果。
14.一种电子设备,其特征在于,包括:
处理器,适于执行计算机程序;
计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,实现权利要求1至12中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,用于存储计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行权利要求1至12中任一项所述的方法。
16.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现权利要求1至12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310668253.5A CN116975085A (zh) | 2023-06-06 | 2023-06-06 | 异步数据处理方法、系统以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310668253.5A CN116975085A (zh) | 2023-06-06 | 2023-06-06 | 异步数据处理方法、系统以及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116975085A true CN116975085A (zh) | 2023-10-31 |
Family
ID=88477514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310668253.5A Pending CN116975085A (zh) | 2023-06-06 | 2023-06-06 | 异步数据处理方法、系统以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116975085A (zh) |
-
2023
- 2023-06-06 CN CN202310668253.5A patent/CN116975085A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
To et al. | A survey of state management in big data processing systems | |
de Assuncao et al. | Distributed data stream processing and edge computing: A survey on resource elasticity and future directions | |
US10503704B2 (en) | Isolating resources and performance in a database management system | |
Bakshi | Considerations for big data: Architecture and approach | |
Gautam et al. | A survey on job scheduling algorithms in big data processing | |
US10715460B2 (en) | Opportunistic resource migration to optimize resource placement | |
CN103930875B (zh) | 用于加速业务数据处理的软件虚拟机 | |
US9990224B2 (en) | Relaxing transaction serializability with statement-based data replication | |
US8635250B2 (en) | Methods and systems for deleting large amounts of data from a multitenant database | |
CN106354729B (zh) | 一种图数据处理方法、装置和系统 | |
Ju et al. | iGraph: an incremental data processing system for dynamic graph | |
Yang et al. | Huge: An efficient and scalable subgraph enumeration system | |
CN113490928A (zh) | 数据库系统中实例化视图的共享 | |
CN112753022A (zh) | 数据库环境中的自动查询重试 | |
Liu et al. | Optimizing shuffle in wide-area data analytics | |
CN116894069A (zh) | 跨组织、跨云的自动化数据管道 | |
Zarei et al. | Past, present and future of Hadoop: A survey | |
US10474653B2 (en) | Flexible in-memory column store placement | |
Venner et al. | Pro apache hadoop | |
Costan | From big data to fast data: Efficient stream data management | |
Khalil et al. | Survey of Apache Spark optimized job scheduling in Big Data | |
CN116975085A (zh) | 异步数据处理方法、系统以及电子设备 | |
US10824640B1 (en) | Framework for scheduling concurrent replication cycles | |
Hanif et al. | Jargon of Hadoop MapReduce scheduling techniques: a scientific categorization | |
Jo et al. | Request-aware Cooperative {I/O} Scheduling for Scale-out Database Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |