发明名称 一种基于两地三中心的灾备信息系统仿真方法
摘要 本发明提供的是一种基于两地三中心的灾备信息系统仿真方法。该仿真按照用户的实际需求搭建模拟的灾备信息系统,实现灾难导致的故障的注入、故障修复、故障检测、数据中心的切换和回切、数据存储、数据有效性验证等灾备信息系统演练过程,系统中存在系统信号三种状态:正常状态、故障状态和中心替代状态,利用系统信号实现灾备流程的控制,降低了成本,提高了工作效率,同时使用灾备数据和生产数据共享存储的存储方式,节省了空间。
申请公布号 CN103473112B 申请公布日期 2016.03.30
申请号 CN201310396291.6 申请日期 2013.09.03
申请人 北京邮电大学 发明人 姚文斌;赵玲;姚翔;王真;韩司
分类号 G06F9/455(2006.01)I 主分类号 G06F9/455(2006.01)I
代理机构 代理人
主权项 一种基于两地三中心的灾备信息系统仿真方法,其特征在于:设灾备信息系统采用两地三中心的架构,即包括本地数据中心、本地备份数据中心和异地备份数据中心,且三个数据中心的软硬件环境和网络环境完全相同,假定系统中可能发生故障的一个组成部分称为一个故障对象,在一个时刻一个故障对象可能是正常状态也可能是故障状态,当系统中的所有故障对象的状态导致本地数据中心不能正常提供服务,则称此种系统状态为系统故障状态,第一次检测到此种系统状态的时间点称为故障发生时刻,否则,称系统状态为系统正常状态;当检测到系统故障状态之后,又检测到本地数据中心可以正常提供服务,则称此种系统状态为系统修复状态,第一次检测到此种状态的时间点称为故障修复时刻,否则,称此种系统状态为系统忍受状态;正常情况下,灾备信息系统维持一个数据中心作为生产数据中心为用户提供服务,默认的生产数据中心为本地数据中心;在生产过程中,灾备信息系统存在的每个故障对象的状态时刻发生变化,影响着系统状态的改变,当第一次检测到系统状态为系统故障状态,则更新系统信号为故障状态,即执行system_signal=bad_state,此时灾备信息系统便会依次检测本地备份数据中心和异地备份数据中心,若在RTO和RPO的限制内检测到本地备份数据中心可以提供服务,则停止检测并更新系统信号为中心替代状态,即执行system_signal=replace_state,同时将数据流切换到本地备份数据中心并将本地备份数据中心作为生产数据中心使用;若在RTO和RPO的限制内检测到异地备份数据中心可以提供服务,则停止检测并更新系统信号为中心替代状态,即执行system_signal=replace_state,同时将数据流切换到异地备份数据中心,并将异地备份数据中心作为生产数据中心使用;若在RTO和RPO的限制内第一次检测系统状态为系统修复状态,更新系统信号为正常状态,即执行system_signal=normal_state,重新将数据流切回到本地数据中心并将本地数据中心作为生产数据中心使用;若到了RTO和RPO限制的时间仍找不到可用的数据中心,则系统崩溃;本系统中采用源节点编号、目的服务器节点编号、流开始时刻、流结束时刻、应用层协议编号、实时字节、存储节点编号、和标识backup_or_product_flag八个字段构成一条描述信息来描述一条数据流此刻的状态,其中,当backup_or_product_flag值为1时,表示此条描述信息描述的是当前数据中心生产的数据流的生产信息,当backup_or_product_flag值为2时,表示此条描述信息是其他数据中心生产的数据流在本中心保存的备份信息,生产过程中以被切换的数据流信息为基础新创建的连接到当前数据中心的数据流、本次生产中以随机产生的信息为基础新创建的连接到当前数据中心的数据流,以及当前数据中心中所有还未结束的数据流为描述对象,构造描述信息记录同步写入到三个数据中心的数据流信息存储文件中;当切换数据中心前后需要进行数据有效性验证操作时,即对每个数据中心生产的数据流执行查找是否其他两个数据中心均存在备份,则有效数据计数器validation_result_is_hit_num加1,否则,无 效数据计数器validation_result_is_miss_num加1的操作,最后将验证时刻和验证结果构成验证结果描述信息记录写入到验证结果存储文件中,从而方便验证本系统中对零数据丢失的实现;本系统中利用公式<img file="FDA0000914004420000021.GIF" wi="1205" he="111" />来估算一次寻找数据流的存储的操作,即若存在存储设备的剩余空间不小于本次数据流的估算值,则存储,否则,系统警报存储空间不足,系统崩溃;本系统中设置变量been_changed_datacenter_num,其值只有1和2,用来识别被切换的数据流的来源,假设当前由本地数据中心作为生产数据中心,若been_changed_datacenter_num=1,则此时被切换的数据流的来源为本地备份数据中心,否则,此时被切换的数据流的来源为异地备份数据中心;假设当前由本地备份数据中心作为生产数据中心,若been_changed_datacenter_num=1,则此时被切换的数据流的来源为本地数据中心,否则,此时被切换的数据流的来源为异地备份数据中心;假设当前由异地备份数据中心作为生产数据中心,若been_changed_datacenter_num=1,则此时被切换的数据流的来源为本地数据中心,否则,此时被切换的数据流的来源为本地备份数据中心;设用户设置了参数包括生产结束时刻user_set_product_end_time、存储服务器的最大存储能力user_set_max_store_size和数据流发送的一个数据包的最大值user_set_max_packet_size;设系统中存在三个数据流信息存储文件用于分别存储对应的数据中心生产的数据流的信息,存在一个仿真结束原因记录文件用于存储仿真结束的原因,并且存在一个数据有效性验证结果存储文件用于存储系统中对数据进行有效性验证的结果;设灾备信息系统中每个数据中心的出口路由器层设备个数为c<sub>1</sub>,核心交换机层设备个数为c<sub>2</sub>,汇聚交换机层设备个数为c<sub>3</sub>,服务器层应用服务器设备个数为c<sub>4</sub>,服务器层存储服务器设备个数为c<sub>5</sub>,则按照从出口路由器层到核心交换层到汇聚交换机层再到服务器层的顺序,对于每一层的设备节点按照本地数据中心到本地备份数据中心再到异地备份数据中心的顺序遵循递增规律设置整型编号后,则本地数据中心的出口路由器编号依次为1,2,……,c<sub>1</sub>,本地备份数据中心的出口路由器编号依次为c<sub>1</sub>+1,c<sub>1</sub>+2,……,2c<sub>1</sub>,异地备份数据中心的出口路由器编号依次为2c<sub>1</sub>+1,2c<sub>1</sub>+2,……,3c<sub>1</sub>,本地数据中心的核心交换机编号依次为3c<sub>1</sub>+1,3c<sub>1</sub>+2,……,3c<sub>1</sub>+c<sub>2</sub>,本地备份数据中心的核心交换机编号依次为3c<sub>1</sub>+c<sub>2</sub>+1,3c<sub>1</sub>+c<sub>2</sub>+2,……,3c<sub>1</sub>+2c<sub>2</sub>,异地备份数据中心的核心交换机编号依次为3c<sub>1</sub>+2c<sub>2</sub>+1,3c<sub>1</sub>+2c<sub>2</sub>+2,……,3c<sub>1</sub>+3c<sub>2</sub>,本地数据中心的汇聚交换机编号依次为3c<sub>1</sub>+3c<sub>2</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+ 2,……,3c<sub>1</sub>+3c<sub>2</sub>+c<sub>3</sub>,本地备份数据中心的汇聚交换机编号依次为3c<sub>1</sub>+3c<sub>2</sub>+c<sub>3</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+c<sub>3</sub>+2,……,3c<sub>1</sub>+3c<sub>2</sub>+2c<sub>3</sub>,异地备份数据中心的汇聚交换机编号依次为3c<sub>1</sub>+3c<sub>2</sub>+2c<sub>3</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+2c<sub>3</sub>+2,……,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>,本地数据中心的应用服务器编号依次为3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+2,……,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+c<sub>4</sub>,本地备份数据中心的应用服务器编号依次为3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+c<sub>4</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+c<sub>4</sub>+2,……,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+2c<sub>4</sub>,异地备份数据中心的应用服务器编号依次为3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+2c<sub>4</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+2c<sub>4</sub>+2,……,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>,本地数据中心的存储服务器编号依次为3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+2,……,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+c<sub>5</sub>,本地备份数据中心的存储服务器编号依次为3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+c<sub>5</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+c<sub>5</sub>+2,……,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+2c<sub>5</sub>,异地备份数据中心的存储服务器编号依次为3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>++2c<sub>5</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+2c<sub>4</sub>+2c<sub>5</sub>+2,……,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+3c<sub>5</sub>,我们设定三个数据中心中的每个硬件层次上编号差值为本层设备个数的硬件设备拥有的完全相同的服务能力;设该系统存在m个用户节点,编号依次为3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+3c<sub>5</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+3c<sub>5</sub>+2,……,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+3c<sub>5</sub>+m;设系统中包括p种应用层协议;设该系统包含n个故障对象,故障对象i的状态值表示为N<sub>i</sub>,其中,i=1,2,……,n,且每个故障对象的状态值只有1和0两种,1表示故障对象处于正常状态,0表示故障对象处于故障状态,当故障对象1,2,……,n1的状态值均为1时候,本地数据中心可正常提供服务,否则,本地数据中心不能正常提供服务;当故障对象n1+1,n1+2,……,n1+n2的状态值均为1时候,本地备份数据中心可正常提供服务,否则,本地备份数据中心不能正常提供服务;当故障对象n1+n2+1,n1+n2+2,……,n1+n2+n3的状态值均为1时候,异地备份数据中心可正常提供服务,否则,异地备份数据中心不能正常提供服务,则基于两地三中心的灾备信息系统仿真方法的具体方法步骤为:(1)根据用户设置参数user_set_product_end_time、user_set_max_packet_size和user_set_max_store_size,利用随机数生成器生成随机参数,包括:生产结束时刻 product_end_time∈[0,user_set_product_end_time]、数据包大小的极限值max_packet_size∈[0,user_set_max_packet_size]、RTO极限值rto_time∈[0,product_end_time]、RPO极限值rpo_time∈[0,product_end_time]、存储服务器的存储能力max_store_size∈[0,user_set_max_store_size]、数据流发送间隔send_interval_time∈[0,product_end_time]、故障发生时刻down_time∈[0,product_end_time],故障维持时间down_period∈[0,product_end_time],故障对象i在系统初始化时刻对应的状态N_initial_state<sub>i</sub>∈{0,1},故障对象i在故障发生时刻对应的状态N_down_state<sub>i</sub>∈{0,1},以及故障对象i在故障修复时刻对应的状态N_up_state<sub>i</sub>∈{0,1},其中,i=1,2,……,n;(2)初始化表示本地数据中心生产的数据流个数的变量local_product_num、本地备份数据中心生产的数据流个数的变量localbackup_product_num和异地备份数据中心生产的数据流个数的变量remotebackup_product_num,初始值均为0;初始化表示当前的生产数据中心生产的数据流个数的变量temp_product_num和分别表示当前的两个备份数据中心生产的数据流个数的变量temp1_product_num、temp2_product_num,初始值均为0;初始化表示从当前两个备份数据中心切换到当前生产数据中心的数据流的目的服务器节点编号的增加值的变量id_diff_1和id_diff_2,均初始化为0;初始化表示三个数据中心各自生产的数据流的源节点编号、目的服务器节点编号、流开始时刻、流结束时刻、应用层协议编号和存储服务器编号信息的生产信息的数组变量,初始值均为0;初始化表示各存储服务器的已占空间大小的数组变量store,初始值均为0,即执行store(i1)=0,其中,i1=3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+1,……,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+3c<sub>5</sub>;初始化系统信号为正常状态,即执行system_signal=normal;初始化所有故障对象的状态为正常,即执行N<sub>i2</sub>=1,其中,i2=1,2,……,n;初始化表示故障修复时刻的变量up_time,即执行up_time=0;(3)初始化所有故障对象的状态,即在系统开始运行之时执行N<sub>i3</sub>=N_initial_state<sub>i3</sub>的操作,其中,i3=1,2,……,n;(4)向系统注入定时的故障,即在down_time对系统中的所有故障对象执行N<sub>i4</sub>= N_down_state<sub>i4</sub>的操作,计算故障修复时刻并向系统注入定时的故障恢复,即执行up_time=down_time+down_period,并在up_time执行N<sub>i4</sub>=N_up<sub>i4</sub>的操作,其中,i4=1,2,……,n;(5)获取当前执行时刻current_time,并比较current_time是否小于product_end_time,若是,则执行步骤(6);否则,将“当前执行时刻到达生产结束时刻,仿真结束”字样写入仿真结束原因记录文件,执行步骤(37);(6)以当前执行时刻作为流开始时刻,即执行new_flow_start_time=current_time,利用随机数生成器产生本次新数据流的随机信息,包括源节点编号new_flow_from_id∈[3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+3c<sub>5</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+3c<sub>4</sub>+3c<sub>5</sub>+m]、目的服务器节点编号new_flow_to_id∈[3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+1,3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+c<sub>4</sub>]、数据流结束时刻new_flow_end_time∈[new_flow_start_time,product_end_time],以及应用层协议编号new_flow_app_app_protocol_id∈[1,p],同时系统从存储开始节点开始寻找存储节点id,满足其剩余空间max_store_size‑store(id)不小于当前数据流产生的数据量的估算值,若能找到这样的id,则将节点编号i作为此次数据流的存储字段值,即执行new_flow_store_id=id,执行步骤(7);否则,将“存储设备不足,仿真结束”写入仿真结束原因记录文件,并执行步骤(37);(7)检测故障对象1,2,……,n1的状态,若对于<img file="FDA0000914004420000051.GIF" wi="318" he="79" />都有N<sub>i5</sub>=1,则判定本地数据中心可以为用户提供服务,执行步骤(10);否则,执行步骤(8);(8)检测故障对象n1+1,n1+2,……,n1+n2的状态,若对于<img file="FDA0000914004420000052.GIF" wi="319" he="78" />n1+n2],都有N<sub>i6</sub>=1,则判定本地备份数据中心可以为用户提供服务,执行步骤(34);否则,执行步骤(9);(9)检测故障对象n1+n2+1,n1+n2+2,……,n的状态,若对于<img file="FDA0000914004420000053.GIF" wi="134" he="55" /><img file="FDA0000914004420000054.GIF" wi="627" he="64" />都有N<sub>i7</sub>=1,则判定异地备份数据中心可以为用户提供服务,则执行步骤(35);否则,执行步骤(36);(10)检测系统信号,若system_signal=bad_state或者system_signal=replace_state,则将系统信号更新为正常状态,即执行system_signal=normal_state,同时将本地数据中心更新为当前的生产数据中心,将本地备份数据中心和异地备份数据中心更新为此时的两个备份数据中心,同时更新当前的生产数据中心和备份数据中心生产的数据流的个数,即执行temp_product_num=local_product_num,temp1_product_num=localbackup_product_num,temp2_product_num=remotebackup_product_num,并设置从当前两个备份数据中心切换到当前生产数据中心的数据流的目的服务器节点编号的增加值,即执行id_diff_1=‑c<sub>4</sub>,id_diff_2=‑2c<sub>4</sub>,执行步骤(11);否则,执行步骤(30);(11)记录当前时刻current_time,并比较current_time是否小于rto_time和rpo_time,若是,则执行步骤(12);否则,将“在RTO和RPO设置的时间内找不到数据中心作为生产数据中心为用户提供服务,仿真结束”字样写入仿真结束原因记录文件,并执行步骤(37);(12)进行切换数据流之前的数据有效性验证操作,即对本地数据中心、本地备份数据中心和异地备份数据中心依次执行在此数据中心的数据流信息存储文件中查找backup_or_product_flag=1的记录r1,并在另外两个数据中心的数据流信息存储文件中查找backup_or_product_flag=2且其他描述字段值均与记录r1中对应的字段值相同的记录r2,若记录r2存在,则validation_result_is_hit_num加1;否则,执行validation_result_is_miss_num加1;(13)将当前执行时刻current_time和验证结果validation_result_is_hit_num、validation_result_is_miss_num存储到存储验证结果的文件中,同时初始化计数器i8=0,初始化本次中心切换操作已被执行切换数据流操作的数据中心的个数been_changed_datacenter_num=1;(14)比较i8是否小于或等于temp1_product_num,若是,则执行步骤(15);否则,执行步骤(26);(15)获取当前时刻current_time,并比较current_time是否小于或等于temp1_end_time(i8),若是,则执行步骤(17);否则,执行i8加1,并执行步骤(16);(16)检测been_changed_datacenter_num的值,若been_changed_datacenter_num值为1,则执行步骤(14);否则,执行步骤(27);(17)将此条数据流切换到当前生产数据中心,并建立新的传输层连接,同时从存储开始节点开始寻找存储节点id,满足其剩余空间max_store_size‑store(id)不小于当前数据流产生的数据量的估算值,若能找到这样的id,则将此id选为当前被切换的数据流的存储服务器位置,执行步骤(18);否则,将“存储设备不足,仿真结束”字样写入仿真结束原因记录文件,执行步骤(37);(18)检测本地数据中心是否为当前生产数据中心,即比较当前生产数据中心生产的数据流访问的应用服务器编号是否小于或者等于本地数据中心应用服务器编号最大值3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+c<sub>4</sub>,若是,确定本地数据中心为当前生产数据中心,设backup_or_product=1,获得此数据流的实时字节real_byte,此时,对数据流的描述字段均已获得,则构造一条数据流描述信息记录写入到本地数据中心的数据流信息存储文件中,同时设backup_or_product=2,构成备份信息记录写入到其他两个数据中心的数据流信息存储文件中,temp_product_num加1,执行步骤(19);否则,执行步骤(21);(19)检测been_changed_datacenter_num的值,若been_changed_datacenter_num值为1,则确定此条被切换的数据流来自本地备份数据中心,将此被切换的数据流在本地备份数据中心的生产信息和在其他两个数据中心的备份信息中的结束时刻字段更新为当前时刻,执行i8加1,并执行步骤(16);否则,执行步骤(20);(20)将此被切换的数据流在异地备份中心的生产信息和在其他两个数据中心的备份信息中的结束时刻字段更新为当前时刻,执行i8加1,执行步骤(16);(21)检测本地备份数据中心是否为当前生产数据中心,即比较当前生产数据中心生产的数据流访问的应用服务器编号是否大于本地数据中心应用服务器编号最大值3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+c<sub>4</sub>且小于或等于本地备份数据中心应用服务器编号最大值3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+2c<sub>4</sub>,若是,则确定本地备份数据中心为当前生产数据中心,设backup_or_product=1,获得此数据流的实时字节real_byte,此时,对数据流的描述字段均已获得,则构造一条数据流描述信息记录写入到本地备份数据中心的数据流信息存储文件中,同时设backup_or_product=2,构造备份信息记录写入到其他数据中心的数据流信息存储文件中,temp_product_num加1,执行步骤(22);否则,异地备份数据中心为当前的生产数据中心,设backup_or_product=1,获得此数据流的实时字节real_byte,此时对数据流的描述字段均已经获得,则构造一条数据流描述信息记录写入到异地备份数据中心的数据流信息存储文件中,同时设 backup_or_product=2,构造备份信息记录写入到其他数据中心的数据流信息存储文件中,temp_product_num加1,执行步骤(24);(22)检测been_changed_datacenter_num的值,若been_changed_datacenter_num值为1,则确定此条被切换的数据流来自本地数据中心,将此被切换的数据流在本地数据中心的生产信息和在其他两个数据中心的备份信息中的结束时刻字段更新为当前时刻,执行i8加1,并执行步骤(16);否则,确定此条被切换的数据流来自异地备份数据中心,执行步骤(23);(23)将此被切换的数据流在异地备份数据中心的生产信息和在其他两个数据中心的备份信息中的结束时刻字段更新为当前时刻,执行i8加1,并执行步骤(16);(24)检测been_changed_datacenter_num的值,若been_changed_datacenter_num值为1,则确定此条被切换的数据流来自本地数据中心,将此被切换的数据流在本地数据中心的生产信息和在其他两个数据中心的备份信息中的结束时刻字段更新为当前时刻,执行i8加1,并执行步骤(16);否则,确定此条被切换的数据流来自本地备份数据中心,执行步骤(25);(25)将此被切换的数据流在本地备份数据中心的生产信息和在其他两个数据中心的备份信息中的结束时刻字段更新为当前时刻,执行i8加1,并执行步骤(16);(26)将另一个数据中心的数据流切换到当前的生产数据中心,更新本次中心切换中已被执行切换数据流操作的数据中心的个数been_changed_datacenter_num=2,并执行i8=0,temp1_product_num=temp2_product_num,id_diff_1=id_diff_2;(27)比较i8是否小于或等于temp1_product_num,若是,则执行步骤(15);否则,数据流切换完成,更新当前数据中心的生产信息,即执行步骤(28);(28)进行切换数据流之后的数据有效性验证操作,即对本地数据中心、本地备份数据中心和异地备份数据中心依次执行在此数据中心的数据流信息存储文件中查找backup_or_product_flag=1的记录r3,并在另外两个数据中心的数据流信息存储文件中查找backup_or_product_flag=2且其他描述字段值均与记录r3中对应的字段值相同的记录r4,若记录r4存在,则validation_result_is_hit_num加1;否则,执行validation_result_is_miss_num加1;(29)将当前执行时刻current_time和验证结果validation_result_is_hit_num、validation_result_is_miss_num存储到存储验证结果的文件中;(30)根据前面步骤(6)中新产生的数据流的信息对新数据流建立传输层和应用层连接,同 时记录新数据流信息,temp_product_num加1;(31)检测本地数据中心是否为当前生产数据中心,即比较当前生产数据中心生产的数据流访问的应用服务器编号是否小于或者等于本地数据中心应用服务器编号最大值3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+c<sub>4</sub>,若是,则确定本地数据中心为当前的生产数据中心,并更新本地数据中心的生产的数据流信息,并更新其生产数目,即执行local_product_num=temp_product_num,backup_or_product_flag(i9)=1,获得当前数据流的实时字节real_byte(i9),此时对数据流的描述字段均已经获得,则构造一条数据流描述信息记录写入到当前作为生产数据中心的数据中心的数据流信息存储文件中,同时,执行backup_or_product_flag(i9)=2,构造备份信息记录写入到其他两个数据中心的数据流信息存储文件中,其中,i9=0,1,……,local_product_num,执行步骤(5);否则,即执行步骤(32);(32)检测本地备份数据中心是否为当前生产数据中心比较当前生产数据中心生产的数据流访问的应用服务器编号是否大于本地数据中心应用服务器编号最大值3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+c<sub>4</sub>且小于或等于本地备份数据中心应用服务器编号最大值3c<sub>1</sub>+3c<sub>2</sub>+3c<sub>3</sub>+2c<sub>4</sub>,若是,则确定本地备份数据中心为当前生产数据中心,更新本地备份数据中心的生产信息和其生产数目,即执行localbackup_product_num=temp_product_num,backup_or_product_flag(i10)=1,获得当前数据流的实时字节real_byte(i10),此时对数据流的描述字段均已获得,则构造一条数据流描述信息记录写入到本地数据中心的数据流信息存储文件中,同时执行backup_or_product_flag(i10)=2,构造信息记录写入到其他两个数据中心的数据流信息存储文件中,其中,i10=0,1,……,localbackup_product_num,执行步骤(5);否则,确定异地备份数据中心为当前的生产数据中心,执行步骤(33);(33)更新异地备份数据中心的生产信息和其生产数目,即执行remotebackup_product_num=temp_product_num,backup_or_product_flag(i11)=1,获得当前数据流的实时字节real_byte(i11),此时,对数据流的描述字段均已获得,则构造一条数据流描述信息记录写入到本地数据中心的数据流信息存储文件中,执行backup_or_product_flag(i11)=2,构造备份信息记录写入到其他两个数据中心的数据流信息存储文件中,其中,i11=0,1,……,remotebackup_product_num,执行步骤(5);(34)检测系统信号,若system_signal=bad_state,则将系统信号更新为中心替代信号, 即执行system_signal=replace_state,同时将本地备份数据中心更新为当前的生产数据中心,将本地数据中心和异地备份数据中心更新为当前的备份数据中心,同时更新当前的生产数据中心和备份数据中心生产的数据流的个数,即执行temp_(product_num)=localbackup_(product_num),temp1_product_num=localbackup_product_num,temp1_product_num=remotebackup_product_num,并设置从当前两个备份数据中心切换到当前生产数据中心的数据流的目的服务器节点编号的增加值,即执行id_diff_1=c<sub>4</sub>,id_diff_2=‑c<sub>4</sub>,并执行步骤(11);否则,执行步骤(30);(35)检测系统信号,若system_signal=bad_state,则将系统信号更新为中心替代信号,即执行system_signal=replace_state,同时将异地备份数据中心更新为当前的生产数据中心,将本地数据中心和本地备份数据中心更新为当前的备份数据中心,同时更新当前的生产数据中心和备份数据中心生产的数据流的个数,即执行temp_product_num=remotebackup_product_num,temp1_product_num=local_product_num,temp2_product_num=localbackup_product_num,并设置从当前两个备份数据中心切换到当前生产数据中心的数据流的目的服务器节点编号的增加值,即执行id_diff_1=2c<sub>4</sub>,id_diff_2=c<sub>4</sub>,并执行步骤(11);否则,执行步骤(30);(36)获取当前执行时刻current_time,并将判断current_time是否小于rto_time和rpo_time,若是,则系统继续忍受,执行步骤(5);否则,将“在RTO和RPO设置的时间内找不到数据中心作为生产数据中心为用户提供服务,仿真结束”字样写入仿真结束原因记录文件,并执行步骤(37);(37)仿真结束。
地址 100876 北京市海淀区西土城路10号