CN107766566A - 一种处理实时大批量推送数据入库的方法 - Google Patents

一种处理实时大批量推送数据入库的方法 Download PDF

Info

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
Application number
CN201711090139.XA
Other languages
English (en)
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.)
Sichuan Changhong Electric Co Ltd
Original Assignee
Sichuan Changhong Electric 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 Sichuan Changhong Electric Co Ltd filed Critical Sichuan Changhong Electric Co Ltd
Priority to CN201711090139.XA priority Critical patent/CN107766566A/zh
Publication of CN107766566A publication Critical patent/CN107766566A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data 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取出锁,添加和删除数据的时候并行。
CN201711090139.XA 2017-11-08 2017-11-08 一种处理实时大批量推送数据入库的方法 Pending CN107766566A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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数据库的入库方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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