大屏技术演进-推模式
一、问题
- 在我们上一篇文章《大屏技术演进-拉模式》最后思考部分,我们提出条件单一使用拉模式其实也可以,定时控制一下时间粒度问题,整个架构也简单,那如果我们条件增加了呢,用那个模式是不是又回到前端请求同时要根据条件计算的问题呢?
- 我们是否可以理解为在大屏上面其实在很多时刻可能没有大量日志数据打点,那我们在人类社会一般沟通方式都是:你有事叫我,没事别叫我(尽量少这样做,会没有朋友的),在服务架构上,咱们还是尽量做到:有日志上报通知我,而前端不需要定时去拉取数据,数据拉取也是需要消耗网络流量的。
二、解决方案
那么基于上面两个问题,我们要思考方向就是推的模式,这里使用时websocket,中心思想就是:有日志上报大屏就有网络请求,没有上报就老实一点,别发请求了,省省吧
那么对应websocket不太理解的同学,可以考虑看下 WebSocket原理及如何使用 ,里面讲解的比较详细。
- 大屏在打开的时候,会发起一个websocket的connect请求,这个时候连接成功后,会进行一个token的返回。
- 将返回的token与前端请求的条件参数进行合并提交请求到服务端,服务端将token与条件进行一个绑定操作,条件进行唯一值计算,我们使用是md5,在redis里面进行一个集合的绑定操作。
- 后台任务会定时去拉取这个关联关系,并且将条件参数提取出来,将条件进行一个单独的进程去进行对应的计算,多核cpu下面,可以考虑使用线程或者多进程来实现,当然如果是go语言,直接用内置的协程也是可以的,毕竟在语言级别实现csp模型还是非常不错的。
- 因为是多个模块数据数据生成,并且多模块下面有一些是实时数据,还有一些是要增量数据,实时数据在每次计算都可以覆盖以前的,而增量的数据只能判断当前是否有数据,没有数据不能覆盖数据源,只有有数据才可以进行覆盖。
- 计算发现数据版本已经变更后,就通知服务端 条件(condition)与模块列表(modules)需要更新,服务端收到请求后,就将关联关系里面 条件对应的token取出,然后一次性对于这些token发起服务端推送操作,内容就是模块列表(modules)
- 前端使用onmessage接收到响应后,在使用token与module请求服务端获取对应模块的数据,服务端获取modules列表后去对应redis里面取出数据直接返回给前端。
- 大体的流程就是上面所讲的。
三、过程中的问题
A:因为在本方案里面,ping/pong心跳用来确定一个大屏是否打开的,因为我们在后端计算大屏数据是跟我们的条件来走的,如果我们的大屏掉线了,能够及时通知后台任务,那么我们的计算量会少很多
Q:用ping/pong就能百分百保证我的websocket不会断连吗?
A:这是一个好问题,因为啥,切换大屏参数直接导致我们很多模块数据是需要重新渲染的,那么我们需要重新的发送push操作,然后后续逻辑是一致的。
Q:为什么要用token的介入呢,我已经登入系统了,直接uid就可以不?
四、总结
希望通过两篇文章,同学们能够从中学习到大屏制作技术方案的相关知识点,能够让我们应对产品经理 完(刁)美(钻)需求时候,我们有一个非常合适的技术方案输出。
转载于:https://juejin.im/post/5d05055e6fb9a07ea803c8ad
大屏技术演进-推模式相关推荐
- 0代码搭建数据大屏技术 - 观远(AI+BI)商业智能数据分析平台
大数据时代,企业的任何规划和决策都离不开数据分析的支撑.领导开会要看数据,项目拉投资要看数据,活动复盘要看数据-- 而传统的看数据方式要提前知晓领导需要哪些维度的数据,再由数据分析师基于历史数据做好报 ...
- 袋鼠云数据可视化大屏技术揭秘|数据地图的类型
地图是按照一定的法则,有选择地以二维或多维形式与手段在平面或球面上表示地球(或其它星球)若干现象的图形或图像.在数据可视化中,地图也是一个重要的部分.本期给大家讲解一下在数据可视化中怎样去选择一个合适 ...
- 大数据技术助推数字化智慧城市管理平台的搭建
近来几年,你必定听惯了这样子的形容,说大数据技术,云计算技术,人工智能,5G等数字基础设施,是信息内容文明的"水电煤",我们终究离不了这些. 但你是不是会好奇,在我国,哪座城市将这 ...
- 【可视化开发】数据大屏可视化技术汇总
由于工作原因,需要用到一些大屏可视化技术,于是通过网上整理.自我学习等多途径,汇总了一份大屏可视化技术的思维导图,如下: 这里主要汇总的是: 大屏可视化技术! 大屏可视化技术! 大屏可视化技术! 重要 ...
- 2016中国大数据技术大会在北京盛大召开
摘要:2016年12月8日,作为大数据领域规模最大.最具影响力的IT盛会, 2016中国大数据技术大会(BDTC 2016)在北京新云南皇冠假日酒店盛大开幕,本届大会的主题是"聚焦行业最佳实 ...
- 拥抱数字时代 | 第十六届中国大数据技术大会成功举办
2月26日,由中国计算机学会(CCF)主办,苏州市吴江区人民政府支持,CCF大数据专家委员会.苏州市吴江区工信局.吴江区东太湖度假区管理办公室.苏州市吴江区科技局.苏州大学未来科学与工程学院.Data ...
- 监管大屏系统_工厂大屏可视化管控系统,智慧工厂平台是什么,工厂管理大屏软件 - 帆软...
智慧工厂大屏可视化管控系统,不但注重显示数据显示信息能力,还要兼具监管的作用,配合时代新兴的大屏技术,早已成为精益生产工厂的必备产品.本文权威介绍智慧工厂大屏可视化管控系统是什么,以及3款主流软件,和 ...
- 深度探秘大数据新应用,2018 中国大数据技术大会(BDTC)强势来袭!
2018 年12 月 6 -8日,由中国计算机学会主办,CCF大数据专家委员会承办,CSDN.中科天玑数据科技股份有限公司协办的2018 中国大数据技术大会(BDTC),在北京新云南皇冠假日酒店隆重召 ...
- 跳出软硬件思维,大屏角逐折射生活态度
文|智能相对论 作者|佘凯文 和手机的大屏化趋势一样,电视的大屏化已经成为另一种科技风潮. 从行业角度来看今年竞争尤为激烈,国外品牌方面,索尼在3月发布两款75吋大屏产品,LG继续扩张,推出了97 ...
最新文章
- Winform窗体应用程序的自动更新功能
- resnet论文_ResNet还是DenseNet?即插即用的DS涨点神器来了!
- 浅聊程序化世界构建流程
- c++模板--2(模板机制,模板的局限性,类模板,类模板做函数的参数)
- 【Flink】Flink1.11.2 on YARN滚动日志配置
- 艾伟_转载:.NET Discovery 系列之二--string从入门到精通(勘误版下)
- opencv图像去雾改进
- 星际译王,金山词霸,有道词典,词库下载 1
- 网络视频传输的服务质量(QoS)
- Ubuntu16.04上升级NVIDIA显卡驱动及安装CUDA10.0操作步骤
- 如何在ubuntu上解压压缩包
- python批量读取txt数据并写入csv
- 《经典递归问题:汉罗塔》
- 如果你在犹豫要不要去外包公司,不妨看看这篇文章
- .java编译成.class 与 .class反编译成.java
- Linux下安装postgres数据库(未完待续)
- SLAM、SFM、MVG与MVS的区别和联系
- GitHub 上 1400星的 Git 魔法书火了
- 微信小程序之Js修改元素样式
- 基于Java的开源3D游戏引擎jMonkeyEngine
热门文章
- JavaScript君,请您坦诚相待~~~
- 基于httpd建立私有CA实现https加密连接
- 伪元素::before与::after的用法
- 第六章、epub文件处理 -- 解析container文件与.opf文件
- 八个程序员必备的代码编辑器(附下载链接)
- java heap space flex_Flash builder 4内存优化之java heap space解决办法
- anaconda学习python_python深度学习笔记1-Anaconda软件安装
- 用例图(use case)
- 通过Nginx简单安装
- Survivor区详解