• 沒有找到結果。

4. Computing Power Services運作流程及系統架構

4.2. Computing Power Services運作方式

4.2.3. P2P運算分享中介層的分散式運算流程

P2P 分享運算中介層(P2P Power Sharing Middleware)是整個 CPS 架構進行分 散式協同運算的一個關鍵。透過 TaskUnit 對於需求者端 ExpClient 這個 Web Service 的呼叫,而與整個 BPEL 程序連結。

Coordinator

Requester Database 3. Provide Computing Power

4. Response Requester IP 5. C on tr ac t A TaskUnit

invoke Requester

(ExpClient)

Computing Unit

圖 4-3 CPS 運算分享示意圖

當需求者啟動這個實驗流程時,資訊流將照著BPEL流程圖的規劃流動著。

因此,當流程執行到某個TaskUnit的時候,如圖 4-3所示。需求者和流程圖連接 的Web Service(TaskUnit所Invoke的ExpClient)會收到產生工作佇列的需求。爾 後,需求者端便會根據需求產生一串工作佇列,並向協調者登錄它的運算需求。

該工作佇列,是以XML檔案格式的方式,紀錄該流程點中,需求者期望分派出 去子工作(Subtask)。每個子工作(Subtask)的內容包括該工作的工作命令,對應參 數及環境等等。圖 4-4為某一執行一個叫TokiRun的檔案的工作佇列的內容。

圖 4-4 工作佇列內容實例

待協調者登錄完畢後,協調者會回覆接受訊息給需求者。此時,需求者端的 BPEL 實驗程序之中,資訊流是停在該 TaskUnit 裡的,非同步回報機制會等待工 作完成的回報;待收到回覆之後,資訊流才再流動到下一個程序之中。

運算者的運算端程式則會在運算者電腦閒暇時,向協調者詢問有沒有適合的 工作需求。協調者則會根據需求清單及運算者電腦的特性,採用 round robin 的 機制回報清單中某一需求者的位址(Web Services 的 Access point)。

運算者得到需求者的位址(Web Services的Access point)之後,會連結到此處 的Web Service,跟需求者要工作。這個動作在CPS架構裡稱之為簽訂契約 (contract)。該份契約記錄了運算者和需求者所協議參與的工作項目以及需求者分 派給運算者的工作批次(SubTask)的運算工作內容。圖 4-5即是CPS架構實際運作 時所簽訂的契約內容。

圖 4-5 契約(contract)內容實例

運算者簽訂契約之後,在 CPS 架構中也表示了運算者允諾了需求者幫它運 算契約之中的工作。因此,運算端程式將根據契約內容,下載所需的檔案。之後,

在 OS 之中以最低的優先權執行所約定的工作。待工作全都完成之後,運算端會 根據所約定的內容及格式,看是要回傳某檔案或某值,以回報需求者端該契約工 作運算的結果。

結果回報完成之後,運算端則會再到協調者端詢問合適的需求者位址,循環 地再一次地進行另一次的運算。而需求者,在運算者回報實驗結果時,也會確認 工作是否已全部完成。若已全部完成,需求者端的 Web Services 會跟協調者取消 有運算需求的狀態。同時,也觸動 TaskUnit 裡的非同步回報機制,來完成這一 個 TaskUnit 流程。

BPEL 流程在完成該 TaskUnit 之後,資訊流會繼續往下一個流程跑去;若是 流到了另一個 TaskUnit,則同樣的分散運算程序會再一次進行下去,直到整個實

驗流程結束為止。

Satrt BPEL process Start

If the process is a End TaskUnit?

Next BPEL process

If the process is

“End”?

P2P Power Sharing Middleware

Handling

Run BPEL process Task Unit is

finished

P2P Power Sharing Middleware 詳細流程見圖 4-7

圖 4-6 CPS 系統運作全流程圖

P2P Power Sharing Middleware

Computing Units Coordinator

Requester

Start

Accept request

Generate Task Registry request to Coordinator

Insert request into the requester DB Authenticate

requester

Reject request

If request is

User Software Download User

software

Run User software

If PC is idle? Have

requester?

Get Subtask Yes

Yes No

No

Assign Subtask Have Task?

No

Yes

Contract

Have contract? No

Load Subtask Yes

Download needed files Subtask needed

files

Run Subtask Remove

“old”result

Reply result Remove

“old”

contract Remove

“old”result

Is Task finished?

Remove Task

Cancel request

Remove request from requester DB Yes

圖 4-7 P2P Power Sharing Middleware 運作全流程圖

相關文件