本發(fā)明涉及了一種數據庫及系統應用心跳統一管理的實現方法,屬于分布式監(jiān)控系統領域。
背景技術:
隨著工業(yè)自動化的快速蓬勃的發(fā)展,監(jiān)控系統的應用越來越廣泛。對于大型的分布式監(jiān)控系統,如何管理不同地域的應用節(jié)點、數據庫節(jié)點,并實時監(jiān)控其狀態(tài),同步其管理數據顯得越來越突出及重要。
對于分布式系統的應用節(jié)點及數據庫節(jié)點的管理,通常采用心跳監(jiān)測的方式。應用節(jié)點的心跳監(jiān)測,我們這里統稱為應用系統管理;數據庫節(jié)點的心跳監(jiān)測,我們統稱為數據庫管理,涉及到數據庫的多種狀態(tài)的切換等等。
在監(jiān)控系統中,應用系統管理和數據庫管理的對象,方式不同,通用的做法是采用不同的服務對其心跳分開獨立管理,心跳通訊方式一般采用tcp\udp報文方式,需要對不同的服務分配不同的端口號、不同的網絡資源,這給原來有限的網絡資源變得緊張;另外由于涉及到兩種心跳,本身在網絡傳輸上增加了復雜性,會大大地降低其可靠性;另外由于系統管理及數據庫管理本身存在依賴關系的,但是其底層是通過兩種不同心跳來源做判斷的,這時候會造成系統管理的錯誤會影響到數據庫管理,并且隨著數據庫管理機制,向其他別的數據庫節(jié)點同步,使這種錯誤進一步擴大。這種災難性的后果是開發(fā)者及使用者最不希望見到的。
技術實現要素:
本發(fā)明所要解決的技術問題是提供一種數據庫及系統應用心跳統一管理的實現方法,實現兩種心跳的存儲格式是一致的,向其他應用主機同步的方法也是一致的,并且由統一的服務進行管理調度。
為了解決上述技術問題,本發(fā)明所采用的技術方案是:
一種數據庫及系統應用心跳統一管理的實現方法,包括如下步驟:
(一)按照系統中的節(jié)點類型,把節(jié)點分為應用節(jié)點及數據庫節(jié)點:
把運行業(yè)務應用的節(jié)點稱為應用節(jié)點,把只運行數據庫服務的節(jié)點稱為數據庫節(jié)點,如果某節(jié)點上既運行業(yè)務應用,又運行數據庫服務我們仍稱其為應用節(jié)點;并且在系統中把應用節(jié)點和數據庫節(jié)點的節(jié)點名和ip地址存儲到某配置文檔中,并且保證系統中此文檔內容的一致性;
(二)監(jiān)測數據庫心跳及維護本地信息:
(1)根據配置文檔中的信息,判斷當前節(jié)點是否應用節(jié)點;
(2)如果是應用節(jié)點,通過配置文檔,找到某數據庫節(jié)點,通過ip地址的方式,使用數據庫接口對數據庫進行訪問;
(3)如果能連接上此節(jié)點,在本地共享存儲中數據庫節(jié)點信息處增加此節(jié)點的信息,并給此節(jié)點置上備用庫狀態(tài),并在此節(jié)點相應位置寫入當前時間;
(4)如果連接不上此節(jié)點,在本地共享存儲中數據庫節(jié)點信息處增加此節(jié)點的信息,并給此節(jié)點置上退出狀態(tài),并在此節(jié)點相應位置寫入當前時間;
(5)對配置文檔中的所有的數據庫節(jié)點進行(2)-(4)的步驟,直到文檔中所有節(jié)點全部被遍歷;
(6)心跳管理服務每隔1秒鐘,對本地共享存儲中的數據庫節(jié)點進行(2)的步驟,然后更新本地共享存儲中此數據庫節(jié)點的狀態(tài)及時間;
(三)監(jiān)測系統應用心跳及維護本地信息:
(1)根據配置文檔中的信息,判斷當前節(jié)點是否應用節(jié)點;
(2)如果是應用節(jié)點,通過配置文檔,找到其他應用節(jié)點,通過UDP組播給其他所有應用節(jié)點發(fā)送本節(jié)點各應用狀態(tài);
(3)其他節(jié)點收到此心跳后,把此節(jié)點的各應用狀態(tài)及當前時間存入本地共享存儲相應位置;
(4)心跳管理服務每隔1秒鐘,對本地共享存儲中的所有應用節(jié)點進行(2)的步驟;
(四)心跳管理服務運算所有節(jié)點狀態(tài)及往其他節(jié)點同步:
(1)心跳管理程序對本地共享存儲中所有數據庫節(jié)點及應用節(jié)點進行時間判斷,把共享存儲中的時間與當前時間做對比,如果超過預設值的時間,給所有節(jié)點置上不可用狀態(tài),即不參與以下步驟中的節(jié)點運算;
(2)心跳管理程序根據本地共享內存中所有數據庫狀態(tài),通過優(yōu)先級及預配置算法算出所有數據庫主用庫,備用庫,并存儲到本地共享存儲中相應位置;
(3)心跳管理程序根據本地共享內存中所有應用節(jié)點中應用狀態(tài)狀態(tài),通過優(yōu)先級及預配置算法算出給每個應用算出主機、備用等狀態(tài),并存儲到本地共享存儲中相應位置;
(五)心跳管理程序通過統一的報文格式,把數據庫主用、備用等信息,各應用主機狀態(tài)信息,通過UDP方式往所有的應用節(jié)點同步。
前述的一種數據庫及系統應用心跳統一管理的實現方法,其特征在于:所述數據庫節(jié)點狀態(tài),包括啟動、主用庫、備用庫、強制主用庫、強制備用庫、網絡異常、單網故障、登錄故障、退出九種。
前述的一種數據庫及系統應用心跳統一管理的實現方法,其特征在于:所述應用節(jié)點狀態(tài),包括離線、主機、備機、強制主機、強制備機、網絡異常、進程異常、啟動、故障九種。
前述的一種數據庫及系統應用心跳統一管理的實現方法,其特征在于:所述數據庫,包括ORACLE、MYSQL、PostgreSQL。
前述的一種數據庫及系統應用心跳統一管理的實現方法,其特征在于:所述應用節(jié)點狀態(tài)和數據庫節(jié)點狀態(tài),由應用節(jié)點上的同一服務進行本地存儲。
前述的一種數據庫及系統應用心跳統一管理的實現方法,其特征在于:所述應用節(jié)點狀態(tài)和數據庫節(jié)點狀態(tài),由應用節(jié)點上的同一服務進行網絡發(fā)送、傳輸及接收。
前述的一種數據庫及系統應用心跳統一管理的實現方法,其特征在于:所述應用節(jié)點狀態(tài)和數據庫節(jié)點狀態(tài)的存儲結構及網絡傳輸結構保持一致。
本發(fā)明的有益效果是:通過將系統中的所有節(jié)點分為數據庫節(jié)點及應用節(jié)點兩類,所有對這兩類節(jié)點的心跳判斷來源于統一的心跳管理服務;心跳管理服務通過對數據庫狀態(tài)及應用狀態(tài)歸一化處理,采用同樣的格式進行本地存儲,并通過同樣的端口,同樣的tcp鏈路向其他節(jié)點同步;網絡傳輸中的報文中包含著數據庫信息及應用系統系統兩部分,實現兩種心跳的存儲格式是一致的,向其他應用主機同步的方法也是一致的,并且由統一的服務進行管理調度。
附圖說明
圖1是本發(fā)明一種數據庫及系統應用心跳統一管理的實現方法的數據庫節(jié)點與應用節(jié)點邏輯關系圖;
圖2 是本發(fā)明一種數據庫及系統應用心跳統一管理的實現方法的統一的存儲結構;
圖3 是本發(fā)明一種數據庫及系統應用心跳統一管理的實現方法的心跳報文監(jiān)測及同步的過程。
具體實施方式
下面是本發(fā)明的一個實際案例的實施方式,本發(fā)明的目的和特點也可以從案例的說明中看出。應當理解此處描述的實例僅僅用于說明和解釋本發(fā)明,并不限定本發(fā)明。
如圖1-圖3所示,本發(fā)明提出了一種數據庫及系統應用心跳統一管理的實現方法, 通過將系統中的所有節(jié)點分為數據庫節(jié)點及應用節(jié)點兩類;所述數據庫節(jié)點的狀態(tài)由所述應用節(jié)點通過商用數據庫接口判斷,并且把所述數據庫節(jié)點狀態(tài)通過所述應用節(jié)點向其他應用節(jié)點同步;所述應用節(jié)點的狀態(tài)由本節(jié)點服務自獲取,并把本節(jié)點狀態(tài)通過所述應用節(jié)點向其他節(jié)點同步;同步的方法與所述數據庫節(jié)點狀態(tài)同步的方法一致,并且由統一的服務進行管理調度。具體實現方法包括如下步驟:
(一)按照系統中的節(jié)點類型,把節(jié)點分為應用節(jié)點及數據庫節(jié)點:
(1)把運行業(yè)務應用的節(jié)點稱為應用節(jié)點,把只運行數據庫服務的節(jié)點稱為數據庫節(jié)點,如果某節(jié)點上既運行業(yè)務應用,又運行數據庫服務我們仍稱其為應用節(jié)點;心跳管理服務屬于業(yè)務應用的范疇,即數據庫節(jié)點上不運行心跳管理服務,在系統中把應用節(jié)點和數據庫節(jié)點的節(jié)點名和ip地址存儲到某配置文檔中,并且保證系統中此文檔內容的一致性。
(二)監(jiān)測數據庫心跳及維護本地信息:
(1)根據配置文檔中的信息,判斷當前節(jié)點是否應用節(jié)點;
(2)如果是應用節(jié)點,通過配置文檔,找到某數據庫節(jié)點,通過ip地址的方式,使用數據庫接口對數據庫進行訪問;
(3)如果能連接上此節(jié)點,在本地共享存儲中數據庫節(jié)點信息處增加此節(jié)點的信息,并給此節(jié)點置上備用庫狀態(tài),并在此節(jié)點相應位置寫入當前時間;
(4)如果連接不上此節(jié)點,在本地共享存儲中數據庫節(jié)點信息處增加此節(jié)點的信息,并給此節(jié)點置上退出狀態(tài),并在此節(jié)點相應位置寫入當前時間;
(5)對配置文檔中的所有的數據庫節(jié)點進行(2)-(4)的步驟,直到文檔中所有節(jié)點全部被遍歷;
(6)心跳管理服務每隔1秒鐘,對本地共享存儲中的數據庫節(jié)點進行(2)的步驟,然后更新本地共享存儲中此數據庫節(jié)點的狀態(tài)及時間;
數據庫節(jié)點狀態(tài),由應用節(jié)點通過輪詢的方式獲取、更新本地內存中相應數據庫節(jié)點的狀態(tài),并定期通過網絡向其他節(jié)點同步此數據庫節(jié)點的狀態(tài),其中,所述數據庫節(jié)點狀態(tài),包括啟動、主用庫、備用庫、強制主用庫、強制備用庫、網絡異常、單網故障、登錄故障、退出九種。
(三)監(jiān)測系統應用心跳及維護本地信息:
(1)根據配置文檔中的信息,判斷當前節(jié)點是否應用節(jié)點;
(2)如果是應用節(jié)點,通過配置文檔,找到其他應用節(jié)點,通過UDP組播給其他所有應用節(jié)點發(fā)送本節(jié)點各應用狀態(tài);
(3)其他節(jié)點收到此心跳后,把此節(jié)點的各應用狀態(tài)及當前時間存入本地共享存儲相應位置;
(4)心跳管理服務每隔1秒鐘,對本地共享存儲中的所有應用節(jié)點進行(2)的步驟;
應用節(jié)點狀態(tài),由當前應用節(jié)點自獲取,進行本地存儲、并定期通過網絡向其他節(jié)點同步當前節(jié)點的狀態(tài),所述應用節(jié)點狀態(tài),包括離線、主機、備機、強制主機、強制備機、網絡異常、進程異常、啟動、故障九種。
(四)心跳管理服務運算所有節(jié)點狀態(tài)及往其他節(jié)點同步:
(1)心跳管理程序對本地共享存儲中所有數據庫節(jié)點及應用節(jié)點進行時間判斷,把共享存儲中的時間與當前時間做對比,如果超過預設值的時間,給所有節(jié)點置上不可用狀態(tài),即不參與以下步驟中的節(jié)點運算;
(2)心跳管理程序根據本地共享內存中所有數據庫狀態(tài),通過優(yōu)先級及預配置算法算出所有數據庫主用庫,備用庫,并存儲到本地共享存儲中相應位置;
(3)心跳管理程序根據本地共享內存中所有應用節(jié)點中應用狀態(tài)狀態(tài),通過優(yōu)先級及預配置算法算出給每個應用算出主機、備用等狀態(tài),并存儲到本地共享存儲中相應位置。
(五)心跳管理程序通過統一的報文格式,把數據庫主用、備用等信息,各應用主機狀態(tài)信息,通過UDP方式往所有的應用節(jié)點同步。
應用節(jié)點狀態(tài)和數據庫節(jié)點狀態(tài),由應用節(jié)點上的同一服務進行本地存儲,也可以進行網絡發(fā)送、傳輸及接收,且應用節(jié)點狀態(tài)和數據庫節(jié)點狀態(tài)的存儲結構及網絡傳輸結構保持一致。
本實施例中,所采用的數據庫包括ORACLE、MYSQL、PostgreSQL。
通過將系統中的所有節(jié)點分為數據庫節(jié)點及應用節(jié)點兩類,所有對這兩類節(jié)點的心跳判斷來源于統一的心跳管理服務;心跳管理服務通過對數據庫狀態(tài)及應用狀態(tài)歸一化處理,采用同樣的格式進行本地存儲,并通過同樣的端口,同樣的tcp鏈路向其他節(jié)點同步;網絡傳輸中的報文中包含著數據庫信息及應用系統系統兩部分,實現兩種心跳的存儲格式是一致的,向其他應用主機同步的方法也是一致的,并且由統一的服務進行管理調度。
以上顯示和描述了本發(fā)明的基本原理、主要特征及優(yōu)點。本行業(yè)的技術人員應該了解,本發(fā)明不受上述實施例的限制,上述實施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會有各種變化和改進,這些變化和改進都落入要求保護的本發(fā)明范圍內。本發(fā)明要求保護范圍由所附的權利要求書及其等效物界。