一、问题

二、解决方案

那么基于上面两个问题,我们要思考方向就是推的模式,这里使用时websocket,中心思想就是:有日志上报大屏就有网络请求,没有上报就老实一点,别发请求了,省省吧

那么对应websocket不太理解的同学,可以考虑看下 WebSocket原理及如何使用 ,里面讲解的比较详细。

上我们的时序图:

说明:

  1. 大屏在打开的时候,会发起一个websocket的connect请求,这个时候连接成功后,会进行一个token的返回。
  2. 将返回的token与前端请求的条件参数进行合并提交请求到服务端,服务端将token与条件进行一个绑定操作,条件进行唯一值计算,我们使用是md5,在redis里面进行一个集合的绑定操作。
  3. 后台任务会定时去拉取这个关联关系,并且将条件参数提取出来,将条件进行一个单独的进程去进行对应的计算,多核cpu下面,可以考虑使用线程或者多进程来实现,当然如果是go语言,直接用内置的协程也是可以的,毕竟在语言级别实现csp模型还是非常不错的。
  4. 因为是多个模块数据数据生成,并且多模块下面有一些是实时数据,还有一些是要增量数据,实时数据在每次计算都可以覆盖以前的,而增量的数据只能判断当前是否有数据,没有数据不能覆盖数据源,只有有数据才可以进行覆盖。
  5. 计算发现数据版本已经变更后,就通知服务端 条件(condition)与模块列表(modules)需要更新,服务端收到请求后,就将关联关系里面 条件对应的token取出,然后一次性对于这些token发起服务端推送操作,内容就是模块列表(modules)
  6. 前端使用onmessage接收到响应后,在使用token与module请求服务端获取对应模块的数据,服务端获取modules列表后去对应redis里面取出数据直接返回给前端。
  7. 大体的流程就是上面所讲的。

三、过程中的问题

Q:websocket为什么要用ping/pong来维持?

A:因为在本方案里面,ping/pong心跳用来确定一个大屏是否打开的,因为我们在后端计算大屏数据是跟我们的条件来走的,如果我们的大屏掉线了,能够及时通知后台任务,那么我们的计算量会少很多

Q:用ping/pong就能百分百保证我的websocket不会断连吗?

A:答案是否定的,互联网上真没有百分百的事情,网络的一个抖动,我们的ping/pong就有可能挂了,这是很正常的情况,我们在业务上会对于ping/pong进行一些重试机制,这个重试可能会短时间内的,比如1s内发起多少次请求的;如果这个请求不能正确获取数据,那么服务端过期后,其实这个token就没有太多用处了,前端就会有个定时器去探测websocket服务与本地通讯是否有问题,没有问题进行重新的connect操作,而在探测过程中,我们有个降级操作,会将我们websocket操作变成传统的拉模式,这个要结合我们上一篇文件技术方案。

Q:我条件肯定会变更,变更证明做?

A:这是一个好问题,因为啥,切换大屏参数直接导致我们很多模块数据是需要重新渲染的,那么我们需要重新的发送push操作,然后后续逻辑是一致的。

Q:为什么要用token的介入呢,我已经登入系统了,直接uid就可以不?

A:开始我们也是考虑到uid的方案的,为什么不行呢,主要是我们这里的token是跟websocket相关的,可以近似的认为是socket里面的fd,比如我一个人开了10个大屏,那么我推送的那一刻,我需要将10个大屏数据都能推送到,而区别就在于,uid只有一个,token是10个

四、总结

这里为什么花了两个篇幅来写大屏这块呢,主要是在一些简单场景下,我们1.0版本会更适合,毕竟websocket相对于流程复杂一点,那么中间节点处毛病地方就会多一点,但是复杂场景下面,又必须要这样做设计,所以我们就分开两个文章来进行说明。

希望通过两篇文章,同学们能够从中学习到大屏制作技术方案的相关知识点,能够让我们应对产品经理 完(刁)美(钻)需求时候,我们有一个非常合适的技术方案输出。

转载于:https://juejin.im/post/5d05055e6fb9a07ea803c8ad

