交易数据实时监控方法及装置与流程

文档序号:22188317发布日期:2020-09-11 21:58阅读:335来源:国知局
交易数据实时监控方法及装置与流程

本发明涉及交易数据处理技术领域,尤其涉及交易数据实时监控方法及装置。



背景技术:

目前各交易系统的交易数据量巨大,交易种类多,因此有必要对交易数据进行实时分析监控,在遇到交易异常的情况下实时报警。

现有技术中采用基于shell脚本对数据库数据进行监控,在交易数据量日渐增大的情况下,统计耗时长,效率低,而且还可能由于统计期间对数据库进行的操作影响正常联机交易的速度,实时性低,利于在遇到交易异常的情况下进行及时报警。



技术实现要素:

本发明实施例提供一种交易数据实时监控方法,用以实时监控交易数据,提高统计效率和实时性,利于在遇到交易异常的情况下进行及时报警,该方法包括:

利用kafka接收交易平台发送的交易数据和接口规范数据;

根据所述接口规范数据,利用storm对所述交易数据进行解析,生成mongodb数据对象;

根据所述mongodb数据对象,确定交易成功率数据;

根据所述交易成功率数据,进行交易数据实时监控。

本发明实施例提供一种交易数据实时监控装置,用以实时监控交易数据,提高统计效率和实时性,利于在遇到交易异常的情况下进行及时报警,该装置包括:

数据接收模块,用于利用kafka接收交易平台发送的交易数据和接口规范数据;

对象生成模块,用于根据所述接口规范数据,利用storm对所述交易数据进行解析,生成mongodb数据对象;

成功率确定模块,用于根据所述mongodb数据对象,确定交易成功率数据;

监控模块,用于根据所述交易成功率数据,进行交易数据实时监控。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述交易数据实时监控方法。

相对于现有技术中采用基于shell脚本对数据库数据进行监控的方案而言,本发明实施例通过利用kafka接收交易平台发送的交易数据和接口规范数据;根据所述接口规范数据,利用storm对所述交易数据进行解析,生成mongodb数据对象;根据所述mongodb数据对象,确定交易成功率数据;根据所述交易成功率数据,进行交易数据实时监控。本发明实施例根据生成的mongodb数据对象确定交易成功率数据,从而进行交易数据实时监控,无需耗费大量时间进行统计,提高统计效率和实时性,利于在遇到交易异常的情况下进行及时报警。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例交易数据实时监控方法示意图;

图2为本发明实施例交易数据实时监控装置结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

为了实时监控交易数据,提高统计效率和实时性,利于在遇到交易异常的情况下进行及时报警,本发明实施例提供一种交易数据实时监控方法,如图1所示,该方法可以包括:

步骤101、利用kafka接收交易平台发送的交易数据和接口规范数据;

步骤102、根据所述接口规范数据,利用storm对所述交易数据进行解析,生成mongodb数据对象;

步骤103、根据所述mongodb数据对象,确定交易成功率数据;

步骤104、根据所述交易成功率数据,进行交易数据实时监控。

由图1所示可以得知,本发明实施例通过利用kafka接收交易平台发送的交易数据和接口规范数据;根据所述接口规范数据,利用storm对所述交易数据进行解析,生成mongodb数据对象;根据所述mongodb数据对象,确定交易成功率数据;根据所述交易成功率数据,进行交易数据实时监控。本发明实施例根据生成的mongodb数据对象确定交易成功率数据,从而进行交易数据实时监控,无需耗费大量时间进行统计,提高统计效率和实时性,利于在遇到交易异常的情况下进行及时报警。

具体实施时,利用kafka接收交易平台发送的交易数据和接口规范数据。

