课程中用了乘法原理,算出的websocket connection上限浩如烟海。
计算过程如下:
一台机器的ip adress 可能数量* 本机器ports的数量 * 另一台机器的ip adress 可能数量* 那台机器ports的数量
一天机器可能有10~20个ip address, 有65k 个tcp ports
client 可能有更多ip address = 2^32 + 2^64 个 (因为IPV4可能出现的ip address 是 2^32 , IPV6可能出现的ip address 是 2^64)
单机能够维护的数量不是65k
这样的计算是否算的是在所有时间线上的可能。
但是单个机器在某一时刻,因为那一刻只能有一个ip,并且只有那么多ports,所以在那个时刻可以维持的连接数还是65k?
What’s app 在单机上做到过10个million 的connection。这10个million 的connection是在多久的时间内达到的?
logic
2
单机在任意一个时刻也可以有多个 IP 的,Whatsapp 的单机 connection 10M 指的就是在某一瞬间,有10M connection。
chun
3
这里如果这个机器只有一个IP的话,最多也就只能维持65k个web socket吧(port的数量)?
logic
4
不是,websocket 是双向链接,连接两台机器,我们的机器有一个 IP, 65k port,而连接的机器 IP 可以有 2^32+ 2^64 种可能性 (ipv4+ipv6) 乘以 65k port,所以是极大的数字。
chun
5
服务器这边的一个端口可以同时维持多个websocket吗?这地方我一直不太清楚,以为一个端口只能保持一个长连接呢
roger
7
这里我也没有太弄明白,我搜了一下,websocket 貌似不支持multiplexing,如果要支持单机10M的connection,一定要支持multiplexing吧?不知道WhatsApp团队是不是对websocket协议做了什么 multiplexing 的扩展 ?
roger
9