实时计算的需求和解决方案(Kafak+sparkstream+redis)

我们通常使用Kafak+sparkstream+redis来作为我们实时数据处理的方案,需要处理各种关于实时计算的需求。

需求一:触发告警

流式数据的某个字段是一个固定的值,比如 state是off,而一旦这个值发生了改变,我们需要触发告警,比如state变成了on。

触发告警提示这个状态值出错。等这个值再次变为off的时候,需要再次触发告警,提示这个值已经恢复正常。在这个值异常期间,告警只触发一次。

需求一解决:将数据流的状态维护在redis里面,每过来一个数据流都去与之前的数据流的状态做一个比较,然后根据规则发出告警。

需求二:实时变更告警配置表

告警的规则维护在数据库的表里,要求在变更了告警的规则之后,触发告警的规则能实时发生变更而不需要重启程序。

解决:讲告警规则也维护在redis里。

总结:如果在spark里没有好的维护内存状态的方法,可以将状态维护在redis里。

优势:spark和redis组件的分隔使得实时促发成为可能,而redis优秀的读写能力也使得其成为优秀的状态保存栈。

劣势:这个架构能够支持的范围很是有限,对于海量数据或者高并发的情景,redis的处理还有一定的局限性,而如果使用redis集群和多线程满足亿级以内的数据不成问题,性能的瓶颈多在于组件的优化上。

 

 

posted @   feitiandamo  阅读(101)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示