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

2019-04-02 10:49 更新

目標(biāo)

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


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

方案

喧喧即時(shí)通信解決方案包含三個(gè)部分:


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

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


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

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

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


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

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

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


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

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


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


客戶端實(shí)現(xiàn)

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



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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)