IM即时通讯项目框架分析
生活随笔
收集整理的這篇文章主要介紹了
IM即时通讯项目框架分析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 IM即時通訊項目框架分析和部署
1. 即時通訊框架分析和部署
2. 登錄服務(wù)器和消息服務(wù)器設(shè)計
3. 路由服務(wù)器設(shè)計
4. 數(shù)據(jù)庫代理服務(wù)器設(shè)計
5. 文件服務(wù)器和docker部署
6. 性能測試和k8s上云發(fā)布
1.1 即時通訊應(yīng)用場景
即時通訊技術(shù)應(yīng)用非常廣泛,涉及教育、電商、金融、泛娛樂、生活服務(wù)、醫(yī)療健康、 政企服務(wù)、游戲聊天、在線客服等等行業(yè),以下以部分典型應(yīng)用作為簡介。 (一)教育 (二)電商 (三)金融 (四)泛娛樂 (五)招聘 (六)醫(yī)療健康 (七)政企服務(wù) (八)游戲類產(chǎn)品 提供:即時通訊、用戶點對點聊天、主播互動、實時彈幕、 實時監(jiān)控、遠(yuǎn)程控制、多人互動、位置共享1.2 即時通訊提供商
容聯(lián) 融云 環(huán)信 http api 網(wǎng)易云信 QQ通訊 詳細(xì)對比:https://blog.csdn.net/weixin_33739646/article/details/ 每天發(fā)信息不過 10000 條 大部分場景下自研成本比使用第三方的高 自研的優(yōu)勢:可控1.3 即時通訊開源項目
C++: teamtalk
Go:GoBelieve goim
Java:openfire
2.1 即時通訊的基本架構(gòu)
客戶端與服務(wù)器端進(jìn)行網(wǎng)絡(luò)通信、收發(fā)消息 連接層為客戶端收發(fā)消息提供出入口。主 要的任務(wù):保持海量用戶連接;解析協(xié)議, 對傳輸內(nèi)容進(jìn)行編碼;維護(hù)session;推送 消息。 核心業(yè)務(wù)層負(fù)責(zé)IM系統(tǒng)各項功能的核心邏 輯實現(xiàn)。 數(shù)據(jù)層負(fù)責(zé)IM系統(tǒng)相關(guān)數(shù)據(jù)的持久化存儲, 包括消息內(nèi)容、賬號信息等。2.2 IM技術(shù)的特點
息是不一樣的。)
TCP 只能保證消息數(shù)據(jù)鏈路可靠,不能保證業(yè)務(wù)可靠。
3 即時通訊分層架構(gòu)
即時通訊系統(tǒng)常用分層架構(gòu) 接入層:entry/gate 邏輯層:logic 數(shù)據(jù)層:data 路由層:route3.1 即時通訊分層架構(gòu)-接入層
接入層的作用: ? 連接整流 ? 通信安全 ? 報文解壓縮 ? 初步防攻擊3.1接入層-連接整流和通信安全
3.1接入層-報文解壓縮和初步防攻擊
3.2 即時通訊分層架構(gòu)-邏輯層
1. 用戶邏輯 :用戶登錄、用戶退出、用戶信息查詢、用戶更新簽
名、用戶分組創(chuàng)建等
2. 好友邏輯 :添加好友、刪除好友、拉取好友列表、好友添加備
注等
3. 群組邏輯 :創(chuàng)建群、加入群、刪除群、刪除成員等
4. 消息邏輯 :單聊文字消息、單聊語音消息、群聊文字消息、群
聊語音消息、拉取離線消息等
5. 其他 ,比如文件傳輸、圖片傳輸?shù)?/p>
3.2 邏輯層設(shè)計核心-擴(kuò)展性
3.3 即時通訊分層架構(gòu)-數(shù)據(jù)層
1. 對上游屏蔽存儲引擎
2. 對上游屏蔽cache層
3. 對上游提供友好接口
3.3.1 數(shù)據(jù)層-屏蔽存儲引擎
3.3.2 數(shù)據(jù)層-屏蔽cache層
3.3.3 數(shù)據(jù)層-提供友好接口
3.3.4 數(shù)據(jù)層-擴(kuò)展性
3.4 即時通訊分層架構(gòu)-路由層
狀態(tài)信息(在線/離線)
3.4. 1 路由層-路由消息
4 Teamtalk
為什么學(xué)習(xí)Teamtalk: ? CloudTalk 基于Teamtalk進(jìn)行二次開發(fā) ? xx公司基于Teamtalk進(jìn)行二次開發(fā)5 即時通訊項目
MsgServer給客戶端。
息需要發(fā)給他,就會將消息轉(zhuǎn)發(fā)給route_server,route_server會將消息發(fā)給相應(yīng)的
msg_server,由此可知,route_server也維護(hù)了一定的用戶狀態(tài)。
服務(wù),屏蔽其他服務(wù)器與mysql與redis的直接交互。
6.1 我們能從中學(xué)到什么
10.Redis連接池
11.線程池
12.數(shù)據(jù)庫實戰(zhàn)
13.小文件存儲系統(tǒng)原理
14.音視頻集成到即時通訊
15.即時通訊技術(shù)的原理和實戰(zhàn)
1. 消息單聊(消息id)
2. 消息群聊(分表的設(shè)計)
3. 消息推送和拉取
6.2 即時通訊重點
實時性
? http
? socket
? websocket
數(shù)據(jù)庫
? 數(shù)據(jù)庫表設(shè)計
? 分表設(shè)計
? 密碼存儲方式
? 最近會話表
? 未讀消息如何體現(xiàn)
? 聊天消息分表問題
7.1 即時通訊項目部署
1.保證redis正常運行; 2.保證mysql正常運行; 3.保證php正常運行; 4.保證nginx正常運行; 5.保證php正常運行,這里的php主要是web管理平臺的使用; 6.protobuf版本庫目前server端是2.0的版本,Android_av使用了3.0的版 本 7.web服務(wù)器需要nginx支持; 8.服務(wù)不啟動的時候主要查看log是否正常。7.2 配置文件重點 1
loginserver.conf負(fù)載均衡服務(wù) HttpPort:對應(yīng)提供HTTP服務(wù)的端口,默認(rèn) 8080 MsgServerPort:msg服務(wù)器上報監(jiān)聽的端口,默認(rèn) 8100 msgserver.conf 消息服務(wù) ListenPort:連接msg服務(wù)器需要的端口 LoginServerIP1:上報msg服務(wù)器負(fù)載的地址 LoginServerPort1:上報msg服務(wù)器負(fù)載的端口 RouteServerIP1:route服務(wù)器地址和端口 RouteServerPort1: PushServerIP1:push推送服務(wù)器地址和端口 PushServerPort1: FileServerIP1:文件傳輸服務(wù)器地址和端口 IpAddr1:對外提供的往外ip,需要上報給login 服務(wù)器 dbproxyserver.con 數(shù)據(jù)庫中間件服務(wù) ListenPort:該服務(wù)監(jiān)聽的端口 ThreadNum:線程池線程數(shù)量 DBInstances=teamtalk_master,teamtalk_slave配置數(shù)據(jù)庫實例 #teamtalk_master teamtalk_master_host=127.0.0.1 數(shù)據(jù)庫ip teamtalk_master_port=3306 數(shù)據(jù)庫端口 teamtalk_master_dbname=teamtalk 數(shù)據(jù)庫名字 teamtalk_master_username=root 用戶名 teamtalk_master_password=123456 密碼 teamtalk_master_maxconncnt=16 連接池最大連接數(shù)量 #未讀消息計數(shù)器的redis unread_host=127.0.0.1 redis地址 unread_port=6379 redis端口 unread_db=1 db索引 unread_maxconncnt=16 連接池最大連接數(shù)量routeserver.conf 路由服務(wù)
ListenIP=0.0.0.0 該服務(wù)監(jiān)聽ip
ListenMsgPort=8200 該服務(wù)監(jiān)聽端口
7.2 配置文件重點 2
fileserver.conf文件傳輸服務(wù)
ClientListenIP=0.0.0.0 該服務(wù)監(jiān)聽的地址
ClientListenPort=8600 該服務(wù)監(jiān)聽的端口,
供msg server連接
8 通信協(xié)議解析
總結(jié)
以上是生活随笔為你收集整理的IM即时通讯项目框架分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 期望DP
- 下一篇: 使用Css截取字符串