0%

IM - 服务器地址下发

用户上线的时候,需要和长连服务器建连,本文将涉及服务器地址下发设计。

IM

由于无法得知SLB的可用度,需要计算求和每一台ECS的可用度,间接得出。

在每一台长连网关程序上都启动了一个定时任务,每隔 5s 获取调度一次,计算ppsbytes,然后将二者分别除去设置的阈值,得到一个已用度,再用 1 - 已用度 得到 可用度的值,再在二者之中取最小值,作为当前ECS服务器的最终可用度,然后将这个值存到Redis中。(PPS及Bytes计算方法

下发IP服务程序中,会去读取Redis中存储的每一个SLB对应的ECS服务器列表,每次统计可用度的时候,读出所有ECS服务器当前的可用度,将可用度求和,作为当前SLB的可用度。将计算得出的SLB可用度缓存到机器内存(调用Guava的LoadingCache实现)及Redis中。

为了让可用度比较接近的SLB被均衡连接,将可用度乘以一个随机数再去进行排序,让同一时刻内返回的SLB列表不会过于固定,造成某一个SLB过于饱和。