CN106371953B - 紧凑二进制事件日志生成方法及系统 - Google Patents

紧凑二进制事件日志生成方法及系统 Download PDF

Info

Publication number
CN106371953B
CN106371953B CN201610557240.0A CN201610557240A CN106371953B CN 106371953 B CN106371953 B CN 106371953B CN 201610557240 A CN201610557240 A CN 201610557240A CN 106371953 B CN106371953 B CN 106371953B
Authority
CN
China
Prior art keywords
key
event
value
log
value assignment
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.)
Active
Application number
CN201610557240.0A
Other languages
English (en)
Other versions
CN106371953A (zh
Inventor
D.R.谢里顿
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.)
OptumSoft Inc
Original Assignee
OptumSoft Inc
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 OptumSoft Inc filed Critical OptumSoft Inc
Priority to CN202010076039.7A priority Critical patent/CN111552596A/zh
Publication of CN106371953A publication Critical patent/CN106371953A/zh
Application granted granted Critical
Publication of CN106371953B publication Critical patent/CN106371953B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2268Logging of test results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring

Abstract

本发明涉及紧凑二进制事件日志生成。记录包括:获取事件指定消息(EDM),其包括:键的集合、或与键的集合对应的指定的类型、或者二者;在键值仓库中查找与键的集合相关联的值的集合,所述键值仓库存储多个键及其对应的值;使用键的集合和与键的集合对应的值来构造事件;以及输出所构造的事件。

Description

