• 数据看板的动态截图推送方案


    1. 技术背景

    如何全面地分析数据,可视化的展示数据分析结果,并及时有效将关键数据传递给用户,是互联网时代的商业智能(Business Intelligence)所关注的核心问题。BI分析工具已经不再仅仅是分析和展示数据的工具,而为向自动化和智能化演进,希望可以主动地把数据结果传递给用户。因此,数据看板通过截图的形式被主动推送给相关用户便是一种及时且有效的数据分析结果触达到用户侧的方式。

    2. 现有技术方案

    目前现有BI产品中看板推送的主要技术方案为利用浏览器内核对数据看板的URL(Uniform Resource Locator,统一资源定位器)进行页面渲染再截图的处理流程,这样可以保证用户接收到看板截图和其在浏览器页面上看到的内容与格式一致,具有所见即所得的高保真性。

    3. 现有方案的缺点

    通过看板的URL直接进行截图,存在以下缺点:

    1. 无法实现看板内容随着推送对象变化而变化:看板的内容并非一成不变的,受到用户行级权限和默认筛选条件等因素的影响,看板的内容会因人而易,数据展示需要动态加载,截图尺寸也需要动态计算,这种情况下静态URL来进行页面渲染无法达到预期效果。
    2. 看板截图推送单次成功率不高:看板截图推送过程流程过长,要经历页面渲染、截图保存和内容推送三个环节。受到网络波动等外界因素干扰,每个环节都有失败的可能性,从而造成看板截图无法触达用户侧,需要反复尝试,造成推送延迟。
    3. 截图的数据安全性无强保障:看板截图在生产之后,图片的权限管理别离开的系统。看板截图在调用、存储、发送等环节都可能被泄露,不适合敏感数据。
    4. 看板截图尺寸固定:只能适配PC端的布局,无法适配移动端。

    4. 发明目的

    本方案希望设计一种数据看板的动态截图方案,以实现以下效果:

    1. 看板截图内容因人而异的,随着推送对象变化而变化;
    2. 实现PC和移动端设备布局切换的效果,以满足更为丰富的使用场景;
    3. 通过辅助手段降低看板截图推送失败率,如通过动态计算看板请求流量设置超时时间,以提高看板截图成功率,以及加入任务补偿机制,适时发起重试任务等;
    4. 增强看板截图的安全管理,保证截图在传输和保存过程中的数据安全性;

    5. 重点内容

    本方案具体内容如下:

    1. 用户通过“推送规则配置模块”设置看板推送规则并保存在数据库(DB)中进行持久化,推送规则内容包括待推送的看板列表、消息接收人列表、截图布局类型(PC端布局或移动端布局)、推送定时规则等等。

    2. “推送任务调度模块”定时从DB中获得待执行的推送规则,并根据不同的推送人拆分为不同的截图推送任务,发起执行流程。

    3. 执行流程包括“渲染截图”、“截图保存”、“内容推送”三个步骤,每一步都由独立的模块执行,每个模块在执行后无论成功还是失败都会向“推送任务调度模块”反馈任务的执行状态;“推送任务调度模块”会在数据库中记录任务的执行状态,以方便管理推送任务的声明周期。

    4. “任务补偿”模块定时从DB中获取到执行失败的任务,从上次失败的步骤重新开始执行,确保失败任务可以进入补偿流程。

    5. “渲染截图”模块负责根据接收人的身份权限生成看板页面的动态URL,并根据此来渲染和截图,以保证看板截图内容因人而异的推送效果。具体内容如下:

      • 5.1 利用非对称加密算法(如SHA1_WITH_RSA),生成包含接收人的身份数字签名(data signature),该签名在有效期内可以用于验证登录用户身份;

      • 5.2 根据推送规则的配置信息(如是PC端布局还是移动端布局)和接受者的权限筛选条件,动态生成对应看板的URL。

      • 5.3 根据待截图看板内的可视化组件的数量,等比例设置合适的看板截图超时失败时间;

      • 5.4 基于无头(headless)浏览器内核执行截图脚本:截图脚本首先会将5.1中生产的用户身份数字签名提交给指定的登录接口,签名的时效性和正确性通过之后,当前会话便进入数字签名对应用户的身份的登录态;基于之前登录后的会话,脚本依次访问5.2中生成的看板动态url,并待其渲染完毕后进行截图操作;如果看板在等待超过5.3中设置的超时时间之后也没有完成渲染,则认为截图任务失败,进入任务补偿流程;反之,如果截图在超时时间之前顺利完成,则会被保存在指定临时目录下,等待被上传。

    6. “截图保存”模块负责将5.4中生产的截图上传到简单存储服务(Simple Storage Service,简称S3)模块,S3模块返回截图的保存地址链接,这些链接将用于推送消息的生成,具体细节如下:

      • 6.1 S3模块作为海量对象的存储服务,提供高速且完备对象存储与下载功能,看板截图在上传到S3服务之后,以S3存储链接的形式被使用,该存储链接具有时效性和访问控制性,只有被信任的服务在有效期内才能访问图片,确保了图片存储的安全性。
      • 6.2 看板截图并不是直接以文件的形式推送给用户,而是通过引用S3存储链接,再在IM(Instant Messaging,即时通讯)客户端中加载图片,因此避免了看板推送服务直接去发送大量文件而造成性能消耗,以提高服务的稳定性。因此文件在上传S3模块后所产生的存储链接将会被统一记录下来,用以最后生成推送消息。
    7. “内容推送”模块负责根据推送配置规则将6.2中记录的截图S3存储链接生成Markdown格式文本,并通过IM模块给用户发送消息,达到消息推送的效果,具体细节如下:

      • 7.1 Markdown格式文本中并不直接包含看板截图,而是以超链接的形式引用截图对应的S3存储链接;
      • 7.2 IM发送Markdown格式文本到客户端后,客户端通过存储链接下载图片,最终生成完整的图文消息呈现给用户。

    尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili

  • 相关阅读:
    OSS对象存储命令管理、数据迁移
    图论算法大合集【包括图的dfs和bfs遍历】【欧拉回路】【判断连通图】【Dijkstra算法】【floyd算法】【最小生成树prim算法】【拓扑排序】
    Linux简介-特点、基本思想、工作原理、主要功能、内核、发行版本、应用、终端、命令提示符、目录结构、文件
    浅谈 UUID 生成原理及优缺点
    微分方程和线性代数(分离变量法开始)
    新建项目Group和Artifact该如何写
    Helm简易安装使用
    matlab神经网络预测模型,matlab人工神经网络预测
    LeetCode(力扣)509. 斐波那契数Python
    (BV11b)基于标准LWE假设的加密方案初学
  • 原文地址:https://blog.csdn.net/jmysql/article/details/126290751