实时计算的需求和解决方案(Kafak+sparkstream+redis)
我们通常使用Kafak+sparkstream+redis来作为我们实时数据处理的方案,需要处理各种关于实时计算的需求。
需求一:触发告警
流式数据的某个字段是一个固定的值,比如 state是off,而一旦这个值发生了改变,我们需要触发告警,比如state变成了on。
触发告警提示这个状态值出错。等这个值再次变为off的时候,需要再次触发告警,提示这个值已经恢复正常。在这个值异常期间,告警只触发一次。
需求一解决:将数据流的状态维护在redis里面,每过来一个数据流都去与之前的数据流的状态做一个比较,然后根据规则发出告警。
需求二:实时变更告警配置表
告警的规则维护在数据库的表里,要求在变更了告警的规则之后,触发告警的规则能实时发生变更而不需要重启程序。
解决:讲告警规则也维护在redis里。
总结:如果在spark里没有好的维护内存状态的方法,可以将状态维护在redis里。
优势:spark和redis组件的分隔使得实时促发成为可能,而redis优秀的读写能力也使得其成为优秀的状态保存栈。
劣势:这个架构能够支持的范围很是有限,对于海量数据或者高并发的情景,redis的处理还有一定的局限性,而如果使用redis集群和多线程满足亿级以内的数据不成问题,性能的瓶颈多在于组件的优化上。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端