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

请教一个服务器部署问题

  •  
  •   simplove · 2021-07-02 20:46:29 +08:00 · 3898 次点击
    这是一个创建于 1239 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个音乐考试网站服务于某个区。 区有 60 所学校,每个学校 100 台电脑考试,同时最高的并发量是 60*100=6000,总人数好几万吧 轮流考试,每人考试时间大概是 15 分钟左右,就唱两首歌的时间。 全部用 web 登录,试听音乐,学生唱歌,上传,试听,唱歌,上传,然后是提交。 最后还有对接一个 AI 进行评分。 试听的歌曲有压缩,一首歌大概在 5M 左右,学生唱的歌一首歌大概 10M 左右。 目前开发那边用的是一台服务器,配置为 20 核,32G,600G SAS 硬盘 结果考试的时候不是登录不上,就是试听没反应,还有上传歌曲的时候没反应。 用户体验差得一逼。 每间学校是移动专线 300 上 /300 下,服务器机房用的是 1000M 移动专线,上下对等。 今天又说要用阿里云 OSS 来处理音乐的上传和下载问题,然后要部署 3 台服务器。

    各位大佬有什么好的建议呢

    第 1 条附言  ·  2021-07-03 17:45:53 +08:00
    非常感谢大家的回复。
    综合考虑了下,如果是所有学校统考,上云是最靠谱的。下载用 CDN,上传用 OSS,毕竟上传流量是免费的。
    如果只是个别学校自己的考试,本地服务器应该足够应付。
    29 条回复    2021-07-03 19:45:30 +08:00
    Tianao
        1
    Tianao  
       2021-07-02 20:57:51 +08:00 via iPhone
    不知道楼主啥身份,不好给建议,这不就是 KTV 的一个子系统吗,感觉是代码写得不行,建议首先考虑从软件开发的角度解决,而不是 SRE 的角度。
    villivateur
        2
    villivateur  
       2021-07-02 20:58:40 +08:00 via Android
    这种东西应该是短时间的瞬时峰值访问吧?总不可能天天考试。不如上云,考试之前疯狂开机器,考完了就退还。
    fuse
        3
    fuse  
       2021-07-02 21:13:08 +08:00 via iPhone
    oss cdn 就这?
    simplove
        4
    simplove  
    OP
       2021-07-02 21:22:41 +08:00
    @Tianao 甲方,代码是乙方写的,前端 VUE,后台 java spring boot 框架。mysql 数据库。。。软件开发嘛,就别提了,坑。不然也不会来这咨询了
    simplove
        5
    simplove  
    OP
       2021-07-02 21:24:04 +08:00
    @villivateur 基本上是一次性的固定费用,上云的话,费用不好搞呀。所以最好是不上云。但是开发说找人自己搭 OSS,我有点无语。
    yin1999
        6
    yin1999  
       2021-07-02 21:33:44 +08:00
    这个场景还是使用 OSS 费用低啊,整一个流量包+存储包,这不比高性能服务器便宜。云厂商也会提供 OSS 的 SDK,通过后端预签名的方式,给前端提供预签名的 URL 就可以实现音频文件的上传和下载了
    zzzzqqw
        7
    zzzzqqw  
       2021-07-02 21:44:39 +08:00
    6000*10M *8bit = 480000M >> 1000M
    6000 个人同时上传 /下载瞬时峰值带宽 48 万 M,一台服务器提供 1 千兆带宽。这不网络堵塞吗
    Tianao
        8
    Tianao  
       2021-07-02 22:08:47 +08:00 via iPhone
    @zzzzqqw #7 你这是一个人 80 Mbps 的下行,怎么可能?
    chenluo0429
        9
    chenluo0429  
       2021-07-02 23:56:20 +08:00
    把数据都进行切片,分段获取和上传,而不是一次性以文件的形式去处理,否则峰值肯定会把你的服务击穿的。
    aqqwiyth
        10
    aqqwiyth  
       2021-07-03 00:52:20 +08:00   ❤️ 1
    这个问题说白了是解决瞬时带宽的问题


    1. 先解决下载的问题, 每个学校放一台前置机器,下载走前置机器,考试前全部同步准备好, 这样歌曲的下载就解决了.
    2. 然后就是上传的问题, 假如都是同时上传 6000*10M=6G . 这么大的带宽会被当做黑客攻击了. 另外硬盘也写不进去 不是学校网络卡死就是服务器卡死. 所以这个解法还是得用问题 1 来解决. 离线同步+上传+离线 AI 分析
    ---------------------------------------------------------------------------------
    考虑到运维跟人工成本. 60 个学校机器运维可能要疯掉. 另外学校的上行的带宽也不够.


    如果 AI 是第三方接口实时出结果的话,估计也会面临跟你一样要考虑带宽的问题.
    aqqwiyth
        11
    aqqwiyth  
       2021-07-03 00:54:15 +08:00
    把瞬时的外网问题 置换到内网+离线
    akira
        12
    akira  
       2021-07-03 04:12:03 +08:00
    你只要给压力给乙方就可以了。他们会去想办法的
    eason1874
        13
    eason1874  
       2021-07-03 04:12:25 +08:00   ❤️ 3
    如果一年两三次,最优解就是上云。

    按 10 万人次来算,试听平均每人请求两次 5M 歌曲,100000*5*2,近 1TB CDN 流量,日常价一百多,活动价不到一百。上传直传对象存储,流量免费,请求次数 0.01 元 /万次,存储差不多 0.01 元 /GB/月,放一个月花不了几块钱。

    下载回本地,请求费几块钱,流量 100000*10*2,2TB 左右,直接公网下载就是 CDN 费用一百多*2 加上回源 0.15 元 /GB 也是一百多*2,总共四五百。还可以开同地域的大带宽竞价机器来下载,内网下载流量免费,就只要几块钱请求费和几十块机器费。

    给你满打满算,一次考试的对象存储预算干到 1000,一年两次就 2000 。这点钱要是自己整,别说机器了,都不够买带宽的。不过,这样一来,你们能申请到的经费就少了,而且领导会认为是对象存储的云服务厂商牛逼,而不是你们工作做得好。

    所以,要质量好,成本低,就上云。要成绩,有经费,就自己搞。当然,如果 PPT 做得好,低成本上云也可以包装成价值几万的解决方案。
    xuanbg
        14
    xuanbg  
       2021-07-03 07:42:20 +08:00
    我认为这不仅仅是带宽的问题,同时也可能是磁盘 IO 的问题,OSS+SDN 也未必就能行。每个学校的考试机器作为前置文件服务器会比较好吧。只要预先下载 /下发考试用的音乐,这样就没有并发的下载流量了。上传因为不可能同时发生,简单粗暴直接上传处理就行了。
    a719031256
        15
    a719031256  
       2021-07-03 09:23:30 +08:00
    做一个排队系统不更好?非要把问题弄成峰值
    LLaMA2
        16
    LLaMA2  
       2021-07-03 09:48:20 +08:00
    白瞎了这么好的机器,实际上上云,开突发性能突发带宽,套上 OSS 解决上传 ,套上 CDN 解决下发,做完考试机器就降低到能跑的水平就好了
    simplove
        17
    simplove  
    OP
       2021-07-03 10:54:28 +08:00
    @aqqwiyth 内网最高也是千兆呀,学校的交换机也是千兆的。离线的方式对于下载来说是可以,但是得弄成客户端的形式,不然网页只能是提前缓存。上传没办法离线
    Tarkky
        18
    Tarkky  
       2021-07-03 11:21:53 +08:00
    最简单暴力的就是上云,弹性 ec2,弹性带宽,完事退还。感觉从开发角度解决更麻烦。
    shoaly
        19
    shoaly  
       2021-07-03 11:37:18 +08:00
    相当简单... 开发的兄弟 应该还没经验 , 不知道怎么拆分业务流程
    lcy630409
        20
    lcy630409  
       2021-07-03 11:51:54 +08:00   ❤️ 1
    我觉得应该不是并发问题
    看描述“每人考试时间大概是 15 分钟左右,就唱两首歌的时间”,不可能同一时间全部唱完点上传吧?考试 肯定有前有后,建议楼主 还是让技术人员 看一下有问题的时候 服务器的状态,是 cpu 、网络满载了 还是硬盘写不过来,再具体解决
    whileFalse
        21
    whileFalse  
       2021-07-03 11:56:59 +08:00
    肯定得用 OSS 。
    OSS 才多少钱啊,而且可以省下大把的服务器带宽费用。
    如果对出分时间没要求,连服务器的钱都可以省下大把。
    RandyColin
        22
    RandyColin  
       2021-07-03 15:01:22 +08:00
    感觉楼上都忽略了一个重点:学校 /
    RandyColin
        23
    RandyColin  
       2021-07-03 15:02:46 +08:00
    感觉楼上都忽略了一个重点:学校 /


    既然是学校,为什么要从省成本的角度去考虑问题? 10G 光口*10 不香是吗?限制的时候开放域内公共云呗。。
    flyingfz
        24
    flyingfz  
       2021-07-03 15:38:26 +08:00
    @simplove 自己搭 OSS, 倒不是不行。 参考下这个:http://docs.minio.org.cn/docs
    flyingfz
        25
    flyingfz  
       2021-07-03 15:44:44 +08:00
    考虑 每个学校 作为一个节点 , 所有本校学生的数据, 都从本校的节点获取、上传, 内网里,带宽应该是充足的。
    然后, 考试完毕之后, 各个学校自己调用 AI 进行评分 , 这里 可能要进行调度, 否则,AI 服务那边可能会有压力。

    但这样的成本相对来说 , 肯定是要高一些。
    mazyi
        26
    mazyi  
       2021-07-03 17:27:21 +08:00 via iPhone
    没必要自己搭,直接用公网的就行,除非政策不允许在考虑自己搭
    simplove
        27
    simplove  
    OP
       2021-07-03 17:41:07 +08:00
    @flyingfz 你这个方案不是不行,只是要每间学校再增加设备,可以是一台普通电脑,这样运维的成本就高了。
    simplove
        28
    simplove  
    OP
       2021-07-03 17:42:00 +08:00
    @RandyColin 学校的带宽都是找运营商买的,10G 光口这个有点不现实呀,再说了人越多,磁盘 I/O 也要考虑
    RyougiShiki
        29
    RyougiShiki  
       2021-07-03 19:45:30 +08:00
    瓶颈不是网络带宽就是机械磁盘 IO,上传到云对象存储解决。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2946 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:20 · PVG 11:20 · LAX 19:20 · JFK 22:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.