需要说明的是,kafka最初由linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统,常见可以用于web/nginx日志、访问日志,消息服务等,linkedin于2010年贡献给了apache基金会并成为顶级开源项目。主要应用场景是日志收集系统和消息系统。kafka主要设计目标为:以时间复杂度为o(1)的方式提供消息持久化能力,即使对tb级以上数据也能保证常数时间的访问性能;高吞吐率,即使在非常廉价的商用机器上也能做到单机支持每秒100k条消息的传输;支持kafkaserver间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输;同时支持离线数据处理和实时数据处理;支持在线水平扩展。一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。有两种主要的消息传递模式:点对点传递模式、发布-订阅模式。大部分的消息系统选用发布-订阅模式。kafka就是一种发布-订阅模式。在点对点消息系统中,消息持久化到一个队列中。此时,将有一个或多个消费者消费队列中的数据。但是一条消息只能被消费一次。当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除。该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。在发布-订阅消息系统中,消息被持久化到一个topic中。与点对点消息系统不同的是,消费者可以订阅一个或多个topic,消费者可以消费该topic中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布-订阅消息系统中,消息的生产者称为发布者,消费者称为订阅者。

实施例中,zookeeper是kafka的管理者,kafka在zookeeper注册后,在zookeeper的调度下才能工作。kafka接口规范数据目前定义为17个字段,每个字段用&分隔,具体如下所示:平台标识号&平台系统流水号&收单机构号&发卡机构号&交易码&卡号&金额&币种&商户号&交易日期&交易时间&业务成功标志&系统成功标志&交易开始时间&发送外系统时间&接收外系统时间&交易结束时间。

实施例中,采用zookeeper+kafka,将交易数据发送到kafka,kafka进行实时的流数据传输,可保证大数量下的高可用性,交易平台产生交易数据,一个交易按照info1&info2&info3…&info30的格式生成一条关键交易信息记录,将信息记录实时发送给kafak。进而利用kafka接收交易平台发送的交易数据和接口规范数据。

具体实施时,根据所述接口规范数据,利用storm对所述交易数据进行解析,生成mongodb数据对象。

需要说明的是,storm是twitter开源的分布式实时大数据处理框架,被业界称为实时版hadoop。随着越来越多的场景对hadoop的mapreduce高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统(高频交易、股票)等等,大数据实时处理解决方案的应用日趋广泛,目前已是分布式技术领域最新爆发点,而storm更是流计算技术中的佼佼者和主流。storm对于实时计算的意义类似于hadoop对于批处理的意义。hadoop提供了map、reduce原语,使我们的批处理程序变得简单和高效。同样,storm也为实时计算提供了一些简单高效的原语,而且storm的trident是基于storm原语更高级的抽象框架,类似于基于hadoop的pig框架,让开发更加便利和高效。storm包括如下特性:1、适用场景广泛:storm可以实时处理消息和更新db,对一个数据量进行持续的查询并返回客户端(持续计算),对一个耗资源的查询作实时并行化的处理(分布式方法调用,即drpc),storm的这些基础api可以满足大量的场景;2、可伸缩性高:storm的可伸缩性可以让storm每秒可以处理的消息量达到很高,扩展一个实时计算任务,你所需要做的就是加机器并且提高这个计算任务的并行度,storm使用zookeeper来协调集群内的各种配置使得storm的集群可以很容易的扩展;3、保证无数据丢失:实时系统必须保证所有的数据被成功的处理。那些会丢失数据的系统的适用场景非常窄,而storm保证每一条消息都会被处理,这一点和s4相比有巨大的反差;4、异常健壮:storm集群非常容易管理,轮流重启节点不影响应用;5、容错性好:在消息处理过程中出现异常,storm会进行重试;6、语言无关性:storm的topology和消息处理组件可以用任何语言来定义,这一点使得任何人都可以使用storm。storm的工作原理具体如下:nimbus负责在集群分发的代码,topo只能在nimbus机器上提交,将任务分配给其他机器,和故障监测。supervisor监听分配给它的节点,根据nimbus的委派在必要时启动和关闭工作进程。每个工作进程执行topology的一个子集。一个运行中的topology由很多运行在很多机器上的工作进程组成。在storm中有对于流stream的抽象,流是一个不间断的无界的连续tuple,注意storm在建模事件流时,把流中的事件抽象为tuple即元组。storm认为每个stream都有一个源,也就是原始元组的源头,叫做spout。处理stream内的tuple,抽象为bolt,bolt可以消费任意数量的输入流,只要将流方向导向该bolt,同时它也可以发送新的流给其他bolt使用,这样一来,只要打开特定的spout再将spout中流出的tuple导向特定的bolt,bolt又对导入的流做处理后再导向其他bolt或者目的地。可以认为spout就是水龙头,并且每个水龙头里流出的水是不同的,我们想拿到哪种水就拧开哪个水龙头,然后使用管道将水龙头的水导向到一个水处理器(bolt),水处理器处理后再使用管道导向另一个处理器或者存入容器中。为了增大水处理效率,我们很自然就想到在同个水源处接上多个水龙头并使用多个水处理器,这样就可以提高效率。storm将流中元素抽象为tuple,一个tuple就是一个值列表valuelist,list中的每个value可以是任意可序列化的类型。拓扑的每个节点都要说明它所发射出的元组的字段的name,其他节点只需要订阅该name就可以接收处理。

