• 沒有找到結果。

的角度來看,Active/Stand by、Active/Passive(Hot standby)、Active/Active,都再再說明,

不論是人為的介入或是系統偵測異常時的自動切換,唯一的目的,就是希望當異常發生

infrastructure 的設計,被應用在電子交易領域,磁碟陣列(RAID, Redundant Array of Independent Disks), 資料庫鏡像 (Database mirror) ,叢集 (Cluster)架構, Storage area network(SAN)等等。

處理器之間以匯流排(Bus)緊密連接,而各處理器之間擁有稱為主記憶體(Main memory) 的 集 中式 共享記憶體 (Centrailzed shared Memory) ,處理器之間具有高度的耦合性 (Tightly-coupled)。請見下圖 1.1

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

圖 1.1 對稱式多處理器系統,本圖取自[3]。

但如果將各處理器,分屬於不同的主機上,彼此之間是透過高速網路裝置來傳遞訊 息,沒有共享的主記憶體,各主機擁有獨立的記憶體及 I/O,處理器之間具有低耦合性 (Loosely-coupled)。這類型的多處理系統,又可稱為多重主機(Multicomputers)系統[4],

見圖 1.2。

圖 1.2 多重主機系統,本圖取自[5]

在分散式系統的優點評估中,有一潛在的優點,就是穩定度高[4]。要能提供一個高 穩定性的電子交易系統,無疑必須採取分散式的多主機架構,而且,為了考量當主機發

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

生異常時,其他主機接續處理的時間可以最短,因此在設計上,各主機的軟、硬體資源、

處理程序是可以呈現『對稱式(symmetric)』的分配。所謂對稱,即讓每一台機器上都『同 時』運作相同的處理程序,做相同的事情,儲存同樣的資料,正因為機器之間沒有所謂 的主從關係,所以每台機器角色平等,如此一來,即便整個系統的機器群發生異常到只 剩下一台機器可以運作,該單一機器仍能繼續提供原有的服務,但如此的設計架構,在 負載平衡(Load balance)上,並沒有辦法提供效益,因為每一台機器都有著相同的訊息量。

對稱式多主機系統的概觀如圖 1.3 所示

圖 1.3 對稱式多主機系統架構

圖示說明如下

1、Host1 至 Host N:代表有 1 至 N 台的主機。

2、P0、P1、P2、P3:代表每台機器都有著相同的處理程序 P0 至 P3。

3、D0、D1、D2、D3:代表每台機器都儲存著相同的資料 D0 至 D3。

