如何实现聊天软件在使用过程中达到高并发性能要求?
一、解决数据库高并发查询慢的瓶颈
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在群里发了一条消息,查询内存,得知在线的群成员列表,然后给所有在线成员一一发送这条消息,注意以单聊的形式发,这样其他成员便不会重复转发这条消息。
#即时通讯##高并发##聊天软件的功能优化#
一、解决数据库高并发查询慢的瓶颈
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在群里发了一条消息,查询内存,得知在线的群成员列表,然后给所有在线成员一一发送这条消息,注意以单聊的形式发,这样其他成员便不会重复转发这条消息。
#即时通讯##高并发##聊天软件的功能优化#
【AMD果然留一手!Zen 4锐龙7000处理器性能有惊喜:默频加速、全核5.5GHz】关于在《幽灵线:东京》游戏中跑出5.5GHz,AMD技术营销总监Robert Hallock介绍,成绩是在4月份跑出,用的是一颗16核Zen 4处理器。处理器没有做任何额外超频,靠常见的Asetek 280mm AIO水冷头镇压。而且他还透露,5.5GHz并不是单核,而是多线程负载。实际上,Zen 4锐龙7000全核默频加速到5.2~5.5GHz很常见,应用程序和游戏厂商做好优化即可。
#大冢爱[超话]#上手く乗るコツは
女王様になることだと
教えてもらい、
言い聞かせてみましたが
格好から入るタイプだから
なりきれず、、、
馬は選べないんですが
まさかの
大河ドラマ経験馬で
「ホクト」という馬に乗せてもらいました。
みなさんとても優しくて
楽しく乗馬できました♀️
AIO
3 小时
女王様になることだと
教えてもらい、
言い聞かせてみましたが
格好から入るタイプだから
なりきれず、、、
馬は選べないんですが
まさかの
大河ドラマ経験馬で
「ホクト」という馬に乗せてもらいました。
みなさんとても優しくて
楽しく乗馬できました♀️
AIO
3 小时
✋热门推荐