在上述内容中涉及到几个概念,下面对这些概念进行解释:

streams:消息流,是一个没有边界的tuple序列,而这些tuples会被以一种分布式的方式并行创建和处理。每个tuple可以包含多列,字段类型可以是:integer,long,short,byte,string,double,float,boolean和bytearray。

spouts:消息源,是topology消息生产者。spout从一个外部源(消息队列)读取数据向topology发出tuple。消息源spouts可以是可靠的也可以是不可靠的。一个可靠的消息源可以重新发射一个处理失败的tuple,一个不可靠的消息源spouts不会。spout类的方法nexttuple不断发射tuple到topology,storm在检测到一个tuple被整个topology成功处理的时候调用ack,否则调用fail。storm只对可靠的spout调用ack和fail。

bolts:消息处理者,消息处理逻辑被封装在bolts里面,bolts可以做很多事情:过滤,聚合,查询数据库等。bolts可以简单的做消息流的传递。复杂的消息流处理往往需要很多步骤,从而也就需要经过很多bolts。第一级bolt的输出可以作为下一级bolt的输入。而spout不能有一级。bolts的主要方法是execute连续处理传入的tuple,成功处理完每一个tuple调用outputcollector的ack方法,以通知storm这个tuple被处理完成了。当处理失败时,可以调fail方法通知spout端可以重新发送该tuple。流程是bolts处理一个输入tuple,然后调用ack通知storm自己已经处理过这个tuple了。storm提供了一个ibasicbolt会自动调用ack。bolts使用outputcollector来发射tuple到下一级blot。

实施例中,所述mongodb数据对象包括:mongodb连接对象和mongodb集合对象。

需要说明的是,mongodb是一个基于分布式文件存储的数据库。由c++语言编写。旨在为web应用提供可扩展的高性能数据存储解决方案。mongodb是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。mongodb的设计目标是高性能、可扩展、易部署、易使用,存储数据非常方便。其主要功能特性如下:面向集合存储,容易存储对象类型的数据。在mongodb中数据被分组存储在集合中,集合类似rdbms中的表,一个集合中可以存储无限多的文档;模式自由,采用无模式结构存储,在mongodb中集合中存储的数据是无模式的文档,采用无模式存储数据是集合区别于rdbms中的表的一个重要特征;支持完全索引,可以在任意属性上建立索引,包含内部对象,mongodb的索引和rdbms的索引基本一样,可以在指定属性、内部对象上创建索引以提高查询的速度,除此之外,mongodb还提供创建基于地理空间的索引的能力;支持查询,mongodb支持丰富的查询操作,mongodb几乎支持sql中的大部分查询;强大的聚合工具,mongodb除了提供丰富的查询功能外,还提供强大的聚合工具,如count、group等,支持使用mapreduce完成复杂的聚合任务;支持复制和数据恢复,mongodb支持主从复制机制,可以实现数据备份、故障恢复、读扩展等功能。而基于副本集的复制机制提供了自动故障恢复的功能,确保了集群数据不会丢失;使用高效的二进制数据存储,包括大型对象(如视频),使用二进制格式存储,可以保存任何类型的数据对象;自动处理分片,以支持云计算层次的扩展,mongodb支持集群自动切分数据,对数据进行分片可以使集群存储更多的数据,实现更大的负载,也能保证存储的负载均衡;支持perl、php、java、c#、javascript、ruby、c和c++语言的驱动程序,mongodb提供了当前所有主流开发语言的数据库驱动包,开发人员使用任何一种主流开发语言都可以轻松编程,实现访问mongodb数据库;文件存储格式为bson(json的一种扩展),bson是对二进制格式的json的简称,bson支持文档和数组的嵌套;(11)可以通过网络访问。可以通过网络远程访问mongodb数据库。

