短连接:
优点:
- 实现简单。每次请求响应完后,任何一方都可以主动发起挥手断开连接。
缺点:
- 占用资源,对于同一个设备上的程序,即使是访问同一个服务器,也需要建立多次连接
- 慢
长连接:
优点:
- 节省资源
- 减少 TCP 握手和挥手的次数,快
缺点:
- 维护连接麻烦,如果客户端不主动关闭连接,则服务端需要超时机制主动断开
- 负载均衡
长连接的负载均衡问题
知乎千万级高性能长连接网关揭秘:https://www.infoq.cn/article/UXrU4hr_mlMX3q84MB9M
根据来源 IP 进行一致性 Hash,进行负载均衡。
问题:
1、部分来源 IP 是大型局域网 NAT 出口,导致 Broker 上连接数不均衡
2、不能准确标识客户端,当移动客户端掉线,切换网络后就可能无法连回刚才的 Broker
注:Broker 为 RocketMQ 中的核心
OpenResty:Lua + Nginx
TODO