java吧 关注:1,254,931贴子:12,745,433
  • 46回复贴,共1

2014技术贴(1)--看看思想境界

只看楼主收藏回复

众所周知,在秒杀的时候并发请求量是很大的,问题来了
假设在双11的时候 一个按钮在同1秒钟有500万甚至更多的请求并发,但是我只有20台服务器,怎么处理这些请求


IP属地:北京1楼2014-01-02 08:58回复
    那就分流。如今的大数据就做这事的。


    IP属地:云南来自Android客户端2楼2014-01-02 09:16
    回复
      楼上说的对,还有没有其他的想法


      IP属地:北京3楼2014-01-02 09:29
      回复


        IP属地:湖南4楼2014-01-02 09:33
        收起回复
          @╱―★神★―╲


          IP属地:北京5楼2014-01-02 09:46
          回复
            负载均衡
            数据库集群
            分流
            我随便扯的,我也不清楚。


            IP属地:上海6楼2014-01-02 10:17
            收起回复
              把请求快速放入队列中,开始3秒等待。然后从中选择幸运者。过了三秒,告诉其他用户,很抱歉,你没有抢上。


              8楼2014-01-02 10:26
              收起回复
                ...好奇葩的回答,1神说的对,负载均衡是必须的.


                IP属地:北京9楼2014-01-02 10:43
                回复
                  首先,我通过时间戳加随机数对生成的请求进行编号,分配给我的后台服务器,比如编号为A,B,C,D,E......等等开头的.后台服务器经过预设的触发器获取到各自对应前缀的编号请求,然后依据不同地域...IP段等划分(事先做好市场调研,哪些城市并发高).这时候我服务器只管拿请求,并塞进队列(如果经过划分网络还阻塞的话).同时程序发送回执给前端用户看,比如(正在拼命秒杀..正在OOXX.等等,也可以不发送,而是等个2秒),这时候后台另开一根线程用来处理接收到的请求,有几台服务器开几个线程,并监控服务器负载,当某台服务器负载高于某值后低于某值时,根据配置文件,均衡负载请求数..事实上最终秒杀到物品的用户只是少数,所以只有队列的前几名或是几十名用户才会得到服务器正确的响应,例如:跳转到付款页面,或是付款之类的..其他大部分用户得到的都是alert("秒杀已结束")诸如此类的话语.


                  IP属地:北京10楼2014-01-02 10:51
                  收起回复
                    ←_←


                    IP属地:北京来自Android客户端11楼2014-01-02 10:52
                    收起回复
                      秒杀在技术并不复杂,楼上说的没错,秒杀是运气的,如果秒杀10件商品,后台有10台服务器,那么只需要接受10*10,也就是100个请求进入后续流程,其他的请求直接返回秒杀失败。


                      IP属地:湖北12楼2014-01-02 13:41
                      回复
                        楼上都是高手,充分符合国人的思想,,但如果每个请求都做真的,而不做假呢


                        IP属地:北京13楼2014-01-02 13:46
                        收起回复

                          ——来自 爱贴吧 Windows Phone 客户端


                          IP属地:北京来自WindowsPhone客户端14楼2014-01-02 14:40
                          回复


                            IP属地:河南来自Android客户端15楼2014-01-02 19:49
                            回复