紧凑二进制事件日志生成方法及系统
其它申请的交叉引用
本申请要求2015年7月22日提交的题为“COMPACT BINARY EVENT LOGGENERATION”的美国临时专利申请号62/195,426的优先权,该美国临时专利申请出于所有目的通过引用并入本文。
背景技术
记录是检测和分析性能、安全和事件正确性/一致性问题的重要工具。记录是有益的,因为执行过程的应用不会负担执行分析的资源需求。记录还允许针对后续分析使用独立且各种软件组件而没有并入应用系统软件的详细知识以及对应用系统软件的依赖性。
为了记录对于分析有用的信息,应用系统典型地需要以合理精细粒度记录事件。为了从所得日志提取信息,事件信息需要结构化或半结构化并且合理地完成使得后续处理软件可以从日志提取信息。每一个过程内的信息通常以二进制格式表示。日志信息一般以串格式存储以提供事件的完整描述。出于记录目的而从二进制格式向文本格式转换信息可能引起显著的开销。这样的要求对应用系统强加高开销并且可能使应用性能降级。所需要的是事件日志的空间和时间高效的表示,其允许人们实现可以重构关于系统动作的完整信息的频繁记录而同时引起最小开销。
附图说明
在以下详细描述和附图中公开了本发明的各种实施例。
图1公开了系统图。
图2表示键值分配消息的示例。
图3A描绘事件记录系统。
图3B描绘应用处理器和日志处理器的键值仓库(store)。
图4A是描绘了发送键值分配消息的过程的流程图。
图4B是描绘了发送事件指定消息的过程的流程图。
图4C是描绘了从事件日志获取键值分配消息的过程的流程图。
图5A-H描绘事件记录的过程。
图6描绘结构化键值分配消息的示例。
图7A和7B描绘使用事件日志作为恢复日志的过程。
具体实施方式
本发明可以以众多方式实现,包括作为过程;装置;系统;物质组成;体现在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如配置成执行存储在耦合于处理器的存储器上和/或由所述存储器提供的指令的处理器。在该说明书中,这些实现方式或者本发明可以采取的任何其它形式可以被称为技术。大体上,所公开的过程的步骤的次序可以在本发明的范围内更改。除非以其它方式陈述,否则描述为配置成执行任务的诸如处理器或者存储器之类的组件可以实现为临时配置成在给定时间执行该任务的通用组件或者制造成执行该任务的专用组件。如本文中使用的,术语“处理器”是指配置成处理诸如计算机程序指令之类的数据的一个或多个设备、电路和/或处理核。
在下文连同说明本发明的原理的附图来提供对本发明的一个或多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限制并且本发明涵盖众多可替换方案、修改和等同方案。在以下描述中阐述众多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节并且本发明可以在没有这些具体细节中的一些或全部的情况下根据权利要求而实践。出于清楚性目的,未详细描述在涉及本发明的技术领域中已知的技术素材,使得不会非必要地使本发明模糊。
公开了减少记录开销的高效事件记录技术。事件是应用特定的并且描述发生在应用内的有意义活动。例如,对于存储文档(其中一些文档可能是绝对机密的)的服务器而言,事件可以在人员尝试从服务器下载绝对机密文档时发生。在一些实施例中,记录技术采用键值协议(KVP)来记录事件。KVP被结构化为键值分配消息(KVAM)的序列,其中每一个KVAM包括键(key)和值。当应用运行在应用处理器上时,值更新并且事件发生。应用处理器维持键值仓库(KVS)以反映应用的状态。每当应用中的值更新时,应用处理器更新其自身的KVS以反映改变并且发送KVAM以存储在事件日志中。日志处理器能够访问来自事件日志的KVAM并且更新其自身的键值仓库。日志处理器维持其自身的KVS以反映运行在应用处理器上的应用的状态。当事件发生时,应用处理器将事件指定消息(EDM)发送给事件日志。EDM指定对于重构事件的完整描述所要求的键。运行在日志处理器上的后续处理软件能够访问来自事件日志的EDM,从日志处理器的KVS查找键,并且重构事件的完整描述。通过如此做,日志处理器能够重构事件的完整描述而同时最小化由应用处理器创建事件的完整描述所要求的开销量。
图1是图示了依照一些实施例的用于事件记录的编程计算机系统的功能图。如所示,图1提供了依照一些实施例的被编程用于事件记录的通用计算机系统的功能图。如将显而易见的,可以使用其它计算机系统架构和配置来执行事件记录。包括如下文描述的各种子系统的计算机系统100包括至少一个微处理器子系统,其还称为处理器或中央处理单元(“CPU”)102。例如,处理器102可以由单芯片处理器或者由多个核和/或处理器来实现。在一些实施例中,处理器102是控制计算机系统100的操作的通用数字处理器。使用从存储器110检索的指令,处理器102控制输入数据的接收和操纵,以及输出设备(例如显示器118)上的数据的输出和显示。
处理器102与存储器110双向耦合,存储器110可以包括典型地为随机存取存储器(“RAM”)的第一主要存储装置以及典型地为只读存储器(“ROM”)的第二主要存储区域。如本领域中所公知的,主要存储装置可以用作通用存储区域并用作高速暂存存储器,并且也可以用于存储输入数据和经处理的数据。除用于在处理器102上操作的过程的其它数据和指令之外,主要存储装置还可以以数据对象和文本对象的形式存储编程指令和数据。同样如本领域中所公知的,主要存储装置典型地包括由处理器102用来执行其功能的基本操作指令、程序代码、数据和对象,例如经编程的指令。例如,主要存储设备110可以包括下文描述的任何适当的计算机可读存储介质,这取决于例如需要数据访问是双向还是单向。例如,处理器102也可以在高速缓存存储器(未示出)中直接地且非常快速地检索和存储频繁需要的数据。
可移除大容量存储设备112提供用于计算机系统100的附加数据存储容量,并且双向(读/写)或单向(仅读)地耦合到处理器102。例如,存储装置112还可以包括计算机可读介质,诸如磁带、闪存、PC-CARDS、便携式大容量存储设备、全息存储设备和其它存储设备。固定大容量存储装置120还可以例如提供附加数据存储容量。大容量存储装置120的最常见示例是硬盘驱动器。大容量存储装置112、120一般存储附加编程指令、数据等,其典型地不处于由处理器102的有效使用中。将领会到,保留在大容量存储装置112、120内的信息可以以标准方式作为主要存储装置110(例如RAM)的部分、作为虚拟存储器而并入(如果需要的话)。
除了向存储子系统提供处理器102访问之外,总线114可以也用于提供对其它子系统和设备的访问。如所示,这些可以包括显示监视器118、网络接口116、键盘104和定点设备106,以及辅助输入/输出设备接口、声卡、扬声器和其它子系统,如所需要的。例如,定点设备106可以是鼠标、触笔、追踪球或写字板(tablet),并且可用于与图形用户接口交互。
网络接口116允许处理器102使用网络连接而耦合到另一计算机、计算机网络或电信网络,如所示的。例如,通过网络接口116,处理器102可以在执行方法/过程步骤的进程中从另一网络接收信息(例如数据对象或程序指令),或者向另一网络输出信息。通常表示为要在处理器上执行的指令的序列的信息可以从另一网络接收以及输出到另一网络。由处理器102实现(例如在处理器102上执行/实施)的接口卡或类似设备及适当的软件可以用于将计算机系统100连接到外部网络并且根据标准协议传递数据。例如,本文公开的各种过程实施例可以在处理器102上执行,或者可以跨网络(诸如互联网、内联网或局域网)与共享处理的部分的远程处理器结合地执行。贯穿该说明书,“网络”是指计算机组件之间的任何互连,包括互联网、以太网、内联网、局域网(“LAN”)、家庭区域网(“HAN”)、串行连接、并行连接、广域网(“WAN”)、光纤信道、PCI/PCI-X、AGP、VL总线、PCI扩展、扩展卡、无线带宽技术、ACCESS总线、无线LAN、WiFi、家用PNA、光纤、G.hn、红外网络、卫星网络、微波网络、蜂窝网络、虚拟专用网络(“VPN”)、通用串行总线(“USB”)、火线、串行ATA、1-Wire、UNI/O或者将同质、异质系统和/或系统群组连接在一起的任何形式。未示出的附加大容量存储设备也可以通过网络接口116连接到处理器102。
未示出的辅助I/O设备接口可以与计算机系统100结合地使用。辅助I/O设备接口可以包括通用和自定义的接口,其允许处理器102发送以及更典型地接收来自其它设备的数据,所述其它设备诸如麦克风、触敏显示器、换能器读卡器、磁带读取器、语音或手写识别器、生物计量读取器、相机、便携式大容量存储设备和其它计算机。
此外,本文公开的各种实施例还涉及具有计算机可读介质的计算机存储产品,其包括用于执行各种计算机实现的操作的程序代码。计算机可读介质是可以存储数据的任何数据存储设备,所述数据可以之后由计算机系统读取。计算机可读介质的示例包括但不限于以上提及的所有介质:磁性介质,诸如硬盘、软盘和磁带;光学介质,诸如CD-ROM盘;磁光介质,诸如光盘;以及专门配置的硬件设备,诸如专用集成电路(“ASIC”)、可编程逻辑器件(“PLD”)以及ROM和RAM设备。程序代码的示例包括如例如由编译器产生的机器代码或者包含较高等级代码的文件(例如可以使用解译器执行的脚本)二者。
在图1中示出的计算机系统仅仅是适于供本文公开的各种实施例使用的计算机系统的示例。适于这样的使用的其它计算机系统可以包括附加的或更少的子系统。此外,总线114图示了用于链接子系统的任何互连方案。也可以利用具有不同配置的子系统的其它计算机架构。
图2描绘可以在键值协议(KVP)中使用的键值分配消息(KVAM)的示例。在所示示例中,诸如201之类的KVAM是基本构建块,其允许在KVP中限定类型、属性、表示等。KVAM 201包括头文件、键和值。头文件包括长度字段和控制位,其指示如何解译KVAM的键部分。KVAM的键部分指示感兴趣的性质,并且KVAM的值部分指示针对该性质的值。例如,键值对“user(用户)”=“jsmith”可以使用在事件的描述中以指示值(例如标识符)“jsmith”与键“user”相关联。在其它实施例中可以使用其它KVAM字段和格式。
事件指定消息(EDM)是特定类型的KVAM。在所示示例中,诸如202之类的KVAM是EDM并且包括键值对“Event_A(事件_A)”=“Key(键) 1,Key 2,Key 3”。Key 1,Key 2和Key 3用于表示所使用的实际键,诸如“user”、“severity”、“errorCode”等。EDM指定标识描述事件的状态的键的列表。EDM的键部分是用于向后续处理软件指示KVAM是EDM的特定值。EDM中的值指定用于创建事件的完整描述的一个或多个键。在所示示例中,“Key 1”、“Key 2”和“Key3”由后续处理软件用来创建“Event_A”的描述。这减少创建“Event_A”的描述所要求的开销量,因为代替于在每次发生事件时发送事件的整个描述,之后的EDM可以参照之前发送和存储在日志处理器的KVS中的值。EDM还可以包含事件的时间的指示。
KVP还减少记录事件方面的开销,因为创建事件的描述所要求的键可以通过使用事件限定而间接地参照。EDM可以被限定成使得其指定与键的列表相关联的值,而不是每次重复与事件相关联的键的实际列表。在该情况下,日志处理器查找其KVS中的键以检索存储用于事件的实际键的列表的值,然后继续查找与这些实际键相关联的值以得到与事件相关联的实际值。这进一步减少开销量,因为代替于发送具有键值对“Event_A”=“Key 1,Key 2,Key 3”的KVAM 202,应用处理器能够发送具有键值对“Event_key(事件_键)”=“Event_A”的KVAM 203。当创建事件的描述时,后续处理软件确定“Event_key”引用“Event_A”,其从之前的消息确定“Event_A”=“Key 1,Key 2,Key 3”。KVAM 202和KVAM 203使后续处理创建事件的相同描述。二者都减少创建“Event_A”的描述所要求的开销量,因为EDM的两个实例不要求消息中的事件的完整描述。KVAM 203还减少所发送的信息量,如果给定事件发生多于一次的话。
KVP消息的基于类型的解译
在一些实施例中,列出一个或多个键的键值对被视为类型限定。KVP允许其它键值对基于预限定或用户限定的限定来构造附加KVP。例如,“Event_key”可以被视为“baseEvent(基础事件)”。然后,随后的类型限定键值对可以引用该“baseEvent”作为其基本类型,由此将该“baseEvent”中的每一个键有效地包括到其限定中。在所提供的示例中,“Event_key2”可以限定为“Event_key, Key 4, Key 5”。当被后续处理软件所遇到时,后续处理软件确定“Event_key2”的完整描述包括与“Key 1”、“Key 2”、“Key 3”、“Key 4”和“Key5”相关联的值。
在实施例中,KVS中的键可以与不同类型相关联。例如,应用可以使用类型账户ID,其被表示为(二进制)32位整数。KVP可以支持在事件日志中以该二进制形式发送账户ID以避免在生成需要指定账户ID的事件时转换成某种其它形式的开销。相比于事件日志的常规键值文本表示,不需要从计算机内部二进制表示向文本格式的转换,因为事件值以与它们使用在程序中的相同的二进制表示来编写,这节省开销。该二进制表示一般比文本格式更紧凑(compact),从而减少需要编写的字节的数目。一些其它键可以使用浮点表示或字符串表示。在一些实施例中,键对应于以命名值的列举。例如,列举可以对应于颜色,从而将0限定为黑色,1限定为红色,2限定为蓝色,并且将3限定为黄色。针对关于每一个使用的属性而发送完整类型描述性信息将引起显著的开销。
键可以引用其它键。这样的键被视为类型并且所引用的键被视为类型的属性。术语属性用于指代具有附加相关联的元数据的键,诸如其类型、其表示等。提供所预留的KVAM(或消息集合),其允许对应于可能在KVAM中发生的attributeId(属性ID)键而限定属性。在实施例中,这样的消息指定attitudeId、属性名称、索引和值类型,以及可能地关于属性的其它信息。在实施例中,索引和值类型通过引用之前限定的类型或由系统300使用的公知/基本类型的typeId(类型ID)指定。例如,可以预限定针对整数、标志、浮点数字、字符串串等的typeId。在实施例中,提供所预留的KVP消息(或消息集合),其允许根据属性的列表来限定类型。例如,键值对Position(位置)类型可以限定为包含x、y和z属性,即“Position”=“x、y、z”,每一个类型浮点,从而允许几何应用报告包括位置的事件。在实施例中,提供所预留的KVP消息(或消息集合),其允许objectId(对象ID)根据typeId限定即具有指定类型。
通过在实现相关联的attributeId和typeId的键值协议之前将类型和属性限定信息添附到日志,事件日志处理应用可以构造和解译KVS,由此允许事件日志处理应用在不具有所有应用类型的完整先验知识的情况下处理日志中的事件。作为结果,不要求事件日志处理应用将内部值转换成由事件日志后续处理应用所支持的受约束的固定类型集合,诸如字符串。
利用该类型和属性支持,使用KVP,应用处理器可以使用基本表示类型之一以二进制形式发送值,诸如布尔符号、字节、半字、字、双字、浮点等,并且接收器即日志处理器能够正确地解译紧凑二进制表示。类型和属性限定能力被称为内省(introspection)支持。
使用KVP,后续处理软件读取类型和属性限定,然后读取消息序列以再创建属性的状态。
图3A是示出实现KVP并且使用KVAM通信的系统的实施例的图。在所示示例中,事件记录系统300包括应用处理器302、事件日志310、日志处理器312、后续处理软件322和输出332。应用处理器302包括KVS 304。KVS 304维持运行在应用处理器302上的应用的状态。使用KVP,应用处理器302可以使日志处理器312更新KVS 314以复制KVS 304的状态,假定存在KVS 304与KVS 314之间的一致初始状态的话。当更新应用的值时,应用处理器302更新KVS314中的对应键的值。应用处理器302将KVAM发送给事件日志310以反映更新。事件日志310是存储从应用处理器302发送的KVAM的数据库或存储器。日志处理器312包括其自身的KVS314。日志处理器312接收存储在事件日志310中的KVAM并且更新KVS 314。
事件日志310从应用处理器302接收KVAM。事件日志310中的KVAM自之前的EDM起与当前EDM相关联。如果EDM引用自最后的EDM起尚未更新的键值对,则使用存储在与该键值对相关联的KVS 314中的值再创建事件的描述。在另一实施例中,当前EDM与发生在当前EDM之后且在随后EDM之前的一个或多个键值分配消息相关联。
后续处理软件322可以驻留在日志处理器312中或者驻留在连接到日志处理器312且可访问日志处理器312的不同计算机上。后续处理软件322访问存储在事件日志310中的EDM。后续处理软件322分析EDM以确定创建事件的完整描述所必要的相关联的键。以上描述的组件可以实现为在一个或多个处理器上执行的软件组件,实现为硬件组件,诸如可编程逻辑器件(例如微处理器、现场可编程门阵列(FPGA)、数字信号处理器(DSP)等)、设计成执行某些功能的专用集成电路(ASIC)、或其组合。在一些实施例中,组件可以以软件产品的形式体现,其可以存储在非易失性存储介质(诸如光盘、闪存设备、移动硬盘等)中,包括用于使计算机设备(诸如个人计算机、服务器、网络仪器等)实现本申请的实施例中描述的方法的数个指令。组件可以实现在单个设备上或者跨多个设备分布。组件的功能可以合并到彼此中或者进一步划分成多个子组件。
从后续处理软件322向输出332提供事件的完整描述。输出332可以是存储事件的文件、存储事件的数据库、显示事件的监视器或屏幕等。在一些实施例中,事件被输出到计算模块(例如日志事件重构模块),其处理所生成的事件日志。
图3B描绘应用处理器的KVS的实施例和日志处理器的KVS的实施例。示例具体地图示了应用处理器302的KVS 304和日志处理器312的KVS 314。在所示示例中,KVS 314和KVS304的状态相同。将应用处理器302的KVS 304再创建成日志处理器312的KVS 314意味着应用处理器302不负担执行后续记录分析的资源需求。后续处理软件322可以生成事件的完整描述而不使用应用处理器302的资源。
图4A是描绘了用于将KVAM发送给事件日志的过程的实施例的流程图。过程400可以由应用处理器302执行以将KVAM发送给事件日志310。
在402中,应用在应用处理器302上运行(执行)。例如,应用的非限制性示例包括网络处理应用、银行软件应用、购买订单应用、或者其中它可用于记录事件的任何其它应用。
在404中,应用的值已经改变和/或更新。值可以是经受改变的应用的任何变量。例如,应用的用户可能已经改变,或者与事件相关联的严重水平可能已经改变。在非限制性示例中,假定针对“key 1”的值已经从“X”改变成“Y”。
在406中,应用处理器302更新KVS 304中的键值对以反映更新。例如,如果键值对之前为“key 1”=“X”,但是现在已经变成Y,则KVS 304中的键值对被更新成“key 1”=“Y”。
在408中,应用处理器302将KVAM发送给事件日志310以反映值中的改变。在一些实施例中,KVAM具有与KVAM 201的配置类似的配置。在以上非限制性示例中,KVAM包括头文件部分,键部分中的“key 1”指示正更新的键,以及值部分中的“Y”指示“key 1”现在具有值“Y”。
图4B是描绘了用于向事件日志发送EDM的过程的实施例的流程图。过程410可以由应用处理器302执行以向事件日志310发送EDM。在412中,应用在应用处理器302上运行。
在414中,事件已经在应用内发生。事件是应用特定的并且描述发生在应用内的有意义活动。事件的非限制性示例包括用户何时已经尝试访问绝对机密的文档、用户何时试图完成购买交易、或者用户何时从银行账户取钱。
在416中,应用处理器302生成EDM以记录事件。生成EDM包括标识与事件相关联的键。EDM的限定存储在KVS 304中。应用处理器302访问KVS 304并且标识与事件相关联的键。在一些实施例中,应用处理器302将EDM配置成具有类似于KVAM 202的结构。在其它实施例中,应用处理器302将EDM配置成具有类似于KVAM 203的结构。
在418中,应用处理器302向事件日志301发送EDM。在一些实施例中,EDM包括作为EDM的值部分的一部分的时间戳。当后续处理软件322从EDM创建事件的描述时,其能够将事件与特定时刻相关联。
图4C是描绘了用于创建事件的描述的过程的实施例的流程图。过程420可以通过日志处理器312访问事件日志310并且执行后续处理软件322而实施。
在422中,日志处理器312从事件日志310获取KVAM。KVAM一存储于事件日志310中,日志处理器312就可以获取它,或者日志处理器312可以在之后安排的时间获取KVAM。例如,日志处理器312可以在KVAM存储于事件日志310中之后的一秒、一分钟、一小时、一天、一周或数月从事件日志310获取KVAM。
在424中,后续处理软件322确定KVAM是否为EDM。后续处理软件322访问KVS 314并且将KVAM的键字段与已知EDM键值的列表相比较。某些键(诸如“Event_A”、“baseEvent”、“Event_key”或“Event_key2”)被指定为EDM的键。在运行时间将设计为事件指定键的键提供给日志处理器312。在一些实施例中,在任何时间创建事件,并且包括事件指定键的事件限定存储在KVS 314中。
如果后续处理软件322确定KVAM包括指定键之一,则后续处理软件322配置成将KVAM处置为EDM。如果KVAM不包括事件指定键,则KVAM被处置为常规KVAM,并且在426中,日志处理器312更新KVS 314的状态。
如果KVAM包括事件指定键,则在428处,后续处理软件322从KVS 314查找与事件相关联的键。后续处理软件322是由日志处理器312执行的程序或者是在连接到日志处理器312并可访问日志处理器312的不同计算机上执行的程序。
在430中,后续处理软件322使用直接或间接由EDM指定的键来构造事件。在432中,事件描述被输出到文件或数据库,显示给操作者,或者任何其它适当的目的地。
图5A-5H图示了使用KVP更新键值仓库的示例。所图示的步骤可以使用在图3A中描绘的系统300执行。在图5A中,在t=t0(运行时间)处,从应用处理器302向日志处理器312发送事件类型限定和属性限定。这些限定允许后续处理软件322恰当地解译KVAM并且创建事件的完整描述。在所示示例中,针对P_Stat事件的限定要从应用处理器302发送给日志处理器312。“P_Stat”事件使应用处理器302报告分组统计。例如,分组统计可以基于周期地报告,诸如每十分钟、每小时、每天、每周、每月等。分组统计也可以基于非周期地报告,诸如在来自用户的命令时或者在来自另一系统的请求时。针对“P_Stat”事件的限定存储在KVS304中。针对P_Stat事件的限定包括键“PR”、“PT”和“PD”。“PR”是针对“所接收的分组”的简称,“PT”是针对“所发送的分组”的简称,并且“PD”是针对“所丢失的分组”的简称。此时,KVS314尚未存储针对P_Stat的限定,因为日志处理器312尚未从事件日志310获取指示日志处理器312应当更新其KVS 314的KVAM。
在图5B中,在之后的时间t=t1(t0之后的某一时间)处,应用处理器302使用KVAM确定要将针对P_Stat的限定发送给事件日志310。KVAM的键值对是“P_Stat”=“PR、PT、PD”。事件日志310存储KVAM并且日志处理器312从事件日志310访问KVAM。日志处理器312可以在事件日志310存储KVAM之后的任何时间获取KVAM。
在图5C中,在之后的时间t=t2处,日志处理器312从事件日志310获取“P_Stat”限定并且更新KVS 314。日志处理器312可以从事件日志310接收KVAM存储在事件日志310中的指示。可替换地,日志处理器312可以基于预限定的安排从事件日志310检索KVAM。同时,在应用处理器302上执行的过程使应用处理器302更新KVS 304。PR、PT和PD的值已经分别更新为4321、1234和46。应用处理器302将包括改变后的键值对的KVAM的序列发送给事件日志310以反映更新。
在图5D中,在之后的时间t=t3处,日志处理器312从事件日志310访问KVAM并且更新KVS 314。日志处理器312可以从事件日志310接收KVAM存储在事件日志310中的指示。可替换地,日志处理器312可以基于预限定的安排从事件日志310检索KVAM。同时,在t=t3处,“P_Stat”事件发生在应用处理器302处。“P_Stat”事件使应用处理器302向事件日志310发送EDM。
在图5E中,在之后的时间t=t4处,日志处理器312从事件日志310获取EDM,并且后续处理软件322分析EDM的键并确定键“P_Stat”指示该特定KVAM是EDM。日志处理器312可以从事件日志310接收EDM存储在事件日志310中的指示。可替换地,日志处理器312可以基于安排从事件日志310检索EDM。后续处理软件322确定该特定KVAM是EDM,因为P_Stat事件限定之前被发送并存储在KVS 314中。当遇到P_Stat EDM时,后续处理软件322配置成从KVS314检索与键PR、PT和PD相关联的对应值。输出332将事件的描述输出为“在12:01 pm,所接收的分组=4321 所发送的分组=1234 所丢失的分组=46”。如果应用处理器302要在不使用KVP的情况下发送日志事件,则其将使用大量开销。以此方式使用KVP减少所使用的资源和开销的量,因为作为整体的事件描述可以在不会损失任何描述的情况下通过使用KVAM和EDM来缩短。
在图5F中,在之后的时间t=t5处,过程在应用处理器302上执行,从而使应用处理器302更新KVS 304。过程可以输出过程的某些值已经更新的指示。PR和PT的值已经分别更新为5432、2345。应用处理器302将KVAM的序列发送给事件日志310以反映更新。日志处理器312从事件日志310获取KVAM的序列。用于PR和PT的KVAM使日志处理器312更新KVS 314中的对应值。
在图5G中,在之后的时间t=t6处,日志处理器312访问事件日志310中的KVAM并且更新KVS 314。日志处理器312可以从事件日志310接收KVAM存储在事件日志310中的指示。可替换地,日志处理器312可以基于安排从事件日志310检索KVAM。同时,另一“P_Stat”事件发生在应用处理器302处。“P_Stat”事件使应用处理器302向事件日志310发送EDM。未发送针对PD的冗余KVAM,因为在该示例中针对PD的值自最后的“P_Stat”事件起未改变。这也减少开销量,因为之前的PD KVAM的副本不需要从应用处理器302发送到日志处理器312,这是因为KVS 314已经存储针对PD的最新值。
在图5H中,在之后的时间t=t7处,日志处理器312从事件日志310获取EDM,并且后续处理软件322分析EDM的键并确定键“P_Stat”指示该特定KVAM为EDM。后续处理软件322确定该特定KVAM是EDM,因为P_Stat事件限定之前被发送并存储在KVS 314中。当遇到P_StatEDM时,后续处理软件322配置成检索针对PR、PT和PD的对应值。尽管针对PD的值自最后的EDM起未更新,但是后续处理软件322仍旧能够创建事件的描述,因为针对PD的值之前存储在KVS 314中。输出332将事件的描述输出为“在12:10 pm,所接收的分组=5432 所发送的分组=2345 所丢失的分组=46”。
在大规模复杂应用中,与KVP一同使用的键可以以大尺寸结束以便容纳各种不同种类的数据。在一些实施例中,应用状态可以划分为多个逻辑表格,其中键被结构化为表格名称,接着是标识表格内的行的标识符,接着是针对行内的字段的标识符。在该结构未在KVP中识别的情况下,每一个键中的该结构的编码可能引起每消息的显著开销。更新键要求使用结构化的键值协议(SKVP)。在以上示例中,键值对的键部分可以是“table_name.row.field(表格_名称.行.字段)”。SKVP允许对键进行优化。例如,如果当前消息应用于与之前消息相同的表格,则可以通过将头文件中的特定位设置成预限定的值(例如0或1)以指示省略来省略表格的名称。如果当前消息应用于与之前的消息相同的表格和行,则可以将头文件中的位设置成预限定的值以指示可以省略表格名称和行并且仅发送字段指定。KVP以此方式利用头文件的能力减少了事件记录过程中的开销量,因为在每一个更新的情况下发送较少的信息。
对象状态
在一些实施例中,应用的总体状态被划分成不同对象。对象可以是指与应用相关联的组件。对象内的状态还被指定为属性的序列。属性可以是集合属性,在该情况下,对象包括多种多样的属性条目,即多个键值对,一个键值对针对该属性的索引的每一个值。可替换地,属性可以是单个属性,在该情况下,存在固定单个属性条目,即单个键值对,以及因而单个值,并且没有实际索引。
属性条目是键值对,其中键被结构化为“对象-ID,属性ID和索引值”。图6描绘了属性条目的示例。KVAM 601的键部分包括对象-ID、属性ID和索引值。键被结构化成指定对象、属性、以及用于该属性内的属性条目的索引(如果不是单个属性的话),并且值字段是用于该属性条目的新值。在实施例中,对象由二进制ID限定,其是映射到对象状态的数值。类似地,属性由ID标识。索引值和属性条目可以具有特定于应用的类型,如在对象的声明中所限定。例如,索引值可以是诸如“Jsmith”之类的字符串值,其标识描述负责人集合中的负责人或相关联用户的对象。
在另一示例中,对象-ID可以是指特定服务器,属性-ID可以是指该服务器的负载平均,并且索引值可以是指与负载平均相关联的值的集合。在一些实施例中,索引值0对应于最后一秒之上的负载平均,索引值1对应于最后一分钟之上的负载平均,并且索引值2对应于最后五分钟之上的负载平均。KVS可以使用诸如“server.load_avg.2”=“100”之类的SKVP消息来更新,从而指示针对服务器的过去五分钟之上的负载平均为“100”。
在一些实施例中,SKVP可以以各种方式优化。例如,如果当前消息指定与先前消息相同的objectId,则objectId可以省略,并且当前消息中的一些指定(诸如消息头文件中的位)可以设置成指示应当使用先前消息的objectId。如果接连消息的序列是指相同对象和属性,则这些更新可以一次组合到指定objectId和attributeId的单个较长消息中,接着是(indexValue(索引值),newValue(新的值))对的序列。此外,SKVP中的各个值可以使用如在ISO ASN.1 BER或类似标准中使用的紧凑二进制编码来压缩。在一些实施例中,通过二进制ID标识对象,其为映射到对象状态的数值。
可恢复键值协议
在一些实施例中,在可恢复KVP(RKVP)中,要求应用处理器302将当前KVS状态提供给连接设置上的日志处理器312,即便该状态在日志处理器312发起所述连接之前编写。这与仅接收数据的常规传输协议的不同之处在于,在已经建立连接之后将它提供给传输层。
RKVP允许日志处理器312在连接失败之后从应用处理器302再同步KVS 314,从而允许从连接失败的一致恢复,即便恢复是到分离的源节点,甚至在切换到分离源的时段期间存在消息失去的情况下。此外,协议确保KVS 314在静止下会聚于KVS 304。例如,应用处理器302针对每一个键发送存储在KVS 304中的最后的值。在一些实施例中,RKVP可能丢失关于到日志处理器312的连接的某些更新,如果RKVP保留这样做的指示的话,从而允许RKVP之后通过再发送(多个)所丢失的更新或者整个KVS而使KVS 314与KVS 304一致。RKVP还可以保留所丢失的更新的指示。
图7A-B图示了使用事件日志作为恢复日志的示例。事件日志310用于在事故或电力故障的事件中恢复KVS 304的状态。日志处理器312再读取事件日志以再构成应用状态。例如,在之后的时间t=t8处,应用处理器302与日志处理器312之间的连接已经丢失。当应用的状态改变时,应用处理器302继续更新其KVS 304。即便日志处理器312离线,每当值被更新时,应用处理器302也继续将KVAM发送给事件日志310。作为结果,KVS 304和KVS 314不同步。事件日志310允许KVS 304和KVS 314在重新建立应用处理器302与日志处理器312之间的连接时再同步。特别地,在之后的时间t=t9处,日志处理器312恢复在线,从事件日志310获取KVAM,并且更新KVS 314。在一些实施例中,事件日志310存储整个KVS 304需要在再连接时再发送的指示。在一些实施例中,事件日志310在日志处理器312恢复在线时存储要再发送的键的列表。当再连接时,从KVS 304检索与列表上的键相关联的值以(再)生成相关联的KVAM并且将(多个)相关联的键值分配消息(再)发送给KVS 314。
作为事件日志的持久日志
在实施例中,使用KVP表示将应用状态更新的一些部分(或全部)编写到一个或多个恢复日志文件,从而允许该状态在事故或电力故障的情况下恢复,这是通过从日志记录再读取文件并重构应用状态。在这样的实施例中,这样的恢复日志也可以充当事件日志文件,其中每一个事件被限定为由区分的消息所划定的消息的集合(以及因而其对应的键值对),从而有效地充当EDM。
在实施例中,事件日志310中的EDM是交易提交指示消息。交易提交指示消息和交易中断消息用在恢复日志中以确定是否提交针对KVS 314的KVS更新。除EDM 202和203之外,应用处理器302将交易提交指示和中断消息发送给事件日志310。交易提交指示消息指示应当提交针对KVS 314的更新。在一些实施例中,键值对被更新并且未被提交直到接收到交易提交消息。在这样的实施例中,事件可以被限定为该交易提交指示消息之前的KVAM消息,其在之前的交易提交指示消息之后开始。在不同的实施例中,事件被限定为该EDM的范围内的所有属性的当前状态,而与状态自之前的EDM起是否已经更新无关。在实施例中,事件日志后续处理器配置成取决于后续处理的要求而应用一个解译或另一个。例如,在银行上下文中,在时间Ti应用于银行账户BA的事件可以被解译为:a)时间Ti时的针对BA的改变,或者b)在时间Ti的BA的状态。交易提交指示消息包括提交动作的时间的指示。在实施例中,交易提交消息标识交易以及与交易相关联的其它处理信息,诸如交易代表其执行的用户。因而,状态事件的上下文可以从该交易信息直接地或间接地确定。
中断消息指示不应当提交自之前的交易提交指示消息起的针对键值对的更新。例如,在一些实施例中,键值对被更新,但是其后接着中断消息。在这样的实施例中,可以忽略在最后的交易提交指示消息之后但在中断消息之前的值,并且键值对将还原回到其之前的值。
在实施例中,持久文件管理周期性地创建应用状态即给定时间T(可能地为当前时间)处的状态的检查点。检查点文件与自检查点的时间起的持久日志记录一起允许RKVP的高效实现。
在实施例中,所区分的属性被提供为独立于提交处理的EDM,其典型地指定构成事件的所选状态(就属性而言)的时间和可能地某种指示。
在实施例中,描述持久日志中所表示的类型、属性和对象的内省信息被编写,因此,内省信息可用于事件后续处理应用。该内省信息允许事件后续处理322在没有关于在日志中持久化的数据的应用类型的先验信息(即,未利用这些类型的知识来编程)的情况下将持久日志解译为事件日志。
使用存储应用状态改变作为事件日志的持久日志的能力减少了由应用所引起的I/O和处理成本,这是相比于针对每一个使用单独措施(means)而言。特别地,如果应用使用来自持久日志的单独事件日志,则其将必须生成并发送针对这些单独日志中的每一个的更新。其还意味着,在基于持续地执行事件日志后续处理而很少地实行从持久日志的恢复的情况下提供恰当持久记录的某种持续验证。后续处理软件322应当检测与持久记录有关的问题作为其对日志的后续处理的部分,甚至是在没有故障转移(fail-over)发生的情况下。
除这些可恢复状态更新之外,存在可恢复状态之外的附加事件,诸如错误条件、建立对状态的访问等。
处理对状态事件记录
在一些实施例中,事件日志310中的KVAM用于分析过程事件。过程事件是指在应用的处理期间发生的未反映在应用的状态(特别是持久状态)中的感兴趣的各种事件。例如,作为事件而记录针对银行账户的改变。交易中断是不反映在针对持久状态的改变中除非存在这样做的明显规定(诸如中断表格、记录或计数)的重要事件。系统管理员可能感兴趣的是人多少次开始改变银行账户但是中断了该过程。该过程将不会记录为事件,因为改变实际上未针对银行账户发生,但是中断过程的记录将存储在事件日志310中。中断消息将被发送给事件日志310并且自最后的交易提交指示消息起的针对过程的任何更新将被中断。以此方式分析事件日志允许追踪应用的行为。这在人尝试访问银行账户并取钱但是实际上未取出钱的事件中针对安全审计尤其有用。应用处理错误类似地通常不表示。
在一些实施例中,执行定时(performance timing)信息(诸如交易何时开始以及交易何时提交)通常也不是应用持久状态的部分。然而,该信息和其它处理事件对于性能分析和安全审计是重要的。
出于若干原因,该信息通常不是持久状态的部分或者可感觉会成为持久状态的部分。首先,执行定时信息通常取决于应用的配置而选择性地报告。例如,在一个实施例中,配置仅记录错误事件,而在另一实施例中,配置选择引起记录执行定时信息的开销。其次,耦合到持久状态意味着记录的成本较高并且有时与持久状态约束冲突。例如,如果持久状态交易地更新,则执行持久状态更新以记录交易中断的事件冒着以下风险:该特定记录也中断以及引起比非交易措施更高的开销。
在实施例中,由应用处理器302执行的应用明确地生成针对单独事件日志的处理事件,与持久状态事件日志(诸如事件日志310)分离。当持久日志被用于状态事件记录时,该方案避免增大这些持久日志的大小,如之前所述。
处理事件日志接口对象
在实施例中,编程框架(跨多个应用共同的)限定一个或多个公知的事件日志接口对象,其包括由系统中的共同处理事件所使用的属性和类型的限定。例如,这样的接口对象可以限定跨多个事件类型所使用的属性,诸如用户、processId(过程ID)、transactionId(交易ID)、文件名称、错误代码等。其还可以限定对应于系统中发生的共同事件的事件类型。
对于接口对象中的每一个可修改属性,存在用于更新该属性的增变器(mutator)进程。当被调用时,每一个增变器生成KVP消息,其描述该属性条目更新。在实施例中,该KVP消息直接或间接编写到事件日志文件,诸如事件日志310。公知的属性和类型然后可以在不发送对应的属性和类型限定消息的情况下用在事件中。而且,相比于基于事件日志中的类型和属性限定消息的动态(在运行时间)构造的表示而言,事件后续处理应用(诸如后续处理软件322)可以具有这些公知类型和属性的更高效表示。
在实施例中,事件日志接口对象可以包括进程以帮助生成共同事件,从而减少应用使用事件记录所要求的开发努力。
在实施例中,一个或多个事件日志接口对象包括从读取自事件日志310的限定消息动态地限定对象和属性表示的构件(means)。然后,更简单的是开发多个事件日志后续处理应用而不复制该机构(mechanism)。例如,一个事件日志后续处理应用对事件日志实时地即在线地后续处理,而另一事件日志后续处理应用将事件日志离线地变换成由各种所谓的大数据处理设施所预期的文本键值对表示。
在实施例中,使用增变器将属性条目编写成与其当前持有的相同的值被检测到并且不会导致KVP消息的生成。
事件日志对象包括类型事件的限定的单个属性、事件,其被限定成包括子属性时间、类型和偏移。
事件时间子属性指定事件的时间。
事件类型子属性指定事件的类型。
事件偏移子属性指定自日志中的之前事件起编写到事件日志310的字节。该字段允许反向读取日志,即从日志的较新部分向日志的较旧部分读取。
在实施例中,事件偏移字段被省略,由此节省由该字段所要求的空间。这种省略意味着直接反向读取日志是不可行的。
在实施例中,事件类型子属性指定之前已经限定成对应于类型限定的二进制ID。该类型限定限定在事件中指定的属性,其中那些被指定为事件日志对象中所限定的属性条目。
增量事件时间和时期(epoch)
在实施例中,事件时间被指定为相对于之前的事件或时期的开始的时间增量,而不管哪个在后。时期的开始通过事件日志对象属性时期来指定,其指定时期的开始的绝对时间。例如,如果时期值当前为12 am午夜并且事件时间在几微秒内,则针对事件时间的值13指示针对事件的绝对时间为午夜过后13微秒。相比于使用绝对时间,该增量表示减少时间字段的大小。其进一步获益于使用沿ASN.1 BER或Google的varInt表示的线的字段的可变大小编码。特别地,随着事件的快速生成,当在显著系统负载之下出现时,事件之间的时间减少,从而减少时间字段的大小。在实施例中,新时期周期性地开始(即编写),因此,事件的绝对时间可以在事件日志的局部部分内确定。在实施例中,事件日志跨每一个表示有限时间段的事件日志文件而划分,其中每一个事件日志文件包含时期消息作为时间的开始。
ID和ID管理
在实施例中,可以使用二进制标识符来高效地标识对象,从而允许事件通过引用指定相关联的对象。例如,错误事件可以与特定文件系统安装相关联。通过使二进制ID与该安装相关联,相比于提供安装的完整描述,事件记录可以更紧凑地表示。
ID也可以使该安装的结束或未安装事件与原始安装事件相关联更容易得多。
要指出:ID的引用管理被简化,因为对象未从日志中删除。ID是指与该ID一起在日志中最后限定的对象。
在实施例中,事件日志对象包含单个instantiationEvent(实例化事件)属性和单个deletionEvent(删除事件)属性。属性类型指定ID在实例化的情况下与该新对象相关联或者在删除的情况下与该对象解除关联。
作为ID的实例的类型ID和类型
在一些实施例中,以名称、ID、baseTypeId(基础类型ID)和属性的列表来限定类型。例如,应用可以要求PurchaseOrder(购买订单)类型,其包括以下属性:
- 购买者
- 购买订单编号
- 订单编号
- 日期
- 美元金额
每一个属性由attributeId标识。类型限定包括根据每一个属性的之前限定使用与该属性相关联的ID标识这些属性中的每一个的ID。
在实施例中,跨多个应用使用的attributeId的基本集合并且因而一般实用(utility)的基本集合预限定在KVP协议中。例如,在实施例中,预限定属性,诸如用户、负责人、processId(过程ID)、拥有者、准许和类似属性,假如它们使用在具有共同名称、数据类型和语义的多个应用中的话。
预限定的属性改进效率,因为它们移除了使应用发行或记录限定的需要。它们还允许支持事件记录的一般软件库直接地支持高效编写和读回这些预限定的属性值更新,以及维持这样的属性的状态。其它属性的限定在接下来的子章节中描述。
在由baseTypeId标识的类型中限定的属性逻辑地包括在该类型中,这在其自身的属性列表前面,在用于编程语言(诸如C++)中的常规继承模型之后。
在实施例中,预限定的KVP消息被输出以限定新的类型,其中消息格式包括针对名称、ID、baseTypeId和属性ID的列表中的每一个的字段。
在实施例中,预限定typeId的基本集合。这些类型对应于编程语言中的内置类型,并且因而包括基本类型,诸如字节、整数、字符串、布尔符号、浮点数等。预限定的类型提供用于使用以上类型限定能力限定附加类型以及用于限定具有这些基本类型之一的新属性的基础。
在实施例中,预限定的类型包括事件记录中的常用类型,诸如TypeId、AttributeId、TimeDelta(时间增量)、Severity(严重性)等。将常用类型包括为预限定类型减少了限定这些类型的应用上的开发和处理开销。
在实施例中,由事件日志使用的(非预限定的)类型限定存储在分离的类型限定文件中,从而允许知晓这些类型而不用读取所有事件日志文件,并且不必在每一个新的事件日志的开始处重复这些限定,作为日志旋转的部分。
一般地,以上内省支持与所选预限定类型、属性和对象一起的组合允许事件日志能力是高效以及可扩展的。
支持应用特定属性
属性通过指定名称、ID、数据typeId和索引typeId来限定(如果为集合的话)。
在实施例中,预限定的KVP消息被输出以限定新的属性,其中消息格式包括针对名称、ID、数据typeId和(可能地)索引typeId中的每一个的字段。该消息的接收器(诸如日志处理器312)被预期成记录消息。
在实施例中,属性限定消息存储在与事件消息分离的文件中,这类似于在分离文件中存储类型限定的原因。在实施例中,类型和属性限定二者存储在相同文件中。
在实施例中,如早前所述,预限定属性的显著集合,从而减少在运行时间处限定这些属性的应用上的开销。
后续处理
在实施例中,后续处理软件程序(诸如后续处理器软件322)读取类型和属性限定并且然后读取消息的序列以再创建属性的状态,从而在读取每一个EDM时提取该状态的相关部分以确定完整事件描述,然后执行期望的事件后续处理。
例如,构建在早前的示例PurchaseOrder上,后续处理软件322:
读取更新属性的零个或更多消息:购买者、purchaseOrderNumber(购买订单编号)、orderNumber(订单编号)、日期和dollarAmount(美元金额),从而节省与指定属性相关联的位置中的每一个更新值。
随后读取指定新PurchaseOrder的EDM,其中EDM指定事件的时间(可能地作为相对于前一事件的增量)以及事件的类型。(事件的类型直接地或间接地指示事件引用PurchaseOrder)。
读取存储在KVS中并且与关联于PurchaseOrder类型的每一个属性相关联的值来重构购买订单。
使用该重构信息,在新的PurchaseOrder事件上执行期望的后续处理。在一个实施例中,该后续处理可以简单地将这样的事件记录转变成常规字符串键值对的序列,以用于由预期该表示的批量应用的随后分析处理。
在另一实施例中,后续处理可以在事件日志内容的后续处理器的解译上直接地执行分析处理或者警报检测。例如,后续处理器可以被分派任务为简单地对指定时间间隔内所接收的PurchaseOrder的总美元金额进行总计。在该情况下,后续处理软件322可以跳过不指定新的PurchaseOrder事件的每一个EDM,并且在每一个PurchaseOrder事件时,仅读取dollarAmount属性的值。
在实施例中,可能的是属性中的一个或多个不需要针对该新的PurchaseOrder而改变。例如,最后的购买订单可能来自相同购买者。在该特定实施例中,事件日志310不需要包含针对该购买者属性的属性更新消息。后续处理器软件322从其针对该属性所保留的状态确定正确的值。
这种KVAM的抑制发生在用户、严重性和交易ID连同指示第一事件的EDM(即startTrans)之前的时间的KVAM明确地在KVAM中发送的情况下,但是针对第二事件而仅发送针对endTrans的EDM和时间KVAM,因为这些较早的键值对值(隐含地两个事件的部分)自第一事件起未改变。
在实施例中,对象ID被指定为KVAM中的键的部分,其标识具有已知类型的对象,因此,通过对象ID有效地且间接地标识对象。也就是说,类型未必在EDM或KVAM中明显地指定。
本申请的关键益处包括高效生成、空间高效性并且可扩展而又足够结构化以允许大量数据挖掘。
可扩展和数据挖掘
事件日志沿各种维度可扩展。首先,新的事件类型可以通过限定新的事件类型而限定。这些扩展可以在运行时间处即在应用的执行期间动态地发生。其次,附加属性或键值对可以被添加到现有事件以扩展其描述。最后,新的应用类型和对象可以在运行时间处指定然后在事件日志中引用。
一般,在该应用中提供的类型、属性和对象限定能力以及事件可以通过多种多样的消息以及KVS状态连同常用的预限定类型、属性和对象一起描述的事实意味着该应用的事件日志可以在空间和处理方面高度可扩展而又高效。
尽管已经出于理解清楚的目的而相当详细地描述了前述实施例,但是本发明不限于所提供的细节。存在实现本发明的许多可替换方式。所公开的实施例是说明性而非限制性。

