设计一个高并发IM即时通讯软件的思路要点
2016-07-29 00:00
429 查看
假如要我设计一个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散列。将活跃和非活跃用户推送到不同的散列服务器上。也可以通过地区属性将用户动态调整到不同的散列服务器上。
大致功能点:
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散列。将活跃和非活跃用户推送到不同的散列服务器上。也可以通过地区属性将用户动态调整到不同的散列服务器上。
相关文章推荐
- thread sleep 函数的用法
- 开源软件如何盈利?
- 被面与面试
- 13款开源Java大数据工具
- 用cobar搭建分布式数据库
- eclipse上ofbiz项目的断点调试
- Activemq5.2.0的spring开发
- 互联网科普-淘宝与天猫的对标
- 电商之 团购与B2C模式以及B2B2C模式对比
- 远程登陆MYSQL-指定ip和端口号
- Unix 40年:Unix年鉴
- 各种流行的编程风格
- springframework(二)第一个spring程序
- oracle通过dblink抽取数据处理
- springframework(八)AOP的相关术语以及实现方式介绍
- 站在淘宝天猫两大平台背后的平台
- 创建svn下的项目
- 通过JVM获取相关的服务器信息
- 海量图片存储策略
- 工作流的基本知识