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

web 想做一个表单,峰值 10000 人同时提交报名,报名选项含有图片上传,图片都是手机拍照原图 10M 左右一张

  •  
  •   king2014 · 2018-03-14 13:01:47 +08:00 · 5140 次点击
    这是一个创建于 2430 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这样的需求我需要什么配置的云服务器才可以满足要求呢?比如带宽需要多少?cpu 和内存等.求教

    第 1 条附言  ·  2018-03-15 14:18:59 +08:00
    1.不能用第三方问卷表单等,因为我们要限定在我们自己 app 上报名
    2.图片尽量不要压缩,因为最后需要整理导出来拿去评奖
    3.项目内容不方便透露,不是相亲活动
    4.再次感谢谢各位回答
    52 条回复    2018-03-15 19:33:12 +08:00
    wplct
        1
    wplct  
       2018-03-14 13:21:13 +08:00
    你需要分布式
    king2014
        2
    king2014  
    OP
       2018-03-14 13:23:24 +08:00
    现在用的配置是 8 核 16g 外加三条 10M 独立运行商带宽.这样的配置可以承受吗?
    king2014
        3
    king2014  
    OP
       2018-03-14 13:23:54 +08:00
    @wplct 你好,报名表单只是针对一个市区,不会设计外市报名
    brickyang
        4
    brickyang  
       2018-03-14 13:26:41 +08:00 via iPhone
    如果可以用七牛直传模式,业务服务器只需要处理页面访问,表单提交和写入数据库,一台普通服务器即可。比如 2U4G。
    loading
        5
    loading  
       2018-03-14 13:29:40 +08:00 via iPhone
    因为应对峰值,亚马逊买了一批硬件,然后闲置了,出现 aws。

    用云吧。
    king2014
        6
    king2014  
    OP
       2018-03-14 13:29:44 +08:00
    @brickyang 我看看,这么说瓶颈在带宽这里吗?
    aksoft
        7
    aksoft  
       2018-03-14 13:30:24 +08:00
    一个市区 几级?总人口有多少,还同时 10w。。
    king2014
        8
    king2014  
    OP
       2018-03-14 13:30:49 +08:00
    @loading 我打算用云,有什么推荐配置吗.本身项目周期几个月
    brickyang
        9
    brickyang  
       2018-03-14 13:32:32 +08:00 via iPhone
    @king2014 #6 对,如果你不做图片处理,并不需要很多的 CPU 资源。第一是带宽,第二是本地写。

    用七牛就是把图片上传分出去,不消耗本地资源。
    heybuddy
        10
    heybuddy  
       2018-03-14 13:32:51 +08:00
    上传图片可以考虑上云存储如 OSS,七牛云等,不要直接往自己的服务器丢
    king2014
        11
    king2014  
    OP
       2018-03-14 13:33:56 +08:00
    @aksoft 1 万没有 10 万哦
    linyinma
        12
    linyinma  
       2018-03-14 13:34:04 +08:00
    似乎需求非常不明确: 需求提到峰值 10000 并发,提到了上送图片( 10M 左右一张), 你的问题是什么配置的云服务器才能满足这样的需求: 如果仅仅是收到请求(最大 10000 ),直接 IO 到文件,只要宽带足够,根本用不到什么配置,你应该描述收到请求后,后端要做什么,数据库配置如何等等~~
    king2014
        13
    king2014  
    OP
       2018-03-14 13:34:20 +08:00
    @heybuddy 我懂了 谢谢
    qiayue
        14
    qiayue  
       2018-03-14 13:35:03 +08:00
    直接把图片传到七牛云存储上面去
    qiayue
        15
    qiayue  
       2018-03-14 13:35:40 +08:00
    另外,你不可能能够做到同一时刻有一万人同时上传
    一小时内有一万人上传你都成功了
    king2014
        16
    king2014  
    OP
       2018-03-14 13:37:00 +08:00
    @qiayue 嗯,好的 多谢
    king2014
        17
    king2014  
    OP
       2018-03-14 13:38:33 +08:00
    @linyinma 多谢! 收到请求后什么都不需要做,后期只要把图片导出到硬盘就行了.
    jd186
        18
    jd186  
       2018-03-14 13:39:20 +08:00
    1 核 1G 1M 都足够了吧用 OSS 直传。上传流量不计费。下载流量计费美滋滋。
    crysislinux
        19
    crysislinux  
       2018-03-14 13:39:59 +08:00 via Android
    这就是 aws lambda 的典型应用场景了。看看国内有这种没。
    lllllllllllllll
        20
    lllllllllllllll  
       2018-03-14 13:42:48 +08:00
    10M 的请求 x 10000 个 需要处理 100g 左右的数据。假设要在 60 秒内处理完毕,网络设备 /硬盘每秒需要处理 1.6g 左右的流量 /数据量。单台服务器较难以满足需要。
    likuku
        21
    likuku  
       2018-03-14 13:58:08 +08:00
    上传嘛,aws 的 s3, 国内云的 oss 都 OK,直接在边缘让云商服务群代为扛起。
    lauix
        22
    lauix  
       2018-03-14 14:20:27 +08:00
    具体配置看你代码写的如何了,处理的好低配置(不分布式)一样可以带起来。
    scriptB0y
        23
    scriptB0y  
       2018-03-14 14:23:31 +08:00
    google form ?
    aksoft
        24
    aksoft  
       2018-03-14 14:27:16 +08:00
    @king2014 看错了,sorry。
    starmoon1994
        25
    starmoon1994  
       2018-03-14 14:47:36 +08:00
    图片传七牛 你只存图片资源地址就好
    ytmsdy
        26
    ytmsdy  
       2018-03-14 14:56:06 +08:00
    图片适当压缩,压缩完以后直接上传到云服务,数据库里面只存图片地址。
    opengps
        27
    opengps  
       2018-03-14 14:59:53 +08:00
    @king2014 首先图片不要直接进服务器,1m 带宽,如果不是云服务器那中下行不限速的而是 10m 下行的,传一个 10m 文件需要 10 秒。
    Immortal
        28
    Immortal  
       2018-03-14 15:07:44 +08:00
    你好像对分布式有点误解
    realpg
        29
    realpg  
       2018-03-14 15:11:49 +08:00
    峰值 10000 人同时,一人 10MB 文件 就是峰值同时上传 100000MB 文件 30 秒上传一个人的 266.666Gbps 带宽采购吧……
    Sapp
        30
    Sapp  
       2018-03-14 15:17:57 +08:00
    买个七牛云就行了
    geek123
        31
    geek123  
       2018-03-14 15:32:50 +08:00
    各种云都能实现基本。自己搞可能费点儿劲。
    jadec0der
        32
    jadec0der  
       2018-03-14 15:41:44 +08:00
    我给你算算,10000 人,每人 10MB,一共是 100000 MB,你的带宽是 3x10Mbps,上传这些照片需要的时间是 100000 * 8 / 30 = 26666s 也就是 7.4 个小时。这种大一练习题的数都算不对,建议改行。
    qfdk
        33
    qfdk  
       2018-03-14 15:50:33 +08:00 via iPhone
    峰值 10000 解决很简单 限制 5 个人同时上传剩下扔去排队 做个倒计时器 还需要等待 xx 分钟上传 这样效率才高 你高并发带宽受不了的
    tjsdtc
        34
    tjsdtc  
       2018-03-14 15:57:51 +08:00
    前端方面的优化可以先用 canvas 把图片压缩一下。
    ebingtel
        35
    ebingtel  
       2018-03-14 16:02:42 +08:00
    分片上传啊
    qwwind
        36
    qwwind  
       2018-03-14 16:55:11 +08:00
    想把图片上传到类似于 aws s3,阿里云 oss 等,然后剩下的就是表单提交了,这里业务应该不会很复杂吧
    rayc9223
        37
    rayc9223  
       2018-03-14 17:10:39 +08:00 via iPhone
    找个云临时买好足够的带宽,3 条 10M 的差太远了
    blessyou
        38
    blessyou  
       2018-03-14 17:38:17 +08:00 via Android
    图片网页直传 你只要存图片地址 表单的文本信息
    oonnnoo
        39
    oonnnoo  
       2018-03-14 18:24:04 +08:00
    图片通过网页直传,丢到 oss 或其它类似存储服务,充足够多的钱,带宽、CPU 什么的根本不用管。
    qinrui
        40
    qinrui  
       2018-03-14 18:25:00 +08:00 via iPhone
    请用户分时段报名
    miragetu
        41
    miragetu  
       2018-03-14 19:39:53 +08:00 via iPhone
    1w 人同时提交报名,是什么这么火热?
    ycz0926
        42
    ycz0926  
       2018-03-14 19:51:39 +08:00
    先不说 10000,算 5000 好了,就图片上传一块,就 5000 * 10M / 1024 = 48G 内存(不知道算的对不)
    其他,5000 - 10000 的并发,简单的业务逻辑,这应该不会是大问题,
    这应该是是带宽、内存的问题
    ycz0926
        43
    ycz0926  
       2018-03-14 19:53:45 +08:00
    就如楼上很多同行说的,直接用 aws、七牛之类的好了
    wdd2007
        44
    wdd2007  
       2018-03-14 19:55:23 +08:00
    图片可以在前端压缩一下再上传。
    sunchen
        45
    sunchen  
       2018-03-14 20:03:09 +08:00
    aws lambda +1
    xiangyuecn
        46
    xiangyuecn  
       2018-03-14 20:06:55 +08:00
    @loading 5 楼妥妥的没毛病

    @tjsdtc 10M 一张是应该缩小一下,手机上纯 js 能搞定,现在手机拍出来的照片文件大小是有点大了,也许我们上传要求的图片没有必要要那么宽和高,缩小一下尺寸也许 500K 就能满足要求呢
    cnwtex
        47
    cnwtex  
       2018-03-14 20:17:32 +08:00
    微信这么普及, 做的那么好的图片压缩功能不用...
    zjcqoo
        48
    zjcqoo  
       2018-03-14 20:27:11 +08:00
    找些可以免费上传的接口,把图片加密后传上去。自己的服务器只接受 url 和密钥就够了 😀
    night98
        49
    night98  
       2018-03-15 01:50:36 +08:00 via Android
    页面上传时图片压缩,大概压缩到 300kb 左右就差不多了,表单提交应该不是重点,用对象存储吧,目前这个机器足够用了。
    49gd
        50
    49gd  
       2018-03-15 10:10:31 +08:00
    这是啥报名 万人相亲大会?
    fiht
        51
    fiht  
       2018-03-15 12:36:02 +08:00
    忽然想,这个表单用腾讯云的或者是问卷星这类的是不是可行...
    zoffy
        52
    zoffy  
       2018-03-15 19:33:12 +08:00
    项目是抢答类 app 吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1105 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:50 · PVG 06:50 · LAX 14:50 · JFK 17:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.