CN117519828A - 基于消费场景的故障演练方法和装置 - Google Patents

基于消费场景的故障演练方法和装置 Download PDF

Info

Publication number
CN117519828A
CN117519828A CN202311541565.6A CN202311541565A CN117519828A CN 117519828 A CN117519828 A CN 117519828A CN 202311541565 A CN202311541565 A CN 202311541565A CN 117519828 A CN117519828 A CN 117519828A
Authority
CN
China
Prior art keywords
fault
message
target
configuration data
information
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
Application number
CN202311541565.6A
Other languages
English (en)
Inventor
黄焱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202311541565.6A priority Critical patent/CN117519828A/zh
Publication of CN117519828A publication Critical patent/CN117519828A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Finance (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供了一种基于消费场景的故障演练方法和装置,包括:获取用户设置的故障配置数据,其中,所述故障配置数据包含消息需要满足的预设条件和靶点位置;根据所述故障配置数据在第一线程中挂载故障消息处理者;其中,所述第一线程用于从主题中消费消息;通过所述故障消息处理者,从所述第一线程所消费的消息中确定满足所述预设条件的目标消息,并在所述目标消息中注入故障信息;根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障。通过基于故障配置数据配置参与演练的消息需要满足的预设条件和靶点位置,使得用户可以通过故障配置数据来圈定特定的消息和靶点位置,以实现消费场景中安全地在线上环境进行故障演练。

Description

基于消费场景的故障演练方法和装置
技术领域
本申请实施例涉及互联网技术领域,尤其涉及一种基于消费场景的故障演练方法、装置、计算机设备及计算机可读存储介质。
背景技术
故障演练被广泛应用于分布式系统的稳定性提升项目中,但是主要的演练目标基本都是针对服务场景(Server类型应用)。比如,假设有一个购物服务,依赖商品库存服务。那么故障演练时,可以在调用商品库存服务的接口时注入故障,以此来演练商品库存服务出现问题时,核心的购物流程是否会受影响。
为了能够在线上真实环境进行故障演练,爆炸半径控制是必不可少的组成部分。比如,如上的场景中,可能只想在线上的很少一部分流量上进行演练,避免对真实的大量用户造成影响。传统的爆炸半径控制策略主要可以基于流量、实例、方法、参数等方式展开。流量层面,可以为演练流量打上特定的标记;实例层面,可以指定只在特定的机器实例上面进行故障的注入;方法层面,可以只在调用特定的方法的时候进行故障注入;参数层面,可以只对特定参数的请求进行故障注入等。
然而,上述的爆炸半径的控制策略基本都集中于服务场景,即针对服务器类型的应用进行设计,很少有针对消费场景的故障演练的爆炸半径控制方案,导致消费端的故障演练通常都是被忽视的,用户没有有效的手段安全地在生产环境进行故障演练。
发明内容
本申请实施例的目的是提供一种基于消费场景的故障演练方法、装置、计算机设备及计算机可读存储介质,用于解决以下问题:现有的爆炸半径的控制策略基本都是基于服务场景进行设计,无法针对消费场景的故障演练进行爆炸半径控制。
本申请实施例的一个方面提供了一种基于消费场景的故障演练方法,包括:
获取用户设置的故障配置数据,其中,所述故障配置数据包含消息需要满足的预设条件和靶点位置;
根据所述故障配置数据在第一线程中挂载故障消息处理者;其中,所述第一线程用于从主题中消费消息;
通过所述故障消息处理者,从所述第一线程所消费的消息中确定满足所述预设条件的目标消息,并在所述目标消息中注入故障信息;
根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障。
可选地,所述获取用户设置的故障配置数据,包括:
接收用户在故障演练平台上进行的设置操作;
根据所述设置操作确定用户设置的故障配置数据。
可选地,所述根据所述故障配置数据在第一线程中挂载故障消息处理者,包括:
根据所述故障配置数据,通过消息中间件的方式在第一线程中挂载故障消息处理者。
可选地,所述预设条件包含需要演练的主题信息,和需要演练的消息的内容信息。
可选地,所述从所述第一线程所消费的消息中确定满足所述预设条件的目标消息,包括:
根据所述需要演练的主题信息,从所述第一线程所消费的消息中确定目标消息目标主题;
根据所述需要演练的消息的内容信息,从所述目标主题中确定目标消息。
可选地,所述根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障,包括:
通过消息上下文传递的方式,将所述目标消息传递到所述靶点位置;
根据所述故障信息控制在所述靶点位置爆发故障。
可选地,所述靶点位置包含在预设参数条件下调用预设依赖函数时的位置;
所述根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障,包括:
在检测到所述目标消息被传递到调用预设依赖函数的位置的情况下,若检测到调用所述预设依赖函数的参数满足预设参数条件,则根据所述故障信息控制爆发故障。
本申请实施例的一个方面又提供了一种基于消费场景的故障演练装置,包括:
配置数据获取模块,用于获取用户设置的故障配置数据,其中,所述故障配置数据包含消息需要满足的预设条件和靶点位置;
处理者挂载模块,用于根据所述故障配置数据在第一线程中挂载故障消息处理者;其中,所述第一线程用于从主题中消费消息;
故障信息注入模块,用于通过所述故障消息处理者,根据所述预设条件从所述第一线程所消费的消息中确定目标消息,并在所述目标消息中注入故障信息;
故障控制模块,用于根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障。
可选地,所述故障控制模块,包括:
消息传递子模块,用于通过消息上下文传递的方式,将所述目标消息传递到所述靶点位置;
故障控制子模块,用于根据所述故障信息控制在所述靶点位置爆发故障。
本申请实施例的一个方面又提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的基于消费场景的故障演练方法的步骤。
本申请实施例的一个方面又提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行所述计算机程序时实现如上述的基于消费场景的故障演练方法的步骤。
本申请实施例提供的基于消费场景的故障演练方法、装置、设备及计算机可读存储介质,通过基于故障配置数据配置参与演练的消息需要满足的预设条件和靶点位置,使得用户可以通过故障配置数据来圈定特定的消息来进行消费场景的故障演练,这种精确的爆炸半径控制策略使得用户可以安全地在线上环境进行故障演练,而且,通过将消息传递到靶点位置再爆发故障的方式,进一步精确地控制故障演练的爆炸半径,实现在消息粒度和靶点粒度上的双重爆炸半径控制,用户可以根据自身的业务需求,灵活指定消费场景下的爆炸半径控制策略。
附图说明
图1示意性示出了根据本申请实施例的基于消费场景的故障演练方法的应用环境图;
图2示意性示出了根据本申请实施例一的基于消费场景的故障演练方法的流程图;
图3示意性示出了一种消费场景下在特定消息中注入故障的示意图;
图4示意性示出了一种对图3中消费场景任务A注入故障的内部实现方式的示意图;
图5示意性示出了根据本申请实施例二的基于消费场景的故障演练装置的框图;及
图6示意性示出了根据本申请实施例三的适于实现基于消费场景的故障演练方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
现有技术中,故障演练被广泛应用于分布式系统的稳定性提升项目中,但是主要的演练目标基本都是针对服务场景(Server类型应用)。比如,假设有一个购物服务,依赖商品库存服务。那么故障演练时,可以在调用商品库存服务的接口时注入故障,以此来演练商品库存服务出现问题时,核心的购物流程是否会受影响。
为了能够在线上真实环境进行故障演练,爆炸半径控制是必不可少的组成部分。比如,如上的场景中,可能只想在线上的很少一部分流量上进行演练,避免对真实的大量用户造成影响。传统的爆炸半径控制策略主要可以基于流量、实例、方法、参数等方式展开。流量层面,可以为演练流量打上特定的标记;实例层面,可以指定只在特定的机器实例上面进行故障的注入;方法层面,可以只在调用特定的方法的时候进行故障注入;参数层面,可以只对特定参数的请求进行故障注入等。
然而,上述的爆炸半径的控制策略基本都集中于服务场景,即针对服务器类型的应用进行设计,很少有针对消费场景的故障演练的爆炸半径控制方案,导致消费端的故障演练通常都是被忽视的,用户没有有效的手段安全地在生产环境进行故障演练。
有鉴于此,本申请旨在提出一种基于消费场景的基于消费场景的故障演练方法,通过获取用户设置的故障配置数据,其中,所述故障配置数据包含消息需要满足的预设条件和靶点位置;根据所述故障配置数据在第一线程中挂载故障消息处理者;其中,所述第一线程用于从主题中消费消息;通过所述故障消息处理者,从所述第一线程所消费的消息中确定满足所述预设条件的目标消息,并在所述目标消息中注入故障信息;根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障。从而通过基于故障配置数据配置参与演练的消息需要满足的预设条件和靶点位置,使得用户可以通过故障配置数据来圈定特定的消息来进行消费场景的故障演练,这种精确的爆炸半径控制策略使得用户可以安全地在线上环境进行故障演练,而且,通过将消息传递到靶点位置再爆发故障的方式,进一步精确地控制故障演练的爆炸半径,实现在消息粒度和靶点粒度上的双重爆炸半径控制,用户可以根据自身的业务需求,灵活指定消费场景下的爆炸半径控制策略。
本申请提供了多个实施例进一步介绍基于消费场景的故障演练方案,具体参照下文。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
以下为本申请的术语解释:
消息队列:消息队列广泛应用于分布式系统架构中,主要解决应用于解耦、异步处理、流量削峰等问题。其本质上就是一个保存消息的队列,通过高效可靠的传输机制,保证数据在系统之间的流动。
Topic:Topic即主题,是消息队列中一种区分数据种类的方式。比如存款事件、贷款事件可以用消息队列中的不同主题来传递。
消费场景:指的是利用消息队列搭建的分布式系统中,站在消息消费者视角搭建的业务场景。比如,海量用户向某视频网站投稿,该视频网站通过消息队列将用户作品的信息流转到审核端。审核端就是一个消费场景,它持续不断从消息队列中取岀需要审核的数据,然后经过一系列过程,比如调用转码服务语音识别服务、违规审核服务等,将这些用户作品加工为可以供网站呈现的素材。其他消费场景比如统计一个视频的点击数量、评论数量等,也可以基于消息队列搭建异步服务,其中也包含消费场景。
CQRS:Command Query Responsibility Segregation,命令查询责任分离。在基于CQRS的系统中,命令(写操作)和查询(读操作)所使用的数据模型是有区别的。命令模型用于有效地执行写/更新操作,而查询模型用于有效地支持各种读模式。通过CQRS模式可以有效解耦系统,实现读写分离。
混沌工程∶混沌工程是在分布式系统上进行实验的学科,目的是建立对系统抵御生产环境中失控条件的能力以及信心。
故障演练:故障演练是基于混沌工程的基本原理,通过各种方式对系统注入故障,寻找系统问题的具体手段。
靶点:具体故障注入的执行位置,比如给某个服务访问数据库时注入故障,那么数据库访问操作就是靶点。
爆炸半径:指的是在故障演练旳过程中,通过各种方式,控制演练的影响面,使得演练的影响只在一个可控的范围内发生。
图1示意性示出了根据本申请实施例的环境应用示意图。如图1所示:
计算机设备10000可以通过网络20000连接客户端30000。
计算机设备10000可以提供服务,如进行网络调试,或返回基于消费场景的故障演练结果数据给客户端30000等。
计算机设备10000可以位于诸如单个场所之类的数据中心,或者分布在不同的地理位置(例如,在多个场所)中。计算机设备10000可以经由一个或多个网络20000提供服务。网络20000包括各种网络设备,例如路由器,交换机,多路复用器,集线器,调制解调器,网桥,中继器,防火墙,代理设备和/或类似。网络20000可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,其组合等。网络20000可以包括无线链路,诸如蜂窝链路,卫星链路,Wi-Fi链路等。
计算机设备10000可以由一个或多个计算节点实现。一个或多个计算节点可以包括虚拟化的计算实例。虚拟化的计算实例可以包括虚拟机,例如计算机系统,操作系统,服务器等的仿真。计算节点可以基于虚拟映像和/或定义用于仿真的特定软件(例如,操作系统,专用应用程序,服务器)的其他数据,由计算节点加载虚拟机。随着对不同类型的处理服务的需求改变,可以在一个或多个计算节点上加载和/或终止不同的虚拟机。可以实现管理程序来管理同一计算节点上不同虚拟机的使用。
客户端30000可以被配置为访问计算机设备10000的内容和服务。客户端30000可以包括任何类型的电子设备,诸如移动设备、平板设备、膝上型计算机、工作站、虚拟现实设备,游戏设备、机顶盒、数字流媒体设备、车辆终端、智能电视、机顶盒等。
客户端30000可以将基于消费场景的故障演练结果数据等输出(例如,显示、渲染、呈现)给用户。
以下将通过多个实施例介绍网络调试方案。该方案可以通过计算机设备10000实施。
实施例一
图2示意性示出了根据本申请实施例一的基于消费场景的故障演练方法的流程图。包括步骤S202-S208,其中,
步骤S202,获取用户设置的故障配置数据,其中,所述故障配置数据包含消息需要满足的预设条件和靶点位置;
其中,预设条件为预先设定的需要演练的消息的限制条件,该预设条件可以包含需要演练的主题Topic信息和需要演练的消息的内容信息,因此,通过预设条件的设定,可以限制仅对消费场景下特定的Topic的消息进行故障演练,进而还可以限制仅对符合要求的Topic中特定的消息进行故障演练。靶点位置表示注入故障执行的位置。
本实施例中的基于消费场景的故障演练方法,可以由用户自主设置故障配置数据,通过该故障配置数据用户可以根据自身的业务需求,灵活指定消费场景下的爆炸半径控制策略,以安全地在线上环境进行故障演练。
步骤S204,根据所述故障配置数据在第一线程中挂载故障消息处理者;其中,所述第一线程用于从主题中消费消息;
本实施例中基于消费场景的故障演练方法可以基于CQRS异步框架实现,该CQRS框架的主要的逻辑包含:由第一线程从主题Topic中持续消费消息,并将所消费的消息传递到后续的模块中进行消息的解析、分组并发等处理。
具体的,通过根据故障配置数据在第一线程中挂载故障消息处理者,该第一线程用于从主题中消费消息。这种在第一线程中注入故障消息处理者Handler的方式,可以满足需要在爆炸半径的控制时,尽可能靠近上游注入故障但是不强制消息内部包含Topic信息,同时让CQRS框架处理消息的每一个的阶段都能够注入故障等需求。
步骤S206,通过所述故障消息处理者,从所述第一线程所消费的消息中确定满足所述预设条件的目标消息,并在所述目标消息中注入故障信息;
具体的,通过故障消息处理者判断第一线程所消费的每一个消息是否满足预设条件,并从第一线程所消费的消息中确定满足预设条件的目标消息,然后在该目标消息中注入故障信息。
步骤S208,根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障。
具体的,在目标消息被注入故障信息之后,通过上下文传递的方式将目标消息传递到后续的各个处理线程中进行处理,当目标消息被传递到靶点位置时,根据故障信息控制在目标消息被传递到靶点位置时爆发故障,以在靶点位置进行故障演练,这种精确的爆炸半径控制策略使得用户可以安全地在线上环境进行故障演练。
以下提供几个可选地实施例,以进行优化所述基于消费场景的故障演练方法,具体如下:
在本申请的一种优选实施例中,所述步骤S202可以包括如下步骤:
接收用户在故障演练平台上进行的设置操作;根据所述设置操作确定用户设置的故障配置数据。
在本实施例中,用户可以通过在故障演练平台上进行设置操作以设置需要演练的相关数据,CQRS框架与故障演练平台连接,通过故障演练平台采集到用户的设置操作,并将用户的设置操作传递到CQRS框架,以根据设置操作确定用户设置的故障配置数据。其中,故障配置数据包含消息需要满足的预设条件和靶点位置,预设条件用于限定参与演练的消息需要满足的条件,靶点位置用于限定注入故障执行的位置。
在本申请的一种优选实施例中,所述步骤S204可以包括如下步骤:
根据所述故障配置数据,通过消息中间件的方式在第一线程中挂载故障消息处理者。
在本实施例中,可以根据故障配置数据,通过消息中间件的方式在第一线程中挂载故障消息处理者,其中,消息中间件即为消息队列Message Queue,通过在CQRS框架的内部集成故障演练的中间件,以实现在第一线程中挂载故障消息处理者。
在本申请的一种优选实施例中,所述步骤S206可以包括如下步骤:
根据所述需要演练的主题信息,从所述第一线程所消费的消息中确定目标消息目标主题;根据所述需要演练的消息的内容信息,从所述目标主题中确定目标消息。
在本实施例中,预设条件包含需要演练的主题Topic信息和需要演练的消息的内容信息,在注入故障时,通过根据需要演练的主题信息,从第一线程所消费的消息中确定目标消息目标主题,然后根据需要演练的消息的内容信息,从目标主题中确定目标消息,从而实现在消息粒度进行爆炸半径控制。
在本申请的一种优选实施例中,所述步骤S208可以包括如下步骤:
通过消息上下文传递的方式,将所述目标消息传递到所述靶点位置;根据所述故障信息控制在所述靶点位置爆发故障。
在本实施例中,通过消息上下文传递的方式,将目标消息传递到靶点位置;根据故障信息控制在靶点位置爆发故障,从而实现在靶点粒度进行爆炸半径控制。
在本申请的一种优选实施例中,所述靶点位置包含在预设参数条件下调用预设依赖函数时的位置;所述步骤S208可以包括如下步骤:
在检测到所述目标消息被传递到调用预设依赖函数的位置的情况下,若检测到调用所述预设依赖函数的参数满足预设参数条件,则根据所述故障信息控制爆发故障。
在本实施例中,靶点位置包含在预设参数条件下调用预设依赖时的位置,其中,预设依赖函数表示预先设定的在处理目标消息时对外部的依赖函数,例如,在处理目标消息时对外部的依赖函数包含三个,分别为依赖1,依赖2和依赖3,假设预设依赖函数为依赖1,则只有调用依赖1时才会失败。预设参数条件表示预先设定的在调用预设依赖函数时的特定的参数条件,例如,假设预设参数条件为prop=0,则只有调用预设依赖函数时的prop=0时会调用失败,而prop为其他参数值时的调用无影响。
通过设定靶点位置为在预设参数条件下调用预设依赖时的位置,在检测到目标消息被传递到调用预设依赖函数的位置的情况下,进一步检测调用预设依赖函数的参数是否满足预设参数条件,若检测到调用预设依赖函数的参数满足预设参数条件,则根据故障信息控制爆发故障,使得发生调用失败,从而在进行故障演练时,可以精确到只有特定的参数条件下才会发生调用失败,极大地缩小演练过程对线上环境的影响范围,使得用户可以安全地在线上环境进行故障演练。
为了进一步描述本申请实施例的基于消费场景的故障演练方法,如图3示出了一种消费场景下在特定消息中注入故障的示意图,图3中,消费场景任务A从Topic_1和Topic_2两个主题中消费数据并进行处理,处理过程中对外有三个依赖,分别为依赖1、依赖2和依赖3。假设当前需要在线上环境对消费场景任务A在消费主题Topic_1的情況下进行故障演练,要求只能对其中的少量的消息产生影响,即图中阴影部分的消息,比如是圈定的少量内部用户提交的数据。演练的靶点为主为对依赖1的调用,即模拟调用依赖1时发生了故障。此外,还可以进一步圈定只有特定的参数条件下调用依赖1才会失败,比如某个参数prop=0时调用失败,prop为其他值时调用无影响。
如图4示出了一种对图3中消费场景任务A注入故障的内部实现方式的示意图。该消费场景任务A基于自研的CQRS异步框架(以下简称为RG框架)实现,该异步框架从左至右主体逻辑为:由【receive线程】从Topic中持续消费消息并塞入消息数据源;由【Unpack线程】将消息数据源中的消息解析,并塞入到各个内存队列中进行分组并发(假设在分组并发逻辑中进行依赖1、依赖2、依赖3)的调用;分组并发之后可以有一个再聚合的逻辑,对相同分片的数据进行内容聚合。
消费场景爆炸半径控制的关键点是在该RG框架中支持故障演练功能。包含两部分:第一部分负责与故障演练平台交互获得故障配置数据,第二部分为在框架内部集成故障演练中间件,核心为在【receive线程】内部进行故障数据处理者Fault-msg-Handler(也即上下文检查Handler)的挂载。具体的,该Handler通过中间件的方式进行注入,可以在应用启动的时候注入到receive逻辑中。该Fault-msg-Handler挂载在receive逻辑的考虑基于两个方面:第一因为需要基于Topic信息进行爆炸半径控制,那么需要尽可能靠近上游从Topic取数据的阶段,这样不强制消息内部保存Topic信息;第二因为需要尽可能靠前的挂载,使得在类似Unpack等逻辑中进行故障的注入成为可能,比如可以模拟解析失败、分组数据倾斜等场景进行故障演练(如果在分组并发逻辑中进行Fault-msg-Handler挂载,则失去了这个机会)。
在注入Fault-msg-Handler之后,在Fault-msg-Handler识别到满足条件的Topic中的相应消息之后,可以将故障信息Faut-ctx注入到目标消息中,该Faut-ctx携带了该消息命中的故障配置数据(如具体的靶点配置等),该Faut-ctx随着目标消息在内部进行流转,并传递到后续的靶点位置,比如依赖1,使得在依赖1处可以进行靶点粒度的爆炸半径控制。
在本实施例中,基于消费场景下的爆炸半径控制可以在两个粒度进行控制,即在消息粒度(Faut-Msg-Handler处通过基于Topic和消息内容的方式进行爆炸半径控制),以及在靶点粒度(通过消息上下文信息Faut-ctx将爆炸半径控制在传递到靶点处进行故障演练)。用户可以根据实际的业务需求,灵活指定消费场景下的爆炸半径控制策略,安全地在线上环境进行消费场景故障演练。
实施例二
图5示意性示出了根据本申请实施例二的基于消费场景的故障演练装置的框图,该基于消费场景的故障演练装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本申请实施例中各程序模块的功能。
如图5所示,该基于消费场景的故障演练装置500可以包括如下模块:
配置数据获取模块510,用于获取用户设置的故障配置数据,其中,所述故障配置数据包含消息需要满足的预设条件和靶点位置;
处理者挂载模块520,用于根据所述故障配置数据在第一线程中挂载故障消息处理者;其中,所述第一线程用于从主题中消费消息;
故障信息注入模块530,用于通过所述故障消息处理者,根据所述预设条件从所述第一线程所消费的消息中确定目标消息,并在所述目标消息中注入故障信息;
故障控制模块540,用于根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障。
在本申请的一种优选实施例中,所述配置数据获取模块510,包括:
设置操作接收子模块,用于接收用户在故障演练平台上进行的设置操作;
故障配置数据确定子模块,用于根据所述设置操作确定用户设置的故障配置数据。
在本申请的一种优选实施例中,所述处理者挂载模块520,具体用于:
根据所述故障配置数据,通过消息中间件的方式在第一线程中挂载故障消息处理者。
在本申请的一种优选实施例中,所述预设条件包含需要演练的主题信息,和需要演练的消息的内容信息。
在本申请的一种优选实施例中,所述故障信息注入模块530,包括:
目标主题确定子模块,用于根据所述需要演练的主题信息,从所述第一线程所消费的消息中确定目标消息目标主题;
目标消息确定子模块,用于根据所述需要演练的消息的内容信息,从所述目标主题中确定目标消息。
在本申请的一种优选实施例中,所述故障控制模块540,包括:
消息传递子模块,用于通过消息上下文传递的方式,将所述目标消息传递到所述靶点位置;
故障控制子模块,用于根据所述故障信息控制在所述靶点位置爆发故障。
在本申请的另一种优选实施例中,所述靶点位置包含在预设参数条件下调用预设依赖函数时的位置;所述故障控制模块540具体用于:
在检测到所述目标消息被传递到调用预设依赖函数的位置的情况下,若检测到调用所述预设依赖函数的参数满足预设参数条件,则根据所述故障信息控制爆发故障。
实施例三
图6示意性示出了根据本申请实施例三的适于实现基于消费场景的故障演练方法的计算机设备10000的硬件架构示意图。本实施例中,计算机设备10000是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括FEN独立的服务器,或者多个服务器所组成的服务器集群)等。如图6所示,计算机设备10000至少包括但不限于:可通过系统总线相互通信链接存储器10010、处理器10020、网络接口10030。其中:
存储器10010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器10010可以是计算机设备10000的内部存储模块,例如该计算机设备10000的硬盘或内存。在另一些实施例中,存储器10010也可以是计算机设备10000的外部存储设备,例如该计算机设备10000上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器10010还可以既包括计算机设备10000的内部存储模块也包括其外部存储设备。本实施例中,存储器10010通常用于存储安装于计算机设备10000的操作系统和各类应用软件,例如基于消费场景的故障演练方法的程序代码等。此外,存储器10010还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器10020在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器10020通常用于控制计算机设备10000的总体操作,例如执行与计算机设备10000进行数据交互或者通信相关的控制和处理等。本实施例中,处理器10020用于运行存储器10010中存储的程序代码或者处理数据。
网络接口10030可包括无线网络接口或有线网络接口,该网络接口10030通常用于在计算机设备10000与其他计算机设备之间建立通信链接。例如,网络接口10030用于通过网络将计算机设备10000与外部终端相连,在计算机设备10000与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code Division Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图6仅示出了具有部件10010-10030的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器10010中的基于消费场景的故障演练方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器10020)所执行,以完成本申请实施例。
实施例四
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的基于消费场景的故障演练方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中基于消费场景的故障演练方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种基于消费场景的故障演练方法,其特征在于,包括:
获取用户设置的故障配置数据,其中,所述故障配置数据包含消息需要满足的预设条件和靶点位置;
根据所述故障配置数据在第一线程中挂载故障消息处理者;其中,所述第一线程用于从主题中消费消息;
通过所述故障消息处理者,从所述第一线程所消费的消息中确定满足所述预设条件的目标消息,并在所述目标消息中注入故障信息;
根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障。
2.根据权利要求1所述的基于消费场景的故障演练方法,其特征在于,所述获取用户设置的故障配置数据,包括:
接收用户在故障演练平台上进行的设置操作;
根据所述设置操作确定用户设置的故障配置数据。
3.根据权利要求1所述的基于消费场景的故障演练方法,其特征在于,所述根据所述故障配置数据在第一线程中挂载故障消息处理者,包括:
根据所述故障配置数据,通过消息中间件的方式在第一线程中挂载故障消息处理者。
4.根据权利要求1所述的基于消费场景的故障演练方法,其特征在于,所述预设条件包含需要演练的主题信息,和需要演练的消息的内容信息。
5.根据权利要求4所述的基于消费场景的故障演练方法,其特征在于,所述从所述第一线程所消费的消息中确定满足所述预设条件的目标消息,包括:
根据所述需要演练的主题信息,从所述第一线程所消费的消息中确定目标消息目标主题;
根据所述需要演练的消息的内容信息,从所述目标主题中确定目标消息。
6.根据权利要求1所述的基于消费场景的故障演练方法,其特征在于,所述根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障,包括:
通过消息上下文传递的方式,将所述目标消息传递到所述靶点位置;
根据所述故障信息控制在所述靶点位置爆发故障。
7.根据权利要求1所述的基于消费场景的故障演练方法,其特征在于,所述靶点位置包含在预设参数条件下调用预设依赖函数时的位置;
所述根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障,包括:
在检测到所述目标消息被传递到调用预设依赖函数的位置的情况下,若检测到调用所述预设依赖函数的参数满足预设参数条件,则根据所述故障信息控制爆发故障。
8.一种基于消费场景的故障演练装置,其特征在于,包括:
配置数据获取模块,用于获取用户设置的故障配置数据,其中,所述故障配置数据包含消息需要满足的预设条件和靶点位置;
处理者挂载模块,用于根据所述故障配置数据在第一线程中挂载故障消息处理者;其中,所述第一线程用于从主题中消费消息;
故障信息注入模块,用于通过所述故障消息处理者,根据所述预设条件从所述第一线程所消费的消息中确定目标消息,并在所述目标消息中注入故障信息;
故障控制模块,用于根据所述故障信息控制在所述目标消息被传递到所述靶点位置时爆发故障。
9.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1至7中任意一项所述的基于消费场景的故障演练方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行权利要求1至7中任意一项所述的基于消费场景的故障演练方法的步骤。
CN202311541565.6A 2023-11-17 2023-11-17 基于消费场景的故障演练方法和装置 Pending CN117519828A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311541565.6A CN117519828A (zh) 2023-11-17 2023-11-17 基于消费场景的故障演练方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311541565.6A CN117519828A (zh) 2023-11-17 2023-11-17 基于消费场景的故障演练方法和装置

Publications (1)

Publication Number Publication Date
CN117519828A true CN117519828A (zh) 2024-02-06

Family

ID=89741555

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311541565.6A Pending CN117519828A (zh) 2023-11-17 2023-11-17 基于消费场景的故障演练方法和装置

Country Status (1)

Country Link
CN (1) CN117519828A (zh)

Similar Documents

Publication Publication Date Title
CN111625452B (zh) 流量回放方法和系统
US10225145B2 (en) Method and device for updating client
CN112836152B (zh) 页面渲染方法、系统、计算机设备及计算机可读存储介质
CN110750592B (zh) 数据同步的方法、装置和终端设备
US20140047065A1 (en) System, device and method for providing push service using feedback message
CN111416836B (zh) 基于Nginx的服务器维护方法、装置、计算机设备及存储介质
CN113794909A (zh) 视频流传输系统、方法、服务器、装置以及存储介质
CN103036910B (zh) 一种用户Web访问行为控制方法及装置
CN114124929A (zh) 跨网络的数据处理方法和装置
CN110674435A (zh) 页面访问方法、服务器、终端、电子设备及可读存储介质
CN113900939A (zh) 测试环境访问方法、装置、可读存储介质和计算机设备
CN116743619B (zh) 网络服务的测试方法、装置、设备及存储介质
CN111800511B (zh) 同步登录态的处理方法、系统、设备及可读存储介质
CN117435569A (zh) 缓存系统动态扩容方法、装置、设备、介质和程序产品
CN117519828A (zh) 基于消费场景的故障演练方法和装置
CN116450165A (zh) 一种快速搭建环境及部署程序的方法、系统、终端及存储介质
CN115225950A (zh) 视频的播放控制方法和装置
CN115373831A (zh) 数据处理方法、装置以及计算机可读存储介质
CN112416488A (zh) 一种用户画像实现的方法、装置、计算机设备及计算机可读存储介质
CN111013157A (zh) 游戏加载方法、装置、设备及存储介质
CN117978792B (zh) 应用程序与Web端的交互方法、装置、设备及介质
CN114143187B (zh) 智能平台接口网络地址管理方法、系统、终端及存储介质
CN115022278B (zh) Cdn处理方法和系统
CN118034776B (zh) 一种数据获取方法、装置及计算机设备、介质、产品
CN113132324B (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