一个音乐考试网站服务于某个区。 区有 60 所学校,每个学校 100 台电脑考试,同时最高的并发量是 60*100=6000,总人数好几万吧 轮流考试,每人考试时间大概是 15 分钟左右,就唱两首歌的时间。 全部用 web 登录,试听音乐,学生唱歌,上传,试听,唱歌,上传,然后是提交。 最后还有对接一个 AI 进行评分。 试听的歌曲有压缩,一首歌大概在 5M 左右,学生唱的歌一首歌大概 10M 左右。 目前开发那边用的是一台服务器,配置为 20 核,32G,600G SAS 硬盘 结果考试的时候不是登录不上,就是试听没反应,还有上传歌曲的时候没反应。 用户体验差得一逼。 每间学校是移动专线 300 上 /300 下,服务器机房用的是 1000M 移动专线,上下对等。 今天又说要用阿里云 OSS 来处理音乐的上传和下载问题,然后要部署 3 台服务器。
各位大佬有什么好的建议呢
1
Tianao 2021-07-02 20:57:51 +08:00 via iPhone
不知道楼主啥身份,不好给建议,这不就是 KTV 的一个子系统吗,感觉是代码写得不行,建议首先考虑从软件开发的角度解决,而不是 SRE 的角度。
|
2
villivateur 2021-07-02 20:58:40 +08:00 via Android
这种东西应该是短时间的瞬时峰值访问吧?总不可能天天考试。不如上云,考试之前疯狂开机器,考完了就退还。
|
3
fuse 2021-07-02 21:13:08 +08:00 via iPhone
oss cdn 就这?
|
4
simplove OP @Tianao 甲方,代码是乙方写的,前端 VUE,后台 java spring boot 框架。mysql 数据库。。。软件开发嘛,就别提了,坑。不然也不会来这咨询了
|
5
simplove OP @villivateur 基本上是一次性的固定费用,上云的话,费用不好搞呀。所以最好是不上云。但是开发说找人自己搭 OSS,我有点无语。
|
6
yin1999 2021-07-02 21:33:44 +08:00
这个场景还是使用 OSS 费用低啊,整一个流量包+存储包,这不比高性能服务器便宜。云厂商也会提供 OSS 的 SDK,通过后端预签名的方式,给前端提供预签名的 URL 就可以实现音频文件的上传和下载了
|
7
zzzzqqw 2021-07-02 21:44:39 +08:00
6000*10M *8bit = 480000M >> 1000M
6000 个人同时上传 /下载瞬时峰值带宽 48 万 M,一台服务器提供 1 千兆带宽。这不网络堵塞吗 |
9
chenluo0429 2021-07-02 23:56:20 +08:00
把数据都进行切片,分段获取和上传,而不是一次性以文件的形式去处理,否则峰值肯定会把你的服务击穿的。
|
10
aqqwiyth 2021-07-03 00:52:20 +08:00 1
这个问题说白了是解决瞬时带宽的问题
1. 先解决下载的问题, 每个学校放一台前置机器,下载走前置机器,考试前全部同步准备好, 这样歌曲的下载就解决了. 2. 然后就是上传的问题, 假如都是同时上传 6000*10M=6G . 这么大的带宽会被当做黑客攻击了. 另外硬盘也写不进去 不是学校网络卡死就是服务器卡死. 所以这个解法还是得用问题 1 来解决. 离线同步+上传+离线 AI 分析 --------------------------------------------------------------------------------- 考虑到运维跟人工成本. 60 个学校机器运维可能要疯掉. 另外学校的上行的带宽也不够. 如果 AI 是第三方接口实时出结果的话,估计也会面临跟你一样要考虑带宽的问题. |
11
aqqwiyth 2021-07-03 00:54:15 +08:00
把瞬时的外网问题 置换到内网+离线
|
12
akira 2021-07-03 04:12:03 +08:00
你只要给压力给乙方就可以了。他们会去想办法的
|
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 做得好,低成本上云也可以包装成价值几万的解决方案。 |
14
xuanbg 2021-07-03 07:42:20 +08:00
我认为这不仅仅是带宽的问题,同时也可能是磁盘 IO 的问题,OSS+SDN 也未必就能行。每个学校的考试机器作为前置文件服务器会比较好吧。只要预先下载 /下发考试用的音乐,这样就没有并发的下载流量了。上传因为不可能同时发生,简单粗暴直接上传处理就行了。
|
15
a719031256 2021-07-03 09:23:30 +08:00
做一个排队系统不更好?非要把问题弄成峰值
|
16
LLaMA2 2021-07-03 09:48:20 +08:00
白瞎了这么好的机器,实际上上云,开突发性能突发带宽,套上 OSS 解决上传 ,套上 CDN 解决下发,做完考试机器就降低到能跑的水平就好了
|
17
simplove OP @aqqwiyth 内网最高也是千兆呀,学校的交换机也是千兆的。离线的方式对于下载来说是可以,但是得弄成客户端的形式,不然网页只能是提前缓存。上传没办法离线
|
18
Tarkky 2021-07-03 11:21:53 +08:00
最简单暴力的就是上云,弹性 ec2,弹性带宽,完事退还。感觉从开发角度解决更麻烦。
|
19
shoaly 2021-07-03 11:37:18 +08:00
相当简单... 开发的兄弟 应该还没经验 , 不知道怎么拆分业务流程
|
20
lcy630409 2021-07-03 11:51:54 +08:00 1
我觉得应该不是并发问题
看描述“每人考试时间大概是 15 分钟左右,就唱两首歌的时间”,不可能同一时间全部唱完点上传吧?考试 肯定有前有后,建议楼主 还是让技术人员 看一下有问题的时候 服务器的状态,是 cpu 、网络满载了 还是硬盘写不过来,再具体解决 |
21
whileFalse 2021-07-03 11:56:59 +08:00
肯定得用 OSS 。
OSS 才多少钱啊,而且可以省下大把的服务器带宽费用。 如果对出分时间没要求,连服务器的钱都可以省下大把。 |
22
RandyColin 2021-07-03 15:01:22 +08:00
感觉楼上都忽略了一个重点:学校 /
|
23
RandyColin 2021-07-03 15:02:46 +08:00
感觉楼上都忽略了一个重点:学校 /
既然是学校,为什么要从省成本的角度去考虑问题? 10G 光口*10 不香是吗?限制的时候开放域内公共云呗。。 |
24
flyingfz 2021-07-03 15:38:26 +08:00
@simplove 自己搭 OSS, 倒不是不行。 参考下这个:http://docs.minio.org.cn/docs
|
25
flyingfz 2021-07-03 15:44:44 +08:00
考虑 每个学校 作为一个节点 , 所有本校学生的数据, 都从本校的节点获取、上传, 内网里,带宽应该是充足的。
然后, 考试完毕之后, 各个学校自己调用 AI 进行评分 , 这里 可能要进行调度, 否则,AI 服务那边可能会有压力。 但这样的成本相对来说 , 肯定是要高一些。 |
26
mazyi 2021-07-03 17:27:21 +08:00 via iPhone
没必要自己搭,直接用公网的就行,除非政策不允许在考虑自己搭
|
28
simplove OP @RandyColin 学校的带宽都是找运营商买的,10G 光口这个有点不现实呀,再说了人越多,磁盘 I/O 也要考虑
|
29
RyougiShiki 2021-07-03 19:45:30 +08:00
瓶颈不是网络带宽就是机械磁盘 IO,上传到云对象存储解决。
|