Windows群集開發-編寫微軟叢集伺服器(MSCS)資源DLL:8)編寫好的資源DLL的誡條

來源:互聯網
上載者:User

編寫好的資源DLL的誡條

只要仔細注意幾條規則和指引,編寫好的資源DLL其實相當簡單。大部分上文已經討論過。本節是對編寫資源DLL要牢記的關鍵事情的總結。

  • 使用Visual C++ 4.2b或以上(確保從www.microsoft.com安裝了最新更新)和平台SDK來編寫資源DLL和群集管理擴充DLL。高度整合的開發環境使得工作相當輕鬆。同樣地,使用Visual C++調試器或WinDbg來調試DLL。

  • 在資源DLL的Startup常式中初始化全域資料,在Open中初始化資源特定的資料。

  • 在資源DLL中,確保使用分離的線程來執行耗時比較長的操作,比如開啟資源,聯機,離線,等等。分離線程的建立使與資源監視器(以及其上的叢集服務)的通訊流程更加高效。假如,舉例來說,資源要花費超過300毫秒的時間來聯機,派生一個分離的線程來完成這個操作,可以使得入口能夠立即返回。

  • 如果不想讓資源DLL被叢集服務的狀態查詢打斷,返回一個事件控制代碼以通知叢集服務不要調用LooksAlive。然後,使用該事件控制代碼向叢集服務發送狀態資訊。

  • 在任何可能的情況下使用回呼函數。回呼函數允許資源DLL和資源監視器進行非同步通訊。典型情況下,一般資源DLL使用LogEvent和SetResourceStatus函數向叢集服務記錄資源事件記錄和進行調試。調用 SetResourceStatus向資源監視器發送狀態資訊。

  • 如果要求群集事件、節時間點事件、組狀態改變、群集資料庫改變或更新事件通知到資源,建立一個群集通知連接埠(使用CreateClusterNotifyPort)來處理事件通知。注意,如果在多線程中使用通知連接埠,要小心競爭條件。例如,一個線程可能調用CloseClusterNotifyPort關閉通知商品,而另一個線程則調用了GetClusterNotify,正等待著從同一連接埠擷取資訊。要防止這種情況,可以在調用GetClusternotify的線程加入對CLUSTER_CHANGE_HANDLE_CLOSE的檢查。關於更多關於事件通知和產生通知的事件,請參考平台SDK。

  • 支援CLUSCTL_RESOURCE_GET_PRIVATE_PROPERTIES控制功能以便於諸如Cluster.Exe之類的管理工具能夠設定那些仍沒有被設定的屬性。

  • 支援CLUSCTL_RESOURCE_VALIDATE_PRIVATE_PROPERTIES和CLUSCTL_RESOURCE_SET_PRIVATE_PROPERTIES控制功能以便於資源DLL能夠在屬性被儲存之前進行校正。

  • 支援CLUSCTL_RESOURCE_TYPE_GET_PRIVATE_PROPERTIES、CLUSCTL_RESOURCE_TYPE_VALIDATE_PRIVATE_PROPERTIES以及CLUSCTL_RESOURCE_TYPE_SET_PRIVATE_PROPERTIES控制功能,如果資源類型具有私人屬性。

  • 支援CLUSCTL_RESOURCE_GET_REQUIRED_DEPENDENCIES和CLUSCTL_RESOURCE_TYPE_GET_REQUIRED_DEPENDENCIES控制功能,如果資源需要依賴於另一資源。

  • 如果可能,應該在在Open函數中讀取屬性。如果不可能,則應該在Online函數中讀取。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.