CN117130622A - 一种分布式在线代码编译运行方法及系统 - Google Patents
一种分布式在线代码编译运行方法及系统 Download PDFInfo
- Publication number
- CN117130622A CN117130622A CN202311393585.3A CN202311393585A CN117130622A CN 117130622 A CN117130622 A CN 117130622A CN 202311393585 A CN202311393585 A CN 202311393585A CN 117130622 A CN117130622 A CN 117130622A
- Authority
- CN
- China
- Prior art keywords
- remote
- individual
- node
- code
- representing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000005192 partition Methods 0.000 claims abstract description 57
- 238000005457 optimization Methods 0.000 claims abstract description 34
- 230000000739 chaotic effect Effects 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims description 37
- 239000011159 matrix material Substances 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 12
- 230000008901 benefit Effects 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 10
- 238000006467 substitution reaction Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 9
- 239000013598 vector Substances 0.000 claims description 9
- 230000035772 mutation Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 5
- 238000005291 chaos (dynamical) Methods 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 3
- 238000013178 mathematical model Methods 0.000 claims description 3
- 230000000737 periodic effect Effects 0.000 claims description 3
- 241000764238 Isis Species 0.000 claims 1
- 238000011017 operating method Methods 0.000 abstract description 2
- 238000004422 calculation algorithm Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000010485 coping Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 108091029480 NONCODE Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式在线代码编译运行方法及系统,包括如下步骤:S1:分区读入用户代码并存储于全局控制存储器中;S2:基于混沌进化的实时优化调度方法,在全局调度器与远程节点之间建立调度策略,以通过全局调度器将用户代码调度到远程节点中,各个远程节点执行用户代码并在各个节点之间共享内存;S3:获取远程节点执行用户代码后的代码运行结果并返回给用户;该在线代码编译运行方法及系统保证了高并发大流量情况下的代码运行需求以及如何支持毫秒级任务及任务嵌套并行。
Description
技术领域
本发明涉及在线代码编译技术领域,尤其涉及一种分布式在线代码编译运行方法及系统。
背景技术
代码是现今计算机领域不可或缺的关键基础支撑技术,是各种计算机软件和AI程序发展的基石。以python程序为例,它具有较为简单的句法格式和成熟的上层封装,但任何一个初学者在学习python程序时都要解决环境路径配置、python解释器安装和代码编辑工具选择等等问题。对初学者来说,这些问题常常是复杂的,在线式代码编辑和运行工具要更有优势。
然而高并发大流量的线上请求运行程序会给服务器带来非常大的压力,目前大多数工作在面临程序死循环和运行时间较长时都只采用简单杀死进程的方法,满足不了多用户长时间利用线上工具运行代码的需求。同时现有的分布式框架都不支持毫秒级任务和每秒高百万个任务并发,在嵌套并行方面(例如超参数搜索内部的并行模拟)也支持不足。
发明内容
基于背景技术存在的技术问题,本发明提出了一种分布式在线代码编译运行方法及系统,保证了高并发大流量情况下的代码运行需求以及如何支持毫秒级任务及任务嵌套并行。
本发明提出的一种分布式在线代码编译运行方法,包括如下步骤:
S1:分区读入用户代码并存储于全局控制存储器中;
S2:基于混沌进化的实时优化调度方法,在全局调度器与远程节点之间建立调度策略,以通过全局调度器将用户代码调度到远程节点中,各个远程节点执行用户代码并在各个节点之间共享内存;
S3:获取远程节点执行用户代码后的代码运行结果并返回给用户;
其中,在S2中,基于混沌进化的实时优化调度方法具体如下:
S21:计算调度期间内所有远程节点的运行效益;
S22:设定远程节点原始种群和每个远程节点个体,/>表示代表实时优化调度方法的其中一种解,其中/>表示远程节点种群规模,/>为非零自然数,/>,D表示维数;
S23:假设种群代数为,对远程节点原始种群中选定个体进行变异操作生成变异个体/>,基于交叉操作对变异个体处理得到子代个体/>;
S24:基于运行效益对比原始个体/>和变异个体/>进行比较,/>,输出最优解/>,以该最优解作为调度策略来进行用户代码调度。
进一步地,所述运行效益公式如下:
其中,表示远程节点内存,/>表示远程节点cpu进程占比,/>表示远程节点的总数,/>表示调度周期,/>表示第/>个远程节点在时间段/>下的cpu运算进程占比,/>表示第/>个远程节点在时间段/>下的内存,/>表示第/>个远程节点在时间段/>下的cpu运算能力,/>表示时间段。
进一步地,变异个体和子代个体/>的计算公式如下:
其中,表示第/>个个体在第/>代变异的个体向量,/>表示第/>个个体在第/>代变异的个体向量中的第/>维,/>表示需要变异的个体,/>和/>表示随机从种群中选取的信息交流来源个体,/>表示缩放因子,/>表示种群中第/>个个体经过交叉操作后得到的/>子代个体中的第/>维,/>表示随机生成的自然数,/>代表交叉概率,表示初始的交叉概率值,/>表示所有维度中随机的一维;
进一步地,最优解的计算公式如下:
其中,表示第/>子代个体,/>表示第/>代个体,/>表示种群中第/>个个体经过交叉操作后得到的/>子代个体,F(·)表示运行效益。
进一步地,在步骤S23中,基于混沌理论的无周期变动性特征,在交叉操作对中采用混沌优化以得到子代个体,具体过程如下:
通过映射得到的混沌数学模型为,其中/>表示第/>子代个体的混沌变量,/>表示第/>子代个体的混沌变量,/>表示混沌参数;
基于不同值构建混沌原始时间序列/>,并对混沌原始时间序列进行维度D扩展,得到初始时间序列矩阵;
利用初始时间序列矩阵分解远程节点个体样本,其中/>代表第/>个远程节点个体样本的D维初始优化解,/>表示/>取最小值时,远程节点个体样本的D维初始优化解,/>表示/>取最大值时,远程节点个体样本的D维初始优化解,/>表示第/>个远程节点个体样本的D维的初始时间序列;
基于远程节点个体样本计算得到所有初始优化解的矩阵为/>;
通过动态概率的方式选择矩阵中新个体的优化解作为最优解的概率/>;
将概率由高到低排序,选择排在前列预设个数的概率/>,得到矩阵为/>中初始优化解个数,将初始优化解个数对应到远程节点个体中;
以初始优化解个数作为不同通道分别对所有变异个体进行交叉操作得到子代个体。
进一步地,概率的计算公式如下:
其中,表示当前种群中最优解的适应度值,/>表示新个体/>适应度值,/>表示固定的一个超参数。
进一步地,步骤S1中,具体包括:
设计两级哈希映射,第一级主哈希映射将每个主题与至少一个处理该主题的节点列表配对,用于将用户代码发送到该节点,第二级副哈希映射将每个主题与仅在该节点上存在的分区列表配对,用于将用户代码发送到该分区中;
采用基于计数器的轮询技术,当用户代码基于第一级主哈希映射选择了该节点,则基于第二级副哈希映射继续访问该节点中的分区,以选择分区。
进一步地,在步骤S2中,通过全局调度器将用户代码调度到远程节点中,各个远程节点执行用户代码并在各个节点之间共享内存,具体包括:
远程函数add()在初始化时自动向全局控制存储器注册,并分发给每个节点的工作执行进程;
设定对象a和b,其中a和b分别存储在节点N1和N2上,远程函数add(a,b)启动并提交给本地调度器,通过本地调度器;
全局调度器在全局控制存储器中查找add(a,b)参数的位置,并在存储参数b的节点N2上进行调度任务;
节点N2处的本地调度器检查本地对象存储器是否包含add(a,b)的参数,当不包含时,通过在全局控制存储器中查找a的位置得到a储存在N1上;
N2的本地对象存储器在本地工作程序调用add(),通过共享内存访问参数以在N2的本地复制a,从而实现各个远程节点执行用户代码并在各个节点之间共享内存。
一种分布式在线代码编译运行系统,包括分区读入模块、调度模块和反馈模块;
所述分区读入模块用于分区读入用户代码并存储于全局控制存储器中;
所述调度模块用于基于混沌进化的实时优化调度方法,在全局调度器与远程节点之间建立调度策略,以通过全局调度器将用户代码调度到远程节点中,各个远程节点执行用户代码并在各个节点之间共享内存;
所述反馈模块用于获取远程节点执行用户代码后的代码运行结果并返回给用户;
所述调度模块的实时优化调度过程具体如下:
计算调度期间内所有远程节点的运行效益;
设定远程节点原始种群和每个远程节点个体,/>表示代表实时优化调度方法的其中一种解,其中/>表示远程节点种群规模,/>为非零自然数,/>,D表示维数;
假设种群代数为,对远程节点原始种群中选定个体进行变异操作生成变异个体,基于交叉操作对变异个体处理得到子代个体/>;
基于运行效益对比原始个体/>和变异个体/>进行比较,/>,输出最优解/>,以该最优解作为调度策略来进行用户代码调度。
本发明提供的一种分布式在线代码编译运行方法及系统的优点在于:本发明结构中提供的一种分布式在线代码编译运行方法及系统,利用分布式集群部署有效提高应对高并发大流量的问题性,保证了高并发大流量情况下的代码运行需求以及如何支持毫秒级任务及任务嵌套并行。该分布式在线代码运行框架支持毫秒级任务、每秒高百万个任务并发、任务嵌套并行和异构资源使用,可以有效解决高并发大流量情况下的代码运行需求,即使个别节点宕机并不影响使用。
附图说明
图1为本发明的流程示意图;
图2为分布式在线代码编译运行框架示意图;
图3为消息写入分区的示意图;
图4为代码远程运行控制部分示意图;
图5为代码提交远程运行流程示意图;
图6为代码返回远程运行结果流程示意图;
图7为远程节点调度进化的流程流程图。
具体实施方式
下面,通过具体实施例对本发明的技术方案进行详细说明,在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其他方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施的限制。
针对如何保证高并发大流量情况下的代码运行需求以及如何支持毫秒级任务及任务嵌套并行。
如图2所示,首先建立一套完整的WebUI界面,方便用户简单的访问和使用系统。然后利用JavaSpringBoot技术建立服务器控制层来接收WebUI界面的访问请求,在接收到请求之后,将请求送入消息队列。消息队列将不同请求分批次送入不同的分区(将请求送入各个分区之中,物理上在磁盘的大容量空闲块创立分区同名的文件夹,将各个请求写入的消息追加到分区数据文件的尾部),具体实现利用文件系统的磁盘写入读取机制。再利用JavaSpringBoot技术建立服务器能力层,服务器能力层用来负责接收大量的请求消息,每个能力模块单元(服务器能力层包括多个能力模块单元)订阅一个或是多个分区的消息队列,物理上在分文对应文件夹多个固定文件顺序读写,能力模块单元具有多个可以分开部署,每个能力模块单元从各自分区读取用户运行代码请求并对用户代码处理。每个能力模块单元都利用http服务与代码运行全局调度控制器交互并提交运行代码请求,代码运行全局调度控制器确定代码执行依赖并分发代码任务,各个远程节点执行代码并在各个节点之间共享内存。执行完毕后生成键值对写入内存,服务器控制层读取代码运行结果并返回给用户。
其中,建立全局调度器,任务调度和存储调度分别由全局控制存储器、全局存储器完成,其中全局控制存储器存储对象查询表、任务查询表、函数查询表和操作日志。建立远程代码执行节点,包括本地内存保持器、本地调度器、工作执行进程、对象数据存储器、对象管理器等,远程节点负责任务的具体执行。需要执行的代码首先利用标识注册到全局控制存储器,然后分发给节点的工作执行进程,工作执行进程完成任务并与本地调度中心完成交互,如果存在函数执行依赖不在本地对象数据存储器,本地调度中心与全局控制存储中心交互并复制内存,同一节点的各个执行工作进程通过共享对象数据存储器分享参数。发生故障时,各个组件只需重新启动并从全局控制存储器读取沿袭,所有组件都通过全局控制存储器共享所需状态。
如图1至7所示,本发明提出的一种分布式在线代码编译运行方法,包括如下步骤:
S1:分区读入用户代码并存储于全局控制存储器中;
S2:基于混沌进化的实时优化调度方法,在全局调度器与远程节点之间建立调度策略,以通过全局调度器将用户代码调度到远程节点中,各个远程节点执行用户代码并在各个节点之间共享内存;
S3:获取远程节点执行用户代码后的代码运行结果并返回给用户;
通过步骤S1至S3,利用分布式集群部署有效提高应对高并发大流量的问题性,保证了高并发大流量情况下的代码运行需求以及如何支持毫秒级任务及任务嵌套并行。该分布式在线代码运行框架支持毫秒级任务、每秒高百万个任务并发、任务嵌套并行和异构资源使用,可以有效解决高并发大流量情况下的代码运行需求,即使个别节点宕机并不影响使用。
以下具体说明。
一.服务器消息接受转发部分
服务器消息接受转发部分主要分为三个模块:服务器控制层、服务器能力层和消息转发层。为了保证能大量接收用户的WebUI发送的代码运行请求,基于springboot的框架设计出利用websocket通信协议的服务器控制层。服务器控制层主要负责接收用户代码,处理用户非代码运行的需求,及时返回用户不需要等待的传输信息。同时,在用户代码运行完成后,利用websocket通信协议主动向用户WebUI界面发送代码运行结果,不需要用户主动轮询,节约带宽和cpu资源。
普通服务器处理用户请求不设计消息转发模块,但本方法在服务器控制层、服务器能力层设计了消息转发层。原因是:对于代码运行需求来说,用户代码上会附加大量的操作,包括但不限于引入公开依赖、读取敏感信息等等,我们需要对用户的代码进行分析,去除代码敏感操作以及处理代码运行前置问题。同时用户代码可能会有大量错误,以至于不能通过代码编译,将未通过编译的代码直接运行会消耗大量的时间、带宽和内存资源,所以在将消息送入代码运行模块之前就需要对代码进行编译检查,这些操作都需要服务器能力层完成。编译检查和去除代码敏感操作以及处理代码运行前置问题是一个不能即使返回的操作,但服务器控制层会接收源源不断的用户操作,为此利用消息转发层平衡服务器控制层和服务器能力层之间的关系,能力层也可以使用消息转发层来实现多服务器分布式部署。
消息转发层具体实现使用发布/订阅模式,对于消息转发层来说,服务器控制层是发布者,服务器能力层是订阅者,发布者和订阅者都可以有多个。发布者生产消息到队列,然后订阅者从队列中取出并且消费消息。消息被消费后,队列将不再存储消息,其它所有订阅者不能消费到已经被消费过的消息。队列支持存在多个发布者,但是对一条发布者生产的消息而言,只会有一个订阅者可以消费,其它订阅者则不能再次消费。当订阅者不存在时,消息则由队列一直保存,直到有订阅者把它消费完成。
本实施例公开了一种不同于以往常规的分区方法,基于节点的双哈希映射分区方法。设计两级哈希映射,第一级主哈希映射将每个主题与至少一个处理该主题的节点列表配对,用于将用户代码发送到该节点,第二级副哈希映射将每个主题与仅在该节点上存在的分区列表配对,用于将用户代码发送到该分区中。采用基于计数器的轮询技术,与原始的分区器不相同,当用户代码基于第一级主哈希映射一旦选择了该节点,系统就会访问其在分区器内存中的表示,以检索第二级副哈希映射,第二级副哈希映射将最终在所选节点内选择分区。对于分区器未见的节点对象表示,还有另一个按主题计数器选择的设置,它有助于所选分区的节点内部轮换,但不需要另一个专用的查找表,因为这个特殊的计数器可以与其自己的分区列表一起保存。同时对于具有相同领导节点的分区,本实施例设计保持轮询选择策略,当分区出现故障并得到解决分区重新上线时,这些分区中的一些主题将返回到其原始所有者。
消息转发层的队列设计多个分区,一个分区可以有一个或者多个订阅者消费它的数据。 每个队列都形成一个分区日志,如图3所示,每个分区文件都是一个有序的记录序列(不可变),在磁盘顺序读写。如果有新的日志会按顺序结构化添加到末尾,分区文件中的记录每个都按顺序的分配一个固定ID号,命名为偏移量,在整个分区中具有唯一性。如图2所示,有分区0、分区1、分区2,其中日志写入的顺序从老到新,ID号命名从0-12等。
消息转发层中发布者发布过的消息记录会被持久化到硬盘中,无论该消息是否被消费,发布记录都会被消息转发层保留到硬盘当中,同时设置保留期限。假定保留策略设置为两天,则在发布消息的两天内,该消息可供使用,之后则被消息转发层丢弃以释放空间,因此消息转发层的性能在数据大小方面是非常出色的,可以长时间保留数据不成问题。
日志中分区有几个用途。首先,它们允许日志的大小超出适合单台服务器的大小,每个单独的分区必须适合托管它的服务器,但是一个队列可能有许多分区,因此它可以处理任意数量的数据,其次,他们作为并行的单位更多的是在同一点上。分区日志分布在队列集群中的服务器上,这些服务器都处理数据并请求共享分区。为了实现容错,每个分区被复制到多个可配置的队列集群中的服务器上。每个分区都有一个控制服务器,假如分区1分别被复制到了三台服务器上,其中第二台为这个分区的控制服务器,其它两台服务器都会成为这个分区的跟随服务器。其中分片的控制服务器处理该分区的所有读和写请求,而跟随服务器被动地复制控制服务器所发生的改变,如果该分片的控制服务器发生了故障等,两个跟随服务器中的其中一台服务器将自动成为新的控制服务器。每台服务器都充当一些分区的控制服务器和一些分区的跟随服务器,因此消息队列集群内的负载非常平衡。
二.远程代码运行控制部分
在服务器能力层对用户代码完成清洗和处理过后,能力层会将请求传输到远程代码运行控制部分。远程代码运行控制部分主要由以下结构组成:
1、全局调度器:用于接收本地调度器提交的任务,并将任务分发给合适的本地任务调度器执行。
2、内存保持器:用于保存分布式任务的状态信息,包括对象机器的映射、任务描述、任务纠错信息等。
3、本地调度器:用于提交任务到全局调度器,以及分配任务给当前机器的工作执行进程。
4、工作执行进程:用于执行分布式运算任务,并将运算结果存储到数据对象存储器。
5、对象数据存储器:每个节点上启动了一个对象数据存储器存储只读数据对象,工作执行进程可以通过共享内存的方式访问这些对象数据,这样可以有效地减少内存拷贝和对象序列化成本。对象数据存储器底层由Apache Arrow框架实现。
6.对象管理器:每个节点上的对象数据存储器都由对象管理器进行管理,它可以在工作执行进程访问本地象数据存储器上不存在的远程数据对象时,主动拉取其它节点上的对象数据到当前节点。
7.全局控制存储器:全局控制存储保持系统的整个控制状态,全局控制存储器只保存对象查询表、任务查询表、函数查询表及操作日志,将对象数据存储下放到节点存储,这样可以实现持久沿袭存储与其他系统组件分离,允许每个组件独立扩展。同时将对象元数据存储在全局控制存储器中而不是全局调度器中,从而将任务调度与存储调度完全分离。全局控制存储器大大简化了远程代码运行控制部分的总体设计,因为它使系统中的每个组件都可以无状态。这不仅简化了对容错的支持(即,在发生故障时,组件只需重新启动并从全局控制存储器读取沿袭),而且由于所有组件都通过全局控制存储器共享所需状态,因此可以轻松地独立扩展分布式对象存储和调度程序。另一个好处是易于开发调试、分析和可视化工具。
具体的,本申请在用户提交到代码之后,全局调度器会首先接收用户代码任务并将基本信息存储于全局控制存储器中。在全局调度器之后还需要将代码运行任务下发到远程节点。本实施例在全局调度器与远程节点之间,设计了一种基于混沌进化的实时优化调度方法,如图7所示,具体如下:
S21:计算调度期间内所有远程节点的运行效益;
其中,表示远程节点内存,/>表示远程节点cpu进程占比,/>表示远程节点的总数,/>表示调度周期,/>表示第/>个远程节点在时间段/>下的cpu运算进程占比,/>表示第/>个远程节点在时间段/>下的内存,/>表示第/>个远程节点在时间段/>下的cpu运算能力,/>表示时间段,运行效益需要结合时间才有具体的值,在实际使用过程中/>可以先隐去,并不影响公式实际表达含义。
S22:设定远程节点原始种群和每个远程节点个体,/>表示代表实时优化调度方法的其中一种解,其中/>表示远程节点种群规模,/>为非零自然数,/>,D表示维数;
S23:假设种群代数为,对远程节点原始种群中选定个体进行变异操作生成变异个体/>,基于交叉操作对变异个体处理得到子代个体/>;
其中,表示第/>个个体在第/>代变异的个体向量,/>表示第/>个个体在第/>代变异的个体向量中的第/>维,/>表示需要变异的个体,/>和/>表示随机从种群中选取的信息交流来源个体,/>表示缩放因子,/>表示种群中第/>个个体经过交叉操作后得到的/>子代个体中的第/>维,/>表示随机生成的自然数,/>代表交叉概率,表示初始的交叉概率值,一般设定为0.6~1,/>表示所有维度中随机的一维,是为了确保交叉后的试验个体至少有一维分量由变异个体提供。
其中,代表缩放因子,/>代表第/>代变异个体向量,由第g代基向量和变异差向量组成。
本实施例利用混沌理论的无周期变动性特征,采用混沌映射的方法生成混沌原始时间序列模拟混沌遍历运动,并将其转化为远程节点群优化变量以求得最优解。即基于混沌理论的无周期变动性特征,在交叉操作对中采用混沌优化以得到子代个体,具体过程如下:
S23-1:通过映射得到的混沌数学模型为,其中/>表示第子代个体的混沌变量,/>表示第/>子代个体的混沌变量,/>表示混沌参数;
为混沌变量,b取值范围为[0,1]。
S23-2:基于不同值构建混沌原始时间序列/>,并对混沌原始时间序列进行维度D扩展,得到初始时间序列矩阵;
通过不同的值进行映射可以得到不同的混沌时间序列,因而在维度为D,设定远程节点种群规模为NP,通过映射得到原始时间序列/>,对原始时间序列/>维度扩展后得到的初始时间序列矩阵如下:
S23-3:利用初始时间序列矩阵分解远程节点个体样本,其中/>代表第/>个远程节点个体样本的D维初始优化解,/>表示/>取最小值时,远程节点个体样本的D维初始优化解,/>表示/>取最大值时,远程节点个体样本的D维初始优化解,/>表示第/>个远程节点个体样本的D维的初始时间序列;
S23-4:基于远程节点个体样本计算得到所有初始优化解的矩阵为/>,矩阵/>如下:
S23-5:通过动态概率的方式选择矩阵中新个体的优化解作为最优解的概率/>,概率/>的计算公式如下;
其中,表示当前种群中最优解的适应度值,/>表示新个体/>适应度值,/>表示固定的一个超参数。
的取值一般在0.5,如果/>的值较小,例如取 0.1 或 0.2 等较小数值,那么在新个体与当前最优解之间的适应度差异较小时,选择新个体优化解为最优解的概率会比较高,搜索过程中可能会更容易跳出局部最优解,但是算法的全局搜索能力可能会受到一定程度的影响。
动态概率会自适应地降低原来最优解的选择概率,提高新解被选择的概率,从而避免算法陷入局部最优解。这种动态概率的方式可以使混沌优化算法具有更强的全局搜索能力,提高算法的收敛速度和精度。
S23-6:将概率由高到低排序,选择排在前列预设个数的概率/>,得到矩阵为/>中初始优化解个数,将初始优化解个数对应到远程节点个体中;
每个初始优化解对应中的一个/>,因而概率/>对应的优化解可以作为远程节点个体。
S23-7:以初始优化解个数作为不同通道分别对所有变异个体进行交叉操作得到子代个体,通过引入混沌映射来增加算法的多样性,混沌映射表现出高度的不可预测性和敏感性,具有较强的随机性,能够生成高质量的随机序列。这种随机性和多样性使得混沌映射在优化算法中能够提供更多的搜索空间,有助于避免陷入局部最优解,对初始解的依赖性低,能够在搜索空间中进行全局搜索,更容易找到全局最优解,也提高了算法的搜索效率。
S24:基于运行效益对比原始个体/>和变异个体/>进行比较,/>,输出最优解/>,以该最优解作为调度策略来进行用户代码调度,最优解/>的计算公式如下:
其中,表示第/>子代个体,/>表示第/>代个体,/>表示种群中第/>个个体经过交叉操作后得到的/>子代个体,F(·)表示运行效益。
根据步骤S21至S24,本实施例使用并行算法来同时处理混沌进化算法中的交叉、变异、选择和混沌优化过程,具体为并行计算中交叉、变异、选择虽然为依次连接关系,但是交叉、变异、选择可以并行处理,因而可以在交叉操作过程中加入混沌优化以得到最优解,也就是得到最优远程节点。在差分进化算法过程中,远程节点种群被划分,并在不同的计算机上进行变异、交叉和最优解选择,然后转入下一代进程并重新进行种群划分,反复迭代并行计算流程,直到达到最大迭代次数G为止。对于混沌优化过程中的精英个体混沌局部搜索(也就是交叉操作过程中),本实施例使用并行算法来划分远程节点种群,并将精英种群放在其中一个远程节点上进行混沌局部搜索,以找到最优解,同时进行混沌全局搜索任务,直到迭代结束,最终得到子代个体。
在全局控制器将用户提交代码转发到远程节点开始执行之后的流程设计可以见图4,在图4中通过一个简单的示例说明了远程代码运行控制部分是如何工作的。在图4中添加两个对象a和b(可以是标量或矩阵),并返回结果c。远程函数add()在初始化时自动向全局控制存储器注册,并分发给系统中的每个工作执行进程(图5中的步骤0)。
图5后续显示了由工作进程启动项调用add函数触发的分步操作。首先远程(a,b),其中a和b分别存储在节点N1和N2上。然后工作进程启动项将add(a,b)提交给本地调度器(步骤1),后者将其转发给全局调度器(步骤2)。接下来,全局调度器在全局控制存储器中查找add(a,b)参数的位置(步骤3),并决定在存储参数b的节点N2上调度任务(步骤4)。节点N2处的本地调度器检查本地对象存储器是否包含add(a,b)的参数(步骤5)。然而本地对象存储器没有对象a,于是在全局控制存储器中查找a的位置(步骤6)。得知a存储在N1,N2的本地对象存储器在本地复制它(步骤7)。由于add()的所有参数现在都存储在本地,因此本地调度器在本地工作程序调用add()(步骤8),该工作程序通过共享内存访问参数(步骤9)。
图6显示了远程代码运行控制部分的返回运行结果操作流程。首先是节点N1处的get()和节点N2处的add()。由于remote.get(idc)的调用,工作进程启动项使用add()返回的结果idc检查本地对象存储中的值c(步骤1)。由于本地对象存储器未存储c,因此它在全局控制存储器中查找其位置。此时,全局控制存储器没有c的条目,因为尚未创建c。于是N1的对象存储器在对象查询表中注册了一个回调,当创建了c的条目时将被触发(步骤2)。同时,在节点N2,add函数()完成其执行,将结果c存储在本地对象存储中(步骤3),然后将c的条目添加到全局控制存储器(步骤4)。结果,全局控制存储器用c的条目触发对节点N1的对象存储的回调(步骤5)。接下来,N1从N2复制c(步骤6),并将c返回到remote.get()函数(步骤7),最终完成任务。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (9)
1.一种分布式在线代码编译运行方法,包括如下步骤:
S1:分区读入用户代码并存储于全局控制存储器中;
S2:基于混沌进化的实时优化调度方法,在全局调度器与远程节点之间建立调度策略,以通过全局调度器将用户代码调度到远程节点中,各个远程节点执行用户代码并在各个节点之间共享内存;
S3:获取远程节点执行用户代码后的代码运行结果并返回给用户;
其中,在S2中,基于混沌进化的实时优化调度方法具体如下:
S21:计算调度期间内所有远程节点的运行效益;
S22:设定远程节点原始种群和每个远程节点个体,/>表示代表实时优化调度方法的其中一种解,其中/>表示远程节点种群规模,/>为非零自然数,/>,D表示维数;
S23:假设种群代数为,对远程节点原始种群中选定个体进行变异操作生成变异个体,基于交叉操作对变异个体处理得到子代个体/>;
S24:基于运行效益对比原始个体/>和变异个体/>进行比较,/>,输出最优解/>,以该最优解作为调度策略来进行用户代码调度。
2.根据权利要求1所述的分布式在线代码编译运行方法,其特征在于,所述运行效益公式如下:
其中,表示远程节点内存,/>表示远程节点cpu进程占比,/>表示远程节点的总数,/>表示调度周期,/>表示第/>个远程节点在时间段/>下的cpu运算进程占比,/>表示第/>个远程节点在时间段/>下的内存,/>表示第/>个远程节点在时间段/>下的cpu运算能力,/>表示时间段。
3.根据权利要求2所述的分布式在线代码编译运行方法,其特征在于,变异个体和子代个体/>的计算公式如下:
其中,表示第/>个个体在第/>代变异的个体向量,/>表示第/>个个体在第代变异的个体向量中的第/>维,/>表示需要变异的个体,/>和/>表示随机从种群中选取的信息交流来源个体,/>表示缩放因子,/>表示种群中第/>个个体经过交叉操作后得到的/>子代个体中的第/>维,/>表示随机生成的自然数,/>代表交叉概率,/>表示初始的交叉概率值,/>表示所有维度中随机的一维。
4.根据权利要求3所述的分布式在线代码编译运行方法,其特征在于,最优解的计算公式如下:
其中,表示第/>子代个体,/>表示第/>代个体,/>表示种群中第/>个个体经过交叉操作后得到的/>子代个体,F(·)表示运行效益。
5.根据权利要求3所述的分布式在线代码编译运行方法,其特征在于,在步骤S23中,基于混沌理论的无周期变动性特征,在交叉操作对中采用混沌优化以得到子代个体,具体过程如下:
通过映射得到的混沌数学模型为,其中/>表示第/>子代个体的混沌变量,/>表示第/>子代个体的混沌变量,/>表示混沌参数;
基于不同值构建混沌原始时间序列/>,并对混沌原始时间序列进行维度D扩展,得到初始时间序列矩阵;
利用初始时间序列矩阵分解远程节点个体样本,其中/>代表第/>个远程节点个体样本的D维初始优化解,/>表示/>取最小值时,远程节点个体样本的D维初始优化解,/>表示/>取最大值时,远程节点个体样本的D维初始优化解,/>表示第/>个远程节点个体样本的D维的初始时间序列;
基于远程节点个体样本计算得到所有初始优化解的矩阵为/>;
通过动态概率的方式选择矩阵中新个体的优化解作为最优解的概率/>;
将概率由高到低排序,选择排在前列预设个数的概率/>,得到矩阵为/>中初始优化解个数,将初始优化解个数对应到远程节点个体中;
以初始优化解个数作为不同通道分别对所有变异个体进行交叉操作得到子代个体。
6.根据权利要求5所述的分布式在线代码编译运行方法,其特征在于,概率的计算公式如下:
其中, 表示当前种群中最优解的适应度值,/>表示新个体/>适应度值,/>表示固定的一个超参数。
7.根据权利要求1所述的分布式在线代码编译运行方法,其特征在于,步骤S1中,具体包括:
设计两级哈希映射,第一级主哈希映射将每个主题与至少一个处理该主题的节点列表配对,用于将用户代码发送到该节点,第二级副哈希映射将每个主题与仅在该节点上存在的分区列表配对,用于将用户代码发送到该分区中;
采用基于计数器的轮询技术,当用户代码基于第一级主哈希映射选择了该节点,则基于第二级副哈希映射继续访问该节点中的分区,以选择分区。
8.根据权利要求1所述的分布式在线代码编译运行方法,其特征在于,在步骤S2中,通过全局调度器将用户代码调度到远程节点中,各个远程节点执行用户代码并在各个节点之间共享内存,具体包括:
远程函数add()在初始化时自动向全局控制存储器注册,并分发给每个节点的工作执行进程;
设定对象a和b,其中a和b分别存储在节点N1和N2上,远程函数add(a,b)启动并提交给本地调度器,通过本地调度器;
全局调度器在全局控制存储器中查找add(a,b)参数的位置,并在存储参数b的节点N2上进行调度任务;
节点N2处的本地调度器检查本地对象存储器是否包含add(a,b)的参数,当不包含时,通过在全局控制存储器中查找a的位置得到a储存在N1上;
N2的本地对象存储器在本地工作程序调用add(),通过共享内存访问参数以在N2的本地复制a,从而实现各个远程节点执行用户代码并在各个节点之间共享内存。
9.一种分布式在线代码编译运行系统,包括分区读入模块、调度模块和反馈模块;
所述分区读入模块用于分区读入用户代码并存储于全局控制存储器中;
所述调度模块用于基于混沌进化的实时优化调度方法,在全局调度器与远程节点之间建立调度策略,以通过全局调度器将用户代码调度到远程节点中,各个远程节点执行用户代码并在各个节点之间共享内存;
所述反馈模块用于获取远程节点执行用户代码后的代码运行结果并返回给用户;
所述调度模块的实时优化调度过程具体如下:
计算调度期间内所有远程节点的运行效益;
设定远程节点原始种群和每个远程节点个体/>,表示代表实时优化调度方法的其中一种解,其中/>表示远程节点种群规模,/>为非零自然数,/>,D表示维数;
假设种群代数为,对远程节点原始种群中选定个体进行变异操作生成变异个体/>,基于交叉操作对变异个体处理得到子代个体/>;
基于运行效益对比原始个体/>和变异个体/>进行比较,/>,输出最优解,以该最优解作为调度策略来进行用户代码调度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311393585.3A CN117130622B (zh) | 2023-10-26 | 2023-10-26 | 一种分布式在线代码编译运行方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311393585.3A CN117130622B (zh) | 2023-10-26 | 2023-10-26 | 一种分布式在线代码编译运行方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117130622A true CN117130622A (zh) | 2023-11-28 |
CN117130622B CN117130622B (zh) | 2024-01-12 |
Family
ID=88853011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311393585.3A Active CN117130622B (zh) | 2023-10-26 | 2023-10-26 | 一种分布式在线代码编译运行方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117130622B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005082102A2 (en) * | 2004-02-26 | 2005-09-09 | Datapower Technology, Inc. | Method and apparatus of streaming data transformation using code generator and translator |
CN102193812A (zh) * | 2011-06-03 | 2011-09-21 | 深圳市茁壮网络股份有限公司 | 一种代码编译方法、主机及系统 |
CN102779207A (zh) * | 2012-06-19 | 2012-11-14 | 北京航空航天大学 | 基于OpenCL的并行差分进化算法的翼型优化设计方法 |
US20140115596A1 (en) * | 2010-08-25 | 2014-04-24 | Et International, Inc. | Codeletset representation, manipulatoin, and execution - method, system and apparatus |
WO2016116132A1 (en) * | 2015-01-19 | 2016-07-28 | Huawei Technologies Co., Ltd. | Systems and methods for execution of algorithms on parallel heterogeneous systems |
CN109800071A (zh) * | 2019-01-03 | 2019-05-24 | 华南理工大学 | 一种基于改进遗传算法的云计算任务调度方法 |
CN110321116A (zh) * | 2019-06-17 | 2019-10-11 | 大连理工大学 | 一种面向编译优化中计算代价约束问题的高效优化方法 |
CN112035116A (zh) * | 2020-08-26 | 2020-12-04 | 大连理工大学 | 多目标编译优化序列选择的代理建模方法 |
CN114528008A (zh) * | 2022-01-28 | 2022-05-24 | 中银金融科技有限公司 | 基于分布式版本控制系统的代码管控方法、设备及介质 |
US20220276953A1 (en) * | 2021-02-26 | 2022-09-01 | Intuit Inc. | Method and system for scalable performance testing in cloud computing environments |
CN116418480A (zh) * | 2023-04-10 | 2023-07-11 | 张伟 | 一种基于哈希函数的混沌加密智能电表及其加密方法 |
US20230229406A1 (en) * | 2021-05-28 | 2023-07-20 | Tencent Technology (Shenzhen) Company Limited | Page rendering method, apparatus, electronic device, computer-readable storage medium, and computer program product |
-
2023
- 2023-10-26 CN CN202311393585.3A patent/CN117130622B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005082102A2 (en) * | 2004-02-26 | 2005-09-09 | Datapower Technology, Inc. | Method and apparatus of streaming data transformation using code generator and translator |
US20140115596A1 (en) * | 2010-08-25 | 2014-04-24 | Et International, Inc. | Codeletset representation, manipulatoin, and execution - method, system and apparatus |
CN102193812A (zh) * | 2011-06-03 | 2011-09-21 | 深圳市茁壮网络股份有限公司 | 一种代码编译方法、主机及系统 |
CN102779207A (zh) * | 2012-06-19 | 2012-11-14 | 北京航空航天大学 | 基于OpenCL的并行差分进化算法的翼型优化设计方法 |
WO2016116132A1 (en) * | 2015-01-19 | 2016-07-28 | Huawei Technologies Co., Ltd. | Systems and methods for execution of algorithms on parallel heterogeneous systems |
CN109800071A (zh) * | 2019-01-03 | 2019-05-24 | 华南理工大学 | 一种基于改进遗传算法的云计算任务调度方法 |
CN110321116A (zh) * | 2019-06-17 | 2019-10-11 | 大连理工大学 | 一种面向编译优化中计算代价约束问题的高效优化方法 |
CN112035116A (zh) * | 2020-08-26 | 2020-12-04 | 大连理工大学 | 多目标编译优化序列选择的代理建模方法 |
US20220276953A1 (en) * | 2021-02-26 | 2022-09-01 | Intuit Inc. | Method and system for scalable performance testing in cloud computing environments |
US20230229406A1 (en) * | 2021-05-28 | 2023-07-20 | Tencent Technology (Shenzhen) Company Limited | Page rendering method, apparatus, electronic device, computer-readable storage medium, and computer program product |
CN114528008A (zh) * | 2022-01-28 | 2022-05-24 | 中银金融科技有限公司 | 基于分布式版本控制系统的代码管控方法、设备及介质 |
CN116418480A (zh) * | 2023-04-10 | 2023-07-11 | 张伟 | 一种基于哈希函数的混沌加密智能电表及其加密方法 |
Non-Patent Citations (1)
Title |
---|
张越: "基于代码混沌的软件保护方案研究与设计", CNKI硕士电子期刊, no. 01 * |
Also Published As
Publication number | Publication date |
---|---|
CN117130622B (zh) | 2024-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11128519B2 (en) | Cluster computing | |
Ekanayake et al. | Twister: a runtime for iterative mapreduce | |
CN101460923B (zh) | 用于在m核处理器上操作n核应用程序的虚拟机 | |
CN107807983B (zh) | 一种支持大规模动态图数据查询的并行处理框架的设计方法 | |
Arfat et al. | Big data for smart infrastructure design: Opportunities and challenges | |
Basturk et al. | Parallel implementation of synchronous type artificial bee colony algorithm for global optimization | |
Ivashko et al. | A survey of desktop grid scheduling | |
Lu et al. | Fast failure recovery in vertex-centric distributed graph processing systems | |
CN100462956C (zh) | 用于在计算系统上加载程序的方法和系统 | |
CN110891083A (zh) | 一种Gaia中支持多作业并行执行的代理方法 | |
CN117130622B (zh) | 一种分布式在线代码编译运行方法及系统 | |
Makarov et al. | Supercomputer simulation of social processes: New technologies | |
Fu et al. | Spark and dask performance analysis based on ARL image library | |
Wang et al. | Towards next generation resource management at extreme-scales | |
Del‐Fabbro et al. | DTM: a service for managing data persistency and data replication in network‐enabled server environments | |
Høverstad | Simdist: a distribution system for easy parallelization of evolutionary computation | |
JP2002358201A (ja) | 最適化問題の並列探索方法および装置 | |
Bazinet | The Lattice Project: A multi-model Grid computing system | |
Visalaxi et al. | Towards Quantum Computing-Inspired Evolutionary Algorithm for Optimized Cloud Resource Management. | |
KR20230012686A (ko) | 전력빅데이터 활용을 위한 분산처리 방법 및 병렬 알고리즘 | |
Wang et al. | A dependable Peer-to-Peer computing platform | |
CN116452951A (zh) | 基于中央数据池的遥感信息提取模型分布式训练方法 | |
Arasteh et al. | A Hybrid Heuristic Algorithm Using Artificial Agents for Data Replication Problem in Distributed Systems. Symmetry 2023, 15, 487 | |
Amarasinghe et al. | A Framework for Peer to Peer General Purpose GPU Distributed Computing | |
KR101564008B1 (ko) | 빅 데이터 시스템에서 맵 리듀스 병렬 유전자 알고리즘을 이용한 데이터 분석 및 처리 장치와 방법 |
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 |