CN112306711A - 一种业务告警方法、设备及计算机可读存储介质 - Google Patents

一种业务告警方法、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN112306711A
CN112306711A CN202011133359.8A CN202011133359A CN112306711A CN 112306711 A CN112306711 A CN 112306711A CN 202011133359 A CN202011133359 A CN 202011133359A CN 112306711 A CN112306711 A CN 112306711A
Authority
CN
China
Prior art keywords
queue
thread
access
information
head
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
Application number
CN202011133359.8A
Other languages
English (en)
Other versions
CN112306711B (zh
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.)
WeBank Co Ltd
Original Assignee
WeBank 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 WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN202011133359.8A priority Critical patent/CN112306711B/zh
Publication of CN112306711A publication Critical patent/CN112306711A/zh
Application granted granted Critical
Publication of CN112306711B publication Critical patent/CN112306711B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

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 Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种业务告警方法、设备及计算机可读存储介质,其中,方法包括:获得来自不同客户端的至少三个线程;基于至少三个线程,构建不同访问阶段的队列;其中,不同访问阶段中任一访问阶段的队列至少包括一个子队列,至少一个子队列包括队首线程和非队首线程;基于子队列的队首线程执行访问操作,得到访问信息;其中,访问操作包括与队首线程关联的访问操作,以及与非队首线程关联的访问操作;基于访问信息,生成告警信息并输出告警信息;其中告警信息用于对符合告警条件的线程对应的业务进行告警;避免大量耗费存储容量,提高了资源的利用率,提高处理效率,由于访问信息包括所有线程对应的业务的访问信息,所以在告警时能够精确定位问题。

Description

