• 沒有找到結果。

立 政 治 大 學

Na tiona

l Ch engchi University

第三章 系統架構及組件之設計

本章節將延續第二章所提出之對稱式多主機的架構、Zookeeper 的特性,MariaDB 的運 用,提出系統架構及系統內部所有組成組件之細部設計。這當中包括了 znode、電子資 料交換格式、處理程序、資料表、通訊介面、API、及模擬器的設計。細節將分別於後 續的章節做詳細的說明。

3.1、對稱式系統架構之設計

根據圖 1.3 對稱式多主機系統架構所示,在對稱式的系統中,每台主機均具有相同的處 理程序及儲存的資料。再運用 Zookeeper 所提供的服務,當成是『資料共享』、『訊息傳 遞』、『程序監控』及『主機遴選』的平台。完整的基於 Zookeeper 服務的對稱式電子交 易系統的宏觀架構圖如 3.1 所示。

圖 3.1 基於 Zookeeper 服務的對稱式電子交易系統宏觀架構圖 各圖示所代表的意義說明如下

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

1、直立長方形虛線:代表對稱式架構下的每一台主機。

2、橫向長方形虛線:代表 Zookeeper ensemble。

3、有陰影效果的長方形:代表外部實體(external entity)。

4、單箭頭或雙箭頭實線:代表資料流,而線上的文字說明,代表資料流傳遞的方式。

5、無陰影效果的長方形實線:代表處理程序。

6、柱狀圖:代表資料庫。

3.2、系統組件之設計

3.2.1、Zookeeper Znode 的階層結構及建立模式

/Election(PERSISTENT)

/Machines(PERSISTENT)

Machine 1(PERSISTENT)

Process 1(PERSISTENT_SEQUENTIAL) Thread 1(EPHEMERAL)

Thread 2(EPHEMERAL)

Thread n(EPHEMERAL) /Shared(PERSISTENT)

Process n(PERSISTENT_SEQUENTIAL) Thread 1(EPHEMERAL)

Thread 2(EPHEMERAL)

Thread n(EPHEMERAL) SerialNumber(PERSISTENT)

EntrustInfo(PERSISTENT)

Machine n(PERSISTENT)

Pid.00000001(EPHEMERAL_SEQUENTIAL) Pid.00000002(EPHEMERAL_SEQUENTIAL) Pid.0000000n(EPHEMERAL_SEQUENTIAL)

圖 3.2 znode 階層架構及其建立模式

接下來,將針對該階層結構、節點的設計用途及模式選定的原因說明如下 1、/:代表根節點

a、用途:Zookeeper 會自動建立一個根節點,所有後續所建立的節點,均屬於這個 根節點的子節點。類似 UNIX(Linux)的檔案階層表示方式。

空節點的形態存在。因此該節點的模式要設計成 PERSISTENT。

3、/Election/Pid.00000001~Pid.0000000n:代表參與主機遴選的處理程序。

a、用途:用來代表要參與主機遴選的處理程序。節點的命名規則為 ProcessID.序號。

b、模式選定原因:主機遴選的規則是節點名稱中,序號最小的節點即為 Leader。

而且代表主機的處理程序,不論任何原因,只要跟 Zookeeper 的連線中斷(當然,

包括處理程序的生命週期中止),即代表該主機出現異常情況,已經無發提供原有 子節點,該節點都必須存在,所以必須設計為 PERSISTENT。

5、/Shared/SerialNumber:代表共享全域唯一序號的節點。

a、用途:在對稱式的電子交易系統,所有的主機都必須共享同一個流水序號,此 節點就是存放此一全域流水序號的節點。

b、模式選定原因:此一節點不屬於任何一台主機所有,諱言之,該節點不會因為 主機否存在與否而決定是否存在,所以必須設計為 PERSISTENT。

主機存在與否而決定是否存在,所以必須設計為 PERSISTENT。

以下第 7 點至第 10 點,都跟程序監控有關。在說明下列 4 點之前,必須先瞭解處 理程序是如何被監控,如果發生異常,其他處理程序是如何收到通知。在 2.3.4 節,曾 提到監控機制是由內而外的概念,稱之為 Propagation monitor。接下來,就對 Propagation monitor 做說明。

