一、解决数据库高并发查询写入慢的瓶颈
1.弃用查询速度一般的MYSQL,选用查询速度超快的NOSQL数据库MongoDB
2.读写分离,写时写到主数据库,实时同步至多台从数据库,查询时选择最闲的从数据库,从而使查询压力分散到多台
3.分库分表,比如每一个群组是一个表,避免产生超大数据量的表,使单次查询速度保持在可控范围
4.冷热分离,比如单聊的数据表,可以设置热表保存数据的日期范围,半年内的数据保存到热表,半年以前的数据保存到冷表,避免数据量过于巨大。
5.最热缓存,对于最常用的热点数据复制到Redis内存中进行查询,速度极快,避免数据库高频次的重复查询。
二、解决聊天通讯的高并发瓶颈
1.采用基于Protobuf的二进制字节格式,包极小,还支持压缩,使单次通讯的流量压缩至最低;
2.采用为高并发而生的AIO框架(JAVA),采用高效多线程队列存储待发消息任务,使单台并发最高可达到50W;
3.采用自研的聊天集群软件使聊天的压力由单台分散到多台,比如A登陆在服务器A,B登陆在服务器B,A给B发消息,服务器A收到,查询内存,得知B登录在服务器B上,于是转发给B服务器,服务器B就会通过与B的长连接把消息发给B;群聊也类似,A和B在同一群组,A在群里发了一条消息,查询内存,得知在线的群成员列表,然后给所有在线成员一一发送这条消息,注意以单聊的形式发,这样其他成员便不会重复转发这条消息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。