CN116360848A - 一种Serverless架构下的代码执行回放装置 - Google Patents
一种Serverless架构下的代码执行回放装置 Download PDFInfo
- Publication number
- CN116360848A CN116360848A CN202310346466.6A CN202310346466A CN116360848A CN 116360848 A CN116360848 A CN 116360848A CN 202310346466 A CN202310346466 A CN 202310346466A CN 116360848 A CN116360848 A CN 116360848A
- Authority
- CN
- China
- Prior art keywords
- execution
- code
- information
- code execution
- playback
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 claims abstract description 30
- 230000000007 visual effect Effects 0.000 claims abstract description 4
- 230000002688 persistence Effects 0.000 claims description 4
- 230000002045 lasting effect Effects 0.000 claims description 3
- 238000003860 storage Methods 0.000 claims description 2
- 230000005012 migration Effects 0.000 claims 2
- 238000013508 migration Methods 0.000 claims 2
- 238000011161 development Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- 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/42—Syntactic analysis
- G06F8/427—Parsing
-
- 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)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及云计算相关技术领域,且公开了一种Serverless架构下的代码执行回放装置,包括代码执行采集模块与执行回放模块,代码执行采集模块可以采集代码执行过程中的执行流程,堆栈信息以及执行结果,执行回放模块可以将采集结果进行解析与渲染,并通过可视化形式进行展示,允许使用者按程序执行的步骤回放代码执行过程,对业务逻辑执行过程的信息进行采集,在实例已经被释放的条件下,或环境已经不存在的条件下,进行业务逻辑执行流程的回放,帮助开发者了解程序执行每一步骤的具体情况,并快速定位问题,现场复现,进行问题溯源,解决了开发者无法在Serverless架构下进行错误排查、现场复现、问题溯源的问题。
Description
技术领域
本发明涉及云计算相关技术领域,更具体地涉及一种Serverless架构下的代码执行回放装置。
背景技术
云计算的飞速发展,涌现出了诸多新思想,新技术,新架构,无论是IaaS、PaaS、Serverless,也无论是虚拟机、容器、微服务,其核心的驱动力都是降低成本、提升效能,源于安全生产,安全运营,源于生产力驱动。
云计算的发展在近十余年中发生了翻天覆地的变化,从虚拟空间到云主机,从自建数据库等业务到云数据库等服务,云计算的发展是迅速Serverless架构也被诸多人寄予厚望,从2012年,Serverless概念被正式提出之后,Serverless随着时间的不断推进,各种技术部的不断进步,正在逐渐地朝着更完整,更清晰的方向发展,随着5G时代的到来,Serverless将会在更多领域发挥至关重要的作用;
即使Serverless架构在如今发展迅速,被更多人认为是真正意义的云计算,但是Serverless仍然有着自己的劣势,在如今的发展阶段,Serverless架构仍然面临着诸多挑战。在诸多的挑战中,饱受开发者诟病的是“出现错误难以感知也难以排查”,这个挑战不仅仅提高了用户使用Serverless架构的使用成本,也大大影响了Serverless架构下的应用对外服务时的稳定性,在2020年10月中国信息通信研究院发布的国内首个《云原生用户调查报告》中,有超50%的用户关注Serverless架构的使用成本、排障工具的完善程度、线上业务稳定性等相关问题,这也充分说明了Serverless架构下的应用排障的复杂性和重要性;
由于Serverless架构主张的是把更专业的事情交给更专业的人,开发者不需要关注服务器等底层资源,只需要关心自身的业务逻辑即可,与此同时,Serverless架构基于天然分布式架构以及自身独特的弹性伸缩能力,使得开发者经常会遇到业务逻辑在本地测试通过,但是部署到线上会偶现一些错误,而写错误被发现时,执行的相关实例已经被释放,问题难以定位,问题难以溯源。
综上所述,现有的Serverless架构下,存在以下问题:Serverless架构特点是不需要开发者关注执行环境,但是生产状态下,业务逻辑往往在新的执行环境容易出现问题,因为Serverless架构是请求级别隔离,不同实例处理不同请求,处理之后就会被释放,所以在业务逻辑出现问题之后,对应的执行环境会被释放进而导致问题无法进行定位,而出现问题现场也将无法复现,对应的优化,错误排查,稳定运行,安全生产等,带来极大挑战和影响。
发明内容
为了克服现有技术的上述缺陷,本发明的实施条例提供一种Serverless架构下的代码执行回放装置,以解决背景技术中所提出的技术问题。
为实现上述目的,本发明提供如下技术方案:一种Serverless架构下的代码执行回放装置,包括代码执行采集模块与执行回放模块,所述代码执行采集模块将会在Serverless架构的计算平台中进行部署,并在用户进行相关业务逻辑执行时进行对应代码执行信息采集,将采集到的信息进行持久化存储;所述执行回放模块将会根据代码执行采集装置采集到的数据结果,进行对应的解析与渲染,并进行相对应的可视化。
在一个优选的实施方式中,所述Serverless架构的计算平台包括事件驱动的函数计算以及应用Serverless化的Serverless应用托管,这两种计算平台均是Serverless架构的计算平台,均无需开发者关注底层硬件资源以及运行环境。
在一个优选的实施方式中,所述代码执行回放装置包括代码执行采集模块与执行回放模块在内的两个核心模块,除此之外还需要基于Serverless计算平台,并搭配日志服务或其他可持久化日志的服务,进行整体能力实现。
在一个优选的实施方式中,所述的代码执行采集模块是基于Serverless计算平台运行的,在用户进行业务逻辑部署和运行之前,即要提前部署到计算平台中,并通过该模块启动业务逻辑执行。
在一个优选的实施方式中,所述的代码执行采集模块采集的内容按照代码行为步骤单位,包括代码执行过程中的上下文信息;堆栈信息,包括不限于产生的变量内容、引用关系等;标准输入、标准输出、标准错误等信息。
在一个优选的实施方式中,所述的代码执行采集模块采集内容之后,需要进行结构化存储,其所需采集的数据包括:
code:代码,用户项目的代码内容;
trace:代码执行回放数据;
index:时序信息/步骤信息;
line:代码行数;
event:事件;
func_name:函数名/方法名;
globals:全局变量;
ordered_globals:全局变量序列信息,当前的全局变量排序情况;stack_to_render:堆栈信息引用关系,堆栈信息表达情况;
heap:对象信息组成,引用关系;
stdin:标准输入;
stdout:标准输出;
stderr:标准错误。
在一个优选的实施方式中,所述的执行回放模块需要从已持久化的日志服务中获取相对应的日志信息,并进行解析和组合形成完整的业务逻辑调用链路,并通过UI进行可视化展示。
在一个优选的实施方式中,所述的代码执行采集模块与执行回放模块,需要通过Serverless架构下,业务执行过程中所产生的RequestId信息进行关联。
在一个优选的实施方式中,所述的执行回放模块对组装完成的日志信息进行解析时,以代码行数作为最小步骤,并以此进行展示。
在一个优选的实施方式中,所述的代码执行回放模块通过UI对业务逻辑回放,回放的过程包括源代码,当前执行代码行,即将执行代码行,当前状态下的变量信息以及引用关系,标准输出、标准输入、标准错误等信息。
可选的,所述的代码执行采集模块采集数据之后,将数据通过网络传输到日志服务,再由执行回放模块根据RequestId信息关联相对应的日志信息,可以将持久化日志服务与执行回放模块进行结合,并由执行回放模块对外暴露RESTAPI,供代码执行采集模块上报和持久化采集结果。
可选的,所述持久化所需要的日志服务,可由数据库,对象存储等相关可持久化存储的服务进行替代。
本发明的技术效果和优点:
与现有技术相比,本发明专利提供一种Serverless架构下的代码执行回放装置,具备以下有益效果:本发明专利通过一种Serverless架构下的代码执行回放装置,可以在业务执行过程中,对业务逻辑执行过程的信息进行采集,包括不限于执行过程中的上下文信息;堆栈信息,包括不限于产生的变量内容、引用关系等;标准输入、标准输出、标准错误等信息等,并在实例已经被释放的条件下,或环境已经不存在的条件下,进行业务逻辑执行流程的回放,帮助开发者了解程序执行每一步骤的具体情况,并快速定位问题,现场复现,进行问题溯源。解决了Serverless应用开发者无法在Serverless架构下进行错误排查,现场复现,问题溯源的问题。
附图说明
图1为一种Serverless架构下的代码执行回放装置组成架构示意图。
图2为本发明的一种Serverless架构下的代码执行回放装置运行流程图。
图3为本发明的一种Serverless架构下的代码执行回放装置中的执行回放模块的效果图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,另外,在以下的实施方式中记载的各结构的形态只不过是例示,本发明所涉及的一种Serverless架构下的代码执行回放装置并不限定于在以下的实施方式中记载的各结构,在本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施方式都属于本发明保护的范围。
参照图1-图3,本发明提供了一种Serverless架构下的代码执行回放装置,将会与Serverless架构计算平台的运行时进行结合,通过对执行流程信息采集和分析,进行最终的代码执行回放。其中Serverless架构计算平台中,实例创建和启动的流程是:
Serverless架构为开发者提供无需关注硬件与软件执行环境的计算平台,开发者只需要根据自身的业务需求进行业务逻辑的开发,并将业务逻辑代码部署到Serverless架构即可,此时开发者所提交的业务逻辑代码只会被持久化,并不会为其准备执行环境,所以当用户的业务逻辑被触发时,由于Serverless架构具有弹性伸缩的能力,Serverless服务的供应商会根据用户服务的流量波动进行实例的增加或缩减,所以函数就可能涉及准备新的环境、下载函数代码、启动实例来应对不断产生的请求;Serverless架构计算平台会根据请求的并发数量进行实例的启动来应对对应的请求,这个过程将持续到有足够的代码实例来处理所有的工作负载为止。
本发明提供的一种Serverless架构下的代码执行回放装置包括代码执行采集模块与执行回放模块,具体与运行时进行结合,以及采集与回放的方法包括:
步骤S1、代码执行采集模块将会被预置到运行时中在Serverless架构准备启动实例时,在准备新的环境阶段,一种Serverless架构下的代码执行回放装置中的代码执行采集模块将会被预置到运行时中;
步骤S2、在实例启动时,将会基于被放置在运行时中的代码执行采集模块进行相对应的用户业务逻辑启动;
步骤S3、实例启动之后,将会根据请求等进行用户自定义的业务逻辑进行对应请求的处理;此时代码执行采集模块将会通过对底层标准输出等模块的重写,以及对堆栈信息的分析,以代码行数为单位,进行对应数据的采集,包括:
code:代码,用户项目的代码内容;
trace:代码执行回放数据;
index:时序信息/步骤信息;
line:代码行数;
event:事件;
func_name:函数名/方法名;
globals:全局变量;
ordered_globals:全局变量序列信息,当前的全局变量排序情况;stack_to_render:堆栈信息引用关系,堆栈信息表达情况;
heap:对象信息组成,引用关系;
stdin:标准输入;
stdout:标准输出;
stderr:标准错误;
步骤S4、代码执行采集模块会持续性的,以异步调用方式,将采集信息与Serverless架构计算平台所下发的RequestId等信息进行集合,并增加时间序列等信息,投递到对应的日志服务中,进行信息的持久化;
步骤S5、代码执行回放模块会针对日志服务中的信息进行聚合整理,按照RequestId纬度将Serverless架构的请求粒,度日志进行汇总;
步骤S6、代码执行回放模块可以根据指定的RequestId信息,对指定的请求进行回放;
步骤S7、代码执行回放模块可以通过UI进行请求回放,回放内容包括源代码,当前执行代码行,即将执行代码行,当前状态下的变量信息以及引用关系,标准输出、标准输入、标准错误等信息。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其他的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
最后:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种Serverless架构下的代码执行回放装置,包括代码执行采集模块与执行回放模块,其特征在于:
所述的代码执行采集模块可以采集代码执行过程中的执行流程,堆栈信息以及执行结果;
所述的执行回放模块可以将采集结果进行解析与渲染,并通过可视化形式进行展示的同时,允许使用者按程序执行的步骤回放代码执行过程。
2.根据权利要求1所述的一种Serverless架构下的代码执行回放装置,其特征在于:代码执行回放装置可以被安装在Serverless架构的计算平台,在开发者的业务逻辑执行过程中,进行相对应的信息采集,并通过指定的回放模块,进行执行流程的回放,计算平台包括事件驱动的函数计算,应用Serverless化的应用托管。
3.根据权利要求1所述的一种Serverless架构下的代码执行回放装置,其特征在于:代码执行采集模块对源代码执行流程与结果无影响的前提下,可以对执行流程与代码行进行对应,并对执行流程进行分析,按照代码行为步骤单位,统计代码执行过程中的堆栈信息,同时可以对执行日志与执行结果进行采集和统计,并持久化存储。
4.根据权利要求1所述的一种Serverless架构下的代码执行回放装置,其特征在于:所述执行回放模块对代码执行采集模块采集并持久化的结构数据进行分析和渲染,通过可视化的形式,以代码行为步骤单位,对采集的数据进行装载并回放代码执行步骤以及执行过程中的堆栈信息。
5.根据权利要求3所述的一种Serverless架构下的代码执行回放装置,其特征在于:按照代码行为步骤单位,统计代码执行过程中的堆栈信息,其实施方式为:根据开发者开发的业务代码,以代码行数作为步骤单位,对业务逻辑和代码执行流程进行划分,即本代码执行回放装置所规定的回放步骤,指的是代码行。
6.根据权利要求3所述的一种Serverless架构下的代码执行回放装置,其特征在于:对执行日志与执行结果进行采集和统计,并持久化存储的实施方式为:通过对标准输出方法的重写,实现标准输出与信息采集的同步,在对用户使用习惯不发生改变的同时,进一步实现时序数据异步上报与持久化的能力。
7.根据权利要求4所述的一种Serverless架构下的代码执行回放装置,其特征在于:对采集的数据进行装载并回放代码执行步骤以及执行过程中的堆栈信息,通过采集到的信息包括代码行数与以及当前行代码的堆栈信息,变量存储和迁移情况,以及时间信息/顺序信息;其统计信息包括:
index:时序信息/步骤信息;
line:代码行数;
event:事件;
func_name:函数名/方法名;
globals:全局变量;
ordered_globals:全局变量序列信息,当前的全局变量排序情况;stack_to_render:堆栈信息引用关系,堆栈信息表达情况;
heap:对象信息组成,引用关系;
stdin:标准输入;
stdout:标准输出;
stderr:标准错误。
8.根据权利要求5所述的一种Serverless架构下的代码执行回放装置,其特征在于:本代码执行回放装置所规定的回放步骤,可以通过该回放模块,回放业务执行流程的每个步骤的前后文问信息,执行过程中的框架与对象信息,以及变化/迁移流程,标准输出、标准错误等相关信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310346466.6A CN116360848A (zh) | 2023-04-03 | 2023-04-03 | 一种Serverless架构下的代码执行回放装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310346466.6A CN116360848A (zh) | 2023-04-03 | 2023-04-03 | 一种Serverless架构下的代码执行回放装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116360848A true CN116360848A (zh) | 2023-06-30 |
Family
ID=86920633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310346466.6A Withdrawn CN116360848A (zh) | 2023-04-03 | 2023-04-03 | 一种Serverless架构下的代码执行回放装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116360848A (zh) |
-
2023
- 2023-04-03 CN CN202310346466.6A patent/CN116360848A/zh not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110309071B (zh) | 测试代码的生成方法及模块、测试方法及系统 | |
US11042471B2 (en) | System and method for providing a test manager for use with a mainframe rehosting platform | |
US8572226B2 (en) | Enhancing network details using network monitoring scripts | |
US8464224B2 (en) | Integrated performance and load testing tool for application servers | |
US8898643B2 (en) | Application trace replay and simulation systems and methods | |
US8234633B2 (en) | Incident simulation support environment and business objects associated with the incident | |
Xue et al. | MPIWiz: Subgroup reproducible replay of MPI applications | |
EP0592080A2 (en) | Method and apparatus for interprocess communication in a multicomputer system | |
US10545857B2 (en) | Controlling executions of synchronous and/or non-synchronous operations with asynchronous messages | |
US20200133829A1 (en) | Methods and systems for performance testing | |
US7912695B2 (en) | Performance evaluation of J2EE applications | |
US20090313603A1 (en) | System And Method For Creating Virtual Callback Objects | |
CN110750458A (zh) | 大数据平台测试方法、装置、可读存储介质及电子设备 | |
Liu | Research of performance test technology for big data applications | |
Salihoglu et al. | Graft: A debugging tool for apache giraph | |
CN110825731A (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN109408361A (zh) | Monkey测试复原方法、装置、电子设备及计算机可读存储介质 | |
Sfaxi et al. | Babel: a generic benchmarking platform for Big Data architectures | |
CN102014163A (zh) | 一种基于事务驱动的云存储测试方法及系统 | |
CN112559525B (zh) | 数据检查系统、方法、装置和服务器 | |
CN112988588A (zh) | 客户端软件调试方法、装置、存储介质及电子设备 | |
CN116360848A (zh) | 一种Serverless架构下的代码执行回放装置 | |
CN115794621A (zh) | 代码覆盖测试方法、装置、设备及存储介质 | |
CN114676198A (zh) | 一种面向多模数据库的基准评测系统及其构建方法 | |
Rover et al. | Software tools for complex distributed systems: Toward integrated tool environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20230630 |
|
WW01 | Invention patent application withdrawn after publication |