V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dillon
V2EX  ›  问与答

这样的程序是 不可能实现 的?

  •  
  •   dillon · 2016-02-26 18:12:25 +08:00 · 4006 次点击
    这是一个创建于 3175 天前的主题,其中的信息可能已经有所发展或是发生改变。
    设计的程序逻辑是多人抢购一个产品,当产品成交以后在所有客户端上显示该产品已成交(不刷新),技术说这个不可能实现,一分钟请求一次状态也不行(请求数量太多)
    31 条回复    2016-02-27 16:25:57 +08:00
    oott123
        1
    oott123  
       2016-02-26 18:32:41 +08:00
    当技术说“不可能实现”时,要么是他拿得钱太少,要么是贵司在该项目上的资源(服务器带宽啥的)投入太少。
    kingname
        2
    kingname  
       2016-02-26 18:36:59 +08:00
    我已经看到很多 app 上有类似的功能了。
    Strikeactor
        3
    Strikeactor  
       2016-02-26 18:39:06 +08:00
    websocket 呢
    gamexg
        4
    gamexg  
       2016-02-26 18:39:37 +08:00
    如果你愿意增加一台实时推送服务器或是愿意增加预算使用第三方推送是可以实现的。
    socket.io
    jarlyyn
        5
    jarlyyn  
       2016-02-26 18:41:10 +08:00
    说实话,我觉得可能听听技术的估计没错。

    技术都告诉你是服务器负载的问题了。

    又总不会使用 p2p 吧?

    我觉得如果用户数量不大的话,你不需要到这里问直接就可以回答他了。
    cdffh
        6
    cdffh  
       2016-02-26 18:44:21 +08:00   ❤️ 1
    @kingname
    讲道理如果用户量很大的话这个功能并不容易 . 在没有基础的情况下 并不是那种一两天就能搞好的小功能.

    1,先忽略并发和客户端数量带来的性能问题. 我估计 你们的客户端和服务端之间的交互用的是 http 没有用长连接之类的 所以服务器的交易状态没办法实时下发到客户端. 如果要完成你说的的这个功能的话要么现在做一个推送要么客户端定时请求.

    2 现在考虑并发和用户量 在用户量大的情况下 客户端的定时请求几乎等于 ddos 了. 服务器扛不住. 如果是做推送下发的话 在你们没有基础的情况下,这个开发量肯定不是一时半会儿能完成的了.

    看起来你也不是很懂技术的样子
    综上 技术也懒得和你解释,所以他直接直接告诉你搞不定了.
    herozzm
        7
    herozzm  
       2016-02-26 18:54:00 +08:00 via Android
    Ajax 不行吗?当产品卖光后后台写入内存, Ajax 去读内存而不是数据库
    winterbells
        8
    winterbells  
       2016-02-26 19:04:17 +08:00
    我觉得,成交后服务器停止响应,客户端收不到信息即判断为已成交
    kingname
        9
    kingname  
       2016-02-26 19:23:04 +08:00
    @cdffh 你把这个发给我干嘛???
    billlee
        10
    billlee  
       2016-02-26 19:27:06 +08:00
    @jarlyyn 我觉得倒是技术的问题,他说的是“一分钟请求一次”,明显就是 pull. 用 websocket push 应该可以的
    colincat
        11
    colincat  
       2016-02-26 19:31:53 +08:00 via iPhone
    前提是什么客户端
    dillon
        12
    dillon  
    OP
       2016-02-26 20:27:48 +08:00
    @colincat 移动客户端
    jarlyyn
        13
    jarlyyn  
       2016-02-26 20:33:36 +08:00
    @billlee

    关键还是人数啊。
    codevn
        14
    codevn  
       2016-02-26 20:53:05 +08:00
    就算能实现也不要想了,技术都开口说搞不定了,你偏偏告诉人家能搞定也没用,代码又不是你写;
    limengwei
        15
    limengwei  
       2016-02-26 21:31:35 +08:00 via Android
    广播
    movtoy
        16
    movtoy  
       2016-02-27 00:18:19 +08:00   ❤️ 1
    @codevn 能实现就找能实现的人,怎么能叫不要想了。
    yangqi
        17
    yangqi  
       2016-02-27 03:15:38 +08:00
    技术估计是根据你们现在的情况说的不可能实现吧。技术上是能实现,但是也要根据具体情况。

    或者你们技术深知代码的好坏程度,才放出这个话
    Zohar
        18
    Zohar  
       2016-02-27 08:40:48 +08:00
    WebSockets
    JohnH
        19
    JohnH  
       2016-02-27 09:10:09 +08:00   ❤️ 1
    参照 京东拍卖,观察其产品列表页面和产品页,分析一下,感觉上是没什么问题的
    yuriko
        20
    yuriko  
       2016-02-27 09:18:33 +08:00   ❤️ 1
    功能看起来很小,但其实是个深坑,石油钻井级别的
    一般就是手头的各种资源不够,所以开发会觉得做不到……
    imn1
        21
    imn1  
       2016-02-27 11:14:03 +08:00
    12306 还是里约热內卢奥运开幕式门票?
    jsonline
        22
    jsonline  
       2016-02-27 11:29:30 +08:00 via Android
    自己 DDos 自己,你不懂秒杀时刷新的兴奋感吗!居然去掉这个 feature !
    jsonline
        23
    jsonline  
       2016-02-27 11:31:17 +08:00 via Android
    一分钟请求一次有啥意义,最后一刻必须一秒钟刷新三次!
    veau
        24
    veau  
       2016-02-27 11:50:43 +08:00
    从产品逻辑讲,先在客户端挡掉 90%的请求,直接返回 false 。
    然后剩余 10%的用户,本地过了再去和服务器链接。

    90%和 10%自己控制好比例。
    sensui7
        25
    sensui7  
       2016-02-27 13:48:55 +08:00
    @veau 所以我从来不在网上抢东西,
    tabris17
        26
    tabris17  
       2016-02-27 13:58:20 +08:00
    能够通过长连接实现,但是你们准备投入多少开发和服务器?
    ChefIsAwesome
        27
    ChefIsAwesome  
       2016-02-27 14:03:00 +08:00 via Android
    买过火车票吗。一分钟一次你们技术都说数量太大扛不住了
    emric
        28
    emric  
       2016-02-27 14:14:38 +08:00   ❤️ 1
    最广泛的是长连接。
    我这里并发连接最高只有 20w ,目前丢在 4G 的阿里云上面。
    从负荷上看我觉得还有很大的提升的空间。
    hardware
        29
    hardware  
       2016-02-27 14:17:25 +08:00   ❤️ 1
    crossbar.io 处理这个应该挺简单的
    veau
        30
    veau  
       2016-02-27 15:17:31 +08:00
    @sensui7 同。
    charlie21
        31
    charlie21  
       2016-02-27 16:25:57 +08:00   ❤️ 1
    ref 用 node.js 实现 HTML5 原生的 comet(长连接)
    http://think2011.net/2014/11/12/html5-comet-EventSource--node.js-example/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1879 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:26 · PVG 00:26 · LAX 08:26 · JFK 11:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.