一种数据分流方法及系统技术方案

技术编号:26222443 阅读:20 留言:0更新日期:2020-11-04 10:52
本发明专利技术公开了一种数据分流方法、装置、设备及存储介质,该方法包括:每个channel均从source中获取当前需要传输的全部event,并从每个所述event中提取该event的数据类型;其中,一个所述source同时与多个channel连接,多个channel与多个sink一一对应连接;每个所述channel均将每个所述event的数据类型分别与自身配置的数据类型进行比对,并确定与自身配置的数据类型相同的event为目标event;每个所述channel均将与自身对应的目标event传输至自身所连接的sink。可见,本申请不仅减少了配置工作和维护成本,且能够节省内存。

【技术实现步骤摘要】
一种数据分流方法及系统
本专利技术涉及数据采集
,更具体地说,涉及一种数据分流方法及系统。
技术介绍
flume作为cloudera开发的实时日志收集系统,受到了业界的认可与广泛应用。目前很多公司数据平台的采集技术选型均由flume担当,flume也以其优越的性能,简单的配置和清晰的流程受到广泛关注。在数据采集工作中syslog数据是一类普遍见到的数据,syslog数据的采集工作也格外重要,如何简化和优化syslog数据的采集显得尤为突出。针对syslog数据的采集场景,目前通常为在服务器上针对每一种syslog数据开放一个udp端口,然后再针对每个udp端口配置一份配置文件,对应启动一个flume实现syslog数据的采集,但是实际中服务器一般无法开发多个udp端口,配置文件增多意味着维护成本增加,多个flume运行会占用较多内存(一般一个flume会占用2G内存);也即这种方案增加了配置工作和维护成本,同时会耗费大量的内存。
技术实现思路
本专利技术的目的是提供一种数据分流方法及系统,减少了配置工作和维护成本,同时能够节省内存。为了实现上述目的,本专利技术提供如下技术方案:一种数据分流方法,包括:每个channel均从source中获取当前需要传输的全部event,并从每个所述event中提取该event的数据类型;其中,一个所述source同时与多个channel连接,多个channel与多个sink一一对应连接;每个所述channel均将每个所述event的数据类型分别与自身配置的数据类型进行比对,并确定与自身配置的数据类型相同的event为目标event;每个所述channel均将与自身对应的目标event传输至自身所连接的sink。优选的,每个所述channel均将与自身对应的目标event传输至自身所连接的sink,包括:每个所述channel均将自身对应的目标event放入至自身包含的putlist中,将自身包含的putlist中的目标event放入至自身包含的缓存队列中,将自身包含的缓存队列中的目标event放入至takelist中;每个所述sink均由与自身连接的channel包含的takelist中取出目标event。优选的,每个所述channel将自身包含的putlist中的目标event放入至自身包含的缓存队列中之前,还包括:每个所述channel均判断自身包含的缓存队列中是否存在可放入自身对应的目标event的剩余空间,如果是,则执行将自身包含的putlist中的目标event放入至自身包含的缓存队列中的步骤,如果否,则等待指定时间段后返回执行判断自身包含的缓存队列中是否存在可放入自身对应的目标event的剩余空间的步骤,直至返回执行判断自身包含的缓存队列中是否存在可放入自身对应的目标event的剩余空间的步骤的次数达到预设次数为止。优选的,每个所述channel均判断自身包含的缓存队列中是否存在可放入自身对应的目标event的剩余空间之前,还包括:每个所述channel均比对自身包含的所述putlist及所述takelist分别包含的目标event的数量,如果自身包含的所述takelist中目标event的数量小于自身包含的所述putlist中目标event的数量,则执行判断自身包含的缓存队列中是否存在可放入自身对应的目标event的剩余空间的步骤,否则,执行将自身包含的putlist中的目标event放入至自身包含的缓存队列中的步骤。优选的,每个所述channel均将自身包含的缓存队列中的目标event放入至takelist中之前,还包括:每个所述channel均判断自身包含的takelist中是否存在可放入自身对应的目标event的剩余空间,如果是,则执行将自身包含的缓存队列中的目标event放入至takelist中的步骤,如果否,则抛出异常。优选的,还包括:如果任意channel将自身包含的putlist中的目标event放入至自身包含的缓存队列中失败,则进行回滚。优选的,还包括:如果任意event被对应channel中任意线程进行处理,则对该任意event进行加锁,以禁止对应channel中其他线程对该任意event进行处理。优选的,每个所述channel将自身包含的putlist中的目标event放入至自身包含的缓存队列中之前,还包括:每个所述channel为自身对应的目标event打上预先配置的数据标签。每个所述channel均将与自身对应的目标event传输至所述缓存队列中之后,还包括:清空自身包含的putlist中所述目标event所占用的空间;每个所述channel均将与自身对应的目标event传输至所述takelist中之后,还包括:清空自身包含的takelist中所述目标event所占用的空间一种数据分流系统,包括一个source、多个channel及多个sink,一个所述source同时与多个channel连接,多个channel与多个sink一一对应连接;其中:每个所述channel均用于:从source中获取当前需要传输的全部event,从每个所述event中提取该event的数据类型,将每个所述event的数据类型分别与自身配置的数据类型进行比对,确定与自身配置的数据类型相同的event为目标event,并将与自身对应的目标event传输至自身所连接的sink;所述source用于:存储当前需要传输的全部event供所述channel获取;每个所述sink均用于:获取所连接的channel传输的目标event。本专利技术提供了一种数据分流方法、装置、设备及存储介质,该方法包括:每个channel均从source中获取当前需要传输的全部event,并从每个所述event中提取该event的数据类型;其中,一个所述source同时与多个channel连接,多个channel与多个sink一一对应连接;每个所述channel均将每个所述event的数据类型分别与自身配置的数据类型进行比对,并确定与自身配置的数据类型相同的event为目标event;每个所述channel均将与自身对应的目标event传输至自身所连接的sink。本申请中一个source同时与多个channel连接,多个channel与多个sink一一对应连接,且每个channel均具有配置的数据类型,从而每个channel从所连接的source中获取到event后,提取出event的数据类型,进而将其数据类型与自身的数据类型相同的event传输至所连接的sink,实现event的分流;可见,本申请无需针对每种syslog数据均设置对应的udp端口,而是通过多个配置有对应数据类型的channel实现多种数据类型的event、也即syslog数据的分流,从而仅需设置一配置文件实现全部cha本文档来自技高网...

【技术保护点】
1.一种数据分流方法,其特征在于,包括:/n每个channel均从source中获取当前需要传输的全部event,并从每个所述event中提取该event的数据类型;其中,一个所述source同时与多个channel连接,多个channel与多个sink一一对应连接;/n每个所述channel均将每个所述event的数据类型分别与自身配置的数据类型进行比对,并确定与自身配置的数据类型相同的event为目标event;/n每个所述channel均将与自身对应的目标event传输至自身所连接的sink。/n

【技术特征摘要】
1.一种数据分流方法,其特征在于,包括:
每个channel均从source中获取当前需要传输的全部event,并从每个所述event中提取该event的数据类型;其中,一个所述source同时与多个channel连接,多个channel与多个sink一一对应连接;
每个所述channel均将每个所述event的数据类型分别与自身配置的数据类型进行比对,并确定与自身配置的数据类型相同的event为目标event;
每个所述channel均将与自身对应的目标event传输至自身所连接的sink。


2.根据权利要求1所述的方法,其特征在于,每个所述channel均将与自身对应的目标event传输至自身所连接的sink,包括:
每个所述channel均将自身对应的目标event放入至自身包含的putlist中,将自身包含的putlist中的目标event放入至自身包含的缓存队列中,将自身包含的缓存队列中的目标event放入至takelist中;
每个所述sink均由与自身连接的channel包含的takelist中取出目标event。


3.根据权利要求2所述的方法,其特征在于,每个所述channel将自身包含的putlist中的目标event放入至自身包含的缓存队列中之前,还包括:
每个所述channel均判断自身包含的缓存队列中是否存在可放入自身对应的目标event的剩余空间,如果是,则执行将自身包含的putlist中的目标event放入至自身包含的缓存队列中的步骤,如果否,则等待指定时间段后返回执行判断自身包含的缓存队列中是否存在可放入自身对应的目标event的剩余空间的步骤,直至返回执行判断自身包含的缓存队列中是否存在可放入自身对应的目标event的剩余空间的步骤的次数达到预设次数为止。


4.根据权利要求3所述的方法,其特征在于,每个所述channel均判断自身包含的缓存队列中是否存在可放入自身对应的目标event的剩余空间之前,还包括:
每个所述channel均比对自身包含的所述putlist及所述takelist分别包含的目标event的数量,如果自身包含的所述takelist中目标event的数量小于自身包含的所述putlist中目标event的数量,则执行判断自身包含的缓存队列中是否存在可放入自身对应的目标event的剩余空间的步骤,否则,执行将自身包含的putlist中的目标event放入至自身包含的缓存队列中的...

【专利技术属性】
技术研发人员:范颜婷范渊
申请(专利权)人:杭州安恒信息技术股份有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1