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

如何保證事件的發送

叢集內事件的產生有一個總的排序,向每個用戶端發送事件的順序也會依照此順序。 換句話說,如果在叢集內先產生事件 A 而後產生事件 B,則用戶端 X 會先接收到事件 A ,然後接收到事件 B。然而,將事件發送給所有用戶端時不會保持總的排序。 即,在用戶端 X 接收到事件 A 之前用戶端 Y 可以接收事件 A 與事件 B。以此方式,那些速度慢的用戶端不會阻礙向所有用戶端發送事件。

除了當伺服器遇到導致遺失叢集產生的事件之錯誤以外,該伺服器發送的所有事件 (除了子類別的第 一個事件與包含伺服器錯誤的事件) 均是回應叢集產生的實際事件。 在此情況下,伺服器為每個事件類型產生一個事件,表示該事件類型的系統之目前狀態。 每個事件發送給表明對該事件類型感興趣的已註冊用戶端。

事件發送遵循「至少一次」的語義進行。 即,允許伺服器將同一事件多次發送給某一用戶端。 萬一伺服器暫時關閉,當它重新啟動後無法判斷該用戶端是否已接收到最新資訊,此時該允許是必要的。