V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Geekerstar
V2EX  ›  Big Data

不影响业务系统的情况下如何做实时大屏展示呢?

  •  
  •   Geekerstar · 2021-09-09 08:49:27 +08:00 · 3035 次点击
    这是一个创建于 1181 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前需要做个大屏展示,不能对业务系统有侵入性,需要实现类似于新增一件商品大屏上数字就实时加 1,数据库 MySQL

    目前考虑是通过 canal 通过 binlog 订阅某几张表来实现新增通知机制,有没有什么更好的办法呢?是个小工程,周期很短。

    感谢大家!!!

    第 1 条附言  ·  2021-09-09 12:38:14 +08:00
    如果轮询的话,做不到实时,并且每次查询很慢,即使并发查询所有的统计项也要个几秒
    18 条回复    2021-09-09 21:08:11 +08:00
    zbn
        1
    zbn  
       2021-09-09 08:52:08 +08:00
    redis incr
    learningman
        2
    learningman  
       2021-09-09 09:19:00 +08:00 via Android
    要实时到什么程度,轮询可以吗?
    kop1989
        3
    kop1989  
       2021-09-09 09:22:12 +08:00
    1 、业务系统完全不能够改动?
    2 、实时是真的“实时”?

    一般的大屏都是延时的轮询数据。
    如果真的需要实时,则一般是从业务系统直接异步推过来,然后延时做数据矫正。
    Kilerd
        4
    Kilerd  
       2021-09-09 09:51:49 +08:00
    prometheus 不行吗?
    thet
        5
    thet  
       2021-09-09 09:55:02 +08:00 via iPhone
    加从库,统计用从库
    ipwx
        6
    ipwx  
       2021-09-09 09:57:07 +08:00
    不能改业务系统但是要实时刷新,除了轮询还有啥办法。。。
    eric1202
        7
    eric1202  
       2021-09-09 09:57:47 +08:00
    轮询足够了
    zzfly256
        8
    zzfly256  
       2021-09-09 10:47:54 +08:00
    自己写个 Promethues Exporter 吧,可以配合 Grafana 做大屏展示。我司在用着,感觉不错
    Felldeadbird
        9
    Felldeadbird  
       2021-09-09 10:54:38 +08:00
    搞多一个从库。业务代码单独查询从库。 内网从库速度飞快。
    THESDZ
        10
    THESDZ  
       2021-09-09 10:57:17 +08:00
    定时任务去计算和存储,前端再轮询获取计算结果
    kssdxw
        11
    kssdxw  
       2021-09-09 15:19:29 +08:00
    kafka connect 的 debezium 插件读取 mysql binlog,然后再 kafka 消费端如果业务复杂就接一个 flink 实时打到 OLAP 数据库,不复杂就直接写个后端项目接个缓存开接口反给前端,如果比这还轻的话那就从库轮询。
    kssdxw
        12
    kssdxw  
       2021-09-09 15:21:49 +08:00
    高实时的话直接用我上面第一个方法,我们在用这套搭数据系统,只要没有很重的状态,内网毫秒级别能拿到计算结果。
    lycbug666
        13
    lycbug666  
       2021-09-09 15:36:18 +08:00
    flink-cdc+flink 处理+写入 mysql
    Jooooooooo
        14
    Jooooooooo  
       2021-09-09 16:50:58 +08:00
    监听 binlog 异步写缓存呀
    kekxv
        15
    kekxv  
       2021-09-09 18:08:06 +08:00 via iPhone
    你可以没 5 秒查询一次,然后在五秒内平均 0.5 秒加一次数值,就可以了
    otakustay
        16
    otakustay  
       2021-09-09 18:32:44 +08:00   ❤️ 1
    每 10 秒查一次,前 N 次查询确定一大概的增长速率,后续 10 秒间隔里自己画个贝塞尔曲线假更新数据就行,10 秒后新数据到了看一看,如果新数据比假更新出来的还少就不要更新(避免数字变小),然后修正下一个周期的假更新速率
    说难听的叫骗人,说好听的这叫乐观更新!
    LeoJ
        17
    LeoJ  
       2021-09-09 18:42:10 +08:00
    Web 前旁路报文捕获,还原 http 协议,提字段做统计吧~
    soupu626
        18
    soupu626  
       2021-09-09 21:08:11 +08:00
    一般讲,除非是极特殊特种行业比如电网之类的,没有哪个行业是忍受不了秒级的大屏延迟的,归根到底,大屏只是给人看的,做决策不会差这几秒的问题,优先从业务上搞定需求方,如果真的是面子工程,必须要每秒滚动,就和上面的老哥说的一样,这个周期查出来,然后再下次查询的周期里,平均或者随机的展示出去。。。好看点

    如果真是特种行业,再考虑数据库 binlog 或者 flink 那一套东西吧,其实我感觉那一套搞下来,延时也不小
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1531 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:17 · PVG 01:17 · LAX 09:17 · JFK 12:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.