近来做了一个大屏的大项目(效果类似于下图的那种),说是要做到数据实时,甚至把物联网的那一套东西都接进来实时监控!!!
(大屏指挥中心效果图,来自dreamstime.com)
最后在征求多方专家的建议,综合评估各大方面的情况后后得出一方案是:
其实,这样从数据产生,直到前端显示,差了好几分钟。
本着我是做技术的,整理了一下自己的想法,认为整体数据流程是这样的:
- 数据来源。数据来源可以很多,可以来自kafka、DB、日志文件等。
- 通过spark streaming或storm等实现比较实时流获取分析数据。非实时要求的数据,可以由ETL工具处理落地。
- 对要求实时更新显示的数据,spark每处理处理完一批以后,使用MQ+websocket通知到前端进行更新。
- 前端因为不是面向社会大众,所以可以指定使用支持websocket的浏览器。通过websocket与服务器通信,能够及时得知数据动态。而刷新数据,仍然使用rest的方式,H5页面只关心和处理自己关注的事件,并进行刷新就可。同时,通过定时刷新功能,也可以支持非websocket的浏览器正常的使用。
有时间上代码。。。
当然,并不是所有的最新最好的技术就是最好的解决方案。还要综合人力物力需求等各方面的情况,评估出最合适的方案