這就像是程式語言中的 Exception handing,將例外訊息一層一層由內往外拋送。所以本 篇論文將此監控機制定名為 Propagation monitor。

在說明了 Propagation monitor 的運作原理後,接下來將繼續針對程序監控的部分,做 節點階層結構、節點的設計用途及模式選定的說明

7、/Machines:代表主機群的父節點。圖 3.3 表示主機群有 3 台主機,主機各為 ubuntu、

節點不會因為主機否存在與否而決定是否存在,所以必須設計為 PERSISTENT。

圖 3.3 主機群與主機的關係圖

8、/Machines /Machine 1~Machine n:代表主機群中的每一台機器,見圖 3.3。

a、用途:以主機名稱為其節點名稱。為各處理程序是否存在提供監控機制。每個 處理程序啟動時,就將該程序掛載至此節點下成為其子節點。只要有任何程序從該

節點被移除,監控該節點的處理程序就會收到通知。

b、模式選定原因:此一節點,對處理程序而言,是一父節點,不屬於任何一個處 理程序所有。換言之,要在代表主機發生異常時的處理程序結束前,明確刪除,所 以必須設計為 PERSISTENT。

9、/Machines/Machine 1~Machine n/Process 1~ Process n:代表主機內之處理程序。圖 3.4 代表主機 ubuntu_3 有 3 個處理程序,處理程序的名稱分別為 EntrustProcess-000 00001、

DBManipulator-00000001、TradingGateway00000001。

a、用途:因為處理程序要依附在主機內運作,所以每一個節點都代表是主機內的

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

一個處理程序。命名規則為程序名稱-序號。須要序號的原因在於,如果單一處理 程序是可以多重啟動的話,就必須要有序號來加以區別相同名稱的處理程序,例如 EntrustProcess 被啟動兩次,就會產生 EntrustProcess-00000001 及 Entrust00000002 兩個節點。

b、模式選定原因:此一節點,對執行序而言,是一父節點,不屬於任何一

個執行序所有。換言之,該節點的不能因為某個執行緒的異常而自動消失,因為該 節點之下還有其他執行緒是正常處理。再者,因為有序號的需求,因此必須被設計 為 PERSISTENT_SEQUENTIAL。

圖 3.4 程序與主機的關係圖

10、/Machines /Machine 1~Machine n/Process 1~ Process n/Thread 1~Thread n:代表每個 處理程序下的執行緒。圖 3.5 代表 DBManipulator-000000014 這個處理程序,有兩個執 行緒,執行緒代號分別是 19 及 20。

a、用途:這是監控機制中最小的單位。必須將每個執行緒在執行的時候,都掛載在所 屬的處理程序下,節點名稱是執行緒代號。經由監控處理程序下之執行緒節點的異動,

即可得知處理程序是否發生異常。

b、模式選定原因:執行緒已是監控機制中的最小單位,因此當執行緒發生異常時,就 必須自動從處理程序的節點中刪除,所以該節點必須設計成 EMPHEMERAL。

序,可區分為 big endian 及 little endian[16]。本系統採 little endian。以數值 484 為例,

經過轉換後,在 byte array 中所存放的值為

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

25 錯誤代碼 X(4) 141 0000:成功

26 錯誤訊息 X(32) 145

3.2.3、交易處理程序

電子交易系統有兩大的資料流必須處理,一個稱之為『委託』,而另一個稱為之為

『回報』。舉例來說,以國內股票交易為例,『在整股時段,以 123 塊,購買 XX 電子 10 張』,這是一個委託的要求,這個委託的資料流進入交易系統後,交易系統會經由一連 串的處理程序,將該資料流拆解後重新組合,最後送到交易所,而交易所會根據委託及 市場的買賣內容,回覆給使用者委託後的結果,就是所謂的回報。因此,接下來將根據 委託及回報的流程,來說明電子交易系統各處理程序是如何『串接』完成一筆交易。

1、委託

圖 3.6 是委託的流程圖,紅色長方形虛框處所標示的部分,為本論文所討論的系統範圍。

圖 3.6 電子交易委託流程圖

step 1、external entity 透過交易 GUI 將委託輸入,並將委託內容組成一份 XML。