实施例中,采用storm对kafka传输过来的数据进行实时的分析处理,按照交易码以秒为维度进行实时的统计,并将处理结果存入mongo数据库中。具体的,从kafka读取交易数据,获取系统当前时间,根据kafka接口规范解析交易数据,若交易数据&分隔数组长度大于12,设置时间戳组装保存mongodb数据对象,获取mongodb连接对象和mongodb集合对象,执行保存mongodb数据库操作。

具体实施时,根据所述mongodb数据对象,确定交易成功率数据,根据所述交易成功率数据,进行交易数据实时监控。

实施例中,根据所述交易成功率数据,进行交易数据实时监控,包括:将所述交易成功率数据与预设阈值进行比较,根据比较结果进行交易数据实时监控。

实施例中,根据所述交易成功率数据,进行交易数据实时监控,包括:将所述交易成功率数据与预设阈值进行比较,根据比较结果在日志中写入所述交易成功率数据对应的监控字段,所述监控字段包括:监控警告字段和监控正常字段;根据所述交易成功率数据对应的监控字段,进行交易数据实时监控。

实施例中,监控字段规则具体如下:采集时间(yyyy-mm-ddhh24:mi:ss)|总交易量|总交易成功量|间隔时间内的交易量|间隔时间内的交易成功量|间隔时间内的交易成功率|平均交易响应时间|总交易金额|间隔时间内的交易金额|交易类型|交易名称|交易成功率状态|交易响应时间状态|平均后台响应时间|后台响应时间状态,其中,可以通过监控交易成功率状态,交易响应时间状态和后台响应时间状态的三个状态值实现报警。

实施例中,从mongo数据库中读取数据,并按照预先配置的监控时间间隔对mongo数据库中的统计结果进行加工处理,对于交易成功率低于阈值的交易生成warn字样存入文本中,使用脚本监控文本数据,如果监控到warn,即可实时报警。具体的,获取mongodb连接对象和mongodb集合对象,将mongodb数据库结果按交易码统计交易成功率,并取平均值,判断是否超过设置阈值,若没有超过阈值则在日志中按照监控字段规则依次写入,将监控字段置为tran_warn;若超过阈值则在日志中按照监控字段规则依次写入,监控字段为tran_normal。进而,监控是否存在tran_warn字段,一旦出现,触发报警机制,通知维护人员。

基于同一发明构思,本发明实施例还提供了一种交易数据实时监控装置,如下面的实施例所述。由于这些解决问题的原理与交易数据实时监控方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

图2为本发明实施例中交易数据实时监控装置的结构图,如图2所示,该装置包括:

数据接收模块201,用于利用kafka接收交易平台发送的交易数据和接口规范数据;

对象生成模块202,用于根据所述接口规范数据,利用storm对所述交易数据进行解析,生成mongodb数据对象;

成功率确定模块203,用于根据所述mongodb数据对象,确定交易成功率数据;

监控模块204,用于根据所述交易成功率数据,进行交易数据实时监控。

一个实施例中,所述mongodb数据对象包括:mongodb连接对象和mongodb集合对象。

一个实施例中,所述监控模块204进一步用于:

将所述交易成功率数据与预设阈值进行比较,根据比较结果进行交易数据实时监控。

一个实施例中,所述监控模块204进一步用于:

将所述交易成功率数据与预设阈值进行比较,根据比较结果在日志中写入所述交易成功率数据对应的监控字段,所述监控字段包括:监控警告字段和监控正常字段;

根据所述交易成功率数据对应的监控字段,进行交易数据实时监控。

综上所述,本发明实施例通过利用kafka接收交易平台发送的交易数据和接口规范数据;根据所述接口规范数据,利用storm对所述交易数据进行解析,生成mongodb数据对象;根据所述mongodb数据对象,确定交易成功率数据;根据所述交易成功率数据,进行交易数据实时监控。本发明实施例根据生成的mongodb数据对象确定交易成功率数据,从而进行交易数据实时监控,无需耗费大量时间进行统计,提高统计效率和实时性,利于在遇到交易异常的情况下进行及时报警。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1