storm实时流处理中如何利用redis去除重复数据?
1.storm处理上网行为日志数据(单条日志时间戳很接近),同一用户30天内不重复发送消息,我使用redis去重,由于storm高并发的机制,当我设置redis bolt的并发度大于1的时候,结果数据总是会有重复的情况,时间基本相同或很接近。如:
第一组:
201711|08|ID01XXXXXXXX|INTERNATIONALPORT|TEST001|2017-11-08 21:38:45
201711|08|ID01XXXXXXXX|INTERNATIONALPORT|TEST001|2017-11-08 21:33:43
第二组:
201711|09|ID02XXXXXXXX|INTERNATIONALPORT|TEST001|2017-11-09 05:59:45
201711|09|ID02XXXXXXXX|INTERNATIONALPORT|TEST001|2017-11-09 05:59:45
2.尝试的解决办法,将redis bolt的并发度设置为1,可以解决以上问题,实际需求并不希望这样做,将redis bolt设置为1之后,可能成为整个storm程序的性能瓶颈(虽然到这里数据量已经不是很大了)
3.请假一下有没有什么好的办法可以在高并发下实现30天内对同一个用户不重复发送消息?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
直接为每个用户设置一个事件锁不就成了,发了直接设置当前用户的事件锁并且失效时间30天,每次发送check一下锁存不存在。