然而一個對稱式的電子交易系統,各主機之間都擁有著獨立的硬體資源(CPU、Local memory/Cache、Disk、BUS、Network),處理程序,儲存資料,在這樣一個低耦合(loosely

但都有缺點。leading code 的缺點在於,一個固定編碼長度(一般來說是 8bytes)的流水序 號,拿至少 1byte 當 leading code 時,整個可編序號的範圍就少了 10 倍,而指定每台機

Joe Armstrong 在其著作『Programming Erlang:Software for a Concurrent World』對 於程序的監控,有如是的說明:『如果有人死掉了,其他人會注意到』[6]。這也就表示,

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

自於其他通道發出要求後的外部回覆。舉例來說,我們的系統為 M,有主機 M 1 至 M n,

其他系統為 T,使用者從系統 T 發出一個要求,該要求經過外部處理後的回覆,除了會 回覆給系統 T 之外,還會回覆給我們的系統 M 1 至 M n。為什麼會出現這種狀況?原因 在於各系統之間要能看到彼此之間的交易內容。問題來了,我們系統的主機有 M 1 至 M n,每一台都收到相同的回覆訊息,如果每一台都往前端推播,則前端會收到 n-1 個重 複的回覆,但不推播也不行,因為不推播,前端就不會收到交易結果的回覆。因此系統 中只能有一台是負責這類沒有 request,但卻有 response 的推播功能。既然只能有一台,

接下來的問題產生了:要哪一台負責?決定的機制為何?如果這台發生異常,哪一台要 接手?而這些問題,正是有關主機遴選的議題。

綜合上述的說明,可以知道,在對稱式多主機設計的系統架構下,勢必要有協調各 主機之間有關『資料共享』、『訊息同步』、『程序監控』及『主機遴選』的運作問題需要 解決。如圖 1.4 所示。圖中標示 1 之處,代表要產生全域的流水序號,這跟資料共享有 關;圖中標示 2 之處,代表訊息在其中一台主機收到後,必須同步到其他主機;圖中標 示 3 之處,代表該如何監控處理程序之異常情況;圖中標示 4 之處,代表當所有主機都 收到外部訊息的時候,該由哪一台主機負責處理,才不會出現重複處理的問題,這會跟 主機遴選有關。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

圖 1.4 對稱式多主機系統面臨的問題-架構圖

除此之外,主機的資料儲存會涉及到資料庫的運用,目前市面上的商用資料庫都所 費不貲,如果要建立一台以上的對稱式多主機系統,一台主機就要有一個資料庫,那所 有主機加起來的資料庫授權費用更會高得讓人望之怯步,因此在資料庫的選定上,必須 朝向低成本,甚至是免費的資料庫管理系統,如此一來,才能符合高穩定且低成本的系 統目標。

1.3、研究目標

以對稱式多主機的架構,設計一套低成本,高可靠度、不間斷服務的電子交易系統 是本篇論文的目標。所謂高可靠度及不間斷,代表在原來會發生交易中斷或是委託狀況 不明的情況下,在本系統中可以避免,讓整個交易的過程可以順利完成。在一個分散式 的系統架構下,當然還必須考慮其透通性(Transparency),讓使用者使用起來,就像是在 一般的集中式系統上一樣。

1.4、研究成果

1、發揮 Zookeeper 的協調服務功能,建置低耦合(loosely coupled)的系統架構,但卻具有 高聚合的系統服務(high cohesion)。

2、提出 Propogation monitor 的程序監控概念

3、發揮 Zookeeper 的協調服務功能,解決對稱式多主機架構所面臨的四大問題。 後續能被正常處理,ex.資料的封包在 internet 上就已經發生遺失,或是與本系統串接的 外部程式發生異常,無法將資料封包傳進本系統。

2、主機或處理程序發生異常時,在主機切換完成前,如果有其他外部實體的資料流輸 入,原異常程序必須處理的資料流,會因為後續資料流的進入而被覆蓋。這個限制,可 用 Zookeeper Locks 來解決,但這部份不在本論文所實作的範圍內。

3、在訊息上傳至 Zookeeper 前的任何異常,因為訊息尚未透過 Zookeeper 完成通知,其 他承接該異常主機執行後續作業的處理程序,將無法得知異常主機當時所要處理的訊息

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

內容為何,造成該訊息無法獲得處理。

4、Zookeeper ensemble 可靠度提供,所須的機器數量:要讓 Zookeeper ensemble 能夠正 常運作,機器的數量有一個計算的公式:2f+1[7],f 是指可以允許機器異常的數量,f 最 小為 1,因此主機的數量最少是 2*1+1=3 台。

2.1、分散式系統的硬體概念(Hardware concept)

在探討集中式和分散式系統的優缺點中,分散式有一潛在的優點是較高的可信度。

對於一些比較重要的應用作業,例如原子爐,或是飛機之控制,採用分散式系統以獲得 較高之可信度應是其主要的考量。雖然所有的分散式系統都有一個以上的中央處理器 (CPU),但在架構上卻不盡相同,尤其是在機器間的連接方式。對於這種多 CPU 的電腦 系統架構的分類方式,最常被引用的是採自 Flynn 在 1972 年,所提出的兩個基本特性:

指令流(instruction streams)與資料流(data streams)。根據這兩種特性就可以組合成 4 種類 別:

1、單一指令流;單一資料流(Single instruction,Single data,簡稱 SISD)、

2、單一指令流;多重資料流(Single instruction,Multiple data,簡稱 SIMD)、

3、多重指令流;單一資料流(Multiple instruction,Single data,簡稱 MISD) 4、多重指令流;多重資料流(Multiple instruction,Multiple data,簡稱 MIMD)。

所有的分散式系統均屬於 MIMD。我們可以將 MIMD 電腦再區分為兩種,一種是

相關文件