[发明专利]一种计数方法及计数系统有效
申请号: | 201811067029.6 | 申请日: | 2018-09-13 |
公开(公告)号: | CN109445955B | 公开(公告)日: | 2020-09-04 |
发明(设计)人: | 王毅 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F16/2458 |
代理公司: | 北京众达德权知识产权代理有限公司 11570 | 代理人: | 徐松 |
地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 计数 方法 系统 | ||
本发明实施例公开了一种计数方法及计数系统,用于快速完成计数与存储功能,并实现消费速度的动态扩容与收缩。本发明实施例方法包括:计数系统根据kafka或RocketMQ获取消费数据;判断预置的阻塞队列是否被填充满;若阻塞队列被填充满,则将消费数据发送至临时文件中;根据第一异步客户端以及阻塞队列中的消费数据的类型,采用异步的方式将第一消费数据写入重申redis中,得到第一计数;通过监听器监听临时文件中的数据消费程度;根据数据消费程度动态调整监听器中线程的线程个数;根据第二异步客户端以及临时文件中的消费数据的类型,采用异步的方式将第二消费数据写入redis中,得到第二计数;根据第一计数以及第二计数确定目标计数。
技术领域
本发明涉及大数据开发领域,尤其涉及一种计数方法及计数系统。
背景技术
在大数据的背景下,为了分析直播平台中主播与用户之间的各种指标数据,需要利用指标数据判断主播或者用户行为是否正常。例如统计某一个用户在一个时间段之间一共发送了多少条数据的弹幕,并且有多少行为打点数据,多少播放器打点数据等等这些指标数据,利用这些数据来判断该用户是正常用户还是机器人。
为了实现计算这些指标就需要使用到计数系统。一般情况下使用redis进行指标数据的存储与计数,由于redis自带的原子应用程序编程接口(Application ProgrammingInterface,API)能快速的完成计数的功能,可以很好的完成计数的需求。为了保证计数系统的实时响应,即系统需要保证用户行为数据的产生与数据计数完成并实现存储之间的时间差不能相差太大,否则会造成数据的生产与消费速度不匹配,数据产生堆积,无法达到实时计数的效果。
但现有技术中,将消费数据填充入阻塞队列时,由于阻塞队列为一先进先出队列,当队列中的数据填充满时,若再向对列中填充数据时,则需要一直等待到队列中有剩余的空间时,才能将将数据填充进去。现有技术在大数据的背景下很难做到实时消费数据,很难快速完成计数与存储的功能,并且不能实现消费速度的动态扩容与收缩。
发明内容
本发明实施例提供了一种计数方法及计数系统,用于快速完成计数与存储功能,并实现消费速度的动态扩容与收缩。
第一方面,本发明实施例提供一种计数方法,具体包括:
根据kafka或RocketMQ获取消费数据;
判断预置的阻塞队列是否被填充满;
若所述阻塞队列被填充满,则将所述消费数据发送至临时文件中;
通过第一异步客户端while循环消费所述阻塞队列中的消费数据,得到第一消费数据;
根据所述第一异步客户端以及所述阻塞队列中的消费数据的类型,采用异步的方式将所述第一消费数据写入重申redis中,得到第一计数;
通过监听器监听所述临时文件中的数据消费程度;
根据所述数据消费程度动态调整所述监听器中线程的线程个数;
通过所述线程处理所述临时文件中的消费数据,得到第二消费数据;
根据第二异步客户端以及所述临时文件中的消费数据的类型,采用异步的方式将所述第二消费数据写入所述redis中,得到第二计数;
根据所述第一计数以及所述第二计数确定目标计数。
在一种可能的设计中,所述根据kafka获取消费数据包括:
使用simpleConsumer方法从所述Kafka中拉取所述消费数据。
在一种可能的设计中,所述根据RocketMQ获取消费数据包括:
使用DefaultPushConsumer方法从所述RocketMQ中拉取所述消费数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811067029.6/2.html,转载请声明来源钻瓜专利网。