1.一种支持海量长连接的软负载均衡系统,其特征在于包括客户端、服务端身份认证系统、Erlang服务器集群,
所述客户端被配置成:使用凭据向服务端身份认证系统发起认证HTTP请求;接收到令牌Token和服务器节点的公网IP地址信息后,使用令牌向公网IP地址对应的节点发起建立长连接的请求,该节点验证令牌,如果令牌合法,则节点根据双方预先约定的长连接协议与客户端建立长连接;
所述服务端身份认证系统被配置成:接收到客户端发送的认证HTTP请求后,验证凭据,如果凭据合法,则生成一个令牌Token并通过HTTP请求把令牌Token发送至Erlang集群,如果凭据不合法,则返回认证失败的信息;响应客户端的HTTP请求,将令牌Token和长连接数最少的服务器节点的公网IP地址发送至客户端;
所述Erlang集群被配置成:响应服务端身份认证系统的请求,并根据集群的负载情况将长连接数最少的服务器节点的公网IP地址返回给服务端身份认证系统。
2.根据权利要求1所述的支持海量长连接的软负载均衡系统,其特征在于所述凭据为设备信息和/或用户信息。
3.根据权利要求2所述的支持海量长连接的软负载均衡系统,其特征在于所述设备信息为设备SN号、设备Mac地址、设备二维码或设备串号中的一种或多种,所述用户信息为用户账户名、账户密码、邮箱或手机号中的一种或多种。
4.根据权利要求1所述的支持海量长连接的软负载均衡系统,其特征在于所述Erlang集群包括实时动态表,所述实时动态表至少包括Erlang服务节点名和端口、客户端IP地址和端口、客户端识别信息、建立长连接的初始时间,所述实时动态表实时更新且在整个Erlang集群中被所有节点共享。
5.根据权利要求1所述的支持海量长连接的软负载均衡系统,其特征在于所述长连接协议为MQTT协议、XMPP协议、WebSocket协议、AMQP协议、STOMP协议、OpenWire协议、JMS协议或NMS协议。
6.一种支持海量长连接的软负载均衡方法,其特征在于包括以下步骤:
A、客户端使用凭据向服务端身份认证系统发起认证HTTP请求;
B、服务端身份认证系统验证凭据,如果凭据合法,则生成一个令牌Token并通过HTTP请求把令牌Token发送至Erlang集群;如果凭据不合法,则返回认证失败的信息;
C、Erlang集群响应服务端身份认证系统的请求,并根据集群的负载情况将长连接数最少的服务器节点的公网IP地址返回给服务端身份认证系统;
D、服务端身份认证系统响应客户端的HTTP请求,将令牌Token和长连接数最少的服务器节点的公网IP地址发送至客户端;
E、客户端接收到令牌Token和服务器节点的公网IP地址信息后,使用令牌向公网IP地址对应的节点发起建立长连接的请求,该节点验证令牌,如果令牌合法,则节点根据双方预先约定的长连接协议与客户端建立长连接。
7.根据权利要求6所述的支持海量长连接的软负载均衡方法,其特征在于所述凭据为设备信息和/或用户信息。
8.根据权利要求7所述的支持海量长连接的软负载均衡方法,其特征在于所述设备信息为设备SN号、设备Mac地址、设备二维码或设备串号中的一种或多种,所述用户信息为用户账户名、账户密码、邮箱或手机号中的一种或多种。
9.根据权利要求6所述的支持海量长连接的软负载均衡方法,其特征在于所述Erlang集群的负载的连接情况通过Erlang集群的实时动态表获得,所述实时动态表至少包括Erlang服务节点名和端口、客户端IP地址和端口、客户端识别信息、建立长连接的初始时间,所述实时动态表实时更新且在整个Erlang集群中被所有节点共享。
10.根据权利要求6所述的支持海量长连接的软负载均衡方法,其特征在于所述步骤E中的长连接协议为MQTT协议、XMPP协议、WebSocket协议、AMQP协议、STOMP协议、OpenWire协议、JMS协议或NMS协议。