動態

詳情 返回 返回

即時通訊如何實現高併發性能 - 動態 詳情

一、解決數據庫高併發查詢寫入慢的瓶頸
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在羣裏發了一條消息,查詢內存,得知在線的羣成員列表,然後給所有在線成員一一發送這條消息,注意以單聊的形式發,這樣其他成員便不會重複轉發這條消息。

Add a new 評論

Some HTML is okay.