step 2、交易 GUI 將 XML 透過通訊中介平台,也就是圖 3.6 中的 Message Oriented Middleware(MOM),傳送至本系統的入口處理程序,TradingGateway。

step 3、TradingGateway 將收到的 XML 反序列化(Deserialize)為系統內部操作的物件,再 將該物件根據下個處理程序所需的內容,序列化(Serialize)為 3.2.2 節所提及的委託電文,

並將該電文送至下個處理程序,EntrustProcessor。

step 4、EntrustProcessor 收到來自 TradingGateway 的委託電文後,將該電文根據規格拆 解,之後進行商業邏輯的檢核,產生全域的交易流水序號。

step 5、將檢核的結果、全域流水序號和其他資訊,例如主機 ip,加上原來的委託內容,

重新組合成 3.3.2 節所提的檢核回覆/後台下單/回報電文。如果商業邏輯檢核成功,會將 該電文送往至下述的 a、b、c、d 四個處理程序;但如果商業邏輯檢核失敗,只會將該 電文送往至下述的 a、b、d 三個處理程序。

a、TradingGateway:透過 TradingGateway→MOM→交易 GUI 介面的流程,讓使用者知 道該筆委託已經進入交易系統,也完成商業邏輯之檢核,如果在檢核過程中發生檢核錯 誤,例如:價格超過漲跌幅,使用者也可以透過這個流程得知。

b、DBManipulator:將該筆委的商業邏輯檢核紀錄下來,供使用者後續的查詢使用。

c、BOSConnector:該處理程序主要是負責跟交易所的主機連線,將收到的電文送至交 易所。實務上,在 BOSConnector 和交易所之間,還會存在一套稱為帳務系統的程式負 責對交易所的主機連線,BOSConnector 會將電文送至帳務系統,再由帳務系統將電文 送至交易所。但在本論文所討論的範圍中,帳務系統並不扮演任何角色,因此予以省略。

d、Zookeeper service:用意在於讓其他主機也能收到該委託之商業邏輯檢核結果,並將 該結果紀錄在資料庫中,如此一來,每台主機的資料庫存都保有一致的資料。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

2、回報

圖 3.6 是回報的流程圖,紅色長方形虛框處所標示的部分,為本論文所討論的系統範 圍。

圖 3.7 電子交易回報流程圖

以『在整股時段,以 123 塊,購買 XX 電子 10 張』為模擬的情境,說明委託的步 驟如下。

step 1、交易所將委託回報的電文送至 BOSConnector。

step 2、BOSConnector 將該電文送至 DBManipulator 及 TradingGateway。

step 3、DBManipulator 收到電文後,依據 3.3.2 節所提的檢核回覆/後台下單/回報電文的 格式,將電文拆解,更新資料庫中的委託資料。

step 4、TradingGateway 收到電文後,檢視電文中的下單 IP 欄位,檢核該筆委托是否是 由該本機所下,如果是,則將該電文透過 MOM 傳送至使用者的交易 GUI 介面。如果不 是,則檢核下單 IP 欄位所記錄的下單主機,是否正常運作,如果正常運作,代表原下 單主機會負責回報的處理。如果主機原下單主機已發生異常,無法提供服務,則要再確

1、IPC (Inter-process communication)

IPC 的種類在不同的作業系統下,會有些許支援上的差異。因為本系統是建置在 Linux 上,因此的 IPC 種類計有[17]

a、Signal b、Pipes

c、FIFOs(named pipes) d、Message queue e、Semaphores f、Shared memory

電子交易系統在訊息傳遞方式的設計上,有幾項的考量因素

a、named pipe 實際上是一個存在於硬碟的特殊種類檔案(稱為 FIFO file),不同於一般的 檔案,FIFO file 不包含任何使用者資訊。在實作 named pipe 就像操作檔案一般,並不困

2、RPC(Remote process communication)

RPC 的部分,已經超出本論文所界定的系統範圍,但因為在概念性驗證(Proof of Concept)的階段,必須要能提供模擬的情境,因此仍有 RPC 之實作上的必要。電子交易

RPC 的部分,已經超出本論文所界定的系統範圍,但因為在概念性驗證(Proof of Concept)的階段,必須要能提供模擬的情境,因此仍有 RPC 之實作上的必要。電子交易

相關文件