開發分布式WebIm 2(概述)

2022-02-17 02:24:44 字數 2148 閱讀 1737

1.業務分離的設計

分布式的優點是能用大量的廉價伺服器組建成乙個巨大的系統,價效比很高。簡單的說就是把業務模組盡可能的縮小的乙個原子級別,然後從系統中剝離出來單獨執行,當把系統中所有的業務一一剝離後,分布式系統也就搭建成功一半了。剩下的就是高效的處理每個業務的資料流。乙個簡單的im系統我大概分為4個部分:

1.1。登入認證伺服器群

用於使用者的註冊和登入,又可以分為web伺服器群和資料庫群。根據使用者名稱的前兩位ascii碼分配不同的資料庫來儲存。因此可以把使用者分配到(26+10)*(26+10)≈ 400 臺伺服器中,能夠最大程度的分流查詢工作。

1.2.聊天應用伺服器群

用於使用者間的訊息互發與暫存,使用者傳送的訊息快取在伺服器的iis程序中,不與資料庫發生關係。

1.3.使用者頭像伺服器群

用於使用者頭像的儲存,減少對其他web伺服器的連線依賴。要求io效能好。

1.4.使用者檔案伺服器群

用於使用者檔案的儲存,減少對其他web伺服器的連線依賴。要求io效能好。

伺服器群**

聊天應用伺服器圖

2.認證機制

分布式系統中再也不能使用cookie和session,因此必須要有一套認證機制使其能夠在多個伺服器中認證。簡單的做法是每個伺服器儲存乙個金鑰,在登入過程中,返回md5(使用者名稱+金鑰),以後每次使用者訪問系統都執行 islogined(使用者名稱,md5(使用者名稱+金鑰)即可判斷是否合法使用者。

3.伺服器群組配置檔案

在分布式系統中伺服器群組互相通訊是很頻繁的,為了相互找到對方,就需要知道對方的位址,因此用配置檔案的方式來實現。 

<

xml>

<

servers

>

<

talkservers

>

192.168.2.1

talkservers

>

<

talkservers

>

192.168.2.2

talkservers

>

<

dbservers

>

<

default

>

server=192.168.2.100;database=im;uid=im;pwd=123;

default

>

<

aa>

server=192.168.2.101;database=im;uid=im;pwd=123;

aa>

.<

z9>

z9>

<

aa-a9

>

aa-a9

>

dbservers

>

<

errosrervers

>

192.168.2.200

errosrervers

>

servers

>

<

key>

1234567890poiuytrewq

key>

xml>

4.跨程序和跨伺服器的通訊

跨伺服器通訊方案很多,我選擇remoting的tcp通道,速度較快。跨程序的通訊我還是用tcp通道,因為tcp通道在併發模式下效能好,微軟有個程序級別的ipc通道速度快,但是我測試在併發下效能很低。參見《remoting技術:多執行緒中ipcchannel的效能太遜

》這篇文章。

5.集中錯誤管理機制

程式中遇到異常以後,通常是記錄到本機log,但在分布式下管理太多伺服器的log是件很麻煩的事情,因此需要把錯誤log集中的拋到一台專門的伺服器上,還可以設計成錯誤級別分類,高階別的錯誤用簡訊通知管理員。

開發分布式WebIm 1(設想)

開發乙個手機im系統的想法有很久了,最先我定位於基於xmpp協議的實現方式,為此我安裝了openfire和spark,搭建了一套完善的系統用於研究,spark的debug模式對我分析xmpp協議起到了重要的作用,隨後我又安裝了agsxmpp sdk,在一番折騰下我終於完成了agsxmpp示例客戶端與...

分布式計算概述

分布式系統 在 網 絡 計 算 平台 上 開 發 部 署 管 理 和 維 護 以 資 源 共 享 和 協 同 工 作 為 主 要 應 用 目 標 的 分 布 式 應 用 系 統。分布式系統的主要特徵 包含任意個數的系統程序和使用者程序 體系結構模組化,它由數目可變的多個處理部件組成 通過共享通訊結構...

分布式系統概述

2分布式系統概述注 由於大資料技術領域的各類技術框架基本上都是分布式系統,因此,理解hadoop storm spark 等技術框架,都需要具備基本的分布式系統概念 該軟體系統會劃分成多個子系統或模組,各自執行在不同的機器上,子系統或模組之間通過網路通訊進行協作,實現最終的整體功能 比如分布式作業系...