请推荐最接近成品的实时数据可视化服务端(Plotly + websocket)方案? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
faywong8888
V2EX    程序员

请推荐最接近成品的实时数据可视化服务端(Plotly + websocket)方案?

  •  
  •   faywong8888 2024-06-28 16:07:12 +08:00 1889 次点击
    这是一个创建于 522 天前的主题,其中的信息可能已经有所发展或是发生改变。

    辛苦各位技术大拿推荐下,以上只是我有限的调研和选型。如果有其他更好的,也欢迎抛出来。要求是开发工作量尽量小,能直接拿过来用最好。

    7 条回复    2024-06-29 21:43:28 +08:00
    xueling
        1
    xueling  
       2024-06-28 16:52:27 +08:00   1
    看你侧重什么了,如果你侧重前端的交互形式,丰富、炫酷的可视化展示功能,那请忽略。但如果你侧重统计计算方面功能的完善度、性能和稳定性、支撑的数据量级,那你考虑一下我的开源项目: https://github.com/xl-xueling/xl-lighthouse 。优势很多,拿来即用,几乎没任何开发量,将数据指标的原始数据上报上来就 OK 了,既有集群版本也有单机版本,有完善的数据指标管理和权限审批机制,统计项直接在页面配置就可以了。可以考虑一下,有任何问题,我会第一时间帮你解决。
    faywong8888
        2
    faywong8888  
    OP
       2024-06-29 09:21:03 +08:00
    @xueling 看到你的热心回复,态度让人感动。我主要用于做 IoT 监控大盘用。主要是实时数据的可视化和历史数据的查询,附带有账户和权限控制。


    ## 现状

    过去我其实用 ThingsBoard 搭建了一个版本,自己额外开发了社区版里缺少的一些特性,现在线上正常使用中。
    但是一个人开发维护部署 Thingsboard 架构过于庞大。所以萌生了简化架构的想法。我现在用 c++ epoll 实现了设备接入网关和告警等等,有极小的内存占用,然后把时许数据存入数据库。现在打算来做 IoT 监控大盘。调研下来,前端 echarts 、Plotly 好像生态比较大。后端我比较熟悉 Clojure ,正评估一人框架 [biff]( https://github.com/jacobobryant/biff) 中。

    ## xl-lighthouse
    我大致看了下 https://dtstep.com/zh/helloworld/02.html 里边的介绍,我定义下数据模型和统计项,通过 sdk 上报数据即可,也支持 IoT 设备上的时序数据(几点几分-> 温度/流量),趋势图/实时图。
    看起来不错,我打算周末来部署一个试试。

    中国程序员的项目,必须优先支持和反馈完善。接地气、不吹牛逼、谦逊的态度难能可贵。
    faywong8888
        3
    faywong8888  
    OP
       2024-06-29 09:38:12 +08:00
    @xueling

    有几个问题:

    1. 上报数据的 sdk 现在是有 java 版本吗?是否开放协议细节,开放的地话,我后边开发一个 c++ 版本。

    2. 个人家庭 IoT 使用,是否涉及到软件授权费?如果几台设备的可视化有费用,我就不考虑了。

    3. 有适合单机部署的 docker compose 吗?
    faywong8888
        4
    faywong8888  
    OP
       2024-06-29 09:40:20 +08:00
    @xueling 还有一个问题:

    后台数据发生增加/删除/更新,统计/监控前台界面是否自动刷新?
    xueling
        5
    xueling  
       2024-06-29 10:57:52 +08:00
    @faywong8888 1 、目前只有 java 版本的 sdk ,还有个临时的 http 接口,如果不是 java 技术栈,数据量不大的话可以使用 http 接口上报,这样接入成本更低一点。现在 http 接口是一个单独的工程,后续我会把 http 接口和 rpc 服务融合在一起。如果数据量大的话就要考虑用 java sdk 来上报。我还没有试过在 c++中直接调用 java 版的 sdk 是否会存在太大的性能损耗,但我感觉应该没有较大问题,可以试一下。数据量大的话还有一种方案就是中间加一层类似 kafka 的消息组件,先将数据写入消息组件,然后再通过 java 消费的方式。上报方案完全取决于你的数据量。至于开放协议,暂时还没有,因为 sdk 中除了基本的上报逻辑,还涉及一些消息数据的聚合、秘钥验证等逻辑,实现起来其实有点麻烦,至将上报协议公开,我还要再好好考虑一下看看有没有这种必要。

    2 、是否涉及软件授权费用? 企业内部或个人使用都是不收取任何费用的,而且没有任何数据量和数据指标数量的限制。但如果涉及到对外销售相关服务(比如给第三方提供可视化大屏服务并获取收益),就需要收取一定比例的授权费用。

    3 、没有单机部署的 docker compose 。不过项目本身就是一键部署,操作很简单。

    4 、后台数据发生增加/删除/更新,统计/监控前台界面是否自动刷新?
    首先,你说的后台数据是不是指上报的原始消息数据,大部分流式统计场景是不需要删除和更新操作的,只有新增。这与 OLAP,OLTP 类的技术方案不同,XL-LightHouse 本身并不维护原始消息数据,只维护统计结果状态值,所以是不支持删除和更新的,不过项目支持负值运算。
    其次,目前前端交互方面支持的功能,如果统计结果发生变化,前端图表不会自动刷新,看下面的图片,需要点击一下统计项标题旁边的刷新按钮,图表才会刷新。后续会提供数据大屏功能,可以免登录、自定义视图、图表自动刷新等功能。

    https://camo.githubusercontent.com/cf74e768875fff5628f4f5aec59a106fcffe9fac13d55624dc76771381765785/68747470733a2f2f6c69676874686f75736564702d313330303534323234392e636f732e61702d6e616e6a696e672e6d7971636c6f75642e636f6d2f73637265656e73686f745f76322f32332e6a7067

    如有问题,可以加我微信,随时联系我~
    faywong8888
        6
    faywong8888  
    OP
       2024-06-29 20:37:15 +08:00
    @xueling 解释得很清楚。

    >> 临时的 http 接口
    有文档吗?我用 c++ 来尝试上报试试看。
    我的数据量很小,就家里几个 IoT 表,撑死 40 个数值。
    xueling
        7
    xueling  
       2024-06-29 21:43:28 +08:00
    http 接口,现在不在项目里面,需要单独部署一下。工程地址: https://github.com/xl-xueling/lighthouse-interface ,doc 目录下有说明文档,如有问题随时反馈~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     905 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 22:04 PVG 06:04 LAX 14:04 JFK 17:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86