喧喧技術(shù)架構(gòu)實現(xiàn)方案

2019-04-02 10:49 更新

目標(biāo)

喧喧即時通信解決方案目標(biāo)有:


  • 多平臺支持:服務(wù)器支持任意系統(tǒng)平臺部署,客戶端支持在任意平臺上使用;
  • 交互體驗:實現(xiàn)無延遲的聊天體驗;
  • 安全性:保證通信安全性,禁止第三方截獲消息;
  • 性能:支持大量用戶同時在線使用;
  • 可擴(kuò)展性:采用通用技術(shù),方便進(jìn)行二次開發(fā);
  • 集成:易于與已有系統(tǒng)進(jìn)行集成。

方案

喧喧即時通信解決方案包含三個部分:


  1. 客戶端(xxc):提供最終用戶使用的交互界面;
  2. 后端服務(wù)器(xxb):提供聊天數(shù)據(jù)存儲以及供客戶端使用的接口,以及喧喧服務(wù)器管理界面。
  3. XXD 服務(wù)器(xxd):作為中間守護(hù)服務(wù)器,提供文件上傳下載管理、協(xié)調(diào)客戶端與后端服務(wù)器通信。

客戶端通過 Socket 連接到 XXD 服務(wù)器;XXD 服務(wù)器負(fù)責(zé)管理所有已連接的客戶端,并且隨時將客戶端相關(guān)信息通過 HTTP 協(xié)議匯報給后端服務(wù)器;客戶端并不直接與后端服務(wù)器通信,而且將消息發(fā)送給 XXD 服務(wù)器,XXD 服務(wù)器接收到客戶端消息后立即將消息發(fā)送給后端服務(wù)器;后端服務(wù)器如果有消息要推送給客戶端需要先發(fā)送給 XXD 服務(wù)器,然后 XXD 服務(wù)器將后端服務(wù)器的消息再推送給客戶端。在以上三方直接存在 2 中通信協(xié)議:


  • Socket:客戶端與 XXD 服務(wù)器直接使用 Socket 協(xié)議連接(文件上傳下載除外),可以實現(xiàn)實時通信,將用戶聊天過程中的延遲降至最低;
  • HTTP:XXD 服務(wù)器與后端服務(wù)器通過 HTTP 協(xié)議通信,HTTP 協(xié)議具有廣泛的支持,并且使用簡單,這樣用戶更容易將喧喧集成到自己的系統(tǒng)中。

通常情況下客戶端、后端服務(wù)器和 XXD 服務(wù)器的關(guān)系如下:

一個 XXD 服務(wù)器還可以鏈接到多個后端服務(wù)器,這樣可以實現(xiàn)集群部署:


技術(shù)實現(xiàn)

后端服務(wù)器實現(xiàn)

后端服務(wù)器采用 php + mysql 開發(fā),使用 ZentaoPHP 作為開發(fā)框架,非常方便的進(jìn)行二次開發(fā)。


XXD 服務(wù)器實現(xiàn)

XXD 服務(wù)器端采用 Go 語言實現(xiàn)。Go 語言具備高性能、支持高并發(fā)、易于學(xué)習(xí)使用,非常適合來開發(fā)中間守護(hù)服務(wù)器。


XXD 服務(wù)器使用到了 go-sqlite3 來實現(xiàn)服務(wù)器緩存功能。


客戶端實現(xiàn)

客戶端推薦采用 HTML/CSS/JS 實現(xiàn),目前官方桌面客戶端基于 Electron 開發(fā)。



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號