CN109445955A - 一种计数方法及计数系统 - Google Patents
一种计数方法及计数系统 Download PDFInfo
- Publication number
- CN109445955A CN109445955A CN201811067029.6A CN201811067029A CN109445955A CN 109445955 A CN109445955 A CN 109445955A CN 201811067029 A CN201811067029 A CN 201811067029A CN 109445955 A CN109445955 A CN 109445955A
- Authority
- CN
- China
- Prior art keywords
- data
- consumption
- consumption data
- obstruction queue
- counting
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
本发明实施例公开了一种计数方法及计数系统,用于快速完成计数与存储功能,并实现消费速度的动态扩容与收缩。本发明实施例方法包括:计数系统根据kafka或RocketMQ获取消费数据;判断预置的阻塞队列是否被填充满;若阻塞队列被填充满,则将消费数据发送至临时文件中;根据第一异步客户端以及阻塞队列中的消费数据的类型,采用异步的方式将第一消费数据写入重申redis中,得到第一计数;通过监听器监听临时文件中的数据消费程度;根据数据消费程度动态调整监听器中线程的线程个数;根据第二异步客户端以及临时文件中的消费数据的类型,采用异步的方式将第二消费数据写入redis中,得到第二计数;根据第一计数以及第二计数确定目标计数。
Description
技术领域
本发明涉及大数据开发领域,尤其涉及一种计数方法及计数系统。
背景技术
在大数据的背景下,为了分析直播平台中主播与用户之间的各种指标数据,需要利用指标数据判断主播或者用户行为是否正常。例如统计某一个用户在一个时间段之间一共发送了多少条数据的弹幕,并且有多少行为打点数据,多少播放器打点数据等等这些指标数据,利用这些数据来判断该用户是正常用户还是机器人。
为了实现计算这些指标就需要使用到计数系统。一般情况下使用redis 进行指标数据的存储与计数,由于redis自带的原子应用程序编程接口 (Application ProgrammingInterface,API)能快速的完成计数的功能,可以很好的完成计数的需求。为了保证计数系统的实时响应,即系统需要保证用户行为数据的产生与数据计数完成并实现存储之间的时间差不能相差太大,否则会造成数据的生产与消费速度不匹配,数据产生堆积,无法达到实时计数的效果。
但现有技术中,将消费数据填充入阻塞队列时,由于阻塞队列为一先进先出队列,当队列中的数据填充满时,若再向对列中填充数据时,则需要一直等待到队列中有剩余的空间时,才能将将数据填充进去。现有技术在大数据的背景下很难做到实时消费数据,很难快速完成计数与存储的功能,并且不能实现消费速度的动态扩容与收缩。
发明内容
本发明实施例提供了一种计数方法及计数系统,用于快速完成计数与存储功能,并实现消费速度的动态扩容与收缩。
第一方面,本发明实施例提供一种计数方法,具体包括:
根据kafka或RocketMQ获取消费数据;
判断预置的阻塞队列是否被填充满;
若所述阻塞队列被填充满,则将所述消费数据发送至临时文件中;
通过第一异步客户端while循环消费所述阻塞队列中的消费数据,得到第一消费数据;
根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入重申redis中,得到第一计数;
通过监听器监听所述临时文件中的数据消费程度;
根据所述数据消费程度动态调整所述监听器中线程的线程个数;
通过所述线程处理所述临时文件中的消费数据,得到第二消费数据;
根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数;
根据所述第一计数以及所述第二计数确定目标计数。
在一种可能的设计中,所述根据kafka获取消费数据包括:
使用simpleConsumer方法从所述Kafka中拉取所述消费数据。
在一种可能的设计中,所述根据RocketMQ获取消费数据包括:
使用DefaultPushConsumer方法从所述RocketMQ中拉取所述消费数据。
在一种可能的设计中,所述根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入redis中之前,所述方法还包括:
根据所述消费数据的数据量大小获取所述redis。
在一种可能的设计中,所述根据所述数据消费程度动态调整所述监听器中的线程的线程个数包括:
当所述线程全部处于空闲状态,且空闲时间大于阈值时,保留核心线程,销毁除所述核心线程以外的其它线程。
在一种可能的设计中,所述判断预置的阻塞队列是否被填充满包括:
发送检测数据至所述阻塞队列;
若接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列被填充满;
若没有接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列未被填充满。
第二方面,本发明实施例提供一种计数系统,包括:
第一获取单元,用于根据kafka或RocketMQ获取消费数据;
判断单元,用于判断预置的阻塞队列是否被填充满;
发送单元,用于若所述阻塞队列被填充满,则将所述消费数据发送至临时文件中;
第一处理单元,用于通过第一异步客户端while循环消费所述阻塞队列中的消费数据,得到第一消费数据;
第一写入单元,用于根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入重申redis中,得到第一计数;
监听单元,用于通过监听器监听所述临时文件中的数据消费程度;
调整单元,用于根据所述数据消费程度动态调整所述监听器中线程的线程个数;
第二处理单元,用于通过所述线程处理所述临时文件中的消费数据,得到第二消费数据;
第二写入单元,用于根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数;
确定单元,用于根据所述第一计数以及所述第二计数确定目标计数。
在一种可能的设计中,所述第一获取单元具体用于:
使用simpleConsumer方法从所述Kafka中拉取所述消费数据。
在一种可能的设计中,所述第一获取单元又具体用于:
使用DefaultPushConsumer方法从所述RocketMQ中拉取所述消费数据。
在一种可能的设计中,所述系统还包括:
第二获取单元,用于根据所述消费数据的数据量大小获取所述redis。
在一种可能的设计中,所述监听单元具体用于:
当所述线程全部处于空闲状态,且空闲时间大于阈值时,保留核心线程,销毁除所述核心线程以外的其它线程。
在一种可能的设计中,所述判断单元具体用于:
发送检测数据至所述阻塞队列;
若接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列被填充满;
若没有接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列未被填充满。
本发明的又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本发明的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
从以上技术方案可以看出,本发明实施例具有以下优点:计数系统根据 kafka或RocketMQ获取消费数据;判断预置的阻塞队列是否被填充满;若所述阻塞队列被填充满,则将所述消费数据发送至临时文件中;根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入重申redis中,得到第一计数;通过监听器监听所述临时文件中的数据消费程度;根据所述数据消费程度动态调整所述监听器中线程的线程个数;根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数;根据所述第一计数以及所述第二计数确定目标计数。本发明实施例中,当阻塞队列被填充满时,消费数据不需要等待填充,而是直接填充到临时文件中处理,而且本实施例中的监听器可以根据数据消费程度控制线程的个数,故本发明可以快速完成计数与存储功能,并实现消费速度的动态扩容与收缩。
附图说明
图1为本发明实施例提供的一个计数系统的框架示意图;
图2为本发明实施例提供的一种计数方法的一个流程示意图;
图3为本发明实施例提供的一种计数系统的一个结构示意图;
图4为本发明实施例提供的一种计数系统的硬件结构示意图;
图5为本发明实施例提供的一种电子设备的实施例示意图;
图6为本发明实施例提供的一种计算机可读存储介质的实施例示意图。
具体实施方式
本发明实施例提供了一种计数方法及计数系统,用于快速完成计数与存储功能,并实现消费速度的动态扩容与收缩。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,图1为本发明实施了提供的一种计数系统的系统框架图,包括:数据源消费组件,数据处理组件和数据存储组件,具体地,该数据源消费组件主要用于通过程序去消费队列数据,例如kafka、RocketMQ等程序。数据处理组件主要是通过监听器监听临时文件中数据的变化,实现动态的消费速度、通过netty实现NIO方式写入redis,实现无阻塞的redis写入方式。数据储存组件主要用于使用redis,实现指标数据的key-value式存储。
请参阅图2,图2为本发明实施例提供的计数方法方法的一个实施例示意图,包括:
201、根据kafka或RocketMQ获取消费数据。
本实施例中,首先需要构造数据源消费组件接口,接口中提供数据源初始化接口方法,数据源核心消费接口方法,将消费数据发送到数据处理组件接口方法。
其中,根据Kafka获取消费数据包括:
实现数据源消费组件接口并实现接口方法的具体实现逻辑,初始化kakfa 连接,使用simpleConsumer方法从Kafka中拉取消费数据;
根据RocketMQ获取消费数据包括:
实现接口方法的具体实现逻辑,初始化RocketMQ连接,使用DefaultPushConsumer方法从RocketMQ拉取数据完成数据源消费。
202、判断预置的阻塞队列是否被填充满,若填充满,则执行步骤203,若未填充满,则执行步骤204。
本实施例中,还需要判断预置的阻塞队列LinkedBlockQueue是否被填充满,若填充满,则将获取到的消费数据填充至临时文件overMsg.txt中,由其它的处理逻辑处理,加快处理速度,此时由阻塞队列LinkedBlockQueue和临时文件overMsg.txt实现数据源消费组件与数据处理组件的连接。
未填充满,则将数据填充入阻塞队列中。
需要说明的是,创建数据处理组件时,需要创建基于netty的NIO方式实现异步的redis数据写入方法。构造Bootstrap,设置channelGroup方式,ByteBuf大小,socket地址等属性,同时设置为noio方式的eventloopGroup 方式,连接到redis服务器端。通过dispatch方式,将封装好的异步redis 命令,写入到channel通道中,返回一个封装好的异步结果。通过Future的方式封装异步的redis命令的返回结果。与普通的redis方法调用堵塞等待返回结果不同,在基于NIO连接的方法中调用异步的redis命令则立即返回一个封装好的Future结果,无需阻塞等待结果,通过异步的方式,可以极大的提高瞬时写入redis的速度。若想获取返回结果,可以在future中等待一段时间再去future中get返回或者直接不需要返回结果,即获取瞬时响应。针对与计数场景,为了实现快速的数据计数响应,往往不需要future的具体返回值,此时使用future将是最佳的选择。
需要说明的是,netty可以针对多种传输类型的统一接口-阻塞和非阻塞,是简单但更强大的线程模型,可以实现真正的无连接的数据报套接字支持,且链接逻辑支持复用。
需要说明的是,eventloopGroup为线程模型,默认的NioEventLoop个数为cpu核数*2;eventloop本身不负责线程的创建销毁,而是由外部传入的线程池管理。channel和EventLoop是绑定的,即一旦连接被分配到 EventLoop,其相关的I/O、编解码、超时处理都在同一个EventLoop中,这样可以确保这些操作都是线程安全的。
其中,判断预置的阻塞队列是否被填充满包括:
发送检测数据至所述阻塞队列;
若接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列被填充满;
若没有接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列未被填充满。
203、将所述消费数据发送至临时文件中。
本实施例中,当阻塞队列被填充满时,则需要立即将消费数据填充至临时文件中。
204、将所述消费数据发送至阻塞队列中。
本实施例中,当阻塞队列未被填充满,则将该消费数据发送至阻塞队列中。
205、通过第一异步客户端while循环消费所述阻塞队列中的消费数据,得到第一消费数据。
本实施例中,需要启动一个redis异步处理客户端(即第一异步客户端),使用while循环,一直不断的消费阻塞队列中的数据,得到第一消费数据。
206、根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入redis中,得到第一计数。
本实施例中,第一异步客户端需要根据阻塞队列中消费数据的类型,采用异步的方式将第一消费数据写入redis中,得到第一计数,实现消费数据的在阻塞队列侧的计数功能。
其中,根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入redis中之前,本实施例中的方法还包括:根据所述消费数据的数据量大小获取所述redis,即根据实际消费数据量的大小,申请足够内存大小的redis,实现指标计数数据的存储。本发明可以根据实际情况申请redis集群。
207、通过监听器监听所述临时文件中的数据消费程度。
本实施例中,需要通过监听器实现动态的消费速度。首先在数据处理组件中创建一个监听器,程序实现监听临时文件overMsg.txt文件中的数据变化,同时启动的一个线程池,初始化线程池,设定核心线程数为2,最大线程数为1024。线程池中启动消费线程,同时监听器实现如逻辑:当阻塞队列一直满状态,导致数据写入阻塞队列异常时,根据处理逻辑,消费数据便会写入到临时文件overMsg.txt中,此时临时文件中就有了数据变化时,监听器中的线程立即获取文件中的数据,并进行数据的处理,同时在overMsg.txt中移除该数据,最终获取临时文件中的数据消费程度。
208、根据所述数据消费程度动态调整所述监听器中线程的线程个数。
本实施例中,计数系统需要根据临时文件中的数据消费程度动态调整监听器中的线程的线程个数,在一种情况中,当临时文件中的数据消费完全时,此时线程池中的线程,处于空闲状态,当空闲时间达到timeout设定的时间时,即空闲时间大于阈值时,线程池及会销毁部分空闲线程,保留核心线程数,本发明中保留核心线程数为2。当临时文件中的数据未消费完全时,则根据数据消费程度进一步调整监听器中线程的线程个数,此方法可以实现消费速度的动态扩容与收缩。
209、通过所述线程处理所述临时文件中的消费数据,得到第二消费数据。
本实施例中,当临时文件中填充了消费数据时,需要通过监听器线程池中的线程处理临时文件中的消费数据,得到第二消费数据。
210、根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数。
本实施例中,计数系统根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数,实现消费数据的在临时文件侧的计数功能。
211、根据所述第一计数以及所述第二计数确定目标计数。
本实施例中,当计数系统获取到第一计数以及第二计数之后,将根据第一计数和第二计数确定目标计数,实现本发明的计数功能,其中,目标计数可以为第一计数和第二计数的和。
综上所述,可以看出,本发明实施例中,计数系统根据kafka或RocketMQ 获取消费数据;判断预置的阻塞队列是否被填充满;若所述阻塞队列被填充满,则将所述消费数据发送至临时文件中;根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入重申redis中,得到第一计数;通过监听器监听所述临时文件中的数据消费程度;根据所述数据消费程度动态调整所述监听器中线程的线程个数;根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数;根据所述第一计数以及所述第二计数确定目标计数。本发明实施例中,当阻塞队列被填充满时,消费数据不需要等待填充,而是直接填充到临时文件中处理,而且本实施例中的监听器可以根据数据消费程度控制线程的个数,故本发明可以快速完成计数与存储功能,并实现消费速度的动态扩容与收缩。
上面对本发明实施例中计数方法进行了描述,下面对本发明实施例中的计数系统进行描述。
请参阅图3,本发明实施例中计数系统的一个实施例,包括:
第一获取单元301,用于根据kafka或RocketMQ获取消费数据;
其中,第一获取单元301具体用于:
使用simpleConsumer方法从所述Kafka中拉取所述消费数据。
或,具体用于:
使用DefaultPushConsumer方法从所述RocketMQ中拉取所述消费数据。
判断单元302,用于判断预置的阻塞队列是否被填充满;
其中,判断单元302具体用于:
发送检测数据至所述阻塞队列;
若接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列被填充满;
若没有接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列未被填充满。
发送单元303,用于若所述阻塞队列被填充满,则将所述消费数据发送至临时文件中;
第一处理单元304,用于通过第一异步客户端while循环消费所述阻塞队列中的消费数据,得到第一消费数据;
第二获取单元305,用于根据所述消费数据的数据量大小获取所述redis。
第一写入单元306,用于根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入重申redis中,得到第一计数;
监听单元307,用于通过监听器监听所述临时文件中的数据消费程度;
其中,监听单元307具体用于:
当所述线程全部处于空闲状态,且空闲时间大于阈值时,保留核心线程,销毁除所述核心线程以外的其它线程。
调整单元308,用于根据所述数据消费程度动态调整所述监听器中线程的线程个数;
第二处理单元309,用于通过所述线程处理所述临时文件中的消费数据,得到第二消费数据;
第二写入单元310,用于根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数;
确定单元311,用于根据所述第一计数以及所述第二计数确定目标计数。
上面图3从模块化功能实体的角度对本发明实施例中的计数系统进行了描述,下面从硬件处理的角度对本发明实施例中的计数系统进行详细描述,请参阅图4,本发明实施例中的计数系统400一个实施例,包括:
输入装置401、输出装置402、处理器403和存储器404(其中处理器403 的数量可以一个或多个,图4中以一个处理器403为例)。在本发明的一些实施例中,输入装置401、输出装置402、处理器403和存储器404可通过总线或其它方式连接,其中,图4中以通过总线连接为例。
其中,通过调用存储器404存储的操作指令,处理器403,用于执行如下步骤:
根据kafka或RocketMQ获取消费数据;
判断预置的阻塞队列是否被填充满;
若所述阻塞队列被填充满,则将所述消费数据发送至临时文件中;
通过第一异步客户端while循环消费所述阻塞队列中的消费数据,得到第一消费数据;
根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入重申redis中,得到第一计数;
通过监听器监听所述临时文件中的数据消费程度;
根据所述数据消费程度动态调整所述监听器中线程的线程个数;
通过所述线程处理所述临时文件中的消费数据,得到第二消费数据;
根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数;
根据所述第一计数以及所述第二计数确定目标计数。
请参阅图5,图5为本发明实施例提供的电子设备的实施例示意图。
如图5所示,本发明实施例提供了一种电子设备,包括存储器510、处理器520及存储在存储器520上并可在处理器520上运行的计算机程序511,处理器520执行计算机程序511时实现以下步骤:
根据kafka或RocketMQ获取消费数据;
判断预置的阻塞队列是否被填充满;
若所述阻塞队列被填充满,则将所述消费数据发送至临时文件中;
通过第一异步客户端while循环消费所述阻塞队列中的消费数据,得到第一消费数据;
根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入重申redis中,得到第一计数;
通过监听器监听所述临时文件中的数据消费程度;
根据所述数据消费程度动态调整所述监听器中线程的线程个数;
通过所述线程处理所述临时文件中的消费数据,得到第二消费数据;
根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数;
根据所述第一计数以及所述第二计数确定目标计数。
如图6所示,本实施例提供了一种计算机可读存储介质600,其上存储有计算机程序611,该计算机程序611被处理器执行时实现如下步骤:
根据kafka或RocketMQ获取消费数据;
判断预置的阻塞队列是否被填充满;
若所述阻塞队列被填充满,则将所述消费数据发送至临时文件中;
通过第一异步客户端while循环消费所述阻塞队列中的消费数据,得到第一消费数据;
根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入重申redis中,得到第一计数;
通过监听器监听所述临时文件中的数据消费程度;
根据所述数据消费程度动态调整所述监听器中线程的线程个数;
通过所述线程处理所述临时文件中的消费数据,得到第二消费数据;
根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数;
根据所述第一计数以及所述第二计数确定目标计数。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/ 或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,当计算机软件指令在处理设备上运行时,使得处理设备执行如图1对应实施例中的风电场数字化平台设计的方法中的流程。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如, DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修该,或者对其中部分技术特征进行等同替换;而这些修该或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种计数方法,其特征在于,包括:
根据kafka或RocketMQ获取消费数据;
判断预置的阻塞队列是否被填充满;
若所述阻塞队列被填充满,则将所述消费数据发送至临时文件中;
通过第一异步客户端while循环消费所述阻塞队列中的消费数据,得到第一消费数据;
根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入重申redis中,得到第一计数;
通过监听器监听所述临时文件中的数据消费程度;
根据所述数据消费程度动态调整所述监听器中线程的线程个数;
通过所述线程处理所述临时文件中的消费数据,得到第二消费数据;
根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数;
根据所述第一计数以及所述第二计数确定目标计数。
2.根据权利要求1所述的方法,其特征在于,所述根据kafka获取消费数据包括:
使用simpleConsumer方法从所述Kafka中拉取所述消费数据。
3.根据权利要求1所述的方法,其特征在于,所述根据RocketMQ获取消费数据包括:
使用DefaultPushConsumer方法从所述RocketMQ中拉取所述消费数据。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入redis中之前,所述方法还包括:
根据所述消费数据的数据量大小获取所述redis。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述数据消费程度动态调整所述监听器中的线程的线程个数包括:
当所述线程全部处于空闲状态,且空闲时间大于阈值时,保留核心线程,销毁除所述核心线程以外的其它线程。
6.根据权利要求1至3中任一项所述的方法,其特征在于,所述判断预置的阻塞队列是否被填充满包括:
发送检测数据至所述阻塞队列;
若接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列被填充满;
若没有接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列未被填充满。
7.一种计数系统,其特征在于,包括:
第一获取单元,用于根据kafka或RocketMQ获取消费数据;
判断单元,用于判断预置的阻塞队列是否被填充满;
发送单元,用于若所述阻塞队列被填充满,则将所述消费数据发送至临时文件中;
第一处理单元,用于通过第一异步客户端while循环消费所述阻塞队列中的消费数据,得到第一消费数据;
第一写入单元,用于根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入重申redis中,得到第一计数;
监听单元,用于通过监听器监听所述临时文件中的数据消费程度;
调整单元,用于根据所述数据消费程度动态调整所述监听器中线程的线程个数;
第二处理单元,用于通过所述线程处理所述临时文件中的消费数据,得到第二消费数据;
第二写入单元,用于根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数;
确定单元,用于根据所述第一计数以及所述第二计数确定目标计数。
8.根据权利要求7所述的系统,其特征在于,所述判断单元具体用于:
发送检测数据至所述阻塞队列;
若接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列被填充满;
若没有接收到所述阻塞队列反馈的异常信号,则判断所述阻塞队列未被填充满。
9.一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如权利要求1至6中任意一项所述的计数方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于:所述计算机管理类程序被处理器执行时实现如权利要求1至6中任意一项所述的计数方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811067029.6A CN109445955B (zh) | 2018-09-13 | 2018-09-13 | 一种计数方法及计数系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811067029.6A CN109445955B (zh) | 2018-09-13 | 2018-09-13 | 一种计数方法及计数系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109445955A true CN109445955A (zh) | 2019-03-08 |
CN109445955B CN109445955B (zh) | 2020-09-04 |
Family
ID=65532591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811067029.6A Active CN109445955B (zh) | 2018-09-13 | 2018-09-13 | 一种计数方法及计数系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109445955B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309230A (zh) * | 2019-05-22 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 基于区块链的区块生成方法、装置、设备及存储介质 |
CN111666143A (zh) * | 2020-06-19 | 2020-09-15 | 厦门卫星定位应用股份有限公司 | 基于管道阻塞式的大数据计算调度系统及方法 |
CN112000619A (zh) * | 2020-08-21 | 2020-11-27 | 杭州安恒信息技术股份有限公司 | 一种时间顺序数据存储方法、装置、设备及可读存储介质 |
CN112486707A (zh) * | 2020-12-14 | 2021-03-12 | 中国人民银行清算总中心 | 基于Redis的消息异步消费方法及装置 |
CN112506992A (zh) * | 2020-12-04 | 2021-03-16 | 中国人寿保险股份有限公司 | Kafka数据的模糊查询方法、装置、电子设备和存储介质 |
CN112559445A (zh) * | 2020-12-11 | 2021-03-26 | 上海哔哩哔哩科技有限公司 | 数据写入方法及装置 |
CN113190614A (zh) * | 2020-12-30 | 2021-07-30 | 江苏方天电力技术有限公司 | 短时数据写库的实现方法、系统及电子设备 |
CN113741797A (zh) * | 2020-08-31 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种数据处理方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549535A (zh) * | 2003-05-09 | 2004-11-24 | 华为技术有限公司 | 用rtp数据包的序号进行排序以消除其抖动延时的方法 |
US20120305756A1 (en) * | 2011-05-31 | 2012-12-06 | Russ William R | Spectrometer Calibration System and Method |
CN106293863A (zh) * | 2016-07-26 | 2017-01-04 | 北京北森云计算股份有限公司 | 多语言云编译实现系统功能动态扩展替换的方法及系统 |
US20170147417A1 (en) * | 2015-10-08 | 2017-05-25 | Opsclarity, Inc. | Context-aware rule engine for anomaly detection |
CN107479955A (zh) * | 2017-08-04 | 2017-12-15 | 南京华飞数据技术有限公司 | 一种基于Epoll异步服务器的高效响应方法 |
CN107798036A (zh) * | 2017-04-10 | 2018-03-13 | 平安科技(深圳)有限公司 | 一种计数方法及计数器 |
CN108307208A (zh) * | 2018-01-10 | 2018-07-20 | 武汉斗鱼网络科技有限公司 | 计算直播间相似度的方法、存储介质、设备及系统 |
CN108446369A (zh) * | 2018-03-15 | 2018-08-24 | 深圳市中科新业信息科技发展有限公司 | 海量数据下实时数据报表统计方法 |
US20180248771A1 (en) * | 2017-02-24 | 2018-08-30 | Ciena Corporation | Monitoring and auto-correction systems and methods for microservices |
-
2018
- 2018-09-13 CN CN201811067029.6A patent/CN109445955B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549535A (zh) * | 2003-05-09 | 2004-11-24 | 华为技术有限公司 | 用rtp数据包的序号进行排序以消除其抖动延时的方法 |
US20120305756A1 (en) * | 2011-05-31 | 2012-12-06 | Russ William R | Spectrometer Calibration System and Method |
US20170147417A1 (en) * | 2015-10-08 | 2017-05-25 | Opsclarity, Inc. | Context-aware rule engine for anomaly detection |
CN106293863A (zh) * | 2016-07-26 | 2017-01-04 | 北京北森云计算股份有限公司 | 多语言云编译实现系统功能动态扩展替换的方法及系统 |
US20180248771A1 (en) * | 2017-02-24 | 2018-08-30 | Ciena Corporation | Monitoring and auto-correction systems and methods for microservices |
CN107798036A (zh) * | 2017-04-10 | 2018-03-13 | 平安科技(深圳)有限公司 | 一种计数方法及计数器 |
CN107479955A (zh) * | 2017-08-04 | 2017-12-15 | 南京华飞数据技术有限公司 | 一种基于Epoll异步服务器的高效响应方法 |
CN108307208A (zh) * | 2018-01-10 | 2018-07-20 | 武汉斗鱼网络科技有限公司 | 计算直播间相似度的方法、存储介质、设备及系统 |
CN108446369A (zh) * | 2018-03-15 | 2018-08-24 | 深圳市中科新业信息科技发展有限公司 | 海量数据下实时数据报表统计方法 |
Non-Patent Citations (4)
Title |
---|
JONATHAN LEIBIUSKY ET AL: "《Geeting Started with Storm》", 31 December 2012 * |
NADEEM QAISAR MEHMOOD ET AL: "Modeling temporal aspects of sensor data for MongoDB NoSQL database", 《JOURNAL OF BIG DATA》 * |
田风军: "Redis计数在新浪微博中的应用", 《INFOQ.COM》 * |
闫明: "高可用可扩展集群化Redis设计与实现", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309230A (zh) * | 2019-05-22 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 基于区块链的区块生成方法、装置、设备及存储介质 |
CN111666143A (zh) * | 2020-06-19 | 2020-09-15 | 厦门卫星定位应用股份有限公司 | 基于管道阻塞式的大数据计算调度系统及方法 |
CN112000619A (zh) * | 2020-08-21 | 2020-11-27 | 杭州安恒信息技术股份有限公司 | 一种时间顺序数据存储方法、装置、设备及可读存储介质 |
CN113741797A (zh) * | 2020-08-31 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种数据处理方法和装置 |
CN112506992A (zh) * | 2020-12-04 | 2021-03-16 | 中国人寿保险股份有限公司 | Kafka数据的模糊查询方法、装置、电子设备和存储介质 |
CN112506992B (zh) * | 2020-12-04 | 2024-04-16 | 中国人寿保险股份有限公司 | Kafka数据的模糊查询方法、装置、电子设备和存储介质 |
CN112559445A (zh) * | 2020-12-11 | 2021-03-26 | 上海哔哩哔哩科技有限公司 | 数据写入方法及装置 |
CN112559445B (zh) * | 2020-12-11 | 2022-12-27 | 上海哔哩哔哩科技有限公司 | 数据写入方法及装置 |
CN112486707A (zh) * | 2020-12-14 | 2021-03-12 | 中国人民银行清算总中心 | 基于Redis的消息异步消费方法及装置 |
CN113190614A (zh) * | 2020-12-30 | 2021-07-30 | 江苏方天电力技术有限公司 | 短时数据写库的实现方法、系统及电子设备 |
CN113190614B (zh) * | 2020-12-30 | 2022-07-01 | 江苏方天电力技术有限公司 | 短时数据写库的实现方法、系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109445955B (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109445955A (zh) | 一种计数方法及计数系统 | |
CN107395665A (zh) | 一种区块链业务受理及业务共识方法及装置 | |
CN110650347B (zh) | 多媒体数据的处理方法及装置 | |
WO2017166643A1 (zh) | 一种任务资源的量化方法和装置 | |
CN106383764B (zh) | 一种数据采集方法和设备 | |
CN106489132B (zh) | 读写数据的方法、装置、存储设备和计算机系统 | |
CN109726004B (zh) | 一种数据处理方法及装置 | |
CN109460412A (zh) | 数据聚合方法、装置、设备及存储介质 | |
CN109615022B (zh) | 模型上线配置方法和装置 | |
CN110704283A (zh) | 一种统一生成告警信息的方法、装置和介质 | |
CN109542642A (zh) | 一种前端任务处理的方法及装置 | |
CN104717153B (zh) | 用于在网络中管理工作负荷的计算机实现方法和系统 | |
CN113590403A (zh) | 压力测试方法、装置、系统、电子设备、存储介质及产品 | |
CN110278104A (zh) | 用于优化的服务质量加速的技术 | |
CN113360266B (zh) | 任务处理方法和装置 | |
CN111178540A (zh) | 一种训练数据的传输方法、装置、设备及介质 | |
CN106155793B (zh) | 一种资源调度方法及装置 | |
CN115454576B (zh) | 一种虚拟机进程管理方法、系统及电子设备 | |
CN105162837B (zh) | 海量数据存储环境下提升i/o吞吐率的方法及系统 | |
CN110704182A (zh) | 深度学习的资源调度方法、装置及终端设备 | |
CN109885384A (zh) | 任务并行度优化方法、装置、计算机设备及存储介质 | |
CN108984147A (zh) | 音量控制方法、电子装置及计算机可读存储介质 | |
CN107911484A (zh) | 一种消息处理的方法及装置 | |
CN107196818A (zh) | 一种Linux集群监控的系统及方法 | |
CN113064620A (zh) | 一种处理系统数据的方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |