[發(fā)明專利]一種基于兩地三中心的災(zāi)備信息系統(tǒng)仿真方法有效
| 申請?zhí)枺?/td> | 201310396291.6 | 申請日: | 2013-09-03 |
| 公開(公告)號: | CN103473112A | 公開(公告)日: | 2013-12-25 |
| 發(fā)明(設(shè)計(jì))人: | 姚文斌;趙玲;姚翔;王真;韓司 | 申請(專利權(quán))人: | 北京郵電大學(xué) |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100876 *** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 兩地 中心 信息系統(tǒng) 仿真 方法 | ||
1.一種基于兩地三中心的災(zāi)備信息系統(tǒng)仿真方法,其特征在于:設(shè)災(zāi)備信息系統(tǒng)采用兩地三中心的架構(gòu),即包括本地?cái)?shù)據(jù)中心、本地備份數(shù)據(jù)中心和異地備份數(shù)據(jù)中心,且三個(gè)數(shù)據(jù)中心的軟硬件環(huán)境和網(wǎng)絡(luò)環(huán)境完全相同,假定系統(tǒng)中可能發(fā)生故障的一個(gè)組成部分稱為一個(gè)故障對象,在一個(gè)時(shí)刻一個(gè)故障對象可能是正常狀態(tài)也可能是故障狀態(tài),當(dāng)系統(tǒng)中的所有故障對象的狀態(tài)導(dǎo)致本地?cái)?shù)據(jù)中心不能正常提供服務(wù),則稱此種系統(tǒng)狀態(tài)為系統(tǒng)故障狀態(tài),第一次檢測到此種系統(tǒng)狀態(tài)的時(shí)間點(diǎn)稱為故障發(fā)生時(shí)刻,否則,稱系統(tǒng)狀態(tài)為系統(tǒng)正常狀態(tài);當(dāng)檢測到系統(tǒng)故障狀態(tài)之后,又檢測到本地?cái)?shù)據(jù)中心可以正常提供服務(wù),則稱此種系統(tǒng)狀態(tài)為系統(tǒng)修復(fù)狀態(tài),第一次檢測到此種狀態(tài)的時(shí)間點(diǎn)稱為故障修復(fù)時(shí)刻,否則,稱此種系統(tǒng)狀態(tài)為系統(tǒng)忍受狀態(tài);正常情況下,災(zāi)備信息系統(tǒng)維持一個(gè)數(shù)據(jù)中心作為生產(chǎn)數(shù)據(jù)中心為用戶提供服務(wù),默認(rèn)的生產(chǎn)數(shù)據(jù)中心為本地?cái)?shù)據(jù)中心;在生產(chǎn)過程中,災(zāi)備信息系統(tǒng)存在的每個(gè)故障對象的狀態(tài)時(shí)刻發(fā)生變化,影響著系統(tǒng)狀態(tài)的改變,當(dāng)?shù)谝淮螜z測到系統(tǒng)狀態(tài)為系統(tǒng)故障狀態(tài),則更新系統(tǒng)信號為故障狀態(tài),即執(zhí)行system_signal=bad_state,此時(shí)災(zāi)備信息系統(tǒng)便會(huì)依次檢測本地備份數(shù)據(jù)中心和異地備份數(shù)據(jù)中心,若在RTO和RPO的限制內(nèi)檢測到本地備份數(shù)據(jù)中心可以提供服務(wù),則停止檢測并更新系統(tǒng)信號為中心替代狀態(tài),即執(zhí)行system_signal=replace_state,同時(shí)將數(shù)據(jù)流切換到本地備份數(shù)據(jù)中心并將本地備份數(shù)據(jù)中心作為生產(chǎn)數(shù)據(jù)中心使用;若在RTO和RPO的限制內(nèi)檢測到異地備份數(shù)據(jù)中心可以提供服務(wù),則停止檢測并更新系統(tǒng)信號為中心替代狀態(tài),即執(zhí)行system_signal=replace_state,同時(shí)將數(shù)據(jù)流切換到異地備份數(shù)據(jù)中心,并將異地備份數(shù)據(jù)中心作為生產(chǎn)數(shù)據(jù)中心使用;若在RTO和RPO的限制內(nèi)第一次檢測系統(tǒng)狀態(tài)為系統(tǒng)修復(fù)狀態(tài),更新系統(tǒng)信號為正常狀態(tài),即執(zhí)行system_signal=normal_state,重新將數(shù)據(jù)流切回到本地?cái)?shù)據(jù)中心并將本地?cái)?shù)據(jù)中心作為生產(chǎn)數(shù)據(jù)中心使用;若到了RTO和RPO限制的時(shí)間仍找不到可用的數(shù)據(jù)中心,則系統(tǒng)崩潰;本系統(tǒng)中采用源節(jié)點(diǎn)編號、目的服務(wù)器節(jié)點(diǎn)編號、流開始時(shí)刻、流結(jié)束時(shí)刻、應(yīng)用層協(xié)議編號、實(shí)時(shí)字節(jié)、存儲(chǔ)節(jié)點(diǎn)編號、和標(biāo)識backup_or_product_flag八個(gè)字段構(gòu)成一條描述信息來描述一條數(shù)據(jù)流此刻的狀態(tài),其中,當(dāng)backup_or_product_flag值為1時(shí),表示此條描述信息描述的是當(dāng)前數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流的生產(chǎn)信息,當(dāng)backup_or_product_flag值為2時(shí),表示此條描述信息是其他數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流在本中心保存的備份信息,生產(chǎn)過程中以被切換的數(shù)據(jù)流信息為基礎(chǔ)新創(chuàng)建的連接到當(dāng)前數(shù)據(jù)中心的數(shù)據(jù)流、本次生產(chǎn)中以隨機(jī)產(chǎn)生的信息為基礎(chǔ)新創(chuàng)建的連接到當(dāng)前數(shù)據(jù)中心的數(shù)據(jù)流,以及當(dāng)前數(shù)據(jù)中心中所有還未結(jié)束的數(shù)據(jù)流為描述對象,構(gòu)造描述信息記錄同步寫入到三個(gè)數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中;當(dāng)切換數(shù)據(jù)中心前后需要進(jìn)行數(shù)據(jù)有效性驗(yàn)證操作時(shí),即對每個(gè)數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流執(zhí)行查找是否其他兩個(gè)數(shù)據(jù)中心均存在備份,則有效數(shù)據(jù)計(jì)數(shù)器validation_result_is_hit_num加1,否則,無?效數(shù)據(jù)計(jì)數(shù)器validation_result_is_miss_num加1的操作,最后將驗(yàn)證時(shí)刻和驗(yàn)證結(jié)果構(gòu)成驗(yàn)證結(jié)果描述信息記錄寫入到驗(yàn)證結(jié)果存儲(chǔ)文件中,從而方便驗(yàn)證本系統(tǒng)中對零數(shù)據(jù)丟失的實(shí)現(xiàn);本系統(tǒng)中利用公式來估算一次尋找數(shù)據(jù)流的存儲(chǔ)的操作,即若存在存儲(chǔ)設(shè)備的剩余空間不小于本次數(shù)據(jù)流的估算值,則存儲(chǔ),否則,系統(tǒng)警報(bào)存儲(chǔ)空間不足,系統(tǒng)崩潰;本系統(tǒng)中設(shè)置變量been_changed_datacenter_num,其值只有1和2,用來識別被切換的數(shù)據(jù)流的來源,假設(shè)當(dāng)前由本地?cái)?shù)據(jù)中心作為生產(chǎn)數(shù)據(jù)中心,若been_changed_datacenter_num=1,則此時(shí)被切換的數(shù)據(jù)流的來源為本地備份數(shù)據(jù)中心,否則,此時(shí)被切換的數(shù)據(jù)流的來源為異地備份數(shù)據(jù)中心;假設(shè)當(dāng)前由本地備份數(shù)據(jù)中心作為生產(chǎn)數(shù)據(jù)中心,若been_changed_datacenter_num=1,則此時(shí)被切換的數(shù)據(jù)流的來源為本地?cái)?shù)據(jù)中心,否則,此時(shí)被切換的數(shù)據(jù)流的來源為異地備份數(shù)據(jù)中心;假設(shè)當(dāng)前由異地備份數(shù)據(jù)中心作為生產(chǎn)數(shù)據(jù)中心,若been_changed_datacenter_num=1,則此時(shí)被切換的數(shù)據(jù)流的來源為本地?cái)?shù)據(jù)中心,否則,此時(shí)被切換的數(shù)據(jù)流的來源為本地備份數(shù)據(jù)中心;?
設(shè)用戶設(shè)置了參數(shù)包括生產(chǎn)結(jié)束時(shí)刻user_set_product_end_time、存儲(chǔ)服務(wù)器的最大存儲(chǔ)能力user_set_max_store_size和數(shù)據(jù)流發(fā)送的一個(gè)數(shù)據(jù)包的最大值user_set_max_packet_size;設(shè)系統(tǒng)中存在三個(gè)數(shù)據(jù)流信息存儲(chǔ)文件用于分別存儲(chǔ)對應(yīng)的數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流的信息,存在一個(gè)仿真結(jié)束原因記錄文件用于存儲(chǔ)仿真結(jié)束的原因,并且存在一個(gè)數(shù)據(jù)有效性驗(yàn)證結(jié)果存儲(chǔ)文件用于存儲(chǔ)系統(tǒng)中對數(shù)據(jù)進(jìn)行有效性驗(yàn)證的結(jié)果;設(shè)災(zāi)備信息系統(tǒng)中每個(gè)數(shù)據(jù)中心的出口路由器層設(shè)備個(gè)數(shù)為c1,核心交換機(jī)層設(shè)備個(gè)數(shù)為c2,匯聚交換機(jī)層設(shè)備個(gè)數(shù)為c3,服務(wù)器層應(yīng)用服務(wù)器設(shè)備個(gè)數(shù)為c4,服務(wù)器層存儲(chǔ)服務(wù)器設(shè)備個(gè)數(shù)為c5,則按照從出口路由器層到核心交換層到匯聚交換機(jī)層再到服務(wù)器層的順序,對于每一層的設(shè)備節(jié)點(diǎn)按照本地?cái)?shù)據(jù)中心到本地備份數(shù)據(jù)中心再到異地備份數(shù)據(jù)中心的順序遵循遞增規(guī)律設(shè)置整型編號后,則本地?cái)?shù)據(jù)中心的出口路由器編號依次為1,2,……,c1,本地備份數(shù)據(jù)中心的出口路由器編號依次為c1+1,c1+2,……,2c1,異地備份數(shù)據(jù)中心的出口路由器編號依次為2c1+1,2c1+2,……,3c1,本地?cái)?shù)據(jù)中心的核心交換機(jī)編號依次為3c1+1,3c1+2,……,3c1+c2,本地備份數(shù)據(jù)中心的核心交換機(jī)編號依次為3c1+c2+1,3c1+c2+2,……,3c1+2c2,異地本地備份數(shù)據(jù)中心的核心交換機(jī)編號依次為3c1+2c2+1,3c1+2c2+2,……,3c1+3c2,本地?cái)?shù)據(jù)中心的匯聚交換機(jī)編號依次為3c1+3c2+1,3c1+?3c2+2,……,3c1+3c2+c3,本地備份數(shù)據(jù)中心的匯聚交換機(jī)編號依次為3c1+3c2+c3+1,3c1+3c2+c3+2,……,3c1+3c2+2c3,異地備份數(shù)據(jù)中心的匯聚交換機(jī)編號依次為3c1+3c2+2c3+1,3c1+3c2+2c3+2,……,3c1+3c2+3c3,本地?cái)?shù)據(jù)中心的應(yīng)用服務(wù)器編號依次為3c1+3c2+3c3+1,3c1+3c2+3c3+2,……,3c1+3c2+3c3+c4,本地備份數(shù)據(jù)中心的應(yīng)用服務(wù)器編號依次為3c1+3c2+3c3+c4+1,3c1+3c2+3c3+c4+2,……,3c1+3c2+3c3+2c4,異地備份數(shù)據(jù)中心的應(yīng)用服務(wù)器編號依次為3c1+3c2+3c3+2c4+1,3c1+3c2+3c3+2c4+2,……,3c1+3c2+3c3+3c4,本地?cái)?shù)據(jù)中心的存儲(chǔ)服務(wù)器編號依次為3c1+3c2+3c3+3c4+1,3c1+3c2+3c3+3c4+2,……,3c1+3c2+3c3+3c4+c5,本地備份數(shù)據(jù)中心的存儲(chǔ)服務(wù)器編號依次為3c1+3c2+3c3+3c4+c5+1,3c1+3c2+3c3+3c4+c5+2,……,3c1+3c2+3c3+3c4+2c5,異地備份數(shù)據(jù)中心的存儲(chǔ)服務(wù)器編號依次為3c1+3c2+3c3+3c4++2c5+1,3c1+3c2+3c3+2c4+2c5+2,……,3c1+3c2+3c3+3c4+3c5,我們設(shè)定三個(gè)數(shù)據(jù)中心中的每個(gè)硬件層次上編號差值為本層設(shè)備個(gè)數(shù)的硬件設(shè)備擁有的完全相同的服務(wù)能力;設(shè)該系統(tǒng)存在m個(gè)用戶節(jié)點(diǎn),編號依次為3c1+3c2+3c3+3c4+3c5+1,3c1+3c2+3c3+3c4+3c5+2,……,3c1+3c2+3c3+3c4+3c5+m;設(shè)系統(tǒng)中包括p種應(yīng)用層協(xié)議;設(shè)該系統(tǒng)包含n個(gè)故障對象,故障對象i的狀態(tài)值表示為Ni,其中,i=1,2,……,n,且每個(gè)故障對象的狀態(tài)值只有1和0兩種,1表示故障對象處于正常狀態(tài),0表示故障對象處于故障狀態(tài),當(dāng)故障對象1,2,……,n1的狀態(tài)值均為1時(shí)候,本地?cái)?shù)據(jù)中心可正常提供服務(wù),否則,本地?cái)?shù)據(jù)中心不能正常提供服務(wù);當(dāng)故障對象n1+1,n1+2,……,n1+n2的狀態(tài)值均為1時(shí)候,本地備份數(shù)據(jù)中心可正常提供服務(wù),否則,本地?cái)?shù)據(jù)中心不能正常提供服務(wù);當(dāng)故障對象n1+n2+1,n1+n2+2,……,n1+n2+n3的狀態(tài)值均為1時(shí)候,異地備份數(shù)據(jù)中心可正常提供服務(wù),否則,異地備份數(shù)據(jù)中心不能正常提供服務(wù),則基于兩地三中心的災(zāi)備信息系統(tǒng)仿真方法的具體方法步驟為:?
(1)根據(jù)用戶設(shè)置參數(shù)user_set_product_end_time、user_set_max_packet_size和user_set_max_store_size,利用隨機(jī)數(shù)生成器生成隨機(jī)參數(shù),包括:生產(chǎn)結(jié)束時(shí)刻?product_end_time∈[0,user_set_product_end_time]、數(shù)據(jù)包大小的極限值max_packet_size∈[0,user_set_max_packet_size]、RTO極限值rto_time∈[0,product_end_time]、RPO極限值rpo_time∈[0,product_end_time]、存儲(chǔ)服務(wù)器的存儲(chǔ)能力max_store_size∈[0,user_set_max_store_size]、數(shù)據(jù)流發(fā)送間隔send_interval_time∈[0,product_end_time]、故障發(fā)生時(shí)刻down_time∈[0,product_end_time],故障維持時(shí)間down_period∈[0,product_end_time],故障對象i在系統(tǒng)初始化時(shí)刻對應(yīng)的的狀態(tài)N_initial_statei∈{0,1},故障對象i在故障發(fā)生時(shí)刻對應(yīng)的狀態(tài)N_down_statei∈{0,1},以及故障對象i在故障修復(fù)時(shí)刻對應(yīng)的狀態(tài)N_up_statei∈{0,1},其中,i=1,2,……,n;?
(2)初始化表示本地?cái)?shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流個(gè)數(shù)的變量local_product_num、本地備份數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流個(gè)數(shù)的變量localbackup_product_num和異地備份數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流個(gè)數(shù)的變量remotebackup_product_num,初始值均為0;初始化表示當(dāng)前的生產(chǎn)數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流個(gè)數(shù)的變量temp_product_num和分別表示當(dāng)前的兩個(gè)備份數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流個(gè)數(shù)的變量temp1_product_num、temp2_product_num,初始值均為0;初始化表示從當(dāng)前兩個(gè)備份數(shù)據(jù)中心切換到當(dāng)前生產(chǎn)數(shù)據(jù)中心的數(shù)據(jù)流的目的服務(wù)器節(jié)點(diǎn)編號的增加值的變量id_diff_1和id_diff_2,均初始化為0;初始化表示三個(gè)數(shù)據(jù)中心各自生產(chǎn)的數(shù)據(jù)流的源節(jié)點(diǎn)編號、目的服務(wù)器節(jié)點(diǎn)編號、流開始時(shí)刻、流結(jié)束時(shí)刻、應(yīng)用層協(xié)議編號和存儲(chǔ)服務(wù)器編號信息的生產(chǎn)信息的數(shù)組變量,初始值均為0;初始化表示各存儲(chǔ)服務(wù)器的已占空間大小的數(shù)組變量store,初始值均為0,即執(zhí)行store(i1)=0,其中,i1=3c1+3c2+3c3+3c4+1,3c1+3c2+3c3+3c4+1,……,3c1+3c2+3c3+3c4+3c5;初始化系統(tǒng)信號為正常狀態(tài),即執(zhí)行system_signal=normal;初始化所有故障對象的狀態(tài)為正常,即執(zhí)行Ni2=1,其中,i2=1,2,……,n;初始化表示故障修復(fù)時(shí)刻的變量up_time,即執(zhí)行up_time=0;?
(3)初始化所有故障對象的狀態(tài),即在系統(tǒng)開始運(yùn)行之時(shí)執(zhí)行Ni3=N_initial_statei3的操作,其中,i3=1,2,……,n;?
(4)向系統(tǒng)注入定時(shí)的故障,即在down_time對系統(tǒng)中的所有故障對象執(zhí)行Ni4=?N_down_statei4的操作,計(jì)算故障修復(fù)時(shí)刻并向系統(tǒng)注入定時(shí)的故障恢復(fù),即執(zhí)行up_time=down_time+down_period,并在up_time執(zhí)行Ni4=N_upi4的操作,其中,i4=1,2,……,n;?
(5)獲取當(dāng)前執(zhí)行時(shí)刻current_time,并比較current_time是否小于product_end_time,若是,則執(zhí)行步驟(6);?
否則,將“當(dāng)前執(zhí)行時(shí)刻到達(dá)生產(chǎn)結(jié)束時(shí)刻,仿真結(jié)束”字樣寫入仿真結(jié)束原因記錄文件,執(zhí)行步驟(37);?
(6)以當(dāng)前執(zhí)行時(shí)刻作為流開始時(shí)刻,即執(zhí)行new_flow_start_time=current_time,利用隨機(jī)數(shù)生成器產(chǎn)生本次新數(shù)據(jù)流的隨機(jī)信息,包括源節(jié)點(diǎn)編號new_flow_from_id∈[3c1+3c2+3c3+3c4+3c5+1,3c1+3c2+3c3+3c4+3c5+m]、目的服務(wù)器節(jié)點(diǎn)編號new_flow_to_id∈[3c1+3c2+3c3+1,3c1+3c2+3c3+c4]、數(shù)據(jù)流結(jié)束時(shí)刻new_flow_end_time∈[new_flow_start_time,product_end_time],以及應(yīng)用層協(xié)議編號new_flow_app_app_protocol_id∈[1,p],同時(shí)系統(tǒng)從存儲(chǔ)開始節(jié)點(diǎn)開始尋找存儲(chǔ)節(jié)點(diǎn)id,滿足其剩余空間max_store_size-store(id)不小于當(dāng)前數(shù)據(jù)流產(chǎn)生的數(shù)據(jù)量的估算值,若能找到這樣的id,則將節(jié)點(diǎn)編號i作為此次數(shù)據(jù)流的存儲(chǔ)字段值,即執(zhí)行new_flow_store_id=id,執(zhí)行步驟(7);?
否則,將“存儲(chǔ)設(shè)備不足,仿真結(jié)束”寫入仿真結(jié)束原因記錄文件,并執(zhí)行步驟(37);?
(7)檢測故障對象1,2,……,n1的狀態(tài),若對于都有Ni5=1,則判定本地?cái)?shù)據(jù)中心可以為用戶提供服務(wù),執(zhí)行步驟(10);否則,執(zhí)行步驟(8);?
(8)檢測故障對象n1+1,n1+2,……,n1+n2的狀態(tài),若對于都有Ni6=1,則判定本地備份數(shù)據(jù)中心可以為用戶提供服務(wù),執(zhí)行步驟(34);否則,執(zhí)行步驟(9);?
(9)檢測故障對象n1+n2+1,n1+n2+2,……,n的狀態(tài),若對于都有Ni7=1,則判定異地備份數(shù)據(jù)中心可以為用戶提供服務(wù),則執(zhí)行步驟(35);?
否則,執(zhí)行步驟(36);?
(10)檢測系統(tǒng)信號,若system_signal=bad_state或者system_signal=replace_state,則將系統(tǒng)信號更新為正常狀態(tài),即執(zhí)行system_signal=normal_state,同時(shí)將本地?cái)?shù)據(jù)中心更新為當(dāng)前的生產(chǎn)數(shù)據(jù)中心,將本地備份數(shù)據(jù)中心和異地備份數(shù)據(jù)中心更新為此時(shí)的兩個(gè)備份數(shù)據(jù)中心,同時(shí)更新當(dāng)前的生產(chǎn)數(shù)據(jù)中心和備份數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流的個(gè)數(shù),即執(zhí)行temp_product_num=local_product_num,temp1_product_num=localbackup_product_num,temp2_product_num=remotebackup_product_num,并設(shè)置從當(dāng)前兩個(gè)備份數(shù)據(jù)中心切換到當(dāng)前生產(chǎn)數(shù)據(jù)中心的數(shù)據(jù)流的目的服務(wù)器節(jié)點(diǎn)編號的增加值,即執(zhí)行id_diff_1=-c4,id_diff_2=-2c4,執(zhí)行步驟(11);?
否則,執(zhí)行步驟(30);?
(11)記錄當(dāng)前時(shí)刻current_time,并比較current_time是否小于rto_time和rpo_time,若是,則執(zhí)行步驟(12);?
否則,將“在RTO和RPO設(shè)置的時(shí)間內(nèi)找不到數(shù)據(jù)中心作為生產(chǎn)數(shù)據(jù)中心為用戶提供服務(wù),仿真結(jié)束”字樣寫入仿真結(jié)束原因記錄文件,并執(zhí)行步驟(37);?
(12)進(jìn)行切換數(shù)據(jù)流之前的數(shù)據(jù)有效性驗(yàn)證操作,即對本地?cái)?shù)據(jù)中心、本地備份數(shù)據(jù)中心和異地備份數(shù)據(jù)中心依次執(zhí)行在此數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中查找backup_or_product_flag=1的記錄r1,并在另外兩個(gè)數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中查找backup_or_product_flag=2且其他描述字段值均與記錄r1中對應(yīng)的字段值相同的記錄r2,若記錄r2存在,則validation_result_is_hit_num加1;?
否則,執(zhí)行validation_result_is_miss_num加1;?
(13)將當(dāng)前執(zhí)行時(shí)刻current_time和驗(yàn)證結(jié)果validation_result_is_hit_num、validation_result_is_miss_num存儲(chǔ)到存儲(chǔ)驗(yàn)證結(jié)果的文件中,同時(shí)初始化計(jì)數(shù)器i8=0,初始化本次中心切換操作已被執(zhí)行切換數(shù)據(jù)流操作的數(shù)據(jù)中心的個(gè)數(shù)been_changed_datacenter_num=1;?
(14)比較i8是否小于或等于temp1_product_num,若是,則執(zhí)行步驟(15);?
否則,執(zhí)行步驟(26);?
(15)獲取當(dāng)前時(shí)刻current_time,并比較current_time是否小于或等于temp1_end_time(i8),若是,則執(zhí)行步驟(17);?
否則,執(zhí)行i8加1,并執(zhí)行步驟(16);?
(16)檢測been_changed_datacenter_num的值,若been_changed_datacenter_num值為1,則執(zhí)行步驟(14);?
否則,執(zhí)行步驟(27);?
(17)將此條數(shù)據(jù)流切換到當(dāng)前生產(chǎn)數(shù)據(jù)中心,并建立新的傳輸層連接,同時(shí)從存儲(chǔ)開始節(jié)點(diǎn)開始尋找存儲(chǔ)節(jié)點(diǎn)id,滿足其剩余空間max_store_size-store(id)不小于當(dāng)前數(shù)據(jù)流產(chǎn)生的數(shù)據(jù)量的估算值,若能找到這樣的id,則將此id選為當(dāng)前被切換的數(shù)據(jù)流的存儲(chǔ)服務(wù)器位置,執(zhí)行步驟(18);?
否則,將“存儲(chǔ)設(shè)備不足,仿真結(jié)束”字樣寫入仿真結(jié)束原因記錄文件,執(zhí)行步驟(37);?
(18)檢測本地?cái)?shù)據(jù)中心是否為當(dāng)前生產(chǎn)數(shù)據(jù)中心,即比較當(dāng)前生產(chǎn)數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流訪問的應(yīng)用服務(wù)器編號是否小于或者等于本地?cái)?shù)據(jù)中心應(yīng)用服務(wù)器編號最大值3c1+3c2+3c3+c4,若是,確定本地?cái)?shù)據(jù)中心為當(dāng)前生產(chǎn)數(shù)據(jù)中心,設(shè)backup_or_product=1,獲得此數(shù)據(jù)流的實(shí)時(shí)字節(jié)real_byte,此時(shí),對數(shù)據(jù)流的描述字段均已獲得,則構(gòu)造一條數(shù)據(jù)流描述信息記錄寫入到本地?cái)?shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,同時(shí)設(shè)backup_or_product=2,構(gòu)成備份信息記錄寫入到其他兩個(gè)數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,temp_product_num加1,執(zhí)行步驟(19);?
否則,執(zhí)行步驟(21);?
(19)檢測been_changed_datacenter_num的值,若been_changed_datacenter_num值為1,則確定此條被切換的數(shù)據(jù)流來自本地備份數(shù)據(jù)中心,將此被切換的數(shù)據(jù)流在本地備份數(shù)據(jù)中心的生產(chǎn)信息和在其他兩個(gè)數(shù)據(jù)中心的備份信息中的結(jié)束時(shí)刻字段更新為當(dāng)前時(shí)刻,執(zhí)行i8加1,并執(zhí)行步驟(16);?
否則,執(zhí)行步驟(20);?
(20)將此被切換的數(shù)據(jù)流在異地備份中心的生產(chǎn)信息和在其他兩個(gè)數(shù)據(jù)中心的備份信息中的結(jié)束時(shí)刻字段更新為當(dāng)前時(shí)刻,執(zhí)行i8加1,執(zhí)行步驟(16);?
(21)檢測本地備份數(shù)據(jù)中心是否為當(dāng)前生產(chǎn)數(shù)據(jù)中心,即比較當(dāng)前生產(chǎn)數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流訪問的應(yīng)用服務(wù)器編號是否大于本地?cái)?shù)據(jù)中心應(yīng)用服務(wù)器編號最大值3c1+3c2+3c3+c4且小于或等于本地備份數(shù)據(jù)中心應(yīng)用服務(wù)器編號最大值3c1+3c2+3c3+2c4,若是,則確定本地備份數(shù)據(jù)中心為當(dāng)前生產(chǎn)數(shù)據(jù)中心,設(shè)backup_or_product=1,獲得此數(shù)據(jù)流的實(shí)時(shí)字節(jié)real_byte,此時(shí),對數(shù)據(jù)流的描述字段均已獲得,則構(gòu)造一條數(shù)據(jù)流描述信息記錄寫入到本地備份數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,同時(shí)設(shè)backup_or_product=2,構(gòu)造備份信息記錄寫入到其他數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,temp_product_num加1,執(zhí)行步驟(22);?
否則,異地備份數(shù)據(jù)中心為當(dāng)前的生產(chǎn)數(shù)據(jù)中心,設(shè)backup_or_product=1,獲得此數(shù)據(jù)流的實(shí)時(shí)字節(jié)real_byte,此時(shí)對數(shù)據(jù)流的描述字段均已經(jīng)獲得,則構(gòu)造一條數(shù)據(jù)流描述信息記錄寫入到異地備份數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,同時(shí)設(shè)?backup_or_product=2,構(gòu)造備份信息記錄寫入到其他數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,temp_product_num加1,執(zhí)行步驟(24);?
(22)檢測been_changed_datacenter_num的值,若been_changed_datacenter_num值為1,則確定此條被切換的數(shù)據(jù)流來自本地?cái)?shù)據(jù)中心,將此被切換的數(shù)據(jù)流在本地?cái)?shù)據(jù)中心的生產(chǎn)信息和在其他兩個(gè)數(shù)據(jù)中心的備份信息中的結(jié)束時(shí)刻字段更新為當(dāng)前時(shí)刻,執(zhí)行i8加1,并執(zhí)行步驟(16);;?
否則,確定此條被切換的數(shù)據(jù)流來自異地備份數(shù)據(jù)中心,執(zhí)行步驟(23);?
(23)將此被切換的數(shù)據(jù)流在異地備份數(shù)據(jù)中心的生產(chǎn)信息和在其他兩個(gè)數(shù)據(jù)中心的備份信息中的結(jié)束時(shí)刻字段更新為當(dāng)前時(shí)刻,執(zhí)行i8加1,并執(zhí)行步驟(16);?
(24)檢測been_changed_datacenter_num的值,若been_changed_datacenter_num值為1,則確定此條被切換的數(shù)據(jù)流來自本地?cái)?shù)據(jù)中心,將此被切換的數(shù)據(jù)流在本地?cái)?shù)據(jù)中心的生產(chǎn)信息和在其他兩個(gè)數(shù)據(jù)中心的備份信息中的結(jié)束時(shí)刻字段更新為當(dāng)前時(shí)刻,執(zhí)行i8加1,并執(zhí)行步驟(16);?
否則,確定此條被切換的數(shù)據(jù)流來自本地備份數(shù)據(jù)中心,執(zhí)行步驟(25);?
(25)將此被切換的數(shù)據(jù)流在本地備份數(shù)據(jù)中心的生產(chǎn)信息和在其他兩個(gè)數(shù)據(jù)中心的備份信息中的結(jié)束時(shí)刻字段更新為當(dāng)前時(shí)刻,執(zhí)行i8加1,并執(zhí)行步驟(16);?
(26)將另一個(gè)數(shù)據(jù)中心的數(shù)據(jù)流切換到當(dāng)前的生產(chǎn)數(shù)據(jù)中心,更新本次中心切換中已被執(zhí)行切換數(shù)據(jù)流操作的數(shù)據(jù)中心的個(gè)數(shù)been_changed_datacenter_num=2,并執(zhí)行i8=0,temp1_product_num=temp2_product_num,id_diff_1=id_diff_2;?
(27)比較i8是否小于或等于temp1_product_num,若是,則執(zhí)行步驟(15);?
否則,數(shù)據(jù)流切換完成,更新當(dāng)前數(shù)據(jù)中心的生產(chǎn)信息,即執(zhí)行步驟(28);?
(28)進(jìn)行切換數(shù)據(jù)流之后的數(shù)據(jù)有效性驗(yàn)證操作,即對本地?cái)?shù)據(jù)中心、本地備份數(shù)據(jù)中心和異地備份數(shù)據(jù)中心依次執(zhí)行在此數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中查找backup_or_product_flag=1的記錄r3,并在另外兩個(gè)數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中查找backup_or_product_flag=2且其他描述字段值均與記錄r3中對應(yīng)的字段值相同的記錄r4,若記錄r4存在,則validation_result_is_hit_num加1;?
否則,執(zhí)行validation_result_is_miss_num加1;?
(29)將當(dāng)前執(zhí)行時(shí)刻current_time和驗(yàn)證結(jié)果validation_result_is_hit_num、validation_result_is_miss_num存儲(chǔ)到存儲(chǔ)驗(yàn)證結(jié)果的文件中;?
(30)根據(jù)前面步驟(6)中新產(chǎn)生的數(shù)據(jù)流的信息對新數(shù)據(jù)流建立傳輸層和應(yīng)用層連接,同?時(shí)記錄新數(shù)據(jù)流信息,temp_product_num加1;?
(31)檢測本地?cái)?shù)據(jù)中心是否為當(dāng)前生產(chǎn)數(shù)據(jù)中心,即比較當(dāng)前生產(chǎn)數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流訪問的應(yīng)用服務(wù)器編號是否小于或者等于本地?cái)?shù)據(jù)中心應(yīng)用服務(wù)器編號最大值3c1+3c2+3c3+c4,若是,則確定本地?cái)?shù)據(jù)中心為當(dāng)前的生產(chǎn)數(shù)據(jù)中心,并更新本地?cái)?shù)據(jù)中心的生產(chǎn)的數(shù)據(jù)流信息,并更新其生產(chǎn)數(shù)目,即執(zhí)行l(wèi)ocal_product_num=temp_product_num,backup_or_product_flag(i9)=1,獲得當(dāng)前數(shù)據(jù)流的實(shí)時(shí)字節(jié)real_byte(i9),此時(shí)對數(shù)據(jù)流的描述字段均已經(jīng)獲得,則構(gòu)造一條數(shù)據(jù)流描述信息記錄寫入到當(dāng)前作為生產(chǎn)數(shù)據(jù)中心的數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,同時(shí),執(zhí)行backup_or_product_flag(i9)=2,構(gòu)造備份信息記錄寫入到其他兩個(gè)數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,其中,i9=0,1,……,local_product_num,執(zhí)行步驟(5);?
否則,即執(zhí)行步驟(32);?
(32)檢測本地備份數(shù)據(jù)中心是否為當(dāng)前生產(chǎn)數(shù)據(jù)中心比較當(dāng)前生產(chǎn)數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流訪問的應(yīng)用服務(wù)器編號是否大于本地?cái)?shù)據(jù)中心應(yīng)用服務(wù)器編號最大值3c1+3c2+3c3+c4且小于或等于本地備份數(shù)據(jù)中心應(yīng)用服務(wù)器編號最大值3c1+3c2+3c3+2c4,若是,則確定本地備份數(shù)據(jù)中心為當(dāng)前生產(chǎn)數(shù)據(jù)中心,更新本地備份數(shù)據(jù)中心的生產(chǎn)信息和其生產(chǎn)數(shù)目,即執(zhí)行l(wèi)ocalbackup_product_num=temp_product_num,backup_or_product_flag(i10)=1,獲得當(dāng)前數(shù)據(jù)流的實(shí)時(shí)字節(jié)real_byte(i10),此時(shí)對數(shù)據(jù)流的描述字段均已獲得,則構(gòu)造一條數(shù)據(jù)流描述信息記錄寫入到本地?cái)?shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,同時(shí)執(zhí)行backup_or_product_flag(i10)=2,構(gòu)造信息記錄寫入到其他兩個(gè)數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,其中,i10=0,1,……,localbackup_product_num,執(zhí)行步驟(5);?
否則,確定異地備份數(shù)據(jù)中心為當(dāng)前的生產(chǎn)數(shù)據(jù)中心,執(zhí)行步驟(33);?
(33)更新異地備份數(shù)據(jù)中心的生產(chǎn)信息和其生產(chǎn)數(shù)目,即執(zhí)行remotebackup_product_num=temp_product_num,backup_or_product_flag(i11)=1,獲得當(dāng)前數(shù)據(jù)流的實(shí)時(shí)字節(jié)real_byte(i11),此時(shí),對數(shù)據(jù)流的描述字段均已獲得,則構(gòu)造一條數(shù)據(jù)流描述信息記錄寫入到本地?cái)?shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,執(zhí)行backup_or_product_flag(i11)=2,構(gòu)造備份信息記錄寫入到其他兩個(gè)數(shù)據(jù)中心的數(shù)據(jù)流信息存儲(chǔ)文件中,其中,i11=0,1,……,remotebackup_product_num,執(zhí)行步驟(5);?
(34)檢測系統(tǒng)信號,若system_signal=bad_state,則將系統(tǒng)信號更新為中心替代信號,?即執(zhí)行system_signal=replace_state,同時(shí)將本地備份數(shù)據(jù)中心更新為當(dāng)前的生產(chǎn)數(shù)據(jù)中心,將本地?cái)?shù)據(jù)中心和異地備份數(shù)據(jù)中心更新為當(dāng)前的備份數(shù)據(jù)中心,同時(shí)更新當(dāng)前的生產(chǎn)數(shù)據(jù)中心和備份數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流的個(gè)數(shù),即執(zhí)行temp_(product_num)=localbackup_(product_num),temp1_product_num=localbackup_product_num,temp1_product_num=remotebackup_product_num,并設(shè)置從當(dāng)前兩個(gè)備份數(shù)據(jù)中心切換到當(dāng)前生產(chǎn)數(shù)據(jù)中心的數(shù)據(jù)流的目的服務(wù)器節(jié)點(diǎn)編號的增加值,即執(zhí)行id_diff_1=c4,id_diff_2=-c4,并執(zhí)行步驟(11);?
否則,執(zhí)行步驟(30);?
(35)檢測系統(tǒng)信號,若system_signal=bad_state,則將系統(tǒng)信號更新為中心替代信號,即執(zhí)行system_signal=replace_state,同時(shí)將異地備份數(shù)據(jù)中心更新為當(dāng)前的生產(chǎn)數(shù)據(jù)中心,將本地?cái)?shù)據(jù)中心和本地備份數(shù)據(jù)中心更新為當(dāng)前的備份數(shù)據(jù)中心,同時(shí)更新當(dāng)前的生產(chǎn)數(shù)據(jù)中心和備份數(shù)據(jù)中心生產(chǎn)的數(shù)據(jù)流的個(gè)數(shù),即執(zhí)行temp_product_num=remotebackup_product_num,temp1_product_num=local_product_num,temp2_product_num=localbackup_product_num,并設(shè)置從當(dāng)前兩個(gè)備份數(shù)據(jù)中心切換到當(dāng)前生產(chǎn)數(shù)據(jù)中心的數(shù)據(jù)流的目的服務(wù)器節(jié)點(diǎn)編號的增加值,即執(zhí)行id_diff_1=2c4,id_diff_2=c4,并執(zhí)行步驟(11);否則,執(zhí)行步驟(30);?
(36)獲取當(dāng)前執(zhí)行時(shí)刻current_time,并將判斷current_time是否小于rto_time和rpo_time,若是,則系統(tǒng)繼續(xù)忍受,執(zhí)行步驟(5);?
否則,將“在RTO和RPO設(shè)置的時(shí)間內(nèi)找不到數(shù)據(jù)中心作為生產(chǎn)數(shù)據(jù)中心為用戶提供服務(wù),仿真結(jié)束”字樣寫入仿真結(jié)束原因記錄文件,并執(zhí)行步驟(37);?
(37)仿真結(jié)束。?
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京郵電大學(xué),未經(jīng)北京郵電大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310396291.6/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 基于角色模擬信息系統(tǒng)開發(fā)工廠實(shí)驗(yàn)方法
- 對信息系統(tǒng)進(jìn)行安全性識別的方法及裝置
- 基于角色模擬信息系統(tǒng)開發(fā)工廠實(shí)驗(yàn)方法
- 一種基于大數(shù)據(jù)的信息系統(tǒng)風(fēng)險(xiǎn)預(yù)警模型構(gòu)建方法
- 一種基于移動(dòng)終端的身份鑒別方法及系統(tǒng)
- 一種信息系統(tǒng)告警方法和裝置
- 一種基于總線形式的醫(yī)院信息集成方法
- 一種雙內(nèi)核瀏覽器方法和雙內(nèi)核瀏覽器
- 信息系統(tǒng)互聯(lián)方法及互聯(lián)裝置、鼠標(biāo)及電子設(shè)備
- 一種基于一二次劃分的信息系統(tǒng)可靠性提升方法





