• 沒有找到結果。

第三章 線上即時傳呼系統的設計

3.4 維護使用者資訊

在傳送訊息的時候,伺服器並不知道其他伺服器上面有哪些使用 者,當被傳訊的對象不在此伺服器時,便不知道如何轉送訊息。如圖 3-2,使用者 A 要送訊息給使用者 E,但是 MS1 並不知道 E 位在 MS3,

便無法轉送訊息。

圖 3-2 多伺服器架構轉送訊息的問題

因此,伺服器需要額外維護一張使用者所在位置的清單,而為了 保持各個伺服器上清單的一致性,可分為兩種方法,集中型及分散 型,以下對於這兩個方法作詳細的介紹。

一、 集中型維護:

這個方法是說由一台伺服器來記錄線上所有使用者位置的清 單,當各個伺服器需要去取得位置的時候,便來問這台伺服器,在我 們的實驗中,我們讓 Login Server 擔任這個角色,負責記錄線上所 有使用者的位置。

如圖 3-3 所示,Login Server 維護一張線上所有使用者的清單,

而其他伺服器只需記錄在此台伺服器上的使用者的好友資訊。

圖 3-3 集中型清單維護的架構

接著我們對於第二章提到的四種使用者行為來介紹此種架構的 運作方式。

1. 登入:

登入動作可以分為兩個階段,第一階段是與 Login Server 溝通,取得所要連線的伺服器資訊,Login Server 傳給使用者 A 要連線到 MS1。第二階段是使用者與伺服器建立連線之後,伺服 器需要通知 Login Server 去修改清單,並且取得使用者的好友 資訊,再傳送給各個好友此使用者的上線訊息。如圖 3-4,MS1 先 通知 Login Server 使用者 A 已經上線,需要修改線上所有使用 者位置的清單,接著 Login Server 會回傳 A 的好友資訊,告訴 M1,A 的好友 C 在 MS2,E 在 MS3, MS1 再通知 MS2、MS3,MS2 會 將 A 的上線資訊通知 C,MS3 會將 A 的上線資訊通知 E。

圖 3-4 集中型清單維護-使用者登入

2. 登出:

當 伺 服 器 接 收 到 使 用 者 登 出 的 訊 息 時 , 會 先 通 知 Login Server 修改清單,再通知好友所在的伺服器,由他們通知好友離 線的訊息。如圖 3-5,A 送出要登出的訊息,MS1 先通知 Login Server 修改使用者清單,再通知 C、E 所在的 MS2、MS3,由他們 通知 C、E 使用者 A 登出的訊息。

圖 3-5 集中型清單維護-使用者登出

3. 傳送訊息:

當使用者之間要互相傳送訊息的時候,伺服器可以直接查詢 自己所維護的好友位置清單,轉送訊息到該伺服器,再傳給好 友。如圖 3-6,A 要傳送訊息給 E,MS1 接收到訊息時,查詢好友 位置清單得知 E 在 MS3,便將訊息轉送給 MS3,再由 MS3 傳給 E。

圖 3-6 傳送訊息

4. 改變狀態:

當伺服器接收到使用者改變狀態的訊息時,需要將訊息轉送 給好友。運作方式跟登出的通知方式大致相同。

二、 分散型:

在這個方法中,我們利用廣播訊息的方式來維護各個伺服器清單 的一致性,當需要修改清單資訊的時候,伺服器便發出廣播訊息通知 所有伺服器,去修改清單。

如圖 3-7,Login Server 不需要額外維護線上所有使用者的清

圖 3-7 分散型清單維護的架構

同樣的,我們由四種使用者的行為來解釋此種架構的運作情形。

1. 登入:

在登入部份同樣分為兩個階段,第一階段是與 Login Server 聯繫取得所要連線的伺服器,第二階段伺服器要發出廣播訊息,

告訴所有伺服器此使用者上線的訊息,以便修改清單,當其他伺 服器收到廣播訊息,便會回傳位在此伺服器上的好友資訊。如圖 3-8,MS1 發出廣播訊息告訴其他伺服器 A 上線的訊息,MS2 接到 訊息,便回傳 C 的資訊,並通知 C,A 已上線,MS3 接到訊息,便 回傳 E 的資訊,並通知 E,A 已上線。

圖 3-8 分散型清單維護-使用者登入

2. 登出:

當伺服器接到使用者要登出的訊息時,便發出廣播訊息通知 其他伺服器,修改清單,並且通知好友。如圖 3-9,A 送出登出 訊息,MS1 便廣播告訴其他伺服器該修改清單,而 MS2 接到廣播 訊息,便通知 C,A 已離線,MS3 接到廣播訊息便通知 E,A 已離 線。

圖 3-9 分散型清單維護-使用者登出

3. 傳送訊息:

這部分的運作方式與集中型的方式相同,由伺服器負責轉送 訊息給其他伺服器的好友。

4. 改變狀態:

當伺服器接收到使用者改變狀態的訊息時,便會利用清單查 出好友的位置,並進行轉送的動作,由好友所在的伺服器再通知 好友。與登出的運作情形一樣。

相關文件