CN113110939A - 运行数据的处理方法、装置、计算机设备及存储介质 - Google Patents
运行数据的处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN113110939A CN113110939A CN202110518576.7A CN202110518576A CN113110939A CN 113110939 A CN113110939 A CN 113110939A CN 202110518576 A CN202110518576 A CN 202110518576A CN 113110939 A CN113110939 A CN 113110939A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- time
- running
- timer
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种运行数据的处理方法、装置、计算机设备及存储介质,属于计算机技术领域。本申请通过在获取到运行数据之后,在支持该运行数据的运行环境的候选设备中,选择负载情况符合目标条件的目标设备,相当于搭建了提供支持云函数服务的平台,通过平台来对外提供计算资源即目标设备以执行运行数据,避免了由于运行环境不适配所可能造成的冲突,且通过负载情况能够合理分配到更趋于负载均衡的目标设备,以通过目标设备在目标时刻执行该运行数据,由于对每个运行数据都能够选择更趋于负载均衡的目标设备,因此能够大大提高资源利用率。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种运行数据的处理方法、装置、计算机设备及存储介质。
背景技术
随着计算机技术的发展,定时任务是应用开发中不可或缺的一个项目,定时任务是指一个预计在未来某个时刻延迟执行的运行数据,运行数据通常以脚本代码、程序代码等代码数据的形式来实现。
目前在处理运行数据时,通常使用Linux***自带的crontab组件,crontab组件可以在本地单机执行运行数据,但当应用开发中涉及多个主机协作时,不同主机上的运行数据是相互独立的,导致经常出现个别主机非常繁忙、个别主机较为空闲的情况,也即资源利用率低,因此亟需一种能够提高资源利用率的运行数据的处理方法。
发明内容
本申请实施例提供了一种运行数据的处理方法、装置、计算机设备及存储介质,能够提高运行数据的处理过程中的资源利用率。该技术方案如下:
一方面,提供了一种运行数据的处理方法,该方法包括:
获取待处理的运行数据,所述运行数据为在目标时刻运行的代码数据;
响应于到达所述目标时刻,基于所述运行数据的运行环境,确定支持所述运行环境的多个候选设备;
基于所述多个候选设备的负载情况,从所述多个候选设备中确定目标设备,所述目标设备的负载情况符合目标条件;
通过所述目标设备执行所述运行数据。
在一种可能实施方式中,所述基于所述多个候选设备的负载情况,从所述多个候选设备中确定目标设备包括:
基于与所述运行数据关联的地理位置,从所述多个候选设备中确定至少一个第一设备,所述第一设备支持向所述地理位置内的终端提供服务;
从所述至少一个第一设备中,确定负载情况符合所述目标条件的所述目标设备。
一方面,提供了一种运行数据的处理装置,该装置包括:
获取模块,用于获取待处理的运行数据,所述运行数据为在目标时刻运行的代码数据;
第一确定模块,用于响应于到达所述目标时刻,基于所述运行数据的运行环境,确定支持所述运行环境的多个候选设备;
第二确定模块,用于基于所述多个候选设备的负载情况,从所述多个候选设备中确定目标设备,所述目标设备的负载情况符合目标条件;
执行模块,用于通过所述目标设备执行所述运行数据。
在一种可能实施方式中,所述执行模块用于:
响应于到达所述目标时刻,将所述目标时刻下定时执行的多个数据的标识信息添加至消息队列中,所述多个数据包括所述运行数据;
对所述消息队列中的所述运行数据,将所述运行数据的标识信息发送至所述目标设备,由所述目标设备基于所述标识信息,加载并执行所述运行数据。
在一种可能实施方式中,所述装置还包括:
第一设置模块,用于响应于所述运行数据的标识信息被添加至所述消息队列,将所述运行数据的状态信息设置为待执行状态,所述待执行状态用于表征已到达所述目标时刻但所述运行数据尚未下发至对应的目标设备。
在一种可能实施方式中,所述装置还包括:
第二设置模块,用于响应于所述运行数据的标识信息被发送至所述目标设备,将所述运行数据的状态信息设置为执行中状态,所述执行中状态用于表征所述运行数据正在被对应的目标设备加载并执行。
在一种可能实施方式中,所述装置还包括:
添加模块,用于响应于所述运行数据为循环执行的代码数据,将所述运行数据的标识信息添加至所述消息队列的队尾。
在一种可能实施方式中,所述负载情况包括中央处理器CPU使用率、磁盘输入/输出I/O利用率或者内存占用率中的至少一项,所述第二确定模块用于:
从所述多个候选设备中,确定CPU使用率最低的候选设备为所述目标设备;或,
从所述多个候选设备中,确定磁盘I/O利用率最低的候选设备为所述目标设备;或,
从所述多个候选设备中,确定内存占用率最低的候选设备为所述目标设备。
在一种可能实施方式中,所述第二确定模块用于:
基于与所述运行数据关联的地理位置,从所述多个候选设备中确定至少一个第一设备,所述第一设备支持向所述地理位置内的终端提供服务;
从所述至少一个第一设备中,确定负载情况符合所述目标条件的所述目标设备。
在一种可能实施方式中,所述装置还包括:
关联模块,用于基于所述目标时刻的时间粒度,将所述运行数据与所述时间粒度对应的定时器相关联,所述定时器用于确定是否到达所述目标时刻。
在一种可能实施方式中,所述时间粒度包括秒钟、分钟或者小时中的至少一项,所述关联模块用于:
响应于所述目标时刻的时间粒度为秒钟,将所述运行数据与秒钟定时器相关联,所述秒钟定时器的最小计时单位为1秒钟;或,
响应于所述目标时刻的时间粒度为分钟,将所述运行数据与分钟定时器相关联,所述分钟定时器的最小计时单位为1分钟;或,
响应于所述目标时刻的时间粒度为小时,将所述运行数据与小时定时器相关联,所述小时定时器的最小计时单位为1小时。
在一种可能实施方式中,所述关联模块用于:
为所述运行数据分配标识信息,将所述标识信息与所述时间粒度对应的所述定时器绑定。
在一种可能实施方式中,所述装置还包括:
第三设置模块,用于响应于所述运行数据已与所述定时器关联,将所述运行数据的状态信息设置为待触发状态,所述待触发状态用于表征所述运行数据已绑定至对应的定时器但尚未到达所述目标时刻。
在一种可能实施方式中,所述装置还包括:
第四设置模块,用于响应于获取到所述运行数据,将所述运行数据的状态信息设置为待发布状态,所述待发布状态用于表征所述运行数据已获取但未绑定至对应的定时器。
在一种可能实施方式中,所述获取模块,还用于从所述目标设备中获取所述运行数据的运行结果和运行日志;
所述装置还包括:发送模块,用于响应于所述运行结果为运行失败,向与所述运行数据关联的终端发送告警信息,所述告警信息携带所述运行结果和所述运行日志。
一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的运行数据的处理方法。
一方面,提供了一种存储介质,该存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行以实现如上述任一种可能实现方式的运行数据的处理方法。
一方面,提供一种计算机程序产品或计算机程序,所述计算机程序产品或所述计算机程序包括一条或多条程序代码,所述一条或多条程序代码存储在计算机可读存储介质中。计算机设备的一个或多个处理器能够从计算机可读存储介质中读取所述一条或多条程序代码,所述一个或多个处理器执行所述一条或多条程序代码,使得计算机设备能够执行上述任一种可能实施方式的运行数据的处理方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过在获取到运行数据之后,在支持该运行数据的运行环境的候选设备中,选择负载情况符合目标条件的目标设备,避免了由于运行环境不适配所可能造成的冲突,且通过负载情况能够合理分配到更趋于负载均衡的目标设备,以通过目标设备在目标时刻执行该运行数据,由于对每个运行数据都能够选择更趋于负载均衡的目标设备,因此能够大大提高资源利用率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还能够根据这些附图获得其他的附图。
图1是本申请实施例提供的一种运行数据的处理方法的实施环境示意图;
图2是本申请实施例提供的一种运行数据的处理方法的流程图;
图3是本申请实施例提供的一种运行数据的处理方法的交互流程图;
图4是本申请实施例提供的一种时间轮定时器的原理性示意图;
图5是本申请实施例提供的一种秒钟定时器的原理性示意图;
图6是本申请实施例提供的一种分钟定时器的原理性示意图;
图7是本申请实施例提供的一种小时定时器的原理性示意图;
图8是本申请实施例提供的一种将标识信息添加至消息队列的原理性示意图;
图9是本申请实施例提供的两台候选设备各自的CPU使用率的动态变化图;
图10是本申请实施例提供的一种目标设备加载运行数据的原理性示意图;
图11是本申请实施例提供的一种运行数据的处理方法的原理性示意图;
图12是本申请实施例提供的一种监控管理统计界面的界面示意图;
图13是本申请实施例提供的一种运行数据的处理装置的结构示意图;
图14是本申请实施例提供的一种计算机设备的结构示意图;
图15是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个第一位置是指两个或两个以上的第一位置。
在介绍本申请实施例之前,首先引入一些云技术领域内的基本概念,下面进行介绍。
云技术(Cloud Technology):是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术,也即是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成云技术领域的重要支撑。技术网络***的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台***进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的***后盾支撑,均能通过云计算来实现。
云计算(Cloud Computing):指IT(Internet Technology,互联网技术)基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(UtilityComputing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
云计算模式下,将计算任务分布在大量计算机构成的资源池上,使各种应用***能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS,英文全称为Infrastructure as a Service,中文全称为基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作***)、存储设备、网络设备。
按照逻辑功能划分,在IaaS层上可以部署PaaS(Platform as a Service,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web(网页)容器等。SaaS为各式各样的业务软件,如web门户网站、***器等。一般来说,SaaS和PaaS相对于IaaS是上层。
随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
云函数(Function as a Service,FaaS,函数即服务):云函数是一种新的计算能力提供方式,即在云端(服务器端)运行的函数。在物理设计上,一个云函数可由多个文件组成,占用一定量的CPU(Central Processing Unit,中央处理器)内存等计算资源;各云函数完全独立;可分别部署在不同的地区。开发者无需购买、搭建服务器,只需编写函数代码并部署到云端即可在小程序端调用,同时云函数之间也可互相调用。对于开发者来说,使用云函数时只需使用平台支持的语言编写核心代码,并设置代码运行的条件,即可在云基础设施上弹性、安全、可监控地运行代码。云函数使得开发者抛弃了对服务器的配置和管理,仅需编写和上传核心业务代码(即运行数据),即可获得对应的数据结果(即运行结果)。使用云函数能够免除开发者所有的运维性操作,让企业和开发者可以更加专注于核心业务的开发,实现快速上线和迭代,把握业务发展的节奏。
微服务(Microservice):微服务是一种软件开发技术,是面向服务的体系结构(Service-Oriented Architecture,SOA)架构样式的一种变体,将应用程序构造为一组松散耦合的服务。在微服务体系结构中,服务是细粒度的,协议是轻量级的。换言之,微服务是一种开发软件的架构和组织方法,其中应用程序(即软件)由通过明确定义的API(Application Programming Interface,应用程序接口)以及可以通信的小型独立服务组成微服务架构,使得应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上线时间。
时间轮定时器:时间轮是一个存储延迟消息的环形队列,其底层采用数组实现,可以高效循环遍历。这个环形队列中的每个元素对应一个延迟任务列表,这个列表是一个双向环形链表,链表中每一项都代表一个需要执行的延迟任务。其中,延迟任务也即定时任务,是指在未来的某一时刻定时执行的运行数据,运行数据通常以脚本代码、程序代码等代码数据的形式实现。
分布式消息队列:是一种具备容错性的消息队列,如Kafka(一种高吞吐量的分布式发布订阅消息***)、RabbitMQ(Rabbit Message Queue,Rabbit公司开发的消息队列,是一种程序对程序的通信方法)等。
POD(豌豆荚):POD是K8s(Kubernetes,是一种开源容器集群管理***)集群中的最小管理元素,也即在K8s集群中最小的管理元素并非是一个个独立的容器,而是称为POD,也即是用于管理、创建、计划的最小单元。其中,K8s是一个服务器集群,本申请实施例涉及的运行数据可以在K8s集群中进行处理,在K8s集群中每个脚本都会被打包成docker镜像,目标设备从云数据库中拉取docker镜像之后,通过POD来运行脚本。一个POD是一个容器环境下的逻辑主机,POD可能包含一个或者多个紧密相连的应用,这些应用可能是在同一个物理主机或者虚拟机上的。
在应用开发中,不可避免地需要使用到定时任务,定时任务是指一个预计在未来某个时刻延迟执行的运行数据,运行数据通常以脚本代码、程序代码等代码数据的形式来实现。目前,定时任务的主流实现方式,是使用Linux***自带的crontab组件,crontab组件可以在本地单机执行,使得运行数据不具备高可用性;此外,当应用开发中涉及多个主机协作时,不同主机上的定时任务是相互独立的,使得运行数据无法复用、不具备高扩展性;此外,在上述多个主机协作的情况下,由于不同的运行数据通常消耗不同的计算资源,例如,有些运行数据是CPU消耗型,有些运行数据是内存消耗型,导致经常出现个别主机非常繁忙、个别主机较为空闲的情况,也即资源利用率低;此外,运行数据执行失败时,往往难以定位到出现的问题(BUG),使得问题定位过程复杂,且如果单机发生崩溃宕机,那么运行数据无法被正常执行,且无法及时向开发者告警。
有鉴于此,本申请实施例涉及一种运行数据的处理方法,能够提高运行数据的可用性、扩展性,提高运行数据的处理性能,提高整个云函数集群的资源利用率,且能够及时向开发者同步运行数据的状态信息,如果运行数据执行失败,还能够及时向开发者告警,并通过发送运行结果和运行日志,方便开发者精准定位到运行数据中的BUG,简化了BUG定位流程,降低了BUG定位难度,使得应用开发过程更加简便和透明。
在一个示例性场景中,以运行数据是脚本代码为例说明,通过搭建出一套分布式函数计算微服务脚本***,利用云函数计算平台和微服务,能够提高脚本代码的复用性及扩展性,且能够提高开发效率,利用分布式消息队列和多个执行POD来保证脚本代码的高可用性,同时用微服务监控组件能够及时告警脚本代码的执行状态,并提示给开发者,此外,通过获取各个机器(即候选设备)的负载情况,使得各个机器通过抢占式拉取待执行的脚本代码,以尽量保证各个机器达到负载平衡,合理利用集群资源,最终,利用微服务metrics(一款监控指标的度量类库)监控技术,让执行过程更加透明。
图1是本申请实施例提供的一种运行数据的处理方法的实施环境示意图。参见图1,在该实施环境中包括终端110和服务器120,终端110和服务器120均为计算机设备的一种示例性说明。
终端110用于提供待处理的运行数据,该运行数据是指在目标时刻运行的代码数据,该目标时刻是指在当前时刻之后的任一时刻,也即该目标时刻是未来的时刻,该代码数据可以是脚本语言编写的脚本代码、高级程序设计语言编写的程序代码等,本申请实施例对此不进行具体限定。
在一些实施例中,用户(通常是开发者)在终端110上登录云平台的账号,并在云平台关联的应用程序中编写待处理的运行数据,并向云平台上传该运行数据,使得服务器120在接收到该运行数据之后,定时触发云平台部署的目标设备执行该运行数据。例如,该应用程序可以是浏览器应用,开发者在浏览器应用的在线IDE(Integrated DevelopmentEnvironment,集成开发环境)中编写需要定时执行的运行数据(如脚本代码片段等)后,在该在线IDE中点击发布或者上传功能选项,使得终端向服务器120发送该运行数据。可选地,除了浏览器应用之外,该应用程序还可以是其他的支持上传运行数据的客户端,例如云平台对应的应用程序等,本申请实施例对此不进行具体限定。
终端110和服务器120能够通过有线或无线通信方式进行直接或间接地连接,本申请在此不作限制。
服务器120可以用于向各个终端110提供运行数据的处理服务,也即,服务器120在接收到各个终端110发布的运行数据之后,对每个运行数据,在到达需要执行该运行数据的目标时刻时,从服务器集群或分布式***中,为该运行数据分配作为执行主机的目标设备,并通过目标设备来按时执行该运行数据。
可选地,在分配目标设备时,可以综合考虑分布式***中各个候选设备的负载情况,并选择当前负载较为轻松(即被占用的计算资源较少)的候选设备作为目标设备,以改善各个终端110本地执行自身的运行数据时导致的资源利用率低、负载不均衡的现象。
可选地,服务器120还可以通过日志平台收集各个运行数据的运行结果和运行日志,对任一运行数据,若该任一运行数据的运行结果为运行成功,那么服务器120向与该运行数据关联的终端发送确认信息,该确认信息用于指示该运行数据运行完毕,若该任一运行数据的运行结果为运行失败,那么服务器120向与该运行数据关联的终端发送告警信息,该告警信息用于指示该运行数据运行失败,可选地,该告警信息中可以携带该运行结果和该运行日志,以方便开发者根据运行日志来回溯整个运行数据的运行过程,方便定位到运行数据中出现的BUG。
需要说明的是,如本申请所公开的各个待处理的运行数据,这些运行数据可保存于区块链上。换言之,用于执行该运行数据的服务器集群或分布式***中的多个服务器可组成为一区块链,而服务器为区块链上的节点。
服务器120可以包括一台服务器、多台服务器、云计算平台或者虚拟化中心中的至少一种。可选地,服务器120可以承担主要计算工作,终端110可以承担次要计算工作;或者,服务器120承担次要计算工作,终端110承担主要计算工作;或者,终端110和服务器120两者之间采用分布式计算架构进行协同计算。
可选地,服务器120是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式***,或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。
可选地,终端110是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、电子书阅读器等,但并不局限于此。
本领域技术人员可以知晓,终端110可以泛指多个终端中的一个,上述终端的数量可以更多或更少。比如上述终端可以仅为一个,或者上述终端为几十个或几百个,或者更多数量。本申请实施例对终端的数量和设备类型不加以限定。
图2是本申请实施例提供的一种运行数据的处理方法的流程图。参见图2,该实施例应用于计算机设备,以下以计算机设备为服务器为例进行说明,该实施例包括下述步骤:
201、服务器获取待处理的运行数据,该运行数据为在目标时刻运行的代码数据。
可选地,该运行数据是指在目标时刻运行的代码数据,该目标时刻是指在当前时刻之后的任一时刻,也即该目标时刻是未来的时刻。可选地,该代码数据可以是脚本语言编写的脚本代码,也可以是高级程序设计语言编写的程序代码,或者以其他形式实现的代码,本申请实施例对此不进行具体限定。
可选地,该运行数据是一次性执行的代码数据,例如,在下午3点钟执行的代码数据,或者,该运行数据是循环执行的代码数据,也即该运行数据是周期性触发执行的,对于循环执行的代码数据,可设置循环执行的次数或者循环执行的停止时刻,使得超过循环执行的次数或者到达该停止时刻之后,不再执行该代码数据,例如,在每天下午3点钟执行的代码数据,循环7天后停止,本申请实施例不对该代码数据是一次性执行还是周期性执行进行具体限定。
在一些实施例中,服务器接收终端在云平台中上传或发布的运行数据,换言之,当服务器接收到任一数据传输报文时,解析该数据传输报文的头字段,当该头字段中携带的传输数据类型信息指示为运行数据时,确定该数据传输报文为运行数据的传输报文,解析该数据传输报文的数据字段,得到待处理的该运行数据,可选地,在该数据字段中携带终端标识或账号标识、该目标时刻和该运行数据。
其中,该云平台是指提供云函数服务的平台,也即服务器提供计算能力,终端只需要将待处理的运行数据上传或发布到云平台中,即可在云端执行该运行数据,而无需占用本地的计算资源。对于开发者来说,使用云函数时只需使用云平台支持的语言编写运行数据,并设置运行数据的运行条件(即设置目标时刻),即可在云基础设施(即目标设备)上弹性、安全、可监控地执行该运行数据。
可选地,该传输数据类型信息是可以标识码,例如,00表示运行数据,01表示业务数据,10表示控制数据等,或者,该传输数据类型信息还可以是目标时刻,也即将该运行数据的执行条件作为自身的传输数据类型信息。
在一个示例性实施例中,以该传输数据类型信息是目标时刻为例说明,当服务器接收到任一数据传输报文时,解析该数据传输报文的头字段,当该头字段中携带目标时刻时,确定该数据传输报文为运行数据的传输报文,解析该数据传输报文的数据字段,得到待处理的该运行数据,可选地,在该数据字段中携带终端标识或账号标识和该运行数据。
在一个示例性场景中,开发者在终端上登录云平台的账号,在云平台关联的应用程序中编写待处理的运行数据,通过对该应用程序中的发布或者上传功能选项的触发操作,触发终端向服务器发送该待处理的运行数据,服务器接收该待处理的运行数据。例如,该应用程序是软件开发应用,该软件开发应用中提供在线IDE的编写功能,开发者在该在线IDE中编写该待处理的运行数据(如脚本代码片段、程序代码片段、功能函数等),开发者点击或通过快捷键触发发布或者上传功能选项,使得终端向服务器发送该待处理的运行数据。
202、服务器响应于到达该目标时刻,基于该运行数据的运行环境,确定支持该运行环境的多个候选设备。
在一些实施例中,由于服务器用于通过云平台向各个终端提供计算能力,服务器可以是由多个计算设备所组成的服务器集群(或者为分布式***或区块链***),该多个计算设备也即相当于云平台的多个云基础设施。
在一些实施例中,服务器对该运行数据,识别该运行数据的运行环境,从服务器集群的多个计算设备中,确定支持该运行环境的多个候选设备。在一个示例中,该运行数据为JavaScript脚本代码,服务器识别该运行数据的运行环境为Java环境,在服务器集群的所有计算设备中,将支持Java环境的多个计算设备确定为该多个候选设备。
在一些实施例中,服务器可以通过机器学习模型智能识别该运行数据的运行环境,例如,通过分类模型来进行运行环境的识别,或者,由于不同运行环境的运行数据通常具备不同的编程语法,服务器可以通过该运行数据的编程语法来识别出该运行数据的运行环境,或者,还可以人工识别该运行数据的运行环境,本申请实施例不对该运行环境的识别方式进行具体限定。
在一些实施例中,开发者通过终端向服务器上传或发布该运行数据时,还可以携带该运行数据的运行环境指示信息,该运行环境指示信息用于指示该运行数据的运行环境,从而无需服务器耗费算力来识别该运行环境,而是可以直接通过终端发送的该运行环境指示信息,从服务器集群的多个计算设备中,确定支持该运行环境的多个候选设备。
可选地,该运行环境指示信息可以是开发者设置的运行环境(如Java环境),也可以是编写该运行数据的编程语言(如JavaScript脚本语言),本申请实施例对此不进行具体限定。
在一些实施例中,如果该运行环境指示信息为该运行环境自身,服务器可以预存有计算设备及运行环境的关联信息,该关联信息用于记录服务器集群(或者为分布式***或区块链***)内每个计算设备及各自所支持的运行环境,服务器基于该关联信息,选择支持该运行环境的各个计算设备作为该多个候选设备。
可选地,该关联信息可以是多个键值对,每个键值对以一种运行环境为键名,以支持该运行环境的各个计算设备的设备标识为键值,服务器以该运行环境为索引,查询与该索引对应的索引内容,将该索引内容即键值中存储的各个设备标识所对应的计算设备确定为该多个候选设备。可选地,除了键值对之外,该关联信息还可以是列表的形式,或者还可以是链表、数组、哈希表、位图等,本申请实施例对关联信息的存储形式不进行具体限定。
在一些实施例中,如果该运行环境指示信息为编写该运行数据的编程语言,服务器可以根据编程语言与运行环境的映射关系,确定与该编程语言所对应的运行环境,并基于服务器上预存的计算设备及运行环境的关联信息,选择支持该运行环境的各个计算设备作为该多个候选设备,该关联信息已经在上文中介绍过,这里不做赘述。
203、服务器基于该多个候选设备的负载情况,从该多个候选设备中确定目标设备,该目标设备的负载情况符合目标条件。
其中,该负载情况用于表征候选设备的计算资源的使用情况,可选地,该负载情况包括中央处理器CPU使用率、磁盘输入/输出I(Input)/O(Output)利用率或者内存占用率中的至少一项。
在一些实施例中,当该负载情况包括CPU使用率时,该目标条件可以是CPU使用率最低,也即服务器从该多个候选设备中,确定CPU使用率最低的候选设备为该目标设备。可选地,服务器可以获取该多个候选设备的CPU使用率,并按照CPU使用率从低到高的顺序对各个候选设备进行排序,将排序位于首位的候选设备确定为该目标设备。
在一些实施例中,当该负载情况包括磁盘I/O利用率时,该目标条件可以是磁盘I/O利用率最低,也即服务器从该多个候选设备中,确定磁盘I/O利用率最低的候选设备为该目标设备。可选地,服务器可以获取该多个候选设备的磁盘I/O利用率,并按照磁盘I/O利用率从低到高的顺序对各个候选设备进行排序,将排序位于首位的候选设备确定为该目标设备。
在一些实施例中,当该负载情况包括内存占用率时,该目标条件可以是内存占用率最低,也即服务器从该多个候选设备中,确定内存占用率最低的候选设备为该目标设备。可选地,服务器可以获取该多个候选设备的内存占用率,并按照内存占用率从低到高的顺序对各个候选设备进行排序,将排序位于首位的候选设备确定为该目标设备。
在上述过程中,通过在各个候选设备中,选择负载较为轻松的候选设备作为目标设备,有利于均衡整个服务器集群内各个设备的负载,避免服务器集群内出现某些设备非常繁忙、某些设备非常空闲的现象,从而能够提高服务器集群的资源利用率。
在一些实施例中,在分配目标设备时,除了考虑负载情况之外,还可以考虑地理位置,由于服务器集群(或者为分布式***或区块链***)中的计算设备通常会部署在不同的地理位置,以便于计算设备能够就近向附近地理区域内的终端提供计算能力,以提高整个服务器集群的响应速度。在这种情况下,服务器可以基于与该运行数据关联的地理位置,从该多个候选设备中确定至少一个第一设备,该第一设备支持向该地理位置内的终端提供服务;从该至少一个第一设备中,确定负载情况符合该目标条件的该目标设备。
可选地,该地理位置可以为上传该运行数据的终端(通常是开发者所对应的终端)所在的位置,或者,该地理位置还可以为该运行数据所操作的终端(通常为消费者所对应的终端)所在的位置,本申请实施例对此不进行具体限定。
在一个示例性场景中,假设与该运行数据关联的地理位置为A市,服务器先从该多个候选设备中,确定支持向A市内的终端提供服务的至少一个第一设备,再根据该至少一个第一设备的负载情况,确定负载情况符合该目标条件的该目标设备,可选地,该第一设备可以部署在A市,也可以部署在A市的周边城市,但需要保证第一设备是支持向A市内的终端提供服务的,本申请实施例对此不进行具体限定。
在上述过程中,通过在选择目标设备时,不但考虑负载情况还考虑地理位置,使得整个服务器集群能够由目标设备就近向对应的终端提供服务,能够在均衡负载的前提下提高服务器集群的响应速度,从而优化云平台对运行数据的处理性能。
204、服务器通过该目标设备执行该运行数据。
在一些实施例中,由于在目标时刻下可能在服务器集群内会存在待执行的、包括该运行数据在内的多个数据,因此,服务器可以通过消息队列来统筹管理同一时刻下定时执行的各个数据。也即是说,服务器响应于到达该目标时刻,将该目标时刻下定时执行的多个数据的标识信息添加至消息队列中,该多个数据包括该运行数据;对该消息队列中的该运行数据,将该运行数据的标识信息发送至该目标设备,由该目标设备基于该标识信息,加载并执行该运行数据。
在一个示例性场景中,服务器对每个时刻都维护一个消息队列,并在到达该目标时刻时,确定在该目标时刻下需要定时执行的多个数据,并将该多个数据的标识信息添加至该目标时刻所对应的消息队列中,接着,对消息队列中的每个标识信息所对应的运行数据,基于运行环境确定候选设备,并基于负载情况分配目标设备,接着,将各个标识信息发送至对应的各个目标设备,并由各个目标设备基于各自接收到的标识信息,加载并执行各自对应的运行数据。
在一些实施例中,目标设备在加载运行数据时,可以采取抢占式加载或者分配式加载。抢占式加载是指:目标设备在接收到标识信息后,主动从服务器中拉取该标识信息对应的运行数据,并在接收到服务器返回的运行数据后,执行该运行数据;分配式加载是指:服务器在向目标设备分发标识信息的同时还向目标设备下发对应的运行数据,目标设备在接收到该运行数据后,执行该运行数据,其中,服务器在分发标识信息和运行数据时,可以采取同步分发或者异步分发,本申请实施例不对此进行具体限定。
在上述过程中,服务器通过消息队列能够合理统筹同一时刻下定时执行的多个数据,在分布式***中该消息队列也称为分布式消息队列。在同一时刻下如果需要执行的数据过多时,由于***内待执行的运行数据数量激增会造成惊群效应,其中,惊群效应是指多个数据同时等待到达目标时刻时执行,当到达目标时刻时,这些数据所对应的进程被同时唤醒。通过分布式消息队列,能够在到达目标时刻之前,提前确定了在目标时刻所需执行的运行数据的数量(即消息队列的长度),从而能够提前进行资源分配,对计算资源进行合理统筹,从而能够改善惊群效应。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,通过在获取到运行数据之后,在支持该运行数据的运行环境的候选设备中,选择负载情况符合目标条件的目标设备,避免了由于运行环境不适配所可能造成的冲突,且通过负载情况能够合理分配到更趋于负载均衡的目标设备,以通过目标设备在目标时刻执行该运行数据,由于对每个运行数据都能够选择更趋于负载均衡的目标设备,因此能够大大提高资源利用率。
图3是本申请实施例提供的一种运行数据的处理方法的交互流程图。参见图3,该实施例应用于计算机设备,以下以计算机设备为服务器为例进行说明,该实施例包括下述步骤:
301、服务器获取待处理的运行数据,该运行数据为在目标时刻运行的代码数据。
上述步骤301与上述步骤201类似,这里不做赘述。
在一个示例性场景中,以该运行数据为脚本代码为例,示出了一个待处理的运行数据的示例:
302、服务器响应于获取到该运行数据,为该运行数据分配标识信息。
在一些实施例中,由于服务器通常是多个服务器所构成的服务器集群(或为分布式***或区块链***),因此在服务器集群中,接收该运行数据的设备、为该运行数据分配目标设备的设备、执行该运行数据的目标设备,三者通常并非集成在同一个物理机上,也即三者分别是由不同的物理机完成的,因此在运行数据的执行流程中,会涉及到在集群内部的传输,但只有目标设备才需要加载并执行全量的运行数据,因此,服务器可以在每接收到一个运行数据之后,就为该运行数据分配唯一的标识信息,在执行后续分配目标设备、添加消息队列等流程时,利用该标识信息来代表该运行数据,能够大大节约集群内部的通信开销。
在一些实施例中,服务器在分配标识信息时,可以保证该标识信息按照接收到运行数据的先后顺序而递增,也即是说,服务器为越晚接收到的运行数据分配越大的标识信息,从而能够方便按照时间先后顺序来管理集群所待处理的各个运行数据。可选地,该标识信息可以是递增的序列号,还可以是携带时间戳信息且递增的序列号等,本申请实施例对该标识信息的组成成分不进行具体限定。
在另一些实施例中,服务器在分配标识信息时,也可以不按照接收到运行数据的先后顺序而递增,比如,服务器将终端标识与接收到运行数据的时间戳进行拼接,构成一个序列号,并对该序列号进行加密,将加密后得到的信息确定为唯一标识该运行数据的标识信息,能够提高标识信息生成过程的安全性。可选地,对序列号的加密算法可以是哈希算法、摘要算法等,本申请实施例不进行具体限定。
303、服务器将该运行数据的状态信息设置为待发布状态,该待发布状态用于表征该运行数据已获取但未绑定至对应的定时器。
在一些实施例中,服务器可以对上传至云平台的每个运行数据设置一个状态信息,该状态信息用于追踪运行数据的执行状态,可选地,该状态信息包括以下几种类型:
a)待发布状态,用于表征该运行数据已获取但未绑定至对应的定时器;
b)待触发状态,用于表征该运行数据已绑定至对应的定时器但尚未到达该目标时刻;
c)待执行状态,用于表征已到达该目标时刻但该运行数据尚未下发至对应的目标设备;
d)执行中状态,用于表征该运行数据正在被对应的目标设备加载并执行。
在一些实施例中,该状态信息可以是一个状态变量,在服务器集群内,该运行数据所涉及到的各个设备之间需要同步该状态变量,可选地,在服务器集群内部传输该运行数据的标识信息时,还可以同时传输该运行数据的状态变量,比如,服务器向该运行数据分配完毕目标设备之后,需要向该目标设备发送该运行数据的标识信息以及状态变量,目标设备接收到该标识信息和状态变量之后,将接收到的该状态变量与本地存储(经同步)的状态变量进行对比,如果两者一致,说明验证通过,目标设备加载并执行该运行数据,如果两者不一致,说明运行数据存在泄露风险或者状态变量并未及时更新,此时验证不通过,目标设备可以向服务器告警,使得技术人员根据告警的情况来排查具体问题。
可选地,由于上述状态信息共存在4种可能出现的状态,因此状态变量可对应设置4种可能的取值,例如,00表示待发布状态,01表示待触发状态,10表示待执行状态,11表示执行中状态,又例如,1表示待发布状态,2表示待触发状态,3表示待执行状态,4表示执行中状态等,本申请实施例对状态变量的取值方式不进行具体限定。
在一个示例性场景中,在接收到该运行数据之后,服务器为该运行数据分配标识信息,并为该运行数据创建状态变量,并将该状态变量初始化为待发布状态(如令状态变量State=00),然后,在数据库中将该运行数据、该标识信息和该状态变量进行对应存储,例如,以该标识信息为键名,以该运行数据和该状态变量为键值,从而构成一组键值对。
在一些实施例中,由于状态信息能够实时地反映出该运行数据在云平台内执行时所处的流程,因此该状态信息还可以由服务器反馈至上传或发布该运行数据的终端(通常是开发者的终端),便于开发者对自身编写的运行数据进行实时状态追踪。
需要说明的是,上述步骤302和上述步骤303并不存在执行时序上的先后关系限定,也即,服务器响应于接收到该运行数据,可以先分配标识信息再将状态信息修改为待发布状态,或者,也可以先将状态信息修改为待发布状态再分配标识信息,或者,还可以在分配标识信息的同时将状态信息修改为待发布状态,本申请实施例对上述步骤302和上述步骤303之间的执行时序不进行具体限定。
304、服务器基于该目标时刻的时间粒度,将该标识信息与该时间粒度对应的定时器绑定,该定时器用于确定是否到达该目标时刻。
在一些实施例中,服务器识别该目标时刻的时间粒度,并将该标识信息与该时间粒度对应的定时器绑定。
可选地,该时间粒度包括秒钟、分钟或者小时中的至少一项,每种时间粒度可以对应于一个或多个定时器。假设每种时间粒度对应于一个定时器,那么定时器可以划分为秒钟定时器、分钟定时器和小时定时器,其中,该秒钟定时器的最小计时单位为1秒钟,该分钟定时器的最小计时单位为1分钟,该小时定时器的最小计时单位为1小时。可选地,每种时间粒度还可以对应于多个定时器,例如,设置1秒钟定时器(最小计时单位为1秒钟)、2秒钟定时器(最小计时单位为2秒钟)、5秒钟定时器(最小计时单位为5秒钟)等,本申请实施例不对此进行具体限定。
在一些实施例中,服务器在识别该目标时刻的时间粒度时,可以通过将该目标时刻的最小时间单位的时间粒度确定为该目标时刻的时间段粒度,例如,若该目标时刻为5月7日14点,则最小计时单位的时间粒度为1小时,若目标时刻为5月7日14点10分,则最小计时单位的时间粒度为1分钟,本申请实施例对此不进行具体限定。
在上述步骤302-304中,服务器基于该目标时刻的时间粒度,将该运行数据与该时间粒度对应的定时器相关联,而通过仅将运行数据的标识信息与对应时间粒度的定时器绑定,能够避免将全量的运行数据与对应时间粒度的定时器绑定,从而节约服务器的计算资源及存储开销。在一些实施例中,也可以将全量的运行数据与对应时间粒度的定时器绑定,这样能够简化将运行数据与定时器相关联的流程。
在一些实施例中,服务器响应于该目标时刻的时间粒度为秒钟,将该运行数据与秒钟定时器相关联,可选地,服务器将该运行数据的标识信息与该秒钟定时器绑定,其中,该秒钟定时器的最小计时单位为1秒钟。
在一些实施例中,服务器响应于该目标时刻的时间粒度为分钟,将该运行数据与分钟定时器相关联,可选地,服务器将该运行数据的标识信息与该分钟定时器绑定,其中,该分钟定时器的最小计时单位为1分钟。
在一些实施例中,服务器响应于该目标时刻的时间粒度为小时,将该运行数据与小时定时器相关联,可选地,服务器将该运行数据的标识信息与该小时定时器绑定,其中,该小时定时器的最小计时单位为1小时。
在上述过程中,通过将运行数据的标识信息与自身时间粒度对应的定时器绑定,能够支持在多种时间粒度下的目标时刻,来执行对应的运行数据,而相关技术中Linux***的crontab组件则仅支持分钟定时器,换言之秒钟粒度下的定时任务(运行数据)无法实现,且小时粒度下的定时任务拥挤冗余,本申请实施例通过设计多种时间粒度的定时器,能够大大提升运行数据的处理效率。
下面,将对时间轮定时器的原理进行说明,图4是本申请实施例提供的一种时间轮定时器的原理性示意图,如400所示,最小计时单位称为Tick(可以理解为定时器的指针一跳所代表的最小时间间隔),在秒钟定时器中Tick指1秒钟,在分钟定时器中Tick指1分钟,在小时定时器中Tick指1小时。假设在定时器的一轮循环中包括N个Tick单元,其中,N为大于或等于1的整数,且时间轮定时器的每个Tick单元都维护一个消息队列,则共需要维护N个消息队列。若当前时刻是在S个循环之后指向元素i(指第i个Tick单元),其中,i为大于或等于1且小于或等于N的数值,那么当前时刻Tc可以表示为Tc=S*N+i,如果此时绑定了一个目标时刻与当前时刻之间的时间间隔为Ti的运行数据,那么这个运行数据的标识信息会被添加到元素n的消息队列中,则n=(Tc+Ti)mod N=(S*N+i+Ti)mod N=(i+Ti)mod N。
图5是本申请实施例提供的一种秒钟定时器的原理性示意图,如500所示,在秒钟定时器中最小计时单位Tick是1秒钟,因此在秒钟定时器中共包含60个Tick,假设当前时刻下时钟指向Tick=2的刻度,此时绑定(或称为关联)了一个延迟4秒种执行的运行数据,那么目标时刻则是Tick=6的刻度,此时将该运行数据的标识信息***到Tick=6下的消息队列中。
图6是本申请实施例提供的一种分钟定时器的原理性示意图,如600所示,在分钟定时器中最小计时单位Tick是1分钟,因此在分钟定时器中共包含60个Tick,假设当前时刻下时钟指向Tick=1的刻度,此时绑定(或称为关联)了一个延迟5分钟执行的运行数据,那么目标时刻则是Tick=6的刻度,此时将该运行数据的标识信息***到Tick=6下的消息队列中。
图7是本申请实施例提供的一种小时定时器的原理性示意图,如700所示,在小时定时器中最小计时单位Tick是1小时,因此在秒钟定时器中共包含24个Tick,假设当前时刻下时钟指向Tick=1的刻度,此时绑定(或称为关联)了一个延迟5小时执行的运行数据,那么目标时刻则是Tick=6的刻度,此时将该运行数据的标识信息***到Tick=6下的消息队列中。
305、服务器响应于该运行数据已与该定时器关联,将该运行数据的状态信息设置为待触发状态,该待触发状态用于表征该运行数据已绑定至对应的定时器但尚未到达该目标时刻。
上述步骤305与上述步骤303类似,这里不做赘述。
基于上述步骤303所提供的示例,假设该状态信息以状态变量的形式实现,该状态变量对应于设置4种可能的取值,例如,00表示待发布状态,01表示待触发状态,10表示待执行状态,11表示执行中状态。
那么服务器响应于该运行数据已与该定时器关联(即该运行数据的标识信息已与对应时间粒度的定时器绑定),服务器在数据库中以该标识信息为索引,查询与该索引对应存储的索引内容,该索引内容即包括该运行数据和该状态变量,此时将状态变量从原本的00(待发布状态)修改为01(待触发状态),也即将状态变量赋值为01。
在上述过程中,由于状态信息能够实时地反映出该运行数据在云平台内执行时所处的流程,因此该状态信息还可以由服务器反馈至上传或发布该运行数据的终端(通常是开发者的终端),便于开发者对自身编写的运行数据进行实时状态追踪。
306、服务器响应于到达该目标时刻,将该目标时刻下定时执行的多个数据的标识信息添加至消息队列中,该多个数据包括该运行数据。
在一些实施例中,服务器对该定时器中的每个Tick单元维护一个消息队列,基于该运行数据所对应的目标时刻,获取该目标时刻与当前时刻之间的时间间隔,并基于该时间间隔,确定该时间间隔在该定时器中所对应的Tick单元数量,将当前时刻指针所指向的Tick单元刻度与该Tick单元数量相加,得到目标时刻时指针所应指向的Tick单元刻度,从而当指针指向该目标时刻所对应的Tick单元刻度时,确定到达该目标时刻,接着,将该目标时刻下定时执行的多个数据的标识信息添加至该Tick单元所对应的消息队列中,其中由于该运行数据也是在目标时刻定时执行的,因此,该多个数据中包括该运行数据。
可选地,该消息队列可以是Kafka消息队列,也可以是RabbitMQ(一种高吞吐量的分布式发布订阅消息***)、ActiveMQ(活跃消息队列)等,本申请实施例不对该消息队列的类型进行具体限定。
在一些实施例中,除了将各个数据的标识信息写入到消息队列中,还可以同时写入各个数据的上次执行时间、本次预计的执行耗时等参数,以在消息队列中维护更加全面的各个数据的元信息。
图8是本申请实施例提供的一种将标识信息添加至消息队列的原理性示意图,如800所示,假设目标时刻下定时器的指针指向了Tick=5刻度,此时触发将Tick=5刻度下的所有运行数据的标识信息写入到Tick=5刻度的消息队列中,示意性地,以写入到Tick=5刻度的Kafka消息队列为例进行说明。
307、服务器响应于该运行数据的标识信息被添加至该消息队列,将该运行数据的状态信息设置为待执行状态,该待执行状态用于表征已到达该目标时刻但该运行数据尚未下发至对应的目标设备。
上述步骤307与上述步骤303类似,这里不做赘述。
基于上述步骤303所提供的示例,假设该状态信息以状态变量的形式实现,该状态变量对应于设置4种可能的取值,例如,00表示待发布状态,01表示待触发状态,10表示待执行状态,11表示执行中状态。
那么服务器响应于该运行数据的标识信息已被添加至该消息队列,服务器在数据库中以该标识信息为索引,查询与该索引对应存储的索引内容,该索引内容即包括该运行数据和该状态变量,此时将状态变量从原本的01(待触发状态)修改为10(待执行状态),也即将状态变量赋值为10。
在上述过程中,由于状态信息能够实时地反映出该运行数据在云平台内执行时所处的流程,因此该状态信息还可以由服务器反馈至上传或发布该运行数据的终端(通常是开发者的终端),便于开发者对自身编写的运行数据进行实时状态追踪。
308、服务器对该消息队列中的该运行数据,基于该运行数据的运行环境,确定支持该运行环境的多个候选设备。
上述步骤308与上述步骤202类似,这里不做赘述。
需要说明的是,本申请实施例仅以该消息队列中的该运行数据为例,说明如何分配目标设备并由目标设备执行该运行数据,但该运行数据可以是该消息队列中任一数据,也即是说,服务器对于该消息队列中每个数据均可以执行类似的操作,在此不作赘述。
309、服务器基于该多个候选设备的负载情况,从该多个候选设备中确定目标设备,该目标设备的负载情况符合目标条件。
上述步骤309与上述步骤203类似,这里不做赘述。
图9是本申请实施例提供的两台候选设备各自的CPU使用率的动态变化图,如图9所示,以负载情况包括CPU使用率为例进行说明,上半部分901示出了候选设备A的CPU使用率情况,候选设备A的CPU使用率的最新值为14,且在XXXX年XX月XX日的12:13:14时刻达到峰值40,下半部分902示出了候选设备B的CPU使用率情况,候选设备B的CPU使用率的最新值为27,且在XXXX年XX月XX日的12:14:14时刻达到峰值40,在这两台候选设备A和B中,服务器可以选择CPU使用率的最新值较小的候选设备A作为目标设备。
310、服务器将该运行数据的标识信息发送至该目标设备。
可选地,服务器仅将该标识信息进行压缩、加密后发送至目标设备,便于节约数据传输时的通信开销,可选地,服务器将该标识信息和该状态信息一起进行压缩、加密后发送至目标设备,便于通过状态信息来验证运行数据是否泄露,或验证状态信息是否被篡改,可选地,服务器将该标识信息、该状态信息以及该运行数据一起进行压缩、加密后发送至目标设备,此时相当于采取运行数据的分配式加载方式,即服务器主动向目标设备分配运行数据,本申请实施例对此不进行具体限定。
311、服务器响应于该运行数据的标识信息被发送至该目标设备,将该运行数据的状态信息设置为执行中状态,该执行中状态用于表征该运行数据正在被对应的目标设备加载并执行。
上述步骤311与上述步骤303类似,这里不做赘述。
基于上述步骤303所提供的示例,假设该状态信息以状态变量的形式实现,该状态变量对应于设置4种可能的取值,例如,00表示待发布状态,01表示待触发状态,10表示待执行状态,11表示执行中状态。
那么服务器响应于该运行数据的标识信息已被发送至目标设备,服务器在数据库中以该标识信息为索引,查询与该索引对应存储的索引内容,该索引内容即包括该运行数据和该状态变量,此时将状态变量从原本的10(待执行状态)修改为11(执行中状态),也即将状态变量赋值为11。
在上述过程中,由于状态信息能够实时地反映出该运行数据在云平台内执行时所处的流程,因此该状态信息还可以由服务器反馈至上传或发布该运行数据的终端(通常是开发者的终端),便于开发者对自身编写的运行数据进行实时状态追踪。
312、目标设备响应于接收到该标识信息,基于该标识信息,加载并执行该运行数据。
在一些实施例中,提供两种运行数据的加载方式,一种是分配式加载,也即服务器在上述步骤310中下发该标识信息的同时还下发了该运行数据,此时目标设备直接执行该运行数据即可,当然,如果还接收到了服务器下发的状态变量,可进行基于状态变量的验证过程,本申请实施例对是否需要执行验证过程不进行具体限定;一种是抢占式加载,也即目标设备在接收到标识信息之后,主动从(云端)数据库中以该标识信息为索引,查询该索引对应存储的索引内容,该索引内容至少包括该运行数据,目标设备从数据库中下载该运行数据,然后执行该运行数据,可选地,如果该索引内容中还包括状态变量,也进行基于状态变量的验证过程,本申请实施例对是否需要执行验证过程不进行具体限定。
以下,示意性地介绍一种基于状态变量的验证过程:目标设备将数据库中读取的(或者服务器主动下发的)该状态变量与本地存储的状态变量进行对比,如果两者一致则验证通过,正常执行该运行数据,如果两者不一致则验证失败,向技术人员上报这一异常情况。
在上述步骤310-312中,示出了服务器通过该目标设备执行该运行数据的一种可能实施方式,也即通过消息队列存储目标时刻下需要定时执行的各个数据的标识信息,在到达目标时刻时,将消息队列中存储的各个标识信息分发至各自的目标设备上,各个目标设备加载并执行各自对应的运行数据,从而能够改善目标时刻下突然唤醒大量定时任务(即执行过多的运行数据)所导致的惊群效应。
图10是本申请实施例提供的一种目标设备加载运行数据的原理性示意图,如1000所示,假设在目标时刻下Kafka消息队列中记录了N(N≥1)个标识信息(Identification,ID),服务器实时监控各个候选设备的负载情况,并实时拉取Kafka消息队列中的待执行的运行数据的ID。基于各个候选设备的负载情况,向Kafka消息队列中存储的各个运行数据分配对应的目标设备(即执行单元工作机Worker),可选地,在分配式加载中,服务器主动向目标设备分发运行数据,在抢占式加载中,服务器仅向目标设备分发运行数据的ID,由目标设备主动从(云端)数据库中以该ID为索引,查询该索引对应存储的索引内容,该索引内容包括该运行数据和该状态变量,接着目标设备将数据库中读取的该状态变量与本地存储的状态变量进行对比,如果两者一致则验证通过,下载该运行数据并执行该运行数据,如果两者不一致则验证失败,向技术人员上报这一异常情况。示意性地,图10示出的是抢占式加载方式,每个目标设备通过接收到的ID,从云端数据库中拉取镜像任务,云端数据库向目标设备返回对应的运行数据(即开发者在IDE在线平台中编写的运行数据)。
313、目标设备响应于对该运行数据执行完毕,向服务器发送该运行数据的运行结果和运行日志。
在一些实施例中,由于在执行该运行数据时,同时会生成该运行数据的运行日志,该运行日志用于记录该运行数据在执行过程所发生的各项操作,并在执行完毕时,还会生成该执行数据的执行结果,比如,该执行结果包括执行成功或执行失败,执行失败的原因可能是多种多样的,比如该运行数据自身代码存在BUG,或者目标设备宕机,或者目标设备在目标时刻下网络崩溃等。目标设备在对该运行数据执行完毕时,可以将该标识信息、运行日志和运行结果进行压缩、加密后发送至服务器。
314、服务器从该目标设备中获取该运行数据的运行结果和运行日志。
可选地,服务器接收目标设备发送的该标识信息、运行结果和运行日志,对于运行结果为运行成功的运行数据,服务器可以向与该运行数据关联的终端发送确认信息,该确认信息用于指示该运行数据运行完毕(且未报错),对于运行结果为运行失败的运行数据,服务器可以执行下述步骤315。
315、服务器响应于该运行结果为运行失败,向与该运行数据关联的终端发送告警信息,该告警信息携带该运行结果和该运行日志。
可选地,服务器响应于该运行数据为运行失败,可以向与该运行数据关联的终端(可以是发布该运行数据的终端,也可以用于调试BUG的终端等)发送告警信息,并且,该告警信息至少携带该运行结果和运行日志,可选地,该告警信息中还可以携带原始的运行数据及运行数据的标识信息,本申请实施例对此不进行具体限定。
在上述过程中,服务器通过及时收集运行数据的运行日志和运行结果,能够及时追踪到运行失败的运行数据,并上报至终端由用户及时排查故障原因,提高了对故障排查的时效性,且方便了用户根据运行日志快速定位到故障原因。
在一些实施例中,由于运行数据可以划分为一次性执行的代码数据以及周期性执行(即循环执行)的代码数据,对于一次性执行的代码数据,服务器可以结束流程进入定时器的下一个Tick单元,对于循环执行的代码数据,服务器可以响应于该运行数据为循环执行的代码数据,将该运行数据的标识信息添加至该消息队列的队尾,并重复执行上述步骤307-315类似的操作,这里不做赘述。
在上述过程中,通过对循环执行的代码数据,通过直接将该标识信息添加至本次消息队列的队伍,能够避免重复的计算该标识信息所应添加至的Tick单元的消息队列,从而节约了服务器的计算资源,在一些实施例中,也可以将循环执行的代码数据,拆分为多个相同的定时任务(即复制多份运行数据并依次设置目标时刻),这样也能保证周期性的定时任务的顺利执行。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,通过在获取到运行数据之后,在支持该运行数据的运行环境的候选设备中,选择负载情况符合目标条件的目标设备,避免了由于运行环境不适配所可能造成的冲突,且通过负载情况能够合理分配到更趋于负载均衡的目标设备,以通过目标设备在目标时刻执行该运行数据,由于对每个运行数据都能够选择更趋于负载均衡的目标设备,因此能够大大提高资源利用率。
图11是本申请实施例提供的一种运行数据的处理方法的原理性示意图,如图11所示,以运行数据为脚本代码为例说明,在支持云函数服务的云平台1100中包括脚本管理端1101、时间轮控制模块1102以及监控管理平台1103。
脚本管理端1101用于接收各个终端上传的脚本代码,并为各个脚本代码分配脚本ID(Identification,标识信息),将脚本代码的状态信息初始化为待发布状态。脚本管理端1101向时间轮控制模块1102发布待处理的脚本代码,可选地,在发布时,脚本管理端1101可以将各个脚本代码打包到docker(一个开源的应用容器引擎),并部署在微服务平台上。
时间轮控制模块1102接收到脚本管理端1101发布的脚本代码后,将脚本代码的脚本ID绑定至对应时间粒度的定时器上,将脚本代码的状态信息更新为待触发状态;在定时器指示到达目标时刻时,将脚本代码的脚本ID写入到目标时刻所对应的消息队列中,将脚本代码的状态信息更新为待执行状态;在基于运行环境及负载情况,为脚本代码分配好目标设备之后,将脚本代码的脚本ID发送至目标设备,由目标设备从脚本管理端1101的数据库中,基于脚本ID拉取完整的脚本代码,执行该脚本代码,并将脚本代码的状态信息更新为执行中状态。对于一次性执行的脚本代码,此时流程结束,对于循环执行的脚本代码,会再将脚本代码的脚本ID添加至定时器中本次消息队列的队尾。
监控管理平台1103也称为日志平台,脚本管理端1101和时间轮控制模块1102会实时向监控管理平台1103同步各个脚本代码的状态信息,因此监控管理平台1103用于检查并查看各个脚本代码的状态信息,可选地,还可以检查并查看各个脚本代码的执行耗时,进一步地,在各个目标设备对各个脚本代码执行完毕后,各个目标设备均向监控管理平台1103上报脚本代码的运行结果和运行日志的日志ID,如果运行结果为运行成功,监控管理平台1103可忽略该运行结果或者向与脚本代码关联的终端发送确认信息,如果运行结果为运行失败,监控管理平台可以根据该日志ID从目标设备中拉取完整的运行日志,便于对脚本代码的故障定位。
以下,示出了一种目标设备向监控管理平台1103上报的运行结果及日志ID的示意性代码,可选地,目标设备还向监控管理平台1103上报了脚本代码的执行耗时:
图12是本申请实施例提供的一种监控管理统计界面的界面示意图,如1200所示,监控管理平台1103收集各个脚本代码的运行结果及日志ID之后,还可以统计在各个时间段内平台共计的运行结果为运行失败的脚本代码数量,便于实时监控和告警,通过日志ID和执行耗时,还方便了回溯脚本的执行过程和耗时,便于定位和排查故障情况。在图12的下半部分,还示出了指定时间段内运行结果为运行失败的脚本代码数量为186个,并列出了各个脚本代码的日志ID、脚本代码所操作的终端的账号ID、错误域、错误码和日志存储位置。
在本申请实施例中,通过支持云函数服务的云平台,能够提供一种基于分布式函数计算时间环算法的定时脚本的高效运行方案,相较于相关技术中存在的单机部署不灵活、运行环境依赖复杂、无法均衡负载等弊端,用户使用云平台能够快速开发脚本,还支持复用其他共建云服务的接口,保证了脚本执行的高可用性、高扩展性,且具有较高的性能,能够均衡集群负载,支持多粒度的定时任务,且可追踪脚本执行的完整过程。
图13是本申请实施例提供的一种运行数据的处理装置的结构示意图,请参考图13,该装置包括:
获取模块1301,用于获取待处理的运行数据,该运行数据为在目标时刻运行的代码数据;
第一确定模块1302,用于响应于到达该目标时刻,基于该运行数据的运行环境,确定支持该运行环境的多个候选设备;
第二确定模块1303,用于基于该多个候选设备的负载情况,从该多个候选设备中确定目标设备,该目标设备的负载情况符合目标条件;
执行模块1304,用于通过该目标设备执行该运行数据。
本申请实施例提供的装置,通过在获取到运行数据之后,在支持该运行数据的运行环境的候选设备中,选择负载情况符合目标条件的目标设备,避免了由于运行环境不适配所可能造成的冲突,且通过负载情况能够合理分配到更趋于负载均衡的目标设备,以通过目标设备在目标时刻执行该运行数据,由于对每个运行数据都能够选择更趋于负载均衡的目标设备,因此能够大大提高资源利用率。
在一种可能实施方式中,该执行模块1304用于:
响应于到达该目标时刻,将该目标时刻下定时执行的多个数据的标识信息添加至消息队列中,该多个数据包括该运行数据;
对该消息队列中的该运行数据,将该运行数据的标识信息发送至该目标设备,由该目标设备基于该标识信息,加载并执行该运行数据。
在一种可能实施方式中,基于图13的装置组成,该装置还包括:
第一设置模块,用于响应于该运行数据的标识信息被添加至该消息队列,将该运行数据的状态信息设置为待执行状态,该待执行状态用于表征已到达该目标时刻但该运行数据尚未下发至对应的目标设备。
在一种可能实施方式中,基于图13的装置组成,该装置还包括:
第二设置模块,用于响应于该运行数据的标识信息被发送至该目标设备,将该运行数据的状态信息设置为执行中状态,该执行中状态用于表征该运行数据正在被对应的目标设备加载并执行。
在一种可能实施方式中,基于图13的装置组成,该装置还包括:
添加模块,用于响应于该运行数据为循环执行的代码数据,将该运行数据的标识信息添加至该消息队列的队尾。
在一种可能实施方式中,该负载情况包括中央处理器CPU使用率、磁盘输入/输出I/O利用率或者内存占用率中的至少一项,该第二确定模块1303用于:
从该多个候选设备中,确定CPU使用率最低的候选设备为该目标设备;或,
从该多个候选设备中,确定磁盘I/O利用率最低的候选设备为该目标设备;或,
从该多个候选设备中,确定内存占用率最低的候选设备为该目标设备。
在一种可能实施方式中,该第二确定模块1303用于:
基于与该运行数据关联的地理位置,从该多个候选设备中确定至少一个第一设备,该第一设备支持向该地理位置内的终端提供服务;
从该至少一个第一设备中,确定负载情况符合该目标条件的该目标设备。
在一种可能实施方式中,基于图13的装置组成,该装置还包括:
关联模块,用于基于该目标时刻的时间粒度,将该运行数据与该时间粒度对应的定时器相关联,该定时器用于确定是否到达该目标时刻。
在一种可能实施方式中,该时间粒度包括秒钟、分钟或者小时中的至少一项,该关联模块用于:
响应于该目标时刻的时间粒度为秒钟,将该运行数据与秒钟定时器相关联,该秒钟定时器的最小计时单位为1秒钟;或,
响应于该目标时刻的时间粒度为分钟,将该运行数据与分钟定时器相关联,该分钟定时器的最小计时单位为1分钟;或,
响应于该目标时刻的时间粒度为小时,将该运行数据与小时定时器相关联,该小时定时器的最小计时单位为1小时。
在一种可能实施方式中,该关联模块用于:
为该运行数据分配标识信息,将该标识信息与该时间粒度对应的该定时器绑定。
在一种可能实施方式中,基于图13的装置组成,该装置还包括:
第三设置模块,用于响应于该运行数据已与该定时器关联,将该运行数据的状态信息设置为待触发状态,该待触发状态用于表征该运行数据已绑定至对应的定时器但尚未到达该目标时刻。
在一种可能实施方式中,基于图13的装置组成,该装置还包括:
第四设置模块,用于响应于获取到该运行数据,将该运行数据的状态信息设置为待发布状态,该待发布状态用于表征该运行数据已获取但未绑定至对应的定时器。
在一种可能实施方式中,该获取模块1301,还用于从该目标设备中获取该运行数据的运行结果和运行日志;
基于图13的装置组成,该装置还包括:发送模块,用于响应于该运行结果为运行失败,向与该运行数据关联的终端发送告警信息,该告警信息携带该运行结果和该运行日志。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的运行数据的处理装置在处理运行数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,能够根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的运行数据的处理装置与运行数据的处理方法实施例属于同一构思,其具体实现过程详见运行数据的处理方法实施例,这里不再赘述。
图14是本申请实施例提供的一种计算机设备的结构示意图。如图14所示,以计算机设备为终端1400为例进行说明,该终端1400可以是服务器集群中的脚本管理端,也即服务器集群中用于接收运行数据的设备,也可以是服务器集群中的监控管理平台,也即服务器集群中用于收集各个运行数据的运行结果及运行日志的设备,还可以是服务器集群中用于执行运行数据的候选设备或目标设备,本申请实施例对此不进行具体限定。
可选地,该终端1400的设备类型包括:智能手机、平板电脑、MP3播放器(MovingPicture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1400还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1400包括有:处理器1401和存储器1402。
可选地,处理器1401包括一个或多个处理核心,比如4核心处理器、8核心处理器等。可选地,处理器1401采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable LogicArray,可编程逻辑阵列)中的至少一种硬件形式来实现。在一些实施例中,处理器1401包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1401集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1401还包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
在一些实施例中,存储器1402包括一个或多个计算机可读存储介质,可选地,该计算机可读存储介质是非暂态的。可选地,存储器1402还包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1402中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被处理器1401所执行以实现本申请中各个实施例提供的运行数据的处理方法。
在一些实施例中,终端1400还可选包括有:***设备接口1403和至少一个***设备。处理器1401、存储器1402和***设备接口1403之间能够通过总线或信号线相连。各个***设备能够通过总线、信号线或电路板与***设备接口1403相连。具体地,***设备包括:射频电路1404、显示屏1405、摄像头组件1406、音频电路1407、定位组件1408和电源1409中的至少一种。
***设备接口1403可被用于将I/O(Input/Output,输入/输出)相关的至少一个***设备连接到处理器1401和存储器1402。在一些实施例中,处理器1401、存储器1402和***设备接口1403被集成在同一芯片或电路板上;在一些其他实施例中,处理器1401、存储器1402和***设备接口1403中的任意一个或两个在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1404用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1404通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1404将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1404包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。可选地,射频电路1404通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1404还包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1405用于显示UI(User Interface,用户界面)。可选地,该UI包括图形、文本、图标、视频及其它们的任意组合。当显示屏1405是触摸显示屏时,显示屏1405还具有采集在显示屏1405的表面或表面上方的触摸信号的能力。该触摸信号能够作为控制信号输入至处理器1401进行处理。可选地,显示屏1405还用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1405为一个,设置终端1400的前面板;在另一些实施例中,显示屏1405为至少两个,分别设置在终端1400的不同表面或呈折叠设计;在再一些实施例中,显示屏1405是柔性显示屏,设置在终端1400的弯曲表面上或折叠面上。甚至,可选地,显示屏1405设置成非矩形的不规则图形,也即异形屏。可选地,显示屏1405采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1406用于采集图像或视频。可选地,摄像头组件1406包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1406还包括闪光灯。可选地,闪光灯是单色温闪光灯,或者是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,用于不同色温下的光线补偿。
在一些实施例中,音频电路1407包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1401进行处理,或者输入至射频电路1404以实现语音通信。出于立体声采集或降噪的目的,麦克风为多个,分别设置在终端1400的不同部位。可选地,麦克风是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1401或射频电路1404的电信号转换为声波。可选地,扬声器是传统的薄膜扬声器,或者是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅能够将电信号转换为人类可听见的声波,也能够将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1407还包括耳机插孔。
定位组件1408用于定位终端1400的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。可选地,定位组件1408是基于美国的GPS(GlobalPositioning System,全球定位***)、中国的北斗***、俄罗斯的格雷纳斯***或欧盟的伽利略***的定位组件。
电源1409用于为终端1400中的各个组件进行供电。可选地,电源1409是交流电、直流电、一次性电池或可充电电池。当电源1409包括可充电电池时,该可充电电池支持有线充电或无线充电。该可充电电池还用于支持快充技术。
在一些实施例中,终端1400还包括有一个或多个传感器1410。该一个或多个传感器1410包括但不限于:加速度传感器1411、陀螺仪传感器1412、压力传感器1413、指纹传感器1414、光学传感器1415以及接近传感器1416。
在一些实施例中,加速度传感器1411检测以终端1400建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1411用于检测重力加速度在三个坐标轴上的分量。可选地,处理器1401根据加速度传感器1411采集的重力加速度信号,控制显示屏1405以横向视图或纵向视图进行用户界面的显示。加速度传感器1411还用于游戏或者用户的运动数据的采集。
在一些实施例中,陀螺仪传感器1412检测终端1400的机体方向及转动角度,陀螺仪传感器1412与加速度传感器1411协同采集用户对终端1400的3D动作。处理器1401根据陀螺仪传感器1412采集的数据,实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
可选地,压力传感器1413设置在终端1400的侧边框和/或显示屏1405的下层。当压力传感器1413设置在终端1400的侧边框时,能够检测用户对终端1400的握持信号,由处理器1401根据压力传感器1413采集的握持信号进行左右手识别或快捷操作。当压力传感器1413设置在显示屏1405的下层时,由处理器1401根据用户对显示屏1405的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1414用于采集用户的指纹,由处理器1401根据指纹传感器1414采集到的指纹识别用户的身份,或者,由指纹传感器1414根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1401授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。可选地,指纹传感器1414被设置终端1400的正面、背面或侧面。当终端1400上设置有物理按键或厂商Logo时,指纹传感器1414能够与物理按键或厂商Logo集成在一起。
光学传感器1415用于采集环境光强度。在一个实施例中,处理器1401根据光学传感器1415采集的环境光强度,控制显示屏1405的显示亮度。具体地,当环境光强度较高时,调高显示屏1405的显示亮度;当环境光强度较低时,调低显示屏1405的显示亮度。在另一个实施例中,处理器1401还根据光学传感器1415采集的环境光强度,动态调整摄像头组件1406的拍摄参数。
接近传感器1416,也称距离传感器,通常设置在终端1400的前面板。接近传感器1416用于采集用户与终端1400的正面之间的距离。在一个实施例中,当接近传感器1416检测到用户与终端1400的正面之间的距离逐渐变小时,由处理器1401控制显示屏1405从亮屏状态切换为息屏状态;当接近传感器1416检测到用户与终端1400的正面之间的距离逐渐变大时,由处理器1401控制显示屏1405从息屏状态切换为亮屏状态。
本领域技术人员能够理解,图14中示出的结构并不构成对终端1400的限定,能够包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图15是本申请实施例提供的一种计算机设备的结构示意图,该计算机设备1500可因配置或性能不同而产生比较大的差异,该计算机设备1500包括一个或一个以上处理器(Central Processing Units,CPU)1501和一个或一个以上的存储器1502,其中,该存储器1502中存储有至少一条计算机程序,该至少一条计算机程序由该一个或一个以上处理器1501加载并执行以实现上述各个实施例提供的运行数据的处理方法。可选地,该计算机设备1500还具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备1500还包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条计算机程序的存储器,上述至少一条计算机程序可由终端中的处理器执行以完成上述各个实施例中的运行数据的处理方法。例如,该计算机可读存储介质包括ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,包括一条或多条程序代码,该一条或多条程序代码存储在计算机可读存储介质中。计算机设备的一个或多个处理器能够从计算机可读存储介质中读取该一条或多条程序代码,该一个或多个处理器执行该一条或多条程序代码,使得计算机设备能够执行以完成上述实施例中的运行数据的处理方法。
本领域普通技术人员能够理解实现上述实施例的全部或部分步骤能够通过硬件来完成,也能够通过程序来指令相关的硬件完成,可选地,该程序存储于一种计算机可读存储介质中,可选地,上述提到的存储介质是只读存储器、磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种运行数据的处理方法,其特征在于,所述方法包括:
获取待处理的运行数据,所述运行数据为在目标时刻运行的代码数据;
响应于到达所述目标时刻,基于所述运行数据的运行环境,确定支持所述运行环境的多个候选设备;
基于所述多个候选设备的负载情况,从所述多个候选设备中确定目标设备,所述目标设备的负载情况符合目标条件;
通过所述目标设备执行所述运行数据。
2.根据权利要求1所述的方法,其特征在于,所述通过所述目标设备执行所述运行数据包括:
响应于到达所述目标时刻,将所述目标时刻下定时执行的多个数据的标识信息添加至消息队列中,所述多个数据包括所述运行数据;
对所述消息队列中的所述运行数据,将所述运行数据的标识信息发送至所述目标设备,由所述目标设备基于所述标识信息,加载并执行所述运行数据。
3.根据权利要求2所述的方法,其特征在于,所述将所述目标时刻下定时执行的多个数据的标识信息添加至消息队列中之后,所述方法还包括:
响应于所述运行数据的标识信息被添加至所述消息队列,将所述运行数据的状态信息设置为待执行状态,所述待执行状态用于表征已到达所述目标时刻但所述运行数据尚未下发至对应的目标设备。
4.根据权利要求2所述的方法,其特征在于,所述将所述运行数据的标识信息发送至所述目标设备之后,所述方法还包括:
响应于所述运行数据的标识信息被发送至所述目标设备,将所述运行数据的状态信息设置为执行中状态,所述执行中状态用于表征所述运行数据正在被对应的目标设备加载并执行。
5.根据权利要求2至4中任一项所述的方法,其特征在于,所述通过所述目标设备执行所述运行数据之后,所述方法还包括:
响应于所述运行数据为循环执行的代码数据,将所述运行数据的标识信息添加至所述消息队列的队尾。
6.根据权利要求1所述的方法,其特征在于,所述负载情况包括中央处理器CPU使用率、磁盘输入/输出I/O利用率或者内存占用率中的至少一项,所述基于所述多个候选设备的负载情况,从所述多个候选设备中确定目标设备包括:
从所述多个候选设备中,确定CPU使用率最低的候选设备为所述目标设备;或,
从所述多个候选设备中,确定磁盘I/O利用率最低的候选设备为所述目标设备;或,
从所述多个候选设备中,确定内存占用率最低的候选设备为所述目标设备。
7.根据权利要求1所述的方法,其特征在于,所述响应于到达所述目标时刻,基于所述运行数据的运行环境,确定支持所述运行环境的多个候选设备之前,所述方法还包括:
基于所述目标时刻的时间粒度,将所述运行数据与所述时间粒度对应的定时器相关联,所述定时器用于确定是否到达所述目标时刻。
8.根据权利要求7所述的方法,其特征在于,所述时间粒度包括秒钟、分钟或者小时中的至少一项,所述基于所述目标时刻的时间粒度,将所述运行数据与所述时间粒度对应的定时器相关联包括:
响应于所述目标时刻的时间粒度为秒钟,将所述运行数据与秒钟定时器相关联,所述秒钟定时器的最小计时单位为1秒钟;或,
响应于所述目标时刻的时间粒度为分钟,将所述运行数据与分钟定时器相关联,所述分钟定时器的最小计时单位为1分钟;或,
响应于所述目标时刻的时间粒度为小时,将所述运行数据与小时定时器相关联,所述小时定时器的最小计时单位为1小时。
9.根据权利要求7或8所述的方法,其特征在于,所述将所述运行数据与所述时间粒度对应的定时器相关联包括:
为所述运行数据分配标识信息,将所述标识信息与所述时间粒度对应的所述定时器绑定。
10.根据权利要求7所述的方法,其特征在于,所述基于所述目标时刻的时间粒度,将所述运行数据与所述时间粒度对应的定时器相关联之后,所述方法还包括:
响应于所述运行数据已与所述定时器关联,将所述运行数据的状态信息设置为待触发状态,所述待触发状态用于表征所述运行数据已绑定至对应的定时器但尚未到达所述目标时刻。
11.根据权利要求1所述的方法,其特征在于,所述获取待处理的运行数据之后,所述方法还包括:
响应于获取到所述运行数据,将所述运行数据的状态信息设置为待发布状态,所述待发布状态用于表征所述运行数据已获取但未绑定至对应的定时器。
12.根据权利要求1所述的方法,其特征在于,所述通过所述目标设备执行所述运行数据之后,所述方法还包括:
从所述目标设备中获取所述运行数据的运行结果和运行日志;
响应于所述运行结果为运行失败,向与所述运行数据关联的终端发送告警信息,所述告警信息携带所述运行结果和所述运行日志。
13.一种运行数据的处理装置,其特征在于,所述装置包括:
获取模块,用于获取待处理的运行数据,所述运行数据为在目标时刻运行的代码数据;
第一确定模块,用于响应于到达所述目标时刻,基于所述运行数据的运行环境,确定支持所述运行环境的多个候选设备;
第二确定模块,用于基于所述多个候选设备的负载情况,从所述多个候选设备中确定目标设备,所述目标设备的负载情况符合目标条件;
执行模块,用于通过所述目标设备执行所述运行数据。
14.一种计算机设备,其特征在于,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求12任一项所述的运行数据的处理方法。
15.一种存储介质,其特征在于,所述存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现如权利要求1至权利要求12任一项所述的运行数据的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110518576.7A CN113110939A (zh) | 2021-05-12 | 2021-05-12 | 运行数据的处理方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110518576.7A CN113110939A (zh) | 2021-05-12 | 2021-05-12 | 运行数据的处理方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113110939A true CN113110939A (zh) | 2021-07-13 |
Family
ID=76722114
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110518576.7A Pending CN113110939A (zh) | 2021-05-12 | 2021-05-12 | 运行数据的处理方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113110939A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792192A (zh) * | 2021-08-09 | 2021-12-14 | 万翼科技有限公司 | 开源业务函数支撑***及业务函数的控制方法 |
CN114996117A (zh) * | 2022-03-28 | 2022-09-02 | 湖南智擎科技有限公司 | 面向SaaS模式的客户端GPU应用评测***及方法 |
CN115048087A (zh) * | 2022-08-15 | 2022-09-13 | 江苏博云科技股份有限公司 | Kubernetes环境下实现在线IDE工具的方法、设备及存储介质 |
CN115150467A (zh) * | 2022-09-01 | 2022-10-04 | 武汉绿色网络信息服务有限责任公司 | 数据访问方法、装置及电子设备 |
CN116048643A (zh) * | 2023-03-08 | 2023-05-02 | 苏州浪潮智能科技有限公司 | 设备运行方法、***、装置、存储介质及电子设备 |
-
2021
- 2021-05-12 CN CN202110518576.7A patent/CN113110939A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792192A (zh) * | 2021-08-09 | 2021-12-14 | 万翼科技有限公司 | 开源业务函数支撑***及业务函数的控制方法 |
CN113792192B (zh) * | 2021-08-09 | 2022-12-30 | 万翼科技有限公司 | 开源业务函数支撑***及业务函数的控制方法 |
CN114996117A (zh) * | 2022-03-28 | 2022-09-02 | 湖南智擎科技有限公司 | 面向SaaS模式的客户端GPU应用评测***及方法 |
CN114996117B (zh) * | 2022-03-28 | 2024-02-06 | 湖南智擎科技有限公司 | 面向SaaS模式的客户端GPU应用评测***及方法 |
CN115048087A (zh) * | 2022-08-15 | 2022-09-13 | 江苏博云科技股份有限公司 | Kubernetes环境下实现在线IDE工具的方法、设备及存储介质 |
CN115150467A (zh) * | 2022-09-01 | 2022-10-04 | 武汉绿色网络信息服务有限责任公司 | 数据访问方法、装置及电子设备 |
CN116048643A (zh) * | 2023-03-08 | 2023-05-02 | 苏州浪潮智能科技有限公司 | 设备运行方法、***、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11899687B2 (en) | Elastic in-memory database provisioning on database-as-a-service | |
CN113110939A (zh) | 运行数据的处理方法、装置、计算机设备及存储介质 | |
CN111930521A (zh) | 用于部署应用的方法、装置、电子设备及可读存储介质 | |
WO2018213311A1 (en) | Distributed versioning of applications using cloud-based systems | |
US11422973B2 (en) | Peer-to-peer delta image dispatch system | |
CN111064655B (zh) | 模板消息的推送方法、装置、设备及存储介质 | |
CN111090687B (zh) | 数据处理方法及装置、***、计算机可读存储介质 | |
CN111083042B (zh) | 模板消息的推送方法、装置、设备及存储介质 | |
US11310289B2 (en) | Systems and methods for generating a shortcut associated with a rich communication services messaging session | |
WO2021244267A1 (zh) | 应用程序的移植方法、装置、设备及介质 | |
CN113190362B (zh) | 服务调用方法、装置、计算机设备及存储介质 | |
CN111338910A (zh) | 日志数据处理、显示方法、装置、设备及存储介质 | |
CN114205365B (zh) | 应用界面迁移***、方法及相关设备 | |
CN112162843A (zh) | 工作流执行方法、装置、设备及存储介质 | |
CN113553178A (zh) | 任务处理方法、装置和电子设备 | |
CN111897525A (zh) | 大数据处理方法及*** | |
CN116541142A (zh) | 任务调度方法、装置、设备、存储介质及计算机程序产品 | |
CN113742366A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN113138771B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111125602B (zh) | 页面构建方法、装置、设备和存储介质 | |
CN114185749A (zh) | 监控方法与装置、电子设备 | |
CN110995842A (zh) | 业务数据下载方法、装置、设备及存储介质 | |
CN113986825B (zh) | 数据迁移的***、方法、装置、电子设备及可读存储介质 | |
CN112148499A (zh) | 数据上报方法、装置、计算机设备及介质 | |
CN112995587B (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 |