如何基于日志,同步实现数据的一致性和实时抽取?
通过心跳模块,例如每分钟(可配置)对每个被抽取的表插入一条心态数据并保存发送时间,这个心跳表也被抽取,跟随着整个流程下来,与被同步表在实际上走相同的逻辑(因为多个并发的的Storm可能有不同的分支),当收到心跳包的时候,即便没有任何增删改的数据,也能证明整条链路是通的. Storm程序和心跳程序将数据发送公共的统计topic,再由统计程序保存到influxdb中,使用grafana进行展示,就可以看到如下效果: 图中是某业务系统的实时监控信息.上面是实时流量情况,下面是实时延时情况.可以看到,实时性还是很不错的,基本上1~2秒数据就已经到末端kafka中. Granfana提供的是一种实时监控能力. 如果出现延时,则是通过dbus的心跳模块发送邮件报警或短信报警. 实时脱敏 考虑到数据安全性,对于有脱敏需求的场景,Dbus的全量storm和增量storm程序也完成了实时脱敏的功能.脱敏方式有3种: 总结一下:简单的说,Dbus就是将各种源的数据,实时的导出,并以UMS的方式提供订阅,支持实时脱敏,实际监控和报警. 四、Wormhole解决方案说完Dbus,该说一下Wormhole,为什么两个项目不是一个,而要通过kafka来对接呢? 其中很大一个原因就是解耦,kafka具有天然的解耦能力,程序直接可以通过kafka做异步的消息传递.Dbus和Wornhole内部也使用了kafka做消息传递和解耦. 另外一个原因就是,UMS是自描述的,通过订阅kafka,任何有能力的使用方来直接消费UMS来使用. 虽然UMS的结果可以直接订阅,但还需要开发的工作.Wormhole解决的是:提供一键式的配置,将kafka中的数据落地到各种系统中,让没有开发能力的数据使用方通过wormhole来实现使用数据. 如图所示,Wormhole 可以将kafka中的UMS 落地到各种系统,目前用的最多的HDFS,JDBC的数据库和HBase. 在技术栈上,wormhole选择使用spark streaming来进行. 在Wormhole中,一条flow是指从一个namaspace从源端到目标端.一个spark streaming服务于多条flow. (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |