[发明专利]用于海量日志查询的流式数据处理方法和系统在审
申请号: | 201611012197.6 | 申请日: | 2016-11-17 |
公开(公告)号: | CN106649580A | 公开(公告)日: | 2017-05-10 |
发明(设计)人: | 朱生尊;于泓;马啸尘;李斌辉;沈智杰;景晓军 | 申请(专利权)人: | 任子行网络技术股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 深圳市顺天达专利商标代理有限公司44217 | 代理人: | 郭伟刚 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 海量 日志 查询 数据处理 方法 系统 | ||
技术领域
本发明涉及网络安全海量日志处理技术领域,尤其涉及一种用于海量日志查询的流式数据处理方法和系统。
背景技术
传统的日志查询方法采用同步方式,客户端接收用户的查询请求,将请求发送到服务端的服务层,服务层接收到请求后转换成对日志数据库的数据查询请求,等待遍历整个结果集的数据并组装成数据结构集合后,随后响应给客户端。
但是随着日志数据库中数据的大规模增加,这种处理方式在处理海量日志查询时存在如下问题:首先,服务器端上的内存不足,无法存放整个大结果集数据;其次,查询机得到结果集的句柄,遍历获得整个结果集的时间跨度较长,导致客户端无响应。
因此,导致了海量日志查询服务器端和客户端的内存瓶颈问题,以及查询数据在客户端上响应及时性差的问题。
发明内容
本发明的目的在于提供一种用于海量日志查询的流式数据处理方法和系统以将数据在查询机器上查询后通过流式传输及时传递到客户端,减少服务器端上内存占用,实现将服务器端上已经遍历出来的数据即时传递到客户端。
一方面,本发明实施例提供一种用于海量日志查询的流式数据处理方法,包括以下步骤:
客户端建立客户端查询线程,向服务端发送日志查询请求;
所述服务端根据所述查询请求,建立流式对象缓冲区,其中,所述流式对象缓冲区包括读取流句柄和写入流句柄;
所述服务端建立服务端查询线程以执行数据查询任务;
所述服务端将所述流式对象缓冲区的所述读取流句柄返回给所述客户端;
所述客户端获得所述服务端的所述流式对象缓冲区的所述读取流句柄的引用,利用所述读取流句柄读取所述流式对象缓冲区中的数据,当读到流结束标志时关闭所述读取流句柄;以及
所述服务端释放所述流式对象缓冲区的数据。
优选地,在客户端建立通信服务句柄,向服务端发送日志查询请求的所述步骤包括:
所述客户端建立所述客户端查询线程;
所述客户端查询线程建立流式传输客户端实例并返回操作句柄;
所述客户端查询线程将查询条件设置在所述操作句柄中;
所述客户端查询线程通过所述操作句柄,向所述服务端发起所述日志查询请求。
优选地,所述服务端建立服务端查询线程以执行数据查询任务的所述步骤包括:
根据所述日志查询条件,所述服务端查询线程向海量日志数据库发出数据查询请求;
所述海量日志数据库解析所述数据查询请求,生成查询结果集;
所述服务端查询线程获取所述查询结果集的句柄;
所述服务端查询线程循环遍历所述结果集句柄,读取结果记录并组成数据对象,写入所述流式对象缓冲区;
当所述服务端查询线程处理结果集的最后一条记录之后,关闭所述流式对象缓冲区的流写入标志,退出所述服务端查询线程。
优选地,所述客户端查询线程为所述客户端线程池中的空闲线程,所述服务端查询线程为所述服务端线程池中的空闲线程。
优选地,在所述服务端查询线程循环遍历所述结果集句柄,读取结果记录并组成数据对象,写入所述流式对象缓冲区的所述步骤中,如果所述流式对象缓冲区已满,则所述服务端查询线程将被阻塞;当所述流式对象缓冲区的数据被读取并出现空闲数据区后,所述服务端查询线程将被唤醒并继续运行。
优选地,如果所述读取流句柄的关闭时,还未退出所述服务端查询线程,将触发所述服务端查询进程的退出。
相应地,本发明还提供一种用于海量日志查询的流式数据处理系统,包括客户端、服务端和海量日志数据库,所述客户端包括查询请求模块和数据读取模块,所述服务端包括流式对象缓冲区建立模块、查询执行模块和数据释放模块,其中,
所述查询请求模块用于建立客户端查询线程,向服务端发送日志查询请求;
所述流式对象缓冲区建立模块用于根据所述查询请求,建立流式对象缓冲区,其中,所述流式对象缓冲区包括读取流句柄和写入流句柄;
所述查询执行模块用于建立服务端查询线程以执行数据查询任务;
所述数据读取模块用于引用所述服务端的所述流式对象缓冲区的所述读取流句柄,利用所述读取流句柄读取所述流式对象缓冲区中的数据,当读到流结束标志时关闭所述读取流句柄;
所述数据释放模块用于释放所述流式对象缓冲区的数据。
优选地,所述查询请求模块包括:
客户端查询进程建立单元,用于建立所述客户端查询线程;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于任子行网络技术股份有限公司,未经任子行网络技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611012197.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:气垫床
- 下一篇:一种网页的修复方法以及客户端