CN107766566A - 一种处理实时大批量推送数据入库的方法 - Google Patents
一种处理实时大批量推送数据入库的方法 Download PDFInfo
- Publication number
- CN107766566A CN107766566A CN201711090139.XA CN201711090139A CN107766566A CN 107766566 A CN107766566 A CN 107766566A CN 201711090139 A CN201711090139 A CN 201711090139A CN 107766566 A CN107766566 A CN 107766566A
- Authority
- CN
- China
- Prior art keywords
- data
- data processing
- websocket
- queue
- propelling
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种处理实时大批量推送数据入库的方法,涉及软件技术领域。包括:配置webSocket连接通道,初始化队列和连接池,推送数据使用webSocket方式连接推送源,接收数据;Websocket将接收到的数据写入队列;创建数据处理线程,所述数据处理线程接收队列参数和连接池参数并运行;从数据处理线程中取队列数据,通过根据业务定制的具体规则策略实现数据分组,并创建数据处理任务;数据处理任务实现加锁以及批量入库。本发明处理对象为实时推送的大批量数据,并为数据提供分类规则,减少入库IO操作,提高性能。实时处理了通过websocket连接接收的数据,推送时间和入库时间差控制在1分钟以内,大大提升了处理效率。
Description
技术领域
本发明的实施方式涉及软件技术领域,是基于Java开发语言中原生queue队列和ThreadPoolExecutor线程池的特性,致力于提供一种具有高效性、持续性、稳定性的处理实时大批量推送数据入数据库的方法。
背景技术
传统实时入库问题是:针对推送数据会逐条接收并逐条入库,导致程序主线程处理数据会延时,达不到实时数据的实时入库目的,若连接错误,也无重新启动连接机制,导致程序的健壮性不够,同时也将推送数据卡死在接收处,入库失败也无记录入库失败数据的流程,导致数据流失。
发明内容
本发明的目的是为解决实时推送数据的入库延时,推送端的重新连接等,提供java的技术实现,用于提高实时推送数据高效性的入库。
为了达到上述的技术效果,本发明采取以下技术方案:一种处理实时大批量推送数据入库的方法,包括:配置webSocket连接通道,初始化队列和连接池,推送数据使用webSocket方式连接推送源,接收数据;Websocket将接收到的数据写入队列;创建数据处理线程,所述数据处理线程接收队列参数和连接池参数并运行;从数据处理线程中取队列数据,通过根据业务定制的具体规则策略实现数据分组,并创建数据处理任务;数据处理任务实现加锁以及批量入库。
使用websocket将推送数据用队列接口、用消费者的方式不断消费队列里的数据,并将数据以指定的大小切块,用多线程的方式去入库,入库前以指定规则分组和数据判断重合,减少入库IO操作,进一步提升新能。经过实时推送大批量流水信息的入库实现,该发明可以实时处理并入库推送的数据,减少了延时,做到了推送的实时处理。
进一步的技术方案是:所述推送数据跟协议规则是否相同进行处理,不相同的规则不处理,并有心跳包连接检测,监控连接是否异常,异常则重新建立连接。进一步的技术方案是:队列在写入和取出时使用不同的锁,写入使用putLock插入锁,取出使用takeLock取出锁,添加和删除数据的时候并行。
队列(Queue)是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
线程(Thread),有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针、寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
线程池(ThreadPool)是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了创建和销毁线程所需的时间,从而提高效率。
本发明使用LinkedBlockingQueue队列,和ThreadPoolExecutor连接池以及WebSocket技术来实现实时数据的接收和数据处理。
LinkedBlockingQueue是一个单向链表实现的阻塞队列,先进先出的顺序。支持多线程并发操作。LinkedBlockingQueue继承AbstractQueue,实现了BlockingQueue,Serializable接口。内部使用单向链表存储数据。插入和取出使用不同的锁,putLock插入锁,takeLock取出锁,添加和删除数据的时候可以并行。
ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务,可以通过设置参数来实现不同业务类型的线程管理。
本发明与现有技术相比,具有以下的有益效果:本发明处理对象为实时推送的大批量数据,并为数据提供分类规则,减少入库IO操作,提高性能。实时处理了通过websocket连接接收的数据,推送时间和入库时间差控制在1分钟以内,大大提升了处理效率。
附图说明
图1示出了本发明实施例的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例
基于队列LinkedBlockingQueue、连接池ThreadPoolExecutor和WebSocket高效率接收推送的大批量数据和入库的实施方式:参考图1,一种处理实时大批量推送数据入库的方法,包括:
步骤一:配置webSocket连接通道、初始化队列LinkedBlockingQueue、连接池ThreadPoolExecutor。
步骤二:推送数据跟协议规则是否相同进行处理,不相同的规则不处理,并有心跳包连接检测,监控连接是否异常,异常则重新建立连接,将连接监控异常后的连接回调处理好。
步骤三:websocket监控接收到的数据写入队列LinkedBlockingQueue;
步骤四:创建数据处理线程HandleThread,该线程接收队列LinkedBlockingQueue参数和连接池ThreadPoolExecutor参数并运行;
步骤五:数据处理线程HandleThread中取队列数据,通过根据业务定制的具体规则策略实现数据分组,并创建数据处理任务HandleDataService;
步骤六:数据处理任务HandleDataService实现加锁以及入库实现。
以上实施方式均是基于Java开发实现。
尽管这里参照本发明的解释性实施例对本发明进行了描述,但是,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。更具体地说,在本申请公开的范围内,可以对主题组合布局的组成部件和/或布局进行多种变型和改进。除了对组成部件和/或布局进行的变型和改进外,对于本领域技术人员来说,其他的用途也将是明显的。
Claims (3)
1.一种处理实时大批量推送数据入库的方法,其特征在于,包括:
配置webSocket连接通道,初始化队列和连接池,推送数据使用webSocket方式连接推送源,接收数据;
Websocket将接收到的数据写入队列;
创建数据处理线程,所述数据处理线程接收队列参数和连接池参数并运行;
从数据处理线程中取队列数据,通过根据业务定制的具体规则策略实现数据分组,并创建数据处理任务;
数据处理任务实现加锁以及批量入库。
2.根据权利要求1所述的一种处理实时大批量推送数据入库的方法,其特征在于:所述推送数据跟协议规则是否相同进行处理,不相同的规则不处理,并有心跳包连接检测,监控连接是否异常,异常则重新建立连接。
3.根据权利要求1所述的一种处理实时大批量推送数据入库的方法,其特征在于:队列在写入和取出时使用不同的锁,写入使用putLock插入锁,取出使用takeLock取出锁,添加和删除数据的时候并行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711090139.XA CN107766566A (zh) | 2017-11-08 | 2017-11-08 | 一种处理实时大批量推送数据入库的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711090139.XA CN107766566A (zh) | 2017-11-08 | 2017-11-08 | 一种处理实时大批量推送数据入库的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107766566A true CN107766566A (zh) | 2018-03-06 |
Family
ID=61273279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711090139.XA Pending CN107766566A (zh) | 2017-11-08 | 2017-11-08 | 一种处理实时大批量推送数据入库的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107766566A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113177826A (zh) * | 2021-05-20 | 2021-07-27 | 青岛海信智慧生活科技股份有限公司 | 一种批量配置商品与小区的方法及装置 |
CN114070712A (zh) * | 2021-07-14 | 2022-02-18 | 北京天元创新科技有限公司 | 消息不落地的网管告警处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010029548A1 (en) * | 2000-04-08 | 2001-10-11 | Geetha Srikantan | Method and apparatus for handling events received at a server socket |
CN105608223A (zh) * | 2016-01-12 | 2016-05-25 | 北京中交兴路车联网科技有限公司 | 针对kafka的Hbase数据库的入库方法和系统 |
-
2017
- 2017-11-08 CN CN201711090139.XA patent/CN107766566A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010029548A1 (en) * | 2000-04-08 | 2001-10-11 | Geetha Srikantan | Method and apparatus for handling events received at a server socket |
CN105608223A (zh) * | 2016-01-12 | 2016-05-25 | 北京中交兴路车联网科技有限公司 | 针对kafka的Hbase数据库的入库方法和系统 |
Non-Patent Citations (2)
Title |
---|
WHITE__CAT: "javaWeb 使用线程池+队列解决"订单并发"问题", 《HTTPS://BLOG.CSDN.NET/WHITE__CAT/ARTICLE/DETAILS/56830810》 * |
黄晓安 等: "使用 HTML5 WebSocket 构建实时 Web 应用", 《HTTPS://WWW.IBM.COM/DEVELOPERWORKS/CN/WEB/1112_HUANGXA_WEBSOCKET/》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113177826A (zh) * | 2021-05-20 | 2021-07-27 | 青岛海信智慧生活科技股份有限公司 | 一种批量配置商品与小区的方法及装置 |
CN114070712A (zh) * | 2021-07-14 | 2022-02-18 | 北京天元创新科技有限公司 | 消息不落地的网管告警处理方法及装置 |
CN114070712B (zh) * | 2021-07-14 | 2024-05-24 | 北京天元创新科技有限公司 | 消息不落地的网管告警处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9288132B2 (en) | Method and system for monitoring messages passed over a network | |
US10365957B2 (en) | Multicasting of event notifications using extended socket for inter-process communication | |
CN102915254B (zh) | 任务管理方法及装置 | |
US5809235A (en) | Object oriented network event management framework | |
US8533728B2 (en) | Resource tracking method and apparatus | |
US8112559B2 (en) | Increasing available FIFO space to prevent messaging queue deadlocks in a DMA environment | |
CN110995678B (zh) | 一种面向工控网络的高效入侵检测系统 | |
CN108595282A (zh) | 一种高并发消息队列的实现方法 | |
US20070168525A1 (en) | Method for improved virtual adapter performance using multiple virtual interrupts | |
US9262222B2 (en) | Lazy initialization of operator graph in a stream computing application | |
CN101452399B (zh) | 任务二级调度模块及方法 | |
WO2016112625A1 (zh) | 一种在预设嵌入式系统中实现脚本操作的系统 | |
WO2014110702A1 (zh) | 协同并发式消息总线、主动构件组装模型及构件拆分方法 | |
CN102457578B (zh) | 一种基于事件机制的分布式网络监控方法 | |
CN107766566A (zh) | 一种处理实时大批量推送数据入库的方法 | |
CN115794313B (zh) | 一种虚拟机调试方法、系统、电子设备及存储介质 | |
CN114363269A (zh) | 一种消息传输方法、系统、设备以及介质 | |
WO2021147877A1 (zh) | 用于静态分布式计算架构的数据交换系统及其方法 | |
CN101634956B (zh) | 多核处理器消息调度方法及调度器 | |
CN109800035B (zh) | 一种算法集成服务框架系统 | |
CN105516276B (zh) | 基于仿生分级通信的消息处理方法与系统 | |
CN107665145B (zh) | 一种基于容器的浏览器单机资源管理方法 | |
CN109347760A (zh) | 一种数据发送方法及装置 | |
CN115412500A (zh) | 支持负载均衡策略的异步通信方法、系统、介质及设备 | |
US10678562B2 (en) | Systems and methods for facilitating real-time analytics |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180306 |