服务器如何实现承受如此大量的用户请求?

0.以网站和游戏服务器为例.

1.是否每一位用户都将自己的请求发送到同一IP地址?
2.在此,服务器对待这些请求,是否只有2种处理方式:
一种独立完成
另一种先用一台服务器接收下来,然后通过某种方式将请求分发给其他服务器.
3.可否就"服务器分发请求"这种方式简述一下实现?
4.是否不论是以上哪两种,这其中必然会有一个集中处理的过程??
5.若存在一个集中处理的过程,像百度这样的网站,又是如何做到让集中接收请求的那台机器不被大量的用户请求淹没?
===============================================
现已知整个问题是负载均衡,但问题4中提到的,就算是暂存-分发的过程,是否也是用逻辑上一台服务器所实现的?
这台机器到达极限就阻塞了对吗?

首先我想说楼主的提问列表很程序员,从0开始的。

    这个当然是不一定的,楼主已经知道问题是负载均衡了,现在大型服务器一般都会做成分布式的。

    其实你说的意思应该是直接处理这个请求还是我找另外一个机器处理你的请求。

    服务器分发请求有很多种策略,举个简单的例子。某个服务器在登录的时候根据用户的ID取模,然后选择对应的一台机器进行转发,这是一种比较简单的分发请求策略了。再比如很多游戏服务器会分网通、电信等大区,然后大区下有分1,2,3...多个房间,这些其实都是分发请求的例子。

    根据你的业务类型,可能会存在一个必须有集中处理的过程。比如登录校验这个过程,所有的请求最终都要去查询db,那么如果db只有一台的话就会存在你说的集中处理情况。现在的开发很聪明的,无论是高并发还是容灾都不会只搞一台db的,他们可以分库分表,可会主从备份,甚至是读写分离。

    在设计服务器的时候,肯定会相对会有4中的情况,我们当然不希望因为4中的情况而影响整个服务器的性能。
    我们可以把分发策略放在客户端,比如登录的时候在客户端进行选择,直接登录到负载较低的服务器上。你会说客户端查询各个服务器的负载情况这个功能接口会压力很大,其实不做IO操作的话,仅仅是获取内存中的数据性能会很高的。


如果楼主需要进行服务器压力测试的话可以试试腾讯公司的一款工具WeTest服务器性能,用来测试服务器各个接口的性能情况很有效,附个链接:http://wetest.qq.com/gaps/

温馨提示:答案为网友推荐,仅供参考
相似回答