Sun Cluster 資料服務開發者指南 (適用於 Solaris 作業系統)

伺服器回覆用戶端的方式

處理註冊之後,伺服器會發送 SC_REPLY 訊息。 該伺服器會透過從用戶端 (已接收到其註冊要求) 開啟的 TCP 連接發送此訊息。 然後,便關閉該連接。 在該用戶端接收到來自伺服器的 SC_REPLY 訊息之前,必須保持 TCP 連接的開啟狀態。

例如,該用戶端執行下列動作:

  1. 開啟至伺服器的 TCP 連接

  2. 等待連接變得「可寫入」

  3. 發送 SC_CALLBACK_REG 訊息 (其中包含 ADD_CLIENT 訊息)

  4. 等待 SC_REPLY 訊息

  5. 接收 SC_REPLY 訊息

  6. 接收表明該伺服器已關閉連接 (從套接字讀取 0 位元組) 的指示器

  7. 關閉連接

稍後,用戶端便執行下列動作:
  1. 開啟至伺服器的 TCP 連接

  2. 等待連接變得「可寫入」

  3. 發送 SC_CALLBACK_REG 訊息 (其中包含 REMOVE_CLIENT 訊息)

  4. 等待 SC_REPLY 訊息

  5. 接收 SC_REPLY 訊息

  6. 接收表明該伺服器已關閉連接 (從套接字讀取 0 位元組) 的指示器

  7. 關閉連接

每當伺服器接收到來自用戶端的 SC_CALLBACK_REG 訊息時,該伺服器均會透過開啟的同一連接發送 SC_REPLY 訊息。 此訊息指定該作業是成功還是失敗。 SC_REPLY XML DTD 包含 SC_REPLY 訊息的 XML 文件類型定義,以及此訊息可以包含的可能錯誤訊息。

SC_REPLY 訊息的內容

SC_REPLY 訊息指定作業是成功還是失敗。 此訊息包含 CRNP 協定訊息的版本、狀況碼、詳細說明狀況碼的狀況訊息。 下表說明狀況碼的可能值。

狀況碼  

說明 

OK

已成功處理訊息。 

RETRY

伺服器由於暫態錯誤而拒絕了用戶端的註冊 (該用戶端應嘗試使用其他參數再次註冊)。 

LOW_RESOURCE

叢集資源不足,用戶端只能稍後再嘗試 (叢集的系統管理員還可以新增叢集上的資源)。 

SYSTEM_ERROR

發生了嚴重的問題。 請聯絡叢集的系統管理員。 

FAIL

授權失敗,或者其他問題導致了註冊失敗。 

MALFORMED

XML 要求的形式異常,因此無法進行剖析。 

INVALID

XML 要求無效 (不符合 XML 規格)。 

VERSION_TOO_HIGH

訊息的版本太高,以致無法成功處理該訊息。 

VERSION_TOO_LOW

訊息的版本太低,以致無法成功處理該訊息。 

用戶端處理錯誤狀況的方式

在正常狀況下,發送 SC_CALLBACK_REG 訊息的用戶端會接收到回覆,指示註冊成功或失敗。

然而,伺服器可能在用戶端註冊時,遇到禁止該伺服器將 SC_REPLY 訊息發送給用戶端的錯誤狀況。 在此情況下,註冊在錯誤狀況發生之前可能已成功,或者已失敗,還可能尚未經過處理。

由於該伺服器在叢集上必須作為故障轉移伺服器或者高度可用的伺服器來執行功能,此錯誤狀況並不意味著服務的結束。 事實上,該伺服器不久就可以開始將事件發送給新註冊的用戶端。

若要修正這些狀況,您的用戶端應該進行以下兩項作業: