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

百万英雄的技术架构大概是什么样的?

  •  1
     
  •   hheedat · 2018-01-08 21:37:59 +08:00 · 7526 次点击
    这是一个创建于 2270 天前的主题,其中的信息可能已经有所发展或是发生改变。

    弹幕分区吗?

    第一题假设所有观看人数都会答题,150w 人假设都在第一秒答题,如何消化 150w qps 并且很快的统计出答题的对错数量?

    欢迎大家讨论

    proxy

    43 条回复    2018-01-12 18:01:41 +08:00
    wangdu2012
        1
    wangdu2012  
       2018-01-08 21:47:38 +08:00 via iPhone
    百万英雄是什么?
    odirus
        2
    odirus  
       2018-01-08 21:48:54 +08:00
    欢迎大神靠谱的科普,我也想学习学习
    lhx2008
        3
    lhx2008  
       2018-01-08 21:50:58 +08:00 via Android
    我也感觉很神奇,上百万的并发,还是视频流量,还有如此复杂的逻辑和同步性,稳定性的要求
    opengps
        4
    opengps  
       2018-01-08 21:52:42 +08:00
    其实应用了一堆的技术,不过这个时候,外界能说的无非就是队列,缓存,分流之类的
    lhx2008
        5
    lhx2008  
       2018-01-08 21:54:28 +08:00 via Android
    不过判断对错中间是有延迟的,不是马上判断对错,应该还是有个消化的时间
    Raidal
        6
    Raidal  
       2018-01-08 22:05:37 +08:00
    同关注,类似的 app 出了一堆,太快了。
    odirus
        7
    odirus  
       2018-01-08 22:34:12 +08:00   ❤️ 1
    发表一下自己的拙见

    每个人最多 10s 答题,答题后主持人通常是 15s ~ 20 s 后才发布答案

    第一题如果是 150W 人答题,30s 消化全部答题结果,使用类似阿里云的 GSLB 在全国多提供几个入口,报名参赛的时候选择就近服务器进行登录,各大节点分别统计自己的结果,然后再汇总显示,我想还是不难的,毕竟题目答案都是已知的,而不是等主持人公布答案之后再实时计算。

    不过很佩服现在的直播技术,一百多万在线的实时视频直播、弹幕直播,确实很考验技术功底。
    odirus
        8
    odirus  
       2018-01-08 22:35:54 +08:00
    打算明天报名参赛,然后抓包分析一下(今天没报上名)
    ssrtree
        9
    ssrtree  
       2018-01-08 22:36:50 +08:00 via Android
    @odirus 有直播可以看?
    grikr
        10
    grikr  
       2018-01-08 22:41:54 +08:00 via Android
    冲顶大会也差不多
    odirus
        11
    odirus  
       2018-01-08 22:41:55 +08:00
    @ssrtree 额,我以前也没看过,打开头条,中间有个按钮“答题”,然后就可以看了啊,效果还做得很好的
    menc
        12
    menc  
       2018-01-08 22:42:59 +08:00
    就告诉你头条的所有 APP 都是一个架构,所谓一招鲜吃遍天,就是这么吊
    swulling
        13
    swulling  
       2018-01-08 22:45:08 +08:00
    这个的难点不在那个答题上,而是在百万人的直播上。
    odirus
        14
    odirus  
       2018-01-08 22:49:36 +08:00
    @swulling 这个赞同,而且还要考虑直播延迟对答案提交的影响
    gamexg
        15
    gamexg  
       2018-01-08 22:52:18 +08:00
    没玩过,
    答题应该不是大麻烦吧?
    答题者之间不存在交互,那么直接堆服务器就可以搞定。
    gamexg
        16
    gamexg  
       2018-01-08 22:53:23 +08:00
    楼上说了,直播是难点,
    可惜不熟悉直播领域。
    mickeyandkaka
        17
    mickeyandkaka  
       2018-01-08 22:53:24 +08:00
    内部有人写 wiki 了, 员工可以看到讨论。

    服务端技术说多不多,说少不少。
    odirus
        18
    odirus  
       2018-01-08 22:55:05 +08:00
    @mickeyandkaka

    吃瓜群众表示想了解学习一下
    tanranran
        19
    tanranran  
       2018-01-08 23:01:25 +08:00
    @mickeyandkaka

    吃瓜群众表示想了解学习一下
    hheedat
        20
    hheedat  
    OP
       2018-01-08 23:07:56 +08:00
    @swulling 百万人直播很成熟了吧,我看斗鱼,panda,很多大主播明面上写的高峰人数都有几百万,推流,cdn 什么的,技术比较专,但是比较容易水平扩容?
    答题这种,汇总什么的是可行的方案,延时要求也如楼上所说,没有那么的及时。
    bestkayle
        21
    bestkayle  
       2018-01-08 23:08:14 +08:00 via Android
    第一个这类型的出来我就知道会和直播一样火
    bestkayle
        22
    bestkayle  
       2018-01-08 23:10:24 +08:00 via Android
    @lhx2008 斗鱼之类的好像都不止百万吧,而且还是 1080 的画质
    Nitromethane
        23
    Nitromethane  
       2018-01-08 23:26:01 +08:00
    CDN 视频流+消息队列
    realpg
        24
    realpg  
       2018-01-08 23:32:47 +08:00
    @bestkayle #22
    在线观看量那数字看看就好……
    swulling
        25
    swulling  
       2018-01-08 23:35:04 +08:00 via iPhone
    @hheedat 谁会信那个人数…

    另外都是直播,对实时性要求不一样,技术难度也是完全不同的。
    akira
        26
    akira  
       2018-01-08 23:38:59 +08:00
    @bestkayle 普通的直播站应该是有秒级的延时的
    Admstor
        27
    Admstor  
       2018-01-08 23:45:17 +08:00
    比双 11 秒杀之类压力小多了
    上面有同学说了,答题和答案之间是有时间差的,统计起来完全没压力

    视频流这个解决方案有很多
    另外几乎所有直播的在线人数都是注水的
    liudaqi
        28
    liudaqi  
       2018-01-08 23:55:14 +08:00 via iPhone
    very intersting!
    hheedat
        29
    hheedat  
    OP
       2018-01-09 00:02:36 +08:00
    @Admstor
    @swulling 答题这个我个人猜测也可能有注水,官方机器人答题摊低成本
    fengchang
        30
    fengchang  
       2018-01-09 00:13:22 +08:00
    主要难度还是在视频下行上。答题的话,100W 个请求虽然很多,但是基本是可以无限横向扩展的。
    Lax
        31
    Lax  
       2018-01-09 01:18:06 +08:00
    最近接了几个视频直播的项目,优化延时还是可以做到比较理想的效果
    binux
        32
    binux  
       2018-01-09 01:32:54 +08:00
    我不认为和普通的(斗鱼之类)直播有太大的不同。
    scnace
        33
    scnace  
       2018-01-09 02:14:36 +08:00 via Android
    持续关注
    tidezyc
        34
    tidezyc  
       2018-01-09 02:25:17 +08:00 via iPhone
    我要说冲顶大会答题我写的你们信不信
    gclove
        35
    gclove  
       2018-01-09 03:17:25 +08:00
    没什么难度,题目和答案都是死的, 不过就是判断选项对不对.

    怎样做负载均衡都可以
    DT27
        36
    DT27  
       2018-01-09 08:37:45 +08:00
    所以冲顶大会我这每次还在看题,选项就没了。。。垃圾服务器。。。
    说好的 10 秒,连 5 秒都没有
    sujin190
        37
    sujin190  
       2018-01-09 09:59:19 +08:00
    这个感觉并不难吧,答案是固定的,把所有答案提前加密写到文件,用 nginx 直接返回,单机就能到百万级 qps 吧,优化的好的话,解密密钥可以提前下发好就可以了
    firefox12
        38
    firefox12  
       2018-01-09 10:15:57 +08:00 via iPhone
    其实没什么难度 简单的推流就可以。百万 qps 又不是一台主机处理,结果已知,任何一个主机都可以水平扩展。百万弹幕 又不是你看到了另外一百万人的消息。最后 百万在线这个数值能确认真实吗?
    ioth
        39
    ioth  
       2018-01-09 11:07:26 +08:00
    有难度吗?
    tidezyc
        40
    tidezyc  
       2018-01-09 12:55:19 +08:00 via iPhone
    @DT27 #36 你用的啥手机,我可以帮你查查
    colincat
        41
    colincat  
       2018-01-09 13:48:20 +08:00
    真心话,技术难度不大,同步时间可以用 socket,而答题可以采用 http nginx 负载均衡,多加点机器就好了,而且基本上只有第一题才有百万流量,主持人可以拖一会,计数也不需要太精准,因为只有内部知道到底有多少人,接下来的题答题人数会越来越少了。
    jccg90
        42
    jccg90  
       2018-01-09 14:41:12 +08:00
    呃,直播技术这么成熟了,这种广播模式的直播,毫无压力啊。。。而且答题的请求,又不要求实时性,用户又没法刷新,网络超时之后还可以直接扔掉不管算答题失败,根本没有事务的问题。。。简直超级简单的
    qscqesze
        43
    qscqesze  
       2018-01-12 18:01:41 +08:00
    这个东西难度又不是判题。。。推送问题和视频两个模块我猜应该是分开的。。。。而且判题应该是在服务器做的,不是在用户侧做的判题。
    当然难度是在直播,首先得要实时性,这个不像直播,直播的延时可能在几十秒都是允许接受的,但是这种答题的延时不能这么高,而且不同的手机之间延时也不能太大。
    另外直播人数,我虽然不是相关项目组的,但是人数这个应该是真的,百万的同时在线人数不注水的。

    比较一下竞品之间的表现,头条还是有实力的,这个东西也不是说说这么简单的,突然一个百万 qps 打过来,服务器稍微不注意就会被打挂。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3514 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:05 · PVG 19:05 · LAX 04:05 · JFK 07:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.