1.一種基于TCP事件的多服務(wù)器主從機(jī)工作方法,其特征在于,包括如下步驟:
步驟一:預(yù)先建立一個(gè)系統(tǒng),該系統(tǒng)包括若干臺(tái)具有相同功能的服務(wù)器、若干具有通信功能的電子設(shè)備,由epoll對(duì)系統(tǒng)的TCP事件進(jìn)行管理,并預(yù)先在每個(gè)服務(wù)器內(nèi)定義三個(gè)TCP事件:檢測(cè)從機(jī)事件、增量數(shù)據(jù)同步事件、檢測(cè)主機(jī)事件;
所述檢測(cè)從機(jī)事件用于主機(jī)定時(shí)監(jiān)測(cè)各個(gè)從機(jī)是否在線,當(dāng)從機(jī)在線時(shí)則與從機(jī)建立TCP異步非阻塞連接, 之后將該連接交給epoll管理;
所述增量數(shù)據(jù)同步事件用于主機(jī)將增量數(shù)據(jù)同步到在線的從機(jī);
所述檢測(cè)主機(jī)事件用于從機(jī)對(duì)主機(jī)在線狀態(tài)進(jìn)行定時(shí)監(jiān)測(cè);
步驟二:各個(gè)服務(wù)器啟動(dòng),各個(gè)服務(wù)器具有優(yōu)先級(jí)排序;
步驟三:將在線的、優(yōu)先級(jí)最高的服務(wù)器作為主機(jī),其余的服務(wù)器作為從機(jī),所述主機(jī)與各個(gè)從機(jī)及各個(gè)具有通信功能的電子設(shè)備建立通信連接;
步驟四:主機(jī)運(yùn)行檢測(cè)從機(jī)事件,定時(shí)監(jiān)控各個(gè)從機(jī)在線狀態(tài),當(dāng)從機(jī)在線時(shí),則啟動(dòng)增量數(shù)據(jù)同步事件,將主機(jī)與系統(tǒng)內(nèi)其他具有通信功能的電子設(shè)備的通信數(shù)據(jù)增量同步到從機(jī)中;
從機(jī)運(yùn)行檢測(cè)主機(jī)事件,定時(shí)監(jiān)控主機(jī)在線狀態(tài),如在線,則繼續(xù)作為從機(jī)工作,不執(zhí)行步驟五;如不在線,優(yōu)先級(jí)別最高的從機(jī)躍遷為新的主機(jī),并與其它從機(jī)建立起通信,將其它從機(jī)作為自己的從機(jī),并執(zhí)行步驟五;
步驟五:新的主機(jī)向系統(tǒng)內(nèi)的具有通信功能的電子設(shè)備發(fā)布躍遷信號(hào),表明自己的主機(jī)身份,并重置檢測(cè)從機(jī)事件、增量數(shù)據(jù)同步事件、檢測(cè)主機(jī)事件;
步驟六:循環(huán)執(zhí)行步驟三-步驟五,直到系統(tǒng)停止工作。
2.如權(quán)利要求1所述的基于TCP事件的多服務(wù)器主從機(jī)工作方法,其特征在于,步驟四中,定時(shí)監(jiān)測(cè)的具體實(shí)現(xiàn)方式是:利用rb_tree實(shí)現(xiàn)定時(shí)監(jiān)控,系統(tǒng)將各個(gè)主機(jī)執(zhí)行檢測(cè)從機(jī)事件的事件及從機(jī)執(zhí)行檢測(cè)主機(jī)事件的時(shí)間信息注入到 rb_tree的各個(gè)節(jié)點(diǎn),由epoll_wait的時(shí)間機(jī)制來(lái)遍歷rb_tree,以定時(shí)執(zhí)行監(jiān)測(cè)。
3.如權(quán)利要求1所述的基于TCP事件的多服務(wù)器主從機(jī)工作方法,其特征在于,所述服務(wù)器具有兩個(gè)。
4.如權(quán)利要求1所述的基于TCP事件的多服務(wù)器主從機(jī)工作方法,其特征在于,步驟二中,根據(jù)完成啟動(dòng)的時(shí)間先后對(duì)各個(gè)服務(wù)器設(shè)備進(jìn)行優(yōu)先級(jí)別從高到低的排序。
5.如權(quán)利要求1~4任一項(xiàng)所述的基于TCP事件的多服務(wù)器主從機(jī)工作方法,其特征在于,檢測(cè)從機(jī)事件的具體執(zhí)行方法為:由主機(jī)發(fā)起與從機(jī)建立TCP異步非阻塞連接, 之后將連接交給epoll管理,若連接不成功或連接中斷則epoll會(huì)感知到連接失敗事件,這時(shí)主機(jī)就會(huì)判斷從機(jī)為不在線狀態(tài),否則從機(jī)為在線狀態(tài)。
6.如權(quán)利要求1~4任一項(xiàng)所述的基于TCP事件的多服務(wù)器主從機(jī)工作方法,其特征在于,增量數(shù)據(jù)同步事件執(zhí)行的具體流程為:主機(jī)發(fā)起與從機(jī)建立TCP異步非阻塞連接,并初始化與之對(duì)應(yīng)的一個(gè)內(nèi)存塊,之后將連接交給epoll管理,epoll可感知該連接的可讀事件,若此時(shí)內(nèi)存塊中有增量數(shù)據(jù),則epoll會(huì)將數(shù)據(jù)異步的通過(guò)該連接同步到從機(jī)。
7.如權(quán)利要求1~4任一項(xiàng)所述的基于TCP事件的多服務(wù)器主從機(jī)工作方法,其特征在于,檢測(cè)主機(jī)事件執(zhí)行的具體流程為:由從機(jī)發(fā)起與主機(jī)建立TCP異步非阻塞連接,之后將連接交給epoll管理;若連接不成功或連接中斷則epoll會(huì)感知到連接失敗事件,這時(shí)從機(jī)就會(huì)判斷主機(jī)為不在線狀態(tài),否則主機(jī)為在線狀態(tài)。
8.如權(quán)利要求1所述的基于TCP事件的多服務(wù)器主從機(jī)工作方法,其特征在于,步驟四中,優(yōu)先級(jí)別最高的從機(jī)躍遷為新的主機(jī)后,如果步驟三中作為主機(jī)的服務(wù)器恢復(fù)在線狀態(tài),該服務(wù)器作為從機(jī)作為與新的主機(jī)建立通信連接。