设计一个高并发IM即时通讯软件的思路要点

假如要我设计一个QQ,访问量在百万级别并发。

大致功能点:

1、上线通知

2、群的消息显示

3、发送消息

4、良好扩展性。增加用户能直接通过增加机器解决

5、稳定性

6、高性能


相关数据性能。

1、单个节点能支持一万左右的用户登录

2、使用mysql数据库存储用户信息


处理策略:

1、数据库上如果是百万级别,可以做表分区处理。可以使用hash分区处理成100分区表。保证查询速度

2、在服务器端建立100个hashset,每个hashset创建大小为10000,分配到100个服务器上。按照用户登录后取得的ID与这100个hash建立一个对应关系,保证指定的用户id只能在一个hash上进行注册

3、上线通知:注册后查询当前用户的好友以及群,逐个通知高亮显示

4、群的消息显示:发送消息后,查询群的好友,逐个发送提示消息

5、下线通知:退出后,执行如上步骤,逐个发送退出消息

6、发送消息:发送消息给指定好友,根据好友的id找到对应的服务器和hash,然后做消息推送

7、扩展性:每增加10000个客户,增加一组hash,增加一个服务器。如果超过100万的用户,可以做1000个大小的hash散列

8、稳定性:通过单个hash节点的负载完成

9、可以扩展用户的地区属性以及是否活跃的属性,建立两组hash散列。将活跃和非活跃用户推送到不同的散列服务器上。也可以通过地区属性将用户动态调整到不同的散列服务器上。



你可能感兴趣的:(j2ee)