用户间的通信方案设计

问题描述

  实现一个利用 WebSocket 进行实时通讯的基于 Web 的即时通讯应用,假设未来用户量会很大,要用到多个服务器,如何实现两个用户间的通讯呢?

方案1:负载均衡+一致性哈希

  负载均衡算法和消息路由算法均采用“一致性哈希算法”。具体过程是:客户端连接时根据IP或者客户端标识通过一致性哈希算法定位到某台服务器,消息路由时同样根据目标客户端标识计算出对应服务器。
优点:性能高,不依赖分布式缓存或其他介质等;
缺点:无法直接知道目标客户端的连接状态;
    用户间的通信方案设计

方案2:负载均衡+分布式缓存

    用户间的通信方案设计
  负载均衡算法采用“一致性哈希算法”,消息路由通过分布式缓存实现。具体过程是:客户端连接时根据IP或者客户端标识通过一致性哈希算法定位到某台服务器,消息路由时从分布式缓存中查询目标客户端的连接状态及所在服务器。
优点:知道目标客户端的连接状态;
缺点:依赖分布式缓存,性能有所下降;