一种业务告警方法、设备及计算机可读存储介质
技术领域
本申请实施例涉及金融科技(Fintech)的业务告警技术领域,涉及但不限于一种业务告警方法、设备及计算机可读存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。
若服务端开启全量日志功能,将记录客户端的所有访问请求日志。然而,记录全量日志非常耗费存储容量和资源,所以目前记录日志的过程中,为了满足容量的要求,并未采集事务的全量日志,由此,导致在定位资源的问题时,无法精准定位问题。
发明内容
本申请实施例提供一种业务告警方法、设备及计算机可读存储介质,通过分阶段批量有序提交,即在进行不同访问操作时,都由队首线程来完成本阶段的工作,从而减少了写磁盘的次数,避免大量耗费存储容量,提高了资源的利用率,提高处理效率,同时,由于访问信息包括所有线程对应的业务的访问信息,所以在告警时能够精确定位问题。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种业务告警方法,包括:
获得来自不同客户端的至少三个线程;
基于所述至少三个线程,构建不同访问阶段的队列;其中,所述不同访问阶段中任一访问阶段的队列至少包括一个子队列,至少一个所述子队列包括队首线程和非队首线程;
基于所述子队列的所述队首线程执行访问操作,得到访问信息;其中,所述访问操作包括与所述队首线程关联的访问操作,以及与所述非队首线程关联的访问操作;
基于所述访问信息,生成告警信息并输出所述告警信息;其中,所述告警信息用于对符合告警条件的线程对应的业务进行告警。
本申请实施例提供一种业务告警设备,包括:
存储器,用于存储可执行指令;处理器,用于执行存储器中存储的可执行指令时,实现上述的方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现上述的方法。
本申请实施例具有以下有益效果:
通过获得来自不同客户端的至少三个线程;基于所述至少三个线程,构建不同访问阶段的队列;其中,所述不同访问阶段中任一访问阶段的队列至少包括一个子队列,至少一个所述子队列包括队首线程和非队首线程;基于所述子队列的所述队首线程执行访问操作,得到访问信息;其中,所述访问操作包括与所述队首线程关联的访问操作,以及与所述非队首线程关联的访问操作;基于所述访问信息,生成告警信息并输出所述告警信息;其中,所述告警信息用于对符合告警条件的线程对应的业务进行告警;也就是说,通过分阶段批量有序提交,即在进行不同访问操作时,都由队首线程来完成本阶段的工作,从而减少了写磁盘的次数,避免大量耗费存储容量,提高了资源的利用率,提高处理效率,同时,由于访问信息包括所有线程对应的业务的访问信息,所以在告警时能够精确定位问题。
附图说明
图1是本申请实施例提供的服务器的一个可选的架构示意图;
图2是本申请实施例提供的业务告警方法的一个可选的流程示意图;
图3是本申请实施例提供的业务告警方法的一个可选的流程示意图;
图4是本申请实施例提供的业务告警方法的一个可选的流程示意图;
图5是本申请实施例提供的写缓存队列的一个可选的构建示意图;
图6是本申请实施例提供的写缓存队列的一个可选的构建示意图;
图7是本申请实施例提供的写缓存队列的一个可选的构建示意图;
图8是本申请实施例提供的业务告警方法的一个可选的流程示意图;
图9是本申请实施例提供的同步磁盘队列的一个可选的构建示意图;
图10是本申请实施例提供的同步磁盘队列的一个可选的构建示意图;
图11是本申请实施例提供的提交队列的一个可选的构建示意图;
图12是本申请实施例提供的业务告警方法的一个可选的流程示意图;
图13是本申请实施例提供的提交队列的一个可选的构建示意图;
图14是本申请实施例提供的业务告警方法的一个可选的流程示意图;
图15是本申请实施例提供的场景示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本申请实施例所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
1)虚拟服务器,(Linux Virtual Server,Lvs),本申请在客户端(clie nt端)和关系型数据库管理系统(MySQL)服务端中间加一层第三方代理服务器如Lvs负载均衡服务器来记录客户端访问信息。
2)负载均衡调度器(Load Balance,Ld),设置在服务器接入高速局域网或者广域网的前端,将网络请求调度到真实的服务器上。
3)刷新缓存函数(flush_buffer)。
4)同步磁盘(frsync_disk),将当前事务中的数据真正的写到磁盘中。
5)提交(commit),将事务所做的修改提交到数据库中。
6)add_buffer_queue:将当前事务加入刷新缓存的队列中,并返回这个事务是否成为leader。
7)add_sycn_queue:将当前事务加入刷新磁盘的队列中,并返回这个事务是否成为leader。
8)add_commit_queue:将当前事务加入提交的队列中,并返回这个事务是否成为leader。
9)role_back:判断角色函数,例如角色为队首线程leader或非队首线程follower。
10)wait_time_:根据时间配置等待进入下一阶段。
11)wait_count:根据设置的事务个数等待进入下一阶段。
12)互斥锁,在编程中,引入了对象互斥的概念,来保证共享数据操作的完整性。每个对象都对应一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。
相关技术中,不开启全量日志(General_log)的前提下告警方法包括如下步骤:
首先,目前关系型数据库管理系统MySQL如果有未提交事务,会引起锁等待持续超时的发生,并且导致当前应用运行异常,那么需要定位到那个事务长时间未提交,并且让业务判断是否回滚或者提交该事务来释放持有的锁。
其次,一般通过查询事务表(information_schema.innoDB_trx),锁信息表(innoDB_locks)和锁等待表(innoDB_lock_waits),任务列表(processlist)等表记录的信息可以获取到引起锁等待的长时间未提交的且处于sleep状态的事务线程id,用户,开始时间等,但无法获取到该事物包含的所有结构化查询语音(Structured Query Language,sql)语句。其中,sleep状态使当前线程进入阻塞状态,在指定时间内不会执行。
最后,获取到事务线程标识(Identity document,id),开始时间等信息后,可让业务根据时间,用户等信息粗略判断是那个事务可能是未提交的事务让业务裁定是否可以通过释放线程id先回滚释放锁。
相关技术中,开启General_log的前提下的方法告警方法包括如下步骤:根据第一种方法获取到事务线未提交的时间段,用户等信息,然后从海量的general_log file或者表中找到该时间段的所有sql,可让业务根据时间,用户等信息粗略判断是那个事务并判断是否回滚或者提交该事务来释放持有的锁,或者未提交的事务让业务裁定是否可以通过释放线程id先回滚释放锁。
由上述可知,相关技术中至少具有如下缺点:
不开启General_log的情况下,无法记录到事务包含的所有具体sql语句,无法快速有效有针对性的精确追溯到到底哪一个事务触发的。无法精确定位问题,从而导致错误处理时效慢。不精确,还可能导致判断失误又导致其他错误。被动性,只有发生了其他事物的锁等待,才知道有未提交事物的存在。开启General_log的情况下,高并发性能低且写入日志无序,最重要的是非常耗费存储容量和资源,所以一般不选择这种方式。
本申请提供的业务告警方法,不仅能够主动预警出来未提交事物所有sql组成以方便业务根据定位是哪个客户端发起的,进而可以针对性的修复问题;而且能够支持日志高并发自适应批量顺序写。
下面说明本申请实施例提供的业务告警设备的示例性应用,本申请实施例提供的业务告警设备可以实施为服务器。下面,将说明业务告警设备实施为服务器时的示例性应用。
参见图1,图1是本申请实施例提供的服务器100的结构示意图,图1所示的服务器100包括:至少一个处理器110、至少一个网络接口120、用户接口130和存储器150。服务器100中的各个组件通过总线系统140耦合在一起。可理解,总线系统140用于实现这些组件之间的连接通信。总线系统140除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图1中将各种总线都标为总线系统140。
处理器110可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(Digital Signal Processor,DSP),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口130包括使得能够呈现媒体内容的一个或多个输出装置131,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口130还包括一个或多个输入装置132,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器150可以是可移除的,不可移除的或其组合。示例性地硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器150可选地包括在物理位置上远离处理器110的一个或多个存储设备。存储器150包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(Read Only Memory,ROM),易失性存储器可以是随机存取存储器(Random Access Memory,RAM)。本申请实施例描述的存储器150旨在包括任意适合类型的存储器。在一些实施例中,存储器150能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统151,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块152,用于经由一个或多个(有线或无线)网络接口120到达其他计算设备,示例性地网络接口120包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(Universal Serial Bus,USB)等;
输入处理模块153,用于对一个或多个来自一个或多个输入装置132之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图1示出了存储在存储器150中的一种业务告警装置154,该业务告警装置154可以是服务器100中的业务告警装置,其可以是程序和插件等形式的软件,包括以下软件模块:获得模块1541、第一处理模块1542、第二处理模块1543、第三处理模块1544,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的业务告警方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(Application Specific Integrated Circuit,ASIC)、DSP、可编程逻辑器件(Programmable Logic Device,PLD)、复杂可编程逻辑器件(Complex ProgrammableLogic Device,CPLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或其他电子元件。
下面将结合本申请实施例提供的服务器100的示例性应用和实施,说明本申请实施例提供的业务告警方法。本申请在client端和MySQL服务端中间加一层第三方代理服务器如Lvs负载均衡服务器来记录客户端访问信息,并实施本申请提供的业务告警方法。
参见图2,图2是本申请实施例提供的业务告警方法的一个可选的流程示意图,将结合图2示出的步骤进行说明。
步骤S201,获得来自不同客户端的至少三个线程。
本申请实施例中,服务器可以是Lvs负载均衡服务器,各个Lvs负载均衡服务器将来自不同客户端的所有线程进行平衡、分摊之后,得到自身对应的至少三个线程,从而协同完成工作任务。本申请从一个Lvs负载均衡服务器的角度对业务告警方法进行说明。
步骤S202,基于至少三个线程,构建不同访问阶段的队列。
其中,不同访问阶段中任一访问阶段的队列至少包括一个子队列,至少一个子队列包括队首线程和非队首线程。
示例性的,以不同访问阶段包括写缓存阶段、同步磁盘阶段以及提交阶段,且不同访问阶段包括多个子队列为例进行说明,服务器构建得到的写缓存阶段的子队列包括刷新flush队列1至flush队列n,同步磁盘阶段的子队列包括同步rsync队列1至rsync队列n,提交阶段的子队列包括commit队列1至commit队列n,其中,n为大于1的正整数。
步骤S203,基于子队列的队首线程执行访问操作,得到访问信息。
其中,访问操作包括与队首线程关联的访问操作,以及与非队首线程关联的访问操作。
本申请实施例中,服务器基于子队列的队首线程执行访问操作,得到访问信息。也就是说,在进行不同访问的处理时,都由队首线程来完成本阶段的工作,即队首线程带领子队列中的非队首线程进行事务访问操作又称提交操作,非队首线程进入等待,直到事务提交完成。
步骤S204,基于访问信息,生成告警信息并输出告警信息。
其中,告警信息用于对符合告警条件的线程对应的业务进行告警。
本申请实施例中,服务器将不同客户端的所有线程批量处理并记录所有线程对应的访问信息,得到全量日志,进而基于全量日志生成告警信息并输出告警信息。可见,本申请提供的业务告警方法支持高并发批量日志顺序写,并可灵活控制批量规模。
本申请提供的业务告警方法,通过获得来自不同客户端的至少三个线程;基于所述至少三个线程,构建不同访问阶段的队列;其中,所述不同访问阶段中任一访问阶段的队列至少包括一个子队列,至少一个所述子队列包括队首线程和非队首线程;基于所述子队列的所述队首线程执行访问操作,得到访问信息;其中,所述访问操作包括与所述队首线程关联的访问操作,以及与所述非队首线程关联的访问操作;基于所述访问信息,生成告警信息并输出所述告警信息;其中,所述告警信息用于对符合告警条件的线程对应的业务进行告警;也就是说,通过分阶段批量有序提交,即在进行不同访问操作时,都由队首线程来完成本阶段的工作,从而减少了写磁盘的次数,避免大量耗费存储容量,提高了资源的利用率,提高处理效率,同时,由于访问信息包括所有线程对应的业务的访问信息,所以在告警时能够精确定位问题。
本申请实施例中,服务器100将整个写日志分为三个阶段,参见图3所示,三阶段写包括写缓存阶段31、同步磁盘阶段32以及提交阶段33,不同的阶段会对应着不同的队列,并且通过队列内部的互斥锁m_lock保证列并发访问(入队,出队)的正确性。事务提交的三个阶段通过三把互斥锁来进行保护,这三把锁分别保护的临界区是刷新flush,同步rsync,提交commit这三个事务提交的过程,三把互斥锁包括:LOCK_buffer、flush_buffer和LOCK_commit。同时三个阶段的每一阶段进行访问操作时,都由队首线程来完成本阶段的工作,非队首线程进入等待,直到事务提交完成。
下面,结合图3-图13对不同阶段构建相应的队列进行说明,在描述构建队列的过程中,结合多个客户端线程的事务T1-Tn提交过程来阐述批量提交的具体实现。
在一些实施例中,不同访问阶段包括写缓存阶段,这个阶段只负责写入到缓存中,在执行步骤S202基于至少三个线程,构建不同访问阶段的队列时,可以通过如图4所示的如下步骤实现:
步骤S2021,获得线程进入写缓存阶段的第一时间戳。
步骤S2022,基于第一时间戳和写缓存阶段的队内互斥锁的分配信息,构建写缓存阶段的队列。
其中,写缓存阶段的队列至少包括两个子队列。
这里,写缓存阶段的队内互斥锁的分配信息包括线程进入写缓存阶段后申请队内互斥锁的结果,包括获得写缓存阶段的队内互斥锁和没有获得写缓存阶段的队内互斥锁。
示例性的,在一个可实现场景中,参见图5所示,服务器获得客户端提交的线程T1线程,并通过函数add_buffer_queue将T1线程加入flush队列,并且由于T1线程是进入队列的第一个线程,成为队首线程leader。
由于T1线程是flush队列的leader,所以加入队列后不需要进行等待(等待别人帮助自己进行事务提交操作),对互斥锁LOCK_buffer加锁,目的是为了保证flush阶段多个阶段的顺序性(因为真正到了写磁盘的时候,如果多个队列的leader线程一起写,记录的日志就会乱序)
参见图5所示,T1对LOCK_buffer加锁后,进行flush_buffer的操作,在T1等待获取LOCK_buffer前后,清空flush队列之前,T2也要进行事务提交操作,并且进行flush队列的入队动作,但是发现队列非空,T1已经成为了队首,所以自己要进入等待状态,让T1带领自己进行事务提交操作,随后T1带领T2进行flush buffer的刷新操作。
参见图6所示,在T1带领T2进行flush阶段的操作时,T3开始进行事务提交,T3没有T2那么幸运,在T1申请写缓存阶段的队内互斥锁并拿到该对内互斥所的情况下,T3没有加入以T1为首的队列,T3自己成为新的flush队列的leader,但是现在却无法执行flush操作,因为T1尚未释放LOCK_buffer。
参见图7所示,T3在等待LOCK_buffer时,T4也准备进行事务提交,此时加入以T3为leader的flush队列中。
可见,本申请实施例中,服务器能够基于第一时间戳和写缓存阶段的队内互斥锁的分配信息,灵活构建写缓存阶段的队列。
在一些实施例中,不同访问阶段包括同步磁盘阶段,在这个阶段调用rsync把缓存一次性落盘,在执行步骤S202基于至少三个线程,构建不同访问阶段的队列时,还可以通过如图8所示的如下步骤实现:
步骤S2023,获得线程进入同步磁盘阶段的第二时间戳。
步骤S2024,获得线程进入同步磁盘阶段的等待信息。
其中,等待信息包括:等待时间和等待线程数量。这里,等待时间为wait_time、等待线程数量为wait_count。
步骤S2025,基于第二时间戳、等待信息、不同访问阶段的互斥锁的分配信息以及同步磁盘阶段的队内互斥锁的分配信息,构建同步磁盘阶段的队列。
其中,同步磁盘阶段的队列至少包括两个子队列。
这里,同步磁盘阶段的队内互斥锁的分配信息包括线程进入同步磁盘阶段后申请队内互斥锁的结果,包括获得同步磁盘阶段的队内互斥锁和没有获得同步磁盘阶段的队内互斥锁。不同访问阶段的互斥锁的分配信息包括LOCK_buffer的释放结果和flush_buffer的获得结果。
示例性的,在一个可实现场景中,参见图9所示,服务器确定T1线程结束了flush阶段的操作,准备进入rsync队列,开始rsync阶段的操作,加入rsync队列,并且成为rsync队列的leader。T1在成功加入rsync队列后,要释放为了进行上一个阶段而添加的互斥锁LOCK_buffer,T1一旦释放LOCK_buffer,则T3可以获取到LOCK_buffer,并且开始执行flush阶段的操作,假设正好在T3清空flush队列后,T5加入了flush队列中,并且成为新的flush队列的leader,等待LOCK_buffer(LOCK_buffer此时被T3占据)。
服务器确定T1添加rsync阶段的互斥锁LOCK_rsync,T1线程判断在执行rsync操作前是否要进行等待,这里的等待分为两种情况判断是否符合wait_time_和wait_count。
参见图10所示,服务器清空当前rsync队列,这个过程和清空flush队列的情况保持一致,但是可能的情况是在T1在释放LOCK_buffer之后,清空rsync队列之前,T3完成了flush阶段的工作,并且加入到了以T1为首的rsync队列中,但是由于自己不是leader线程,所以开始进入等待,于此同时,一旦T3进入rsync阶段,就会释放LOCK_buffer,则T5可以对LOCK_buffer加锁,并且开始清空flush队列,执行flush阶段的操作,但是T6没有在T5清空队列前加入flush队列,它自己成为了新的flush队列的leader,等待互斥锁LOCK_buffer(此时被T5持有)。
参见图11所示,此时服务器确定以T1为首的rsync队列已经被拉长了,并且队列中除了T1以外的其他线程都是处于等待状态,不同的时,有的线程是在进入flush阶段就开始等待的,比如T2/T3,有的是在进入rsync阶段时开始等待的,比如T3。此时T5执行完了flush阶段的操作,但是没有能够加入以T1为首的rsync队列中,此时rsync队列为空(T1已经清空了rsync队列),T5成为了新的rsync队列的leader,并且释放LOCK_buffer,由于T5释放了LOCK_buffer,则T6可以获取到互斥锁LOCK_buffer,我们假设在T6获取到LOCK_buffer之前,T7加入了以T6为首的flush队列中,T7为非leader线程,进入等待。
可见,本申请实施例中,服务器能够基于第二时间戳、等待信息、不同访问阶段的互斥锁的分配信息以及同步磁盘阶段的队内互斥锁的分配信息,灵活构建同步磁盘阶段的队列。
在一些实施例中,不同访问阶段包括提交阶段,在这个阶段,让事务依次按序提交,在执行步骤S202基于至少三个线程,构建不同访问阶段的队列时,还可以通过如图12所示的如下步骤实现:
步骤S2026,获得线程进入提交阶段的第三时间戳。
步骤S2027,基于第三时间戳、不同访问阶段的互斥锁的分配信息以及提交阶段的队内互斥锁的分配信息,构建提交阶段的队列。
其中,提交阶段的队列至少包括一个子队列。
这里,提交阶段的队内互斥锁的分配信息包括线程进入同步磁盘阶段后申请队内互斥锁的结果,包括获得提交阶段的队内互斥锁和没有获得提交阶段的队内互斥锁。不同访问阶段的互斥锁的分配信息包括flush_buffer的释放结果和LOCK_commit的获得结果。
示例性的,在一个可实现场景中,参见图13所示,服务器确定此时T1执行完了rsync阶段的操作,释放为了执行rsync阶段而持有的互斥锁Lock_rsync,进入commit队列中,开始执行commit阶段的操作,对LOCK_commit加锁,而此时:由于T1释放了Lock_rsync,T5则可以获取到此互斥锁,此时T6执行完了flush阶段的操作,并且加入到了以T5为首的rsync队列中,由于T6是非leader线程,开始进入等待。
由图13记载的内容可知,服务器确定最终T1在进行事务提交时,是带领T2,T3,T4这三个线程一起来完成的,在执行完commit操作之后,T1释放LOCK_commit。随后需要唤醒在进入各个队列时由于自己是非leader线程而开始进入等待的线程,比如T2,T3,T4,最终完成所有任务。
在一些实施例中,在执行步骤S201获得来自不同客户端的至少三个线程时,可以通过如图14所示的如下步骤实现:
步骤S2011,获得来自不同客户端的所有线程。
步骤S2012,对所有线程进行负载均衡处理,得到至少三个线程。
可见,Lvs负载均衡服务器负责把来自不同客户端的每个连接负载均衡到多个负载均衡调度器ld后再集中访问单个数据库(Database,DB),这样ld无压力的分布式负责收集到每个客户端连接占用的互联网协议地址(Internet Protocol Address,ip)和接口(port),开始时间,以及该ip和port连接下的所有的sql(包括事物的开启的标志性关键字begin和事物结束关键字commit)记录都归档到告警系统对应的DB。
示例性的,在一个可实现场景中,参见图15所示,在客户端41(client端)和MySQL服务端42中间加一层负载均衡服务器LD43来记录客户端访问信息,并通过告警系统读取日志数据库DB,将相关信息短信方式告警给业务。其中,所有访问信息都记录归档到告警系统对应的DB。这样告警系统既可根据DB信息记录的每个链接的具体信息,以事物开启时间为参考,根据定制的时间还没有commit的事物,则可精确告警出来该事物包含的启动时间,用户,客户端ip和所有sql给业务,协助业务解决问题。
在一些实施例中,在步骤S203基于子队列的队首线程执行访问操作,得到访问信息之后,还可以执行如下步骤:
将所有线程对应的访问信息保存至日志数据库;
相应的,步骤S204基于访问信息,生成告警信息并输出告警信息,可以通过如下步骤实现:调用日志数据库中的访问信息,生成告警信息并输出告警信息。
在一些实施例中,在步骤S203基于子队列的队首线程执行访问操作,得到访问信息之后,还可以执行如下步骤:唤醒子队列的非队首线程;执行队首线程对应的业务和非队首线程对应的业务。
下面继续说明本申请实施例提供的业务告警装置154实施为软件模块的示例性结构,在一些实施例中,如图1所示,存储在存储器150的业务告警装置154中的软件模块可以是服务器100中的业务告警装置,包括:
获得模块1541,用于获得来自不同客户端的至少三个线程;
第一处理模块1542,用于基于至少三个线程,构建不同访问阶段的队列;其中,不同访问阶段中任一访问阶段的队列至少包括一个子队列,至少一个子队列包括队首线程和非队首线程;
第二处理模块1543,用于基于子队列的队首线程执行访问操作,得到访问信息;其中,访问操作包括与队首线程关联的访问操作,以及与非队首线程关联的访问操作;
第三处理模块1544,用于基于访问信息,生成告警信息并输出告警信息;其中,告警信息用于对符合告警条件的线程对应的业务进行告警。
在一些实施例中,不同访问阶段包括写缓存阶段,第一处理模块1542,还用于获得线程进入写缓存阶段的第一时间戳;
基于第一时间戳和写缓存阶段的队内互斥锁的分配信息,构建写缓存阶段的队列;其中,写缓存阶段的队列至少包括两个子队列。
在一些实施例中,不同访问阶段包括同步磁盘阶段,第一处理模块1542,还用于获得线程进入同步磁盘阶段的第二时间戳;
获得线程进入同步磁盘阶段的等待信息;
基于第二时间戳、等待信息、不同访问阶段的互斥锁的分配信息以及同步磁盘阶段的队内互斥锁的分配信息,构建同步磁盘阶段的队列;其中,同步磁盘阶段的队列至少包括两个子队列。
在一些实施例中,待信息包括:等待时间和等待线程数量。
在一些实施例中,不同访问阶段包括提交阶段,第一处理模块1542,还用于获得线程进入提交阶段的第三时间戳;
基于第三时间戳、不同访问阶段的互斥锁的分配信息以及提交阶段的队内互斥锁的分配信息,构建提交阶段的队列;其中,提交阶段的队列至少包括一个子队列。
在一些实施例中,获得模块1541,还用于获得来自不同客户端的所有线程;
对所有线程进行负载均衡处理,得到至少三个线程。
在一些实施例中,第三处理模块1544,还用于将所有线程对应的访问信息保存至日志数据库;调用日志数据库中的访问信息,生成告警信息。
在一些实施例中,第三处理模块1544,还用于唤醒子队列的非队首线程;
执行队首线程对应的业务和非队首线程对应的业务。
本申请提供的业务告警装置,通过获得来自不同客户端的至少三个线程;基于所述至少三个线程,构建不同访问阶段的队列;其中,所述不同访问阶段中任一访问阶段的队列至少包括一个子队列,至少一个所述子队列包括队首线程和非队首线程;基于所述子队列的所述队首线程执行访问操作,得到访问信息;其中,所述访问操作包括与所述队首线程关联的访问操作,以及与所述非队首线程关联的访问操作;基于所述访问信息,生成告警信息并输出所述告警信息;其中,所述告警信息用于对符合告警条件的线程对应的业务进行告警;也就是说,通过分阶段批量有序提交,即在进行不同访问操作时,都由队首线程来完成本阶段的工作,从而减少了写磁盘的次数,避免大量耗费存储容量,提高了资源的利用率,提高处理效率,同时,由于访问信息包括所有线程对应的业务的访问信息,所以在告警时能够精确定位问题。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图2、4、8、12、14示出的方法。
本申请提供的存储介质,通过获得来自不同客户端的至少三个线程;基于所述至少三个线程,构建不同访问阶段的队列;其中,所述不同访问阶段中任一访问阶段的队列至少包括一个子队列,至少一个所述子队列包括队首线程和非队首线程;基于所述子队列的所述队首线程执行访问操作,得到访问信息;其中,所述访问操作包括与所述队首线程关联的访问操作,以及与所述非队首线程关联的访问操作;基于所述访问信息,生成告警信息并输出所述告警信息;其中,所述告警信息用于对符合告警条件的线程对应的业务进行告警;也就是说,通过分阶段批量有序提交,即在进行不同访问操作时,都由队首线程来完成本阶段的工作,从而减少了写磁盘的次数,避免大量耗费存储容量,提高了资源的利用率,提高处理效率,同时,由于访问信息包括所有线程对应的业务的访问信息,所以在告警时能够精确定位问题。
在一些实施例中,存储介质可以是计算机可读存储介质,例如,铁电存储器(FRAM,Ferromagnetic Random Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(CD-ROM,Compact Disk-Read Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(超文本标记语言,Hyper Text Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (10)

1.一种业务告警方法,其特征在于,包括:
获得来自不同客户端的至少三个线程;
基于所述至少三个线程,构建不同访问阶段的队列;其中,所述不同访问阶段中任一访问阶段的队列至少包括一个子队列,至少一个所述子队列包括队首线程和非队首线程;
基于所述子队列的所述队首线程执行访问操作,得到访问信息;其中,所述访问操作包括与所述队首线程关联的访问操作,以及与所述非队首线程关联的访问操作;
基于所述访问信息,生成告警信息并输出所述告警信息;其中,所述告警信息用于对符合告警条件的线程对应的业务进行告警。
2.根据权利要求1中所述的方法,其特征在于,所述不同访问阶段包括写缓存阶段,所述基于所述至少三个线程,构建不同访问阶段的队列,包括:
获得所述线程进入所述写缓存阶段的第一时间戳;
基于所述第一时间戳和所述写缓存阶段的队内互斥锁的分配信息,构建所述写缓存阶段的队列;其中,所述写缓存阶段的队列至少包括两个子队列。
3.根据权利要求1中所述的方法,其特征在于,所述不同访问阶段包括同步磁盘阶段,所述基于所述至少三个线程,构建不同访问阶段的队列,包括:
获得所述线程进入所述同步磁盘阶段的第二时间戳;
获得所述线程进入所述同步磁盘阶段的等待信息;
基于所述第二时间戳、等待信息、不同访问阶段的互斥锁的分配信息以及所述同步磁盘阶段的队内互斥锁的分配信息,构建所述同步磁盘阶段的队列;其中,所述同步磁盘阶段的队列至少包括两个子队列。
4.根据权利要求3中所述的方法,其特征在于,所述等待信息包括:等待时间和等待线程数量。
5.根据权利要求1中所述的方法,其特征在于,所述不同访问阶段包括提交阶段,所述基于所述至少三个线程,构建不同访问阶段的队列,包括:
获得所述线程进入所述提交阶段的第三时间戳;
基于所述第三时间戳、不同访问阶段的互斥锁的分配信息以及所述提交阶段的队内互斥锁的分配信息,构建所述提交阶段的队列;其中,所述提交阶段的队列至少包括一个子队列。
6.根据权利要求1中所述的方法,其特征在于,所述获得不同客户端提交的至少三个线程,包括:
获得来自所述不同客户端的所有线程;
对所述所有线程进行负载均衡处理,得到所述至少三个线程。
7.根据权利要求6所述的方法,其特征在于,所述基于所述子队列的所述队首线程执行访问操作,得到访问信息之后,所述方法包括:
将所述所有线程对应的所述访问信息保存至日志数据库;
相应的,所述基于所述访问信息,生成告警信息,包括:
调用所述日志数据库中的所述访问信息,生成所述告警信息。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述基于所述子队列的所述队首线程执行访问操作,得到访问信息之后,所述方法包括:
唤醒所述子队列的非队首线程;
执行所述队首线程对应的业务和所述非队首线程对应的业务。
9.一种业务告警设备,其特征在于,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至8任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至8任一项所述的方法。
CN202011133359.8A 2020-10-21 2020-10-21 一种业务告警方法、设备及计算机可读存储介质 Active CN112306711B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011133359.8A CN112306711B (zh) 2020-10-21 2020-10-21 一种业务告警方法、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011133359.8A CN112306711B (zh) 2020-10-21 2020-10-21 一种业务告警方法、设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112306711A true CN112306711A (zh) 2021-02-02
CN112306711B CN112306711B (zh) 2024-04-09

Family

ID=74326884

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011133359.8A Active CN112306711B (zh) 2020-10-21 2020-10-21 一种业务告警方法、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112306711B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040010499A1 (en) * 2002-07-02 2004-01-15 Sybase, Inc. Database system with improved methods for asynchronous logging of transactions
CN101018157A (zh) * 2007-02-14 2007-08-15 华为技术有限公司 一种告警处理方法及告警系统
CN102368210A (zh) * 2011-10-25 2012-03-07 曙光信息产业(北京)有限公司 一种分布式系统中基于流水线的元数据日志的方法
CN103577551A (zh) * 2013-10-16 2014-02-12 青岛海信传媒网络技术有限公司 一种数据批量提交到数据库的方法和装置
CN110502523A (zh) * 2019-08-01 2019-11-26 广东浪潮大数据研究有限公司 业务数据存储方法、装置、服务器及计算机可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040010499A1 (en) * 2002-07-02 2004-01-15 Sybase, Inc. Database system with improved methods for asynchronous logging of transactions
CN101018157A (zh) * 2007-02-14 2007-08-15 华为技术有限公司 一种告警处理方法及告警系统
CN102368210A (zh) * 2011-10-25 2012-03-07 曙光信息产业(北京)有限公司 一种分布式系统中基于流水线的元数据日志的方法
CN103577551A (zh) * 2013-10-16 2014-02-12 青岛海信传媒网络技术有限公司 一种数据批量提交到数据库的方法和装置
CN110502523A (zh) * 2019-08-01 2019-11-26 广东浪潮大数据研究有限公司 业务数据存储方法、装置、服务器及计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
YOONGU KIM等: "ATLAS: A scalable and high-performance scheduling algorithm for multiple memory controllers", 《HPCA - 16 2010 THE SIXTEENTH INTERNATIONAL SYMPOSIUM ON HIGH-PERFORMANCE COMPUTER ARCHITECTURE》 *
步超伦等: "随机访问网络后退避机制的性能分析", 《电信科学》 *

Also Published As

Publication number Publication date
CN112306711B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
US8756613B2 (en) Scalable, parallel processing of messages while enforcing custom sequencing criteria
US7818743B2 (en) Logging lock data
CN110188110B (zh) 一种构建分布式锁的方法及装置
US9672231B2 (en) Concurrent access for hierarchical data storage
US11803447B2 (en) Transaction processing method, apparatus, and electronic device for blockchain
CN112084206A (zh) 数据库的事务请求处理方法、相关设备及存储介质
CN115994053A (zh) 数据库备机的并行回放方法、装置、电子设备及介质
JP2013045356A (ja) トランザクション同時実行制御システム、トランザクション同時実行制御方法、およびプログラム
WO2021061438A1 (en) Version-based table locking
CN116561137A (zh) 事务处理方法、装置、计算机设备及存储介质
CN113157426A (zh) 一种任务调度方法、系统、设备及存储介质
US11243873B2 (en) Concurrency testing
CN112306711B (zh) 一种业务告警方法、设备及计算机可读存储介质
WO2024098363A1 (zh) 一种基于多核处理器的并发事务处理方法及其系统
CN115687491A (zh) 一种基于关系型数据库的数据分析任务调度系统
CN112162988A (zh) 一种分布式事务的处理方法、装置和电子设备
Padilha et al. WED-SQL: a relational framework for design and implementation of process-aware information systems
CN113672358A (zh) 定时任务处理方法及装置、系统、电子设备和存储介质
US8584143B2 (en) Collection access in a parallel environment
US20240256551A1 (en) Execution tracing for node cluster
CN111782482B (zh) 接口压力测试方法及相关设备
CN113792051B (zh) 基于多模态锁的数据处理方法、系统、设备和存储介质
CN111309384B (zh) 针对硬件加速器的软硬件交互方法、装置和存储介质
US7284023B2 (en) Database management method and apparatus for addressing to transaction completion from/in a stored program written in an interpreted language and an implementing program therefor
CN112783969B (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
GR01 Patent grant
GR01 Patent grant