CN103678163B - 数据流的切换方法、装置及系统 - Google Patents

数据流的切换方法、装置及系统 Download PDF

Info

Publication number
CN103678163B
CN103678163B CN201210346656.XA CN201210346656A CN103678163B CN 103678163 B CN103678163 B CN 103678163B CN 201210346656 A CN201210346656 A CN 201210346656A CN 103678163 B CN103678163 B CN 103678163B
Authority
CN
China
Prior art keywords
write request
external write
new
request
equipment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210346656.XA
Other languages
English (en)
Other versions
CN103678163A (zh
Inventor
吴宏杰
李钟伟
田明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201210346656.XA priority Critical patent/CN103678163B/zh
Publication of CN103678163A publication Critical patent/CN103678163A/zh
Application granted granted Critical
Publication of CN103678163B publication Critical patent/CN103678163B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据流的切换方法、装置及系统。其中,该方法包括:在触发任意一个或多个新设备进入切换状态之后,新设备访问主设备的缓存区;读取主设备的缓存区中保存的外部写入请求,其中,外部写入请求由主设备接收,并将外部写入请求保存至主设备的缓存区;新设备根据外部写入请求更新本地系统数据。通过本申请,能够实现异构系统数据流的切换的过程简单且无需中断外部写入请求,同时保证系统的更新数据不丢失。

Description

数据流的切换方法、装置及系统
技术领域
本申请涉及计算机互联网领域,具体而言,涉及一种数据流的切换方法、装置及系统。
背景技术
随着互联网系统中用户数量的递增,以及各个设备之间交互的数据量的不断增大,用于进行数据处理的旧设备的系统无法满足日益增长的处理需求,针对上述问题现有技术可以采用进行扩容、迁移或者系统重构的方式进行解决,上述几种解决方案都需要进行数据迁移和服务切换。对于同构系统的数据迁移和服务切换,目前通用的方案是先将旧设备的系统停止外部写入请求,然后将需要迁移的数据复制到新设备的系统中,再将外部写入请求引导到新设备的系统。这种方案的优点在于简单且数据一致性很容易保证,但它的缺点在于需要中断对外写入请求。
另外,对于一些写入请求是覆盖式写入的设备系统来说,可以实现不中断外部写入请求。具体的,这种覆盖式写入的方案中,当旧设备的系统停止写入服务时,将外部写入请求记录到二进制日志文件,在完成数据复制后,将二进制日志文件和外部请求包一并处理,当二进制文件处理完成后,系统的写入服务切换也完成。这种方案具有它的特殊性,如果系统不是以覆盖式写入请求为主要来源,那么就需要处理复杂的数据时序性问题,大大提高系统切换的复杂度。
上述两种方案都是应用于同构系统中的数据迁移和服务切换,但对于异构系统来说,由于不同设备系统之间存在着差异,例如:数据存储的方式不同、对外提供的写入接口不同、操作数据的方式不同等。由此可知,上述应用在同构系统的两种方案,方案一并不适用于异构系统,而方案二而过程复杂且具有局限性。因此,异构系统进行服务切换时,往往需要处理比同构系统更为复杂的逻辑。
图1是根据相关现有技术的数据流的切换系统的结构示意图。具体的,上述图1所示的异构设备系统之间实现数据流的切换的实施例中,假设旧设备上的系统为系统A,新设备中的系统为系统B。下面就结合图1对该方案所实现的异构系统之间数据流的切换进行详细描述如下:
图1所示的实施例通过双写控制方案来实现,双写控制方案是通过将外部写入请求归拢到双写层系统,通过双写层进行写入请求的流向控制,即先写系统A后写系统B,还是先写系统B后写系统A。同时,通过指定特定条件,可以使到双写层支持部分写入请求先往系统A,而部分写入请求先往系统B。采用双写控制方案进行数据流的切换的过程如下:
步骤a,系统进行写入请求切换,将原始写入请求由系统A转到双写层,具体的如图1所示,外部写入请求在切换后,从“写请求切换1虚线”变为“写请求切换2虚线”。
步骤b,双写层控制每个写入请求,按系统自设条件确定是将写入请求先发往系统A还是系统B。
步骤c,双写层往系统A(或B)发送写请求后等待系统A(或B)回包。
步骤d,双写层得到系统A(或B)回包后,确认写入正常情况下,往另一个系统B(或A)发送写请求包。
步骤e,双写层得到另一个系统的回包,处理结束。
步骤f,当所有的写请求经双写层转往新系统后,再将原始写入请求由双写层转到系统B,具体的如图1所示,写请求在切换后,从“写请求切换2虚线”变为“写请求切换3虚线”。
上述图1所示的实施例存在如下问题:由于在进行系统切换的过程中,需要消耗人力资源开发双写层系统,同时对外接口服务需要在双写层和新旧系统之间来回切换,因此存在开发量大,接口切换过程复杂的问题;另外,虽然双写控制能够支持高精度的写入流向控制,但是这是以牺牲程序代码的复杂度为前提的,因此上述方案代码复杂度高,不易研发人员维护;而且,由于在进行系统切换过程中,一旦通过双写层将请求转给新系统后,新系统很难再进行系统的发布更新,因为系统的更新将会导致系统瞬间的不可用,虽然时间很短暂,但是也会造成新旧数据的不一致,因此,上述方案也存在数据更新过程中丢失数据的问题;同时,由于双写层是一个单独的控制层,在完成设备系统之间的切换之后,双写层会在系统切换完后失去作用,从而浪费了系统资源。
由上述分析可知,目前针对相关技术实现异构系统的数据流的切换过程复杂,切换时需要中断对外写入请求,且容易丢失数据的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术的实现异构系统的数据流的切换过程复杂,切换时需要中断对外写入请求,且容易丢失数据的问题,目前尚未提出有效的解决方案,为此,本申请的主要目的在于提供一种数据流的切换方法、装置及系统,以解决上述问题。
为了实现上述目的,根据本申请的一个方面,提供了一种数据流的切换方法,该方法包括:在触发任意一个或多个新设备进入切换状态之后,新设备访问主设备的缓存区;读取主设备的缓存区中保存的外部写入请求,其中,外部写入请求由主设备接收,并将外部写入请求保存至主设备的缓存区;新设备根据外部写入请求更新本地系统数据。
进一步地,在将外部写入请求保存至主设备的缓存区之前,方法还包括:提取外部写入请求中的一个或多个数据;对数据进行修改,并根据修改后的数据来更新外部写入请求。
进一步地,在新设备根据外部写入请求更新本地系统数据之后,方法还包括:新设备将外部写入请求同步至主设备;主设备检测同步的外部写入请求是否为有效请求,其中,在检测到外部写入请求中的数据设有发生修改的情况下,确定外部写入请求为有效请求,主设备根据该有效请求更新本地系统数据;在检测到外部写入请求中的数据发生修改的情况下,确定外部写入请求为无效请求,主设备丢弃该外部写入请求。
进一步地,在新设备根据外部写入请求更新本地系统数据之后,方法还包括:新设备接收新的外部写入请求,并根据新的外部写入请求更新本地系统数据;新设备将新的外部写入请求同步至主设备;主设备在检测到新的外部写入请求为有效请求之后,根据新的外部写入请求更新本地系统数据。
进一步地,在新设备根据外部写入请求更新本地系统数据之前,方法还包括:主设备接收到中止命令,以使得缓存区处于禁止读取状态;在新设备检测到缓存区为禁止读取状态的情况下,停止更新本地系统数据。
为了实现上述目的,根据本申请的另一方面,提供了一种数据流的切换装置,该装置包括:访问装置,用于在触发任意一个或多个新设备进入切换状态之后,访问主设备的缓存区;读取装置,与访问装置建立连接,用于读取主设备的缓存区所保存的外部写入请求,其中,外部写入请求由主设备接收,并将外部写入请求保存至主设备的缓存区;更新装置,与读取装置建立连接,用于根据外部写入请求更新本地系统数据。
进一步地,装置还包括:处理装置,用于接收新的外部写入请求,并根据新的外部写入请求更新本地系统数据;同步装置,与处理装置建立连接,用于将新的外部写入请求同步至主设备,以使得主设备在检测到新的外部写入请求为有效请求之后,根据新的外部写入请求更新本地系统数据。
为了实现上述目的,根据本申请的另一方面,提供了一种数据流的切换系统,该系统包括:主设备,用于接收外部写入请求,并将外部写入请求保存至主设备的缓存区;一个或多个新设备,分别与主设备建立通讯关系,用于在触发任意一个或多个新设备进入切换状态之后,新设备访问主设备的缓存区,以读取主设备的缓存区中保存的外部写入请求,并根据外部写入请求更新本地系统数据;其中,外部写入请求由主设备接收,并将外部写入请求保存至主设备的缓存区。
进一步地,主设备包括:处理器,用于提取外部写入请求中的一个或多个数据,在对数据进行修改之后,根据修改后的数据来更新外部写入请求。
进一步地,主设备还用于检测由新设备同步的外部写入请求是否为有效请求,其中,在检测到外部写入请求中的数据没有发生修改的情况下,确定外部写入请求为有效请求,主设备根据该有效请求更新本地系统数据;在外部写入请求中的数据发生修改的情况下,确定外部写入请求为无效请求,主设备丢弃该外部写入请求。
通过本申请,采用在触发任意一个或多个新设备进入切换状态之后,新设备访问主设备的缓存区;读取主设备的缓存区中保存的外部写入请求,其中,外部写入请求由主设备接收,并将外部写入请求保存至主设备的缓存区;新设备根据外部写入请求更新本地系统数据。上述实施例通过实现主设备在接收到外部写入请求之后,首先在主设备的系统中划分出一个缓存区来保存接收到的外部写入请求,当写入请求的操作需要从主设备切换到新设备时,即在触发任意一个或多个新设备进行切换状态之后,不需要额外开发双写层来进行外部写入请求路由的控制,此时进入切换状态的新设备仅需要访问主设备的缓存区,在从主设备的缓存区读取已经保存的外部写入请求之后,可以根据读取到的外部写入请求来完成更新本地的系统数据,即实现了数据流从主设备切换到新设备的过程。由于上述方案中,新设备实现切换功能实质是访问缓存区的过程,因此,不需要中断外部写入请求的服务,而且由于上述新设备在读取到外部写入请求之后,外部写入请求自动执行获取到请求的设备系统进行本地数据的更新,不会导致系统瞬间不可用,从而避免了更新数据丢失的现象。由此可知,本申请解决了相关现有技术的实现异构系统的数据流的切换过程复杂,切换时需要中断对外写入请求,且容易丢失数据的问题,进而可以实现异构系统数据流的切换的过程简单且无需中断外部写入请求,同时保证系统的更新数据不丢失的效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据相关现有技术的数据流的切换系统的结构示意图;
图2是根据本申请实施例一的数据流的切换系统的结构示意图;
图3是根据本申请实施例二的数据流的切换系统的具体结构示意图;
图4是根据本申请实施例三的数据流的切换方法的流程图;以及
图5是根据本申请实施例四的数据流的切换装置的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
本申请通过图2提供了一个用于示例计算机体系结构的示意图。出于描述的目的,所绘的体系结构仅为合适环境的一个示例,并非对本申请的使用范围或功能提出任何局限。也不应将该计算系统解释为对图2所示的任一组件或其组合具有任何依赖或需求。
实施例一:
在其最基本的配置中,图2是根据本申请实施例一的数据流的切换系统的结构示意图。如图2所示,该数据流的切换系统包括:主设备以及一个或多个新设备,其中,主设备用于接收外部写入请求,并将外部写入请求保存至主设备的缓存区;一个或多个新设备分别与主设备建立通讯关系,用于在触发任意一个或多个新设备进入切换状态之后,新设备访问主设备的缓存区,以读取主设备的缓存区中保存的外部写入请求,并根据外部写入请求更新本地系统数据;其中,外部写入请求由主设备接收,并将外部写入请求保存至主设备的缓存区。
本申请上述实施例中的主设备在接收到外部写入请求之后,通过在主设备的系统中划分出一个缓存区来保存接收到的外部写入请求,当写入请求的操作需要从主设备切换到新设备时,即在触发任意一个或多个新设备进行切换状态之后,不需要额外开发双写层来进行外部写入请求路由的控制,此时进入切换状态的新设备仅需要访问主设备的缓存区,在从缓存区中读取保存的外部写入请求之后,根据读取到的外部写入请求来完成更新本地的系统数据,即实现了数据流从主设备切换到新设备的过程。由于上述方案中,新设备实现切换功能实质是访问缓存区的过程,因此,不需要中断外部写入请求的服务,而且由于上述新设备在读取到外部写入请求之后,外部写入请求自动执行获取到请求的设备系统进行本地数据的更新,不会导致系统瞬间不可用,从而避免了更新数据丢失的现象。由上述分析可知,本申请实施例一所提供的方案实现异构系统数据流的切换的过程简单易实现,且支持在进行系统切换过程中无需中断外部写入请求,同时在进行系统数据更新时不会造成数据不一致,保证了系统更新数据不丢失。另外,上述实施例一实现的对外写入请求的服务切换只有一次,实现过程简单。
尤其的,本申请上述实施例一多应用于计算机互联网领域中的海量数据服务和网络数据通信处理,具有明显效果。例如,当上述方案应用于处理微博上所有用户的数据的过程中,随着微博注册用户的数量增加,以及每个用户进行数据操作所占用的资源的增加,用于承载上述处理数据的主设备系统会由于硬件或者软件资源的有限,需要将外部写入请求的操作切换到其他新设备(例如备份设备)来完成,为了保证切换数据流的过程中无需中断外部写入请求,并保证更新数据不丢失,实施例一所提供的方案可以实现在触发新设备替换主设备的操作之后,新设备通过读取主设备上缓存的外部写入请求,从而根据读取到的外部写入请求来完成更新本地的系统数据,上述过程完成的是一个读取过程,而且系统可以在这个过程中完成自身固有的操作,因此用于处理微博数据的各个设备之间的切换过程无需中断外部写入请求,并保持了微博信息数据的一致性和流畅性。
由上可知,本申请上述实施例一所提供的方案实现了主系统的写入请求可以切换到多个不同的新系统的架构,每个新系统之间彼此独立,优选地,主系统可以通过划分不同的缓存区来实现为每个新系统提供不同的外部写入请求,即实现不同的新系统可以通过选择访问主设备上不同的缓存区来获取不同的外部访问请求,而切换得到不同的数据流。上述过程中,在新系统完成读取主系统的缓存区保存的外部访问请求之后,可以释放该缓存区以节省主设备资源,在缓存区被释放之前,需要保证每个缓存区中的外部写入请求已经被对应的新设备成功读取。另外,实施例一中主系统也可以仅提供一个缓存区,即每个新系统需要执行的外部访问请求相同,而且只有在主系统中的外部访问请求被每个新设备系统都成功读取之后,主系统才会释放该缓存区,以保证数据切换的成功率。
进一步地,在上述实施例一中,主设备可以包括:处理器,用于提取外部写入请求中的一个或多个数据,在对数据进行修改之后,根据修改后的数据来更新外部写入请求。主设备还用于检测由新设备同步的外部写入请求是否为有效请求,其中,在检测到外部写入请求中的数据没有发生修改的情况下,确定外部写入请求为有效请求,主设备根据该有效请求更新本地系统数据;在外部写入请求中的数据发生修改的情况下,确定外部写入请求为无效请求,主设备丢弃该外部写入请求。具体的,上述实施例中的数据包括参数、字段。
实施例二:
具体的,本申请可以根据图3所示的实施例二来对图1所示的实施例一进行详细描述,图3所示的实施例提供了一种一个主设备的系统和一个新设备的系统之间实现数据流的切换的系统方案。
图3所示的实施例二中,可以令主设备的系统为主系统A,令新设备的系统为新系统B,该实施例二进行主设备和新设备之间的系统切换时,主设备中的主系统A接收到外部发送的外部写入请求,主系统A处理该外部写入请求,并且将该外部写入请求的数据缓存在本地的一个缓存区里,当触发新系统B接入主系统A来执行外部写入请求的切换时,新系统B直接从主系统A的缓存区中读取外部写入请求的数据。
优选地,上述实施例二中,外部写入请求的数据流向可以实现从主系统A切换到新系统B,也可以从新系统B切换到主系统A,或者在两个系统之前交叉回环。这种回环保证当主系统A作为对外写入请求服务的主写入设备端时,新系统B同样可以更新数据,而当新系统B作为对外写入请求服务的主写入设备端时,主系统A也可以得到同步的写请求。
上述实施例二中,这种回环式的数据流方式在保证主系统和新系统都可以得到同一份外部写入请求的情况下,由于外部写入请求的同一性,因此存在导致一个外部写请求会无限次的循环在两个设备的系统之中,从而执行重复的写操作。为了避免上述问题,本申请实现在主设备的主系统A将接收到的外部写入请求保存至缓存区之前,可以通过处理器对主设备系统A接收到的外部写入请求的参数进行修改,在新设备的新系统B访问主系统A,读取已经修改后的外部写入请求,并处理完该请求之后,按照回环的规则同步给主系统A,此时修改后的外部写入请求为一个无效请求,当主系统A检测到该无效请求之后,将丢弃该外部写入请求。
由上可知,本申请实施例二的数据流的切换过程可以包括如下两种实施方式:
第一种以主设备的主系统A为外部写入请求的主服务端,此时进行外部写入请求服务切换的过程具体如下:
首先,主系统A接收外部写入请求,并更新自身系统数据,并将该外部写入请求(或者经过修改转换后)写到入缓存区。
然后,新设备访问主设备,新系统B从主设备的缓存区内读取外部写入请求的数据,并根据读取到的外部写入请求来更新新系统A的本地数据,同时可以将该外部写操作请求同步给外部的主系统A。
最后,主系统A接收新系统B同步来的外部写入请求,此时,主系统检测并判断同步到的外部写入请起是否为无效请求(如果该外部写入请求发生了修改则确定为无效请求),如果命中无效请求,则拒绝并丢弃;否则接收该外部写入请求,并根据该请求更新自身系统数据,但不写入缓存区。
第二种以新系统B为外部写入请求的主服务端(前提是此时新系统B独立接收到新的外部写入请求,该请求与访问主系统A的缓存区读取到的外部写入请求不同),此时进行外部写入请求服务切换的过程具体如下:
首先,新系统B接收到一个新的外部写入请求,并根据该新的外部写入请求来更新自身系统数据,同时将该写操作请求同步给外部的主系统A。
然后,主系统A接收新系统B同步的新的外部写入请求,此时,主系统A开始检测并判断新系统B同步的外部写入请求是否为无效请求(如果该外部写入请求发生了修改则确定为无效请求),如果命令无效请求,则拒绝并丢弃;否则接收该请求,进行后续的下步操作。
最后,主系统A接收该确定为有效请求的外部写入请求,并根据该有效请求更新主系统A自身的系统数据。
由上述两种切换方式可以确定,本申请实施例二中主设备的系统A接收到的外部写入请求包的来源可以包括两处:直接接收到外部传输的外部写入请求和回环时新系统B同步的外部写入请求,本申请对上述两种请求进行区分,从而使得主系统A可以实现确定外部写入请求的实际来源,主系统A仅处理有效的请求,避免了重复处理同一个外部写入请求,具体的,本申请可以通过修改外部写入请求包中的参数来实现区分过程,即在主系统A将接收到的外部写入请求保存至缓存区之前,修改外部写入请求包中的一个或多个数据(例如参数或字段)。例如,作为主写端的主系统A收到该外部写入请求V并处理后,将其修改为VA,再将这个数据包缓存在缓存区内等待发往新系统B,新系统B在收到并处理完这个请求包后,按照回环的规则同步给主系统A,此时,主系统A在接收到该请求包并检测到该外部写入请求中的数据(例如参数或字段)发生了变化,外部写入请求V变为VA后,即认为该外部写入请求VA为无效请求,并丢弃该请求包。从而保证了一个写入请求不会构成无限次循环。
通过上述图3中实施例二的描述,同理的,图2所示的实施例一中的主设备与多个新设备进行数据流转换的过程中同样可以通过修改外部写入请求的参数,来实现了避免一个外部写入请求的无限次循环。
优选地,本申请上述实施例一和二中的主设备系统中的缓存区可以是可控的,即主设备的处理器可以实现控制缓存区的打开或者关闭。例如,在实施例二中,当新系统B需要进行更新发布时,可以关闭缓存区来截断数据往新系统B的流向,同时又保证数据不会被丢弃,在新系统B更新完成后,重新打开缓存区接受数据,两个系统又能保持数据一致。这种实现开关式的流量控制,新系统可以无限制进行更新操作而不会存在同步数据不一致的缺陷。
本申请的原理可以使用其它通用或专用计算或通信环境或配置来操作。适用于本申请的众所周知的计算系统、环境和配置的示例包括但不限于,个人计算机、服务器,多处理器系统、基于微处理的系统、小型机、大型计算机、以及包括任一上述系统或设备的分布式计算环境。
实施例三:
图4是根据本申请实施例三的数据流的切换方法的流程图,如图4所示该方法包括如下步骤:
步骤S10,在触发任意一个或多个新设备进入切换状态之后,新设备访问主设备的缓存区。
步骤S30,读取主设备的缓存区中保存的外部写入请求,其中,外部写入请求由主设备接收,并将外部写入请求保存至主设备的缓存区。
步骤S50,新设备根据外部写入请求更新本地系统数据。
本申请上述实施例三所提供的方案中,主设备在接收到外部写入请求之后,会首先在主设备的系统中划分出一个缓存区来保存接收到的外部写入请求,当写入请求的操作需要从主设备切换到新设备时,即在触发任意一个或多个新设备进行切换状态之后,不需要额外开发双写层来进行外部写入请求路由的控制,此时进入切换状态的新设备仅需要访问主设备的缓存区,在从主设备的缓存区读取已经保存的外部写入请求之后,可以根据读取到的外部写入请求来完成更新本地的系统数据,即实现了数据流从主设备切换到新设备的过程。由于上述方案中,新设备实现切换功能实质是访问缓存区的过程,因此,不需要中断外部写入请求的服务,而且由于上述新设备在读取到外部写入请求之后,外部写入请求自动执行获取到请求的设备系统进行本地数据的更新,不会导致系统瞬间不可用,从而避免了更新数据丢失的现象。通过上述分析可知,本申请实施例三所提供的方案实现异构系统数据流的切换的过程简单易实现,且支持在进行系统切换过程中无需中断外部写入请求,同时在进行系统数据更新时不会造成数据不一致,保证了系统更新数据不丢失。
优选地,本申请上述实施例三中的主系统可以通过划分不同的缓存区来实现为每个新系统提供不同的外部写入请求,即实现不同的新系统可以通过选择访问主设备上不同的缓存区来获取不同的外部访问请求,而切换得到不同的数据流。上述过程中,在新系统完成读取主系统的缓存区保存的外部访问请求之后,可以释放该缓存区以节省主设备资源,在缓存区被释放之前,需要保证每个缓存区中的外部写入请求已经被对应的新设备成功读取。同样的,实施例一中主系统也可以仅提供一个缓存区,即每个新系统需要执行的外部访问请求相同,而且只有在主系统中的外部访问请求被每个新设备系统都成功读取之后,主系统才会释放该缓存区,以保证数据切换的成功率。
本申请上述实施例三中,在实施步骤S30中的将外部写入请求保存至主设备的缓存区之前,方法还可以包括如下步骤:
步骤S301,主系统可以通过处理器来提取外部写入请求中的一个或多个数据。
步骤S302,上述处理器可以对数据进行修改,并根据修改后的数据来更新外部写入请求。
具体的,由于外部写入请求的数据流向可以实现从主设备系统切换到新设备系统,也可以从新设备系统切换到主设备系统,或者在两个系统之前交叉回环。这种回环式的数据流方式在保证主设备系统和新设备系统都可以得到同一份外部写入请求的情况下,由于外部写入请求的同一性,因此可能存在导致一个外部写请求会无限次的循环在两个设备的系统之中,从而执行重复的写操作。为了避免上述问题,在本申请上述步骤的具体实施过程中,可以通过步骤S301和步骤S302来实现在主设备的主系统将接收到的外部写入请求保存至缓存区之前,可以通过处理器对主设备系统接收到的外部写入请求的参数进行修改,在新设备的新系统访问主系统,读取已经修改后的外部写入请求,并处理完该请求之后,如果外部写入请求按照回环的规则同步给主系统,此时可以确定该修改后的外部写入请求为一个无效请求。
另外,上述步骤S301和步骤S302中所实现的对写入请求中数据进行修改还可以是对外部写入请求进行加密的操作,从而不仅达到了可以防止外部写入请求构成无限次循环,而且也提高了外部写入请求的安全性。
本申请上述实施例三中,在实施步骤S50中的新设备根据外部写入请求更新本地系统数据之后,方法还可以包括如下步骤:
步骤S501,新设备将外部写入请求同步至主设备。具体的,在新设备的系统从主设备的缓存区内读取到外部写入请求的数据之后,会根据读取到的外部写入请求来更新新设备系统的本地数据,同时可以将该外部写操作请求同步给外部的主设备的系统。
步骤S503,主设备检测同步的外部写入请求是否为有效请求,其中,在检测到外部写入请求中的参数没有发生修改的情况下,确定外部写入请求为有效请求,主设备根据该有效请求更新本地系统数据;在检测到外部写入请求中的参数发生修改的情况下,确定外部写入请求为无效请求,主设备丢弃该外部写入请求。
具体的,本申请上述步骤S501和步骤S503实现的是在两个设备系统之间进行交叉回环式运行的过程中,主设备的系统在接收到新设备同步来的外部写入请求之后,需要对外部写入请求进行检测,如果检测到同步来的外部写入请求发生了修改,则确定该请求是一个无效请求,主设备丢弃该无效请求。
由上可知,主设备的系统接收到的外部写入请求包的来源可以包括:直接接收到外部传输的外部写入请求和回环时新设备的系统同步的外部写入请求,本申请对上述两种请求进行区分,从而使得主设备可以实现确定外部写入请求的实际来源,主设备仅处理有效的请求,避免了重复处理同一个外部写入请求,具体的,本申请可以通过修改外部写入请求包中的参数来实现区分过程,即在主设备的系统中将接收到的外部写入请求保存至缓存区之前,修改外部写入请求包中的一个或多个数据(例如参数或字段)。
例如,在以主设备的主系统作为外部写入请求的主服务端的情况下,作为主写端的主设备系统收到外部写入请求V并处理后,将其修改为VA,再将这个数据包缓存在缓存区内等待发往新设备的系统,新设备系统在收到并处理完这个请求包后,按照回环的规则同步给主设备的系统,此时,主设备的系统在接收到该请求包并检测到该外部写入请求的参数(例如字段)发生了变化,外部写入请求V变为VA后,即认为该外部写入请求VA为无效请求,并丢弃该请求包。从而保证了一个外部写入请求不会构成无限次循环。
优选地,本申请上述实施例三中,在步骤S50中的新设备根据外部写入请求更新本地系统数据之后,方法还可以执行如下另外一套实施步骤:
步骤S502,新设备接收新的外部写入请求,并根据新的外部写入请求更新本地系统数据。
步骤S504,新设备将新的外部写入请求同步至主设备。
步骤S506,主设备在检测到新的外部写入请求为有效请求之后,根据新的外部写入请求更新本地系统数据。
具体的,上述实施例三可以结合图3进行描述,在以新设备的系统B作为为外部写入请求的主服务端(前提是此时新系统B独立接收到一个新的外部写入请求,该请求与访问主系统A的缓存区读取到的外部写入请求不同)的情况下,通过步骤S502来实现新设备的系统B接收到一个新的外部写入请求,并更新自身系统数据,接着通过步骤S504来实现基于回环的原理将该新的外部写操作请求同步给外部主设备的系统A。主设备的系统A接收新系统B同步的外部写入请求,此时,在步骤S506中的实现过程中,主系统A开始检测并判断新系统B同步的外部写入请求是否为无效请求(如果该外部写入请求数据包中的一个或多个数据发生了修改则确定为无效请求),如果命令无效请求,则拒绝并丢弃;否则接收该请求,进行后续的下步操作。最后,主设备的系统A接收该确定为有效请求的外部写入请求,并根据该有效请求更新主设备的系统A自身的系统数据。
由上述步骤S501以及步骤S503实现的一种实施方式,以及步骤S502至步骤S506实现的另一种实施方式可知,外部写入请求的数据流向可以实现从主设备切换到新设备,也可以从新设备切换到主设备,或者在两个系统之前交叉回环。这种回环保证当主设备作为对外写入请求服务的主写入设备端时,新设备同样可以更新数据,而当新设备作为对外写入请求服务的主写入设备端时,主设备也可以得到同步的写请求。
本申请上述各个实施例中,在执行步骤S50新设备根据外部写入请求更新本地系统数据之前,方法还可以包括如下步步骤:
步骤S601,主设备接收到中止命令,以使得缓存区处于禁止读取状态。
步骤S602,在新设备检测到缓存区为禁止读取状态的情况下,停止更新本地系统数据。
上述步骤S601和步骤S602实现了主设备系统中的缓存区可以是可控的,即主设备的处理器可以实现控制缓存区的打开或者关闭。例如,当新设备需要进行更新发布时,可以关闭缓存区来截断数据往新设备系统的流向,同时又保证数据不会被丢弃,在新设备系统更新完成后,重新打开缓存区接受数据,两个系统又能保持数据一致。这种实现开关式的流量控制,新系统可以无限制进行更新操作而不会存在同步数据不一致的缺陷。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
优选地,本申请还可以提供一个用于执行上述实施例三的计算机程序以及保存上述计算机程序的载体,即本申请上述实施例可以通过一个合适的计算体系结构来进行符合自然规律的运行过程。另外,尽管在上述上下文中描述本申请,但上述用于实现执行步骤的计算机程序并不意味着是限制性的,所描述的动作和操作的各方面也可用硬件来实现。
本申请的原理可以使用其它通用或专用计算或通信环境或配置来操作。适用于本申请的众所周知的计算系统、环境和配置的示例包括但不限于,个人计算机、服务器,多处理器系统、基于微处理的系统、小型机、大型计算机、以及包括任一上述系统或设备的分布式计算环境。
实施例四:
图5是根据本申请实施例四的数据流的切换装置的结构示意图。如图5所示,该数据流的切换装置包括:访问装置102、读取装置104以及更新装置106。
其中,访问装置102,用于在触发任意一个或多个新设备进入切换状态之后,访问主设备的缓存区;读取装置104,与访问装置102建立连接,用于读取主设备的缓存区所保存的外部写入请求,其中,外部写入请求由主设备接收,并将外部写入请求保存至主设备的缓存区;更新装置106,与读取装置104建立连接,用于根据外部写入请求更新本地系统数据。
本申请上述实施例四中的数据流的切换装置可以一个独立的计算机服务器(即新设备),在访问装置102执行触发任意一个或多个新设备进行切换状态之后,不需要额外开发双写层来进行外部写入请求路由的控制,此时新设备进入切换状态,仅需要访问主设备的缓存区,在通过读取装置104从缓存区中读取保存的外部写入请求之后,可以通过更新装置106来执行根据读取到的外部写入请求来完成更新本地的系统数据,即实现了数据流从主设备切换到新设备的过程。由于上述方案中,新设备实现切换功能实质是访问缓存区的过程,因此,不需要中断外部写入请求的服务,而且由于上述新设备在读取到外部写入请求之后,外部写入请求自动执行获取到请求的设备系统进行本地数据的更新,不会导致系统瞬间不可用,从而避免了更新数据丢失的现象。由上述分析可知,本申请实施例四所提供的方案实现异构系统数据流的切换的过程简单易实现,且支持在进行系统切换过程中无需中断外部写入请求,同时在进行系统数据更新时不会造成数据不一致,保证了系统更新数据不丢失。另外,上述实施例四实现的对外写入请求的服务切换只有一次,实现过程简单。
优选地,本申请上述实施例四所提供的装置还可以包括:处理装置108,用于接收新的外部写入请求,并根据新的外部写入请求更新本地系统数据;同步装置110,用于将新的外部写入请求同步至主设备,以使得主设备在检测到新的外部写入请求为有效请求之后,根据新的外部写入请求更新本地系统数据。上述实施例中的处理装置和同步装置实现了外部写入请求的数据流向可以实现从新设备切换到主设备的方案。即本申请可以实现在两个系统之前交叉回环这种回环保证当主设备作为对外写入请求服务的主写入设备端时,新设备同样可以更新数据,而当新设备作为对外写入请求服务的主写入设备端时,主设备也可以得到同步的写请求。
另外,在具体的实施过程中,上述装置(即新设备)需要与主设备的系统建立通信连接,在主设备的系统中划分出一个缓存区来保存接收到的外部写入请求,当写入请求的操作需要从主设备切换到新设备时,进一步地,本申请上述主设备中可以提供一个中止装置,用于在新设备检测到缓存区为禁止读取状态的情况下,停止更新本地系统数据,其中,在主设备接收到中止命令,以使得缓存区处于禁止读取状态。
从以上的描述中,可以看出,本申请实现了如下技术效果:本申请中的新设备实现切换功能实质是访问缓存区的过程,因此,不需要中断外部写入请求的服务,而且由于上述新设备在读取到外部写入请求之后,外部写入请求自动执行获取到请求的设备系统进行本地数据的更新,不会导致系统瞬间不可用,从而避免了更新数据丢失的现象。通过上述分析可知,本申请实施例三所提供的方案实现异构系统数据流的切换的过程简单易实现,且支持在进行系统切换过程中无需中断外部写入请求,同时在进行系统数据更新时不会造成数据不一致,保证了系统更新数据不丢失。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种数据流的切换方法,其特征在于,包括:
在触发任意一个或多个新设备进入切换状态之后,所述新设备访问主设备的缓存区;
读取所述主设备的缓存区中保存的外部写入请求,其中,所述外部写入请求由所述主设备接收,并将所述外部写入请求保存至所述主设备的缓存区;
所述新设备根据所述外部写入请求更新本地系统数据;
其中,在所述新设备根据所述外部写入请求更新所述本地系统数据之后,所述方法还包括:所述主设备在接收到所述新设备同步来的所述外部写入请求之后,如果检测到同步来的所述外部写入请求发生了修改,则确定所述外部写入请求为无效请求,所述主设备丢弃所述无效请求。
2.根据权利要求1所述的方法,其特征在于,在将所述外部写入请求保存至所述主设备的缓存区之前,所述方法还包括:
提取所述外部写入请求中的一个或多个数据;
对所述数据进行修改,并根据修改后的数据来更新所述外部写入请求。
3.根据权利要求2所述的方法,其特征在于,在所述新设备根据所述外部写入请求更新本地系统数据之后,所述方法还包括:
所述新设备将所述外部写入请求同步至所述主设备;
所述主设备检测同步的所述外部写入请求是否为有效请求,其中,
在检测到所述外部写入请求中的数据没有发生修改的情况下,确定所述外部写入请求为有效请求,所述主设备根据该有效请求更新所述本地系统数据;
在检测到所述外部写入请求中的数据发生修改的情况下,确定所述外部写入请求为无效请求,所述主设备丢弃该外部写入请求。
4.根据权利要求1所述的方法,其特征在于,在所述新设备根据所述外部写入请求更新本地系统数据之后,所述方法还包括:
所述新设备接收新的外部写入请求,并根据所述新的外部写入请求更新本地系统数据;
所述新设备将所述新的外部写入请求同步至所述主设备;
所述主设备在检测到所述新的外部写入请求为有效请求之后,根据所述新的外部写入请求更新本地系统数据。
5.根据权利要求1至4中任意一项所述的方法,其特征在于,在所述新设备根据所述外部写入请求更新本地系统数据之前,所述方法还包括:
所述主设备接收到中止命令,以使得所述缓存区处于禁止读取状态;
在所述新设备检测到所述缓存区为禁止读取状态的情况下,停止更新本地系统数据。
6.一种数据流的切换装置,其特征在于,包括:
访问装置,用于在触发任意一个或多个新设备进入切换状态之后,访问主设备的缓存区;
读取装置,与所述访问装置建立连接,用于读取所述主设备的缓存区所保存的外部写入请求,其中,所述外部写入请求由所述主设备接收,并将所述外部写入请求保存至所述主设备的缓存区;
更新装置,与所述读取装置建立连接,用于根据所述外部写入请求更新本地系统数据;
其中,在所述新设备根据所述外部写入请求更新所述本地系统数据之后,所述主设备在接收到所述新设备同步来的所述外部写入请求之后,如果检测到同步来的所述外部写入请求发生了修改,则确定所述外部写入请求为无效请求,所述主设备丢弃所述无效请求。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
处理装置,用于接收新的外部写入请求,并根据所述新的外部写入请求更新本地系统数据;
同步装置,与所述处理装置建立连接,用于将所述新的外部写入请求同步至所述主设备,以使得所述主设备在检测到所述新的外部写入请求为有效请求之后,根据所述新的外部写入请求更新本地系统数据。
8.一种数据流的切换系统,其特征在于,包括:
主设备,用于接收外部写入请求,并将所述外部写入请求保存至所述主设备的缓存区;
一个或多个新设备,分别与所述主设备建立通讯关系,用于在触发任意一个或多个新设备进入切换状态之后,所述新设备访问主设备的缓存区,以读取所述主设备的缓存区中保存的外部写入请求,并根据所述外部写入请求更新本地系统数据;
其中,所述外部写入请求由所述主设备接收,并将所述外部写入请求保存至所述主设备的缓存区;
其中,在所述新设备根据所述外部写入请求更新所述本地系统数据之后,所述主设备在接收到所述新设备同步来的所述外部写入请求之后,如果检测到同步来的所述外部写入请求发生了修改,则确定所述外部写入请求为无效请求,所述主设备丢弃所述无效请求。
9.根据权利要求8所述的系统,其特征在于,所述主设备包括:
处理器,用于提取所述外部写入请求中的一个或多个数据,在对所述数据进行修改之后,根据修改后的数据来更新所述外部写入请求。
10.根据权利要求9所述的系统,其特征在于,所述主设备还用于检测由所述新设备同步的所述外部写入请求是否为有效请求,其中,在检测到所述外部写入请求中的数据没有发生修改的情况下,确定所述外部写入请求为有效请求,所述主设备根据该有效请求更新所述本地系统数据;在所述外部写入请求中的数据发生修改的情况下,确定所述外部写入请求为无效请求,所述主设备丢弃该外部写入请求。
CN201210346656.XA 2012-09-18 2012-09-18 数据流的切换方法、装置及系统 Active CN103678163B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210346656.XA CN103678163B (zh) 2012-09-18 2012-09-18 数据流的切换方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210346656.XA CN103678163B (zh) 2012-09-18 2012-09-18 数据流的切换方法、装置及系统

Publications (2)

Publication Number Publication Date
CN103678163A CN103678163A (zh) 2014-03-26
CN103678163B true CN103678163B (zh) 2017-11-10

Family

ID=50315792

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210346656.XA Active CN103678163B (zh) 2012-09-18 2012-09-18 数据流的切换方法、装置及系统

Country Status (1)

Country Link
CN (1) CN103678163B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109445992A (zh) * 2018-11-01 2019-03-08 郑州云海信息技术有限公司 一种双活系统数据管理方法及相关装置
CN110568995A (zh) * 2019-08-30 2019-12-13 珠海格力电器股份有限公司 数据迁移方法及系统
CN111367495B (zh) * 2020-03-06 2023-03-28 电子科技大学 一种异步先入先出的数据缓存控制器
CN112783982B (zh) * 2021-02-07 2021-09-10 腾讯科技(深圳)有限公司 数据处理方法、装置、系统、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1584859A (zh) * 2003-08-20 2005-02-23 松下电器产业株式会社 数据传送装置和数据传送方法
CN101031889A (zh) * 2004-08-12 2007-09-05 意大利电信股份公司 通过通信网络更新数据集的系统、方法和设备
CN101068140A (zh) * 2007-06-27 2007-11-07 中兴通讯股份有限公司 一种实现主/备pci设备切换的装置和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100229029A1 (en) * 2009-03-06 2010-09-09 Frazier Ii Robert Claude Independent and dynamic checkpointing system and method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1584859A (zh) * 2003-08-20 2005-02-23 松下电器产业株式会社 数据传送装置和数据传送方法
CN101031889A (zh) * 2004-08-12 2007-09-05 意大利电信股份公司 通过通信网络更新数据集的系统、方法和设备
CN101068140A (zh) * 2007-06-27 2007-11-07 中兴通讯股份有限公司 一种实现主/备pci设备切换的装置和方法

Also Published As

Publication number Publication date
CN103678163A (zh) 2014-03-26

Similar Documents

Publication Publication Date Title
CN103346981B (zh) 虚拟交换方法、相关装置和计算机系统
CN105549904B (zh) 一种应用于存储系统中的数据迁移方法及存储设备
CN107819662B (zh) 一种应用于云雾计算网络的服务功能链实时迁移方法
CN103020257B (zh) 数据操作的实现方法和装置
CN103179053B (zh) 用于提供数据管理服务的系统和方法
CN103678163B (zh) 数据流的切换方法、装置及系统
RU2653292C2 (ru) Перенос служб через границы кластеров
CN109831500A (zh) Kubernetes集群中配置文件与Pod的同步方法
CN106911524A (zh) 一种ha实现方法及装置
CN107179878A (zh) 基于应用优化的数据存储的方法和装置
CN104601680B (zh) 一种资源管理方法及装置
CN113196237A (zh) 计算系统中的容器迁移
WO2018137327A1 (zh) 一种主备机数据传递方法、控制节点以及数据库系统
CN106406986A (zh) 一种资源共享方法及装置
CN106878343B (zh) 一种云计算环境下提供网络安全即服务的系统
CN107678835A (zh) 一种数据传输方法及系统
CN106649600B (zh) 一种迁移文件权限的方法、装置以及系统
CN109144972A (zh) 一种数据迁移的方法以及数据节点
CN106557444A (zh) 实现sr-iov网卡的方法和装置、实现动态迁移的方法和装置
CN107026875A (zh) 多个虚拟桌面架构的融合方法及装置
CN103763403B (zh) 报文流量控制方法及相关装置和计算节点
CN110289993A (zh) 一种连接池管理方法、装置、设备及转接系统
US20080162754A1 (en) Storage system, program and method
CN107147533A (zh) 一种基于sdn框架的流表配置下发方法及系统
CN106446723B (zh) 安卓移动终端数据隔离方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180930

Address after: 100098 Beijing Haidian District Zhichun Road 49 No. 3 West 309

Patentee after: Tencent cloud computing (Beijing) limited liability company

Address before: 518000 East 403 room, Sai Ge science and Technology Park, Futian District Zhenxing Road, Shenzhen, Guangdong, China, 2

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.

TR01 Transfer of patent right