Claims (19)

1.一种方法,包括:
获取包括一个键和一个或多个值的键值分配消息,其中从具有第一键值仓库的计算机系统发送所述键值分配消息;
确定键值分配消息的键是否对应于事件指定键;
响应于确定键值分配消息的键对应于事件指定键,在第二键值仓库中查找由包括在键值分配消息中的一个或多个值所引用的键的集合,其中所述键的集合具有对应的值;以及
使用键的集合和它们的对应的值来构造与计算机系统相关联的事件。
2.权利要求1所述的方法,其中获取键值分配消息还包括访问包括一个或多个键值分配消息的日志。
3.权利要求2所述的方法,其中日志被用作事件日志记录事件信息和恢复日志记录状态信息。
4.权利要求2所述的方法,其中日志允许所述第二键值仓库在所述计算机系统与存储所述第二键值仓库的接收器之间的连接故障之后与所述计算机系统的所述第一键值仓库再同步。
5.权利要求1所述的方法,其中键被表示为二进制标识符。
6.权利要求1所述的方法,其中键值分配消息指定事件的类型或时间。
7.权利要求1所述的方法,还包括输出所构造的事件。
8.权利要求1所述的方法,其中:
所述键值分配消息从包括一个或多个键值分配消息的日志获取,并且所述方法进一步包括至少部分地基于一个或多个键值分配消息中的一个的键和与一个或多个键值分配消息中的一个的键对应的值来更新所述第二键值仓库。
9.权利要求1所述的方法,其中键值分配消息包括指示与键的集合或类型指定相关联的键值对是否将包括在键值分配消息中的头文件。
10.权利要求9所述的方法,其中构造事件还包括在头文件指示键值对不将包括在键值分配消息中时至少使用与键值对相关联的所存储的值。
11.权利要求1所述的方法,其中事件作为相对于之前的事件或时期的开始的时间增量而在键值分配消息中指定。
12.权利要求1所述的方法,还包括限定键值协议,其中键值协议限定内省消息。
13.权利要求1所述的方法,其中键值分配消息与发生在之前事件指定消息之后的一个或多个键值分配消息相关联。
14.权利要求1所述的方法,其中键值分配消息与发生在之前事件指定消息之后且在随后的事件指定消息之前的一个或多个键值分配消息相关联。
15.权利要求1所述的方法,其中,所述第二键值仓库是所述第一键值仓库的副本。
16.一种系统,包括:
一个或多个处理器,配置成:
获取包括一个键和一个或多个值的键值分配消息,其中从具有第一键值仓库的计算机系统发送所述键值分配消息;
确定键值分配消息的键是否对应于事件指定键;
响应于确定键值分配消息的键对应于事件指定键,在第二键值仓库中查找由包括在键值分配消息中的一个或多个值所引用的键的集合,其中所述键的集合具有对应的值;以及
使用键的集合和它们的对应的值来构造与系统相关联的事件;以及
一个或多个存储器,配置成向一个或多个处理器提供指令。
17.权利要求16所述的系统,其中获取键值分配消息还包括访问包括一个或多个键值分配消息的日志。
18.权利要求17所述的系统,其中日志被用作事件日志记录事件信息和恢复日志记录状态信息。
19.一种非暂时性计算机可读存储介质,其 上存储有计算机程序,所述计算机程序包括计算机指令以用于:
获取包括一个键和一个或多个值的键值分配消息,其中从具有第一键值仓库的计算机系统发送所述键值分配消息;
确定键值分配消息的键是否对应于事件指定键;
响应于确定键值分配消息的键对应于事件指定键,在第二键值仓库中查找由包括在键值分配消息中的一个或多个值所引用的键的集合,其中所述键的集合具有对应的值;以及
使用键的集合和它们的对应的值来构造与计算机系统相关联的事件。
CN201610557240.0A 2015-07-22 2016-07-15 紧凑二进制事件日志生成方法及系统 Active CN106371953B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010076039.7A CN111552596A (zh) 2015-07-22 2016-07-15 紧凑二进制事件日志生成方法及系统

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562195426P 2015-07-22 2015-07-22
US62/195426 2015-07-22
US15/174821 2016-06-06
US15/174,821 US10061629B2 (en) 2015-07-22 2016-06-06 Compact binary event log generation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010076039.7A Division CN111552596A (zh) 2015-07-22 2016-07-15 紧凑二进制事件日志生成方法及系统

Publications (2)

Publication Number Publication Date
CN106371953A CN106371953A (zh) 2017-02-01
CN106371953B true CN106371953B (zh) 2020-02-28

Family

ID=57837217

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010076039.7A Pending CN111552596A (zh) 2015-07-22 2016-07-15 紧凑二进制事件日志生成方法及系统
CN201610557240.0A Active CN106371953B (zh) 2015-07-22 2016-07-15 紧凑二进制事件日志生成方法及系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010076039.7A Pending CN111552596A (zh) 2015-07-22 2016-07-15 紧凑二进制事件日志生成方法及系统

Country Status (2)

Country Link
US (2) US10061629B2 (zh)
CN (2) CN111552596A (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10044505B2 (en) * 2016-11-09 2018-08-07 Sas Institute Inc. Stable data-processing in a distributed computing environment
US10725988B2 (en) * 2017-02-09 2020-07-28 Micron Technology, Inc. KVS tree
CN109447886B (zh) * 2018-10-08 2023-04-11 陕西师范大学 结合emd-21嵌入的带恢复多载体密图分存方法
US10936661B2 (en) 2018-12-26 2021-03-02 Micron Technology, Inc. Data tree with order-based node traversal
CN111913922B (zh) * 2019-05-10 2024-02-20 北京百度网讯科技有限公司 二进制结构化日志的生成方法、装置、设备及存储介质
CN112416957B (zh) * 2020-11-20 2023-12-29 上海幻电信息科技有限公司 基于数据模型层的数据增量更新方法、装置及计算机设备
CN112817809B (zh) * 2020-12-23 2023-09-26 航天信息股份有限公司 设备监控数据模型的构建方法及设备监控方法
CN116450885B (zh) * 2023-02-14 2024-05-03 厦门市兴百邦科技有限公司 一种Windows事件日志文件的数据重构方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1661524A (zh) * 2004-02-23 2005-08-31 乐金电子(中国)研究开发中心有限公司 移动通信终端的键扫描电路
CN103257893A (zh) * 2013-05-28 2013-08-21 腾讯科技(深圳)有限公司 一种获取输入事件状态的方法、装置和系统
US8825848B1 (en) * 2012-03-20 2014-09-02 Emc Corporation Ordering of event records in an electronic system for forensic analysis

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991760A (en) 1997-06-26 1999-11-23 Digital Equipment Corporation Method and apparatus for modifying copies of remotely stored documents using a web browser
JP3566047B2 (ja) 1997-10-17 2004-09-15 富士通株式会社 ネットワークシステム及び通信装置
JP4025429B2 (ja) 1998-08-21 2007-12-19 富士通株式会社 接続制御装置及び接続制御方法
US7657450B2 (en) 2000-12-08 2010-02-02 Microsoft Corporation Reliable, secure and scalable infrastructure for event registration and propagation in a distributed enterprise
US7594267B2 (en) 2001-06-14 2009-09-22 Cisco Technology, Inc. Stateful distributed event processing and adaptive security
US20030041046A1 (en) * 2001-07-28 2003-02-27 Allison Michael S. Method for extracting, filtering and separating events from system firmware and software
US7133369B1 (en) 2002-04-19 2006-11-07 Microsoft Corporation System and method for dynamic caching of data connections
US7707563B2 (en) 2003-01-10 2010-04-27 Nexaweb Technologies Inc System and method for network-based computing
US8499086B2 (en) 2003-01-21 2013-07-30 Dell Products L.P. Client load distribution
KR100584316B1 (ko) 2003-10-17 2006-05-26 삼성전자주식회사 단말장치와 서버간의 프레전스 정보 데이터 동기화를 위한시스템 및 방법
GB2412280A (en) 2004-03-19 2005-09-21 Canon Europa Nv Creating and editing a library of digital media documents
CA2518482C (en) 2005-09-07 2016-05-10 Ibm Canada Limited - Ibm Canada Limitee System and method for activating insurance coverage
US7715307B2 (en) * 2005-12-13 2010-05-11 Alcatel Lucent Communication connection control systems and methods
US20070220481A1 (en) 2006-03-20 2007-09-20 Microsoft Corporation Limited source code regeneration based on model modification
US7613750B2 (en) 2006-05-29 2009-11-03 Microsoft Corporation Creating frequent application-consistent backups efficiently
US7734960B2 (en) 2006-08-14 2010-06-08 Hewlett-Packard Development Company, L.P. Method of managing nodes in computer cluster
US8099737B2 (en) 2007-06-05 2012-01-17 Oracle International Corporation Event processing finite state engine and language
US8724456B1 (en) 2010-05-19 2014-05-13 Juniper Networks, Inc. Network path selection for multi-homed edges to ensure end-to-end resiliency
US20130265984A1 (en) 2011-03-07 2013-10-10 Honggang Li Grouped machine-to-machine communications
US9311175B2 (en) * 2011-05-24 2016-04-12 Verizon Patent And Licensing Inc. Method and system for processing log information
US9031997B2 (en) * 2011-10-25 2015-05-12 International Business Machines Corporation Log file compression
US9037927B2 (en) * 2012-10-04 2015-05-19 Hitachi, Ltd. Event notification system, event information aggregation server, and event notification method
US9547533B2 (en) 2012-10-15 2017-01-17 Optum Soft, Inc. Efficient reliable distributed flow-controlled event propagation
WO2014117298A1 (en) * 2013-01-31 2014-08-07 Hewlett-Packard Development Company, L.P. Event log system
US9286413B1 (en) * 2014-10-09 2016-03-15 Splunk Inc. Presenting a service-monitoring dashboard using key performance indicators derived from machine data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1661524A (zh) * 2004-02-23 2005-08-31 乐金电子(中国)研究开发中心有限公司 移动通信终端的键扫描电路
US8825848B1 (en) * 2012-03-20 2014-09-02 Emc Corporation Ordering of event records in an electronic system for forensic analysis
CN103257893A (zh) * 2013-05-28 2013-08-21 腾讯科技(深圳)有限公司 一种获取输入事件状态的方法、装置和系统

Also Published As

Publication number Publication date
US20190012223A1 (en) 2019-01-10
US10061629B2 (en) 2018-08-28
CN111552596A (zh) 2020-08-18
US20170024272A1 (en) 2017-01-26
US10853157B2 (en) 2020-12-01
CN106371953A (zh) 2017-02-01

Similar Documents

Publication Publication Date Title
CN106371953B (zh) 紧凑二进制事件日志生成方法及系统
JP6514306B2 (ja) バックアップシステムからのデータベースのストリーミング復元
US11455217B2 (en) Transaction consistency query support for replicated data from recovery log to external data stores
KR101840996B1 (ko) 파일 시스템에 대한 체크포인트
US20230325287A1 (en) Data backup method and apparatus, data recovery method and apparatus, and storage medium
US8108343B2 (en) De-duplication and completeness in multi-log based replication
CN108664359B (zh) 一种数据库恢复方法、装置、设备及存储介质
US8904225B2 (en) Stream data processing failure recovery method and device
US9727601B2 (en) Predicting validity of data replication prior to actual replication in a transaction processing system
WO2022063284A1 (zh) 数据同步方法、装置、设备及计算机可读介质
US8001091B2 (en) Apparatus, system, and method for hierarchical rollback of business operations
CN113849348A (zh) 用于处理事件流的事件的系统和方法
KR20150070134A (ko) 가상 데이터베이스를 생성하기 위한 소스 데이터베이스의 지정 시간 복사의 검색
US10747732B2 (en) Virtual database administrator
CN103729442A (zh) 记录事务日志的方法和数据库引擎
US9037905B2 (en) Data processing failure recovery method, system and program
CN114490677A (zh) 数据分析系统中的数据同步
US20120143928A1 (en) File system transaction log flush optimization
US7657664B2 (en) Method and system for tracking device driver requests
CN111026764B (zh) 一种数据存储方法、装置、电子产品及存储介质
US20240103973A1 (en) Leveraging file-system metadata for direct to cloud object storage optimization
US20230333941A1 (en) Method and system for generating and implementing a data protection strategy using metadata
CN113326268A (zh) 一种数据写入、读取方法及装置
Chen A pilot study of cross-system failures
CN114860666A (zh) 一种日志清除时间修改方法、装置及介质

Legal Events

Date Code Title Description
C06 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