大屏技术演进-推模式相关推荐

  1. 0代码搭建数据大屏技术 - 观远(AI+BI)商业智能数据分析平台

    大数据时代,企业的任何规划和决策都离不开数据分析的支撑.领导开会要看数据,项目拉投资要看数据,活动复盘要看数据-- 而传统的看数据方式要提前知晓领导需要哪些维度的数据,再由数据分析师基于历史数据做好报 ...

  2. 袋鼠云数据可视化大屏技术揭秘|数据地图的类型

    地图是按照一定的法则,有选择地以二维或多维形式与手段在平面或球面上表示地球(或其它星球)若干现象的图形或图像.在数据可视化中,地图也是一个重要的部分.本期给大家讲解一下在数据可视化中怎样去选择一个合适 ...

  3. 大数据技术助推数字化智慧城市管理平台的搭建

    近来几年,你必定听惯了这样子的形容,说大数据技术,云计算技术,人工智能,5G等数字基础设施,是信息内容文明的"水电煤",我们终究离不了这些. 但你是不是会好奇,在我国,哪座城市将这 ...

  4. 【可视化开发】数据大屏可视化技术汇总

    由于工作原因,需要用到一些大屏可视化技术,于是通过网上整理.自我学习等多途径,汇总了一份大屏可视化技术的思维导图,如下: 这里主要汇总的是: 大屏可视化技术! 大屏可视化技术! 大屏可视化技术! 重要 ...

  5. 2016中国大数据技术大会在北京盛大召开

    摘要:2016年12月8日,作为大数据领域规模最大.最具影响力的IT盛会, 2016中国大数据技术大会(BDTC 2016)在北京新云南皇冠假日酒店盛大开幕,本届大会的主题是"聚焦行业最佳实 ...

  6. 拥抱数字时代 | 第十六届中国大数据技术大会成功举办

    2月26日,由中国计算机学会(CCF)主办,苏州市吴江区人民政府支持,CCF大数据专家委员会.苏州市吴江区工信局.吴江区东太湖度假区管理办公室.苏州市吴江区科技局.苏州大学未来科学与工程学院.Data ...

  7. 监管大屏系统_工厂大屏可视化管控系统,智慧工厂平台是什么,工厂管理大屏软件 - 帆软...

    智慧工厂大屏可视化管控系统,不但注重显示数据显示信息能力,还要兼具监管的作用,配合时代新兴的大屏技术,早已成为精益生产工厂的必备产品.本文权威介绍智慧工厂大屏可视化管控系统是什么,以及3款主流软件,和 ...

  8. 深度探秘大数据新应用,2018 中国大数据技术大会(BDTC)强势来袭!

    2018 年12 月 6 -8日,由中国计算机学会主办,CCF大数据专家委员会承办,CSDN.中科天玑数据科技股份有限公司协办的2018 中国大数据技术大会(BDTC),在北京新云南皇冠假日酒店隆重召 ...

  9. 跳出软硬件思维,大屏角逐折射生活态度

    ​ 文|智能相对论 作者|佘凯文 和手机的大屏化趋势一样,电视的大屏化已经成为另一种科技风潮. 从行业角度来看今年竞争尤为激烈,国外品牌方面,索尼在3月发布两款75吋大屏产品,LG继续扩张,推出了97 ...

最新文章

  1. Winform窗体应用程序的自动更新功能
  2. resnet论文_ResNet还是DenseNet?即插即用的DS涨点神器来了!
  3. 浅聊程序化世界构建流程
  4. c++模板--2(模板机制,模板的局限性,类模板,类模板做函数的参数)
  5. 【Flink】Flink1.11.2 on YARN滚动日志配置
  6. 艾伟_转载:.NET Discovery 系列之二--string从入门到精通(勘误版下)
  7. opencv图像去雾改进
  8. 星际译王,金山词霸,有道词典,词库下载 1
  9. 网络视频传输的服务质量(QoS)
  10. Ubuntu16.04上升级NVIDIA显卡驱动及安装CUDA10.0操作步骤
  11. 如何在ubuntu上解压压缩包
  12. python批量读取txt数据并写入csv
  13. 《经典递归问题:汉罗塔》
  14. 如果你在犹豫要不要去外包公司,不妨看看这篇文章
  15. .java编译成.class 与 .class反编译成.java
  16. Linux下安装postgres数据库(未完待续)
  17. SLAM、SFM、MVG与MVS的区别和联系
  18. GitHub 上 1400星的 Git 魔法书火了
  19. 微信小程序之Js修改元素样式
  20. 基于Java的开源3D游戏引擎jMonkeyEngine

热门文章

  1. JavaScript君,请您坦诚相待~~~
  2. 基于httpd建立私有CA实现https加密连接
  3. 伪元素::before与::after的用法
  4. 第六章、epub文件处理 -- 解析container文件与.opf文件
  5. 八个程序员必备的代码编辑器(附下载链接)
  6. java heap space flex_Flash builder 4内存优化之java heap space解决办法
  7. anaconda学习python_python深度学习笔记1-Anaconda软件安装
  8. 用例图(use case)
  9. 通过Nginx简单安装
  10. Survivor区详解