数据迁移方法和装置、服务器、网络系统与流程

文档序号:29926172发布日期:2022-05-07 11:12阅读:70来源:国知局
数据迁移方法和装置、服务器、网络系统与流程

1.本技术涉及数据存储技术领域,尤其涉及一种数据迁移方法和装置、服务器、网络系统。


背景技术:

2.数据通道产品多用于上游系统发布消息下游系统订阅使用消息,消息在数据通道中以一种先进先出队列的形式进行存储,下游任务也是顺序读取数据并处理。
3.当前大部分的消息通道产品的数据高可靠都是通过数据冗余实现,即业务数据在集群中多份副本存储。当出现部分节点故障或节点扩缩容时就需要进行必要数据副本迁移,以保证原有数据的高可靠特性。现有技术的数据副本迁移数据量较大,迁移速度较慢,并且会消耗大量的磁盘io、网络带宽等资源,势必会对原有正常业务产生冲击。


技术实现要素:

4.本技术实施例提供了一种数据迁移方法和装置、服务器、网络系统,在保证上下游数据能够有效传输且不会发生数据遗失问题的前提下,能够针对消费者的不同消费情况选择不同迁移策略,有助于提升副本迁移完成的速度和降低存储数据的磁盘的io资源消耗,进而减少副本迁移对正常业务的影响。
5.第一方面,本技术实施例提供了一种数据迁移方法,所述数据迁移方法包括:响应迁移第一服务器中的原始数据队列的数据的迁移指令,预测消费者读取所述原始数据队列的第一数据的总次数,其中,所述第一数据为收到所述迁移指令时所述原始数据队列中已写入的数据;当所述总次数小于或等于设定次数时,选择第一迁移策略来确定开始迁移位置,其中,所述第一迁移策略的开始迁移位置位于所述原始数据队列的最早数据位置的下游;按照设定顺序将所述原始数据队列中的数据拷贝至第二服务器中以形成迁移数据队列,其中,所述设定顺序为从所选迁移策略的开始迁移位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序。
6.在上述方案中,当接收到迁移第一服务器中的原始数据队列中的数据的迁移指令时,可先预测消费者在收到迁移指令后再次读取原始数据队列的第一数据的总次数,若总次数小于或等于设定次数,即消费者读取原始数据队列的第一数据的次数较少,则选择第一迁移策略来确定开始迁移位置,并按照从所选迁移策略的开始迁移位置至生产者在迁移过程中最新写入原始数据队列的数据的位置的顺序,将原始数据队列中的数据拷贝至第二服务器中以形成迁移数据队列,由于第一迁移策略的开始迁移位置位于原始数据队列的最早数据位置的下游,这样减少了第一数据的拷贝数量,并且由于数据先存储至页面缓存中,一定时间后页面缓存中的数据再存入磁盘中,即未拷贝的数据一般是位于磁盘中的数据,从而增大了从页面缓存中读取数据的比例,使得发生真正的磁盘读取的概率减小,从而降低存储数据的磁盘的io资源消耗,减少副本迁移对正常业务的影响,并且不需要迁移原始数据队列中所有的数据,从而能够提升副本迁移完成的速度。
7.在一种可能的实现方式中,所述选择第一迁移策略来确定开始迁移位置,具体包括:获取当前时刻所述原始数据队列的最早活跃消费者的读取位置和最新数据位置,其中,所述当前时刻为确定所述总次数小于所述设定次数的时刻,所述最新数据位置为所述生产者在所述当前时刻写入所述原始数据队列的数据的位置;当所述最早活跃消费者的读取位置与所述最新数据位置之间的距离小于或等于设定距离时,确定所述第一迁移策略的开始迁移位置为所述最新数据位置。
8.也就是说,在该实现方式中,确定总次数小于设定次数的当前时刻原始数据队列中的最早活跃消费者的读取位置与最新数据位置之间的距离小于或等于设定距离,最早活跃消费者为原始数据队列的实时消费者,由于最早活跃消费者离最新数据位置最远,因此当其为实时消费者时,其他活跃消费者也均为实时消费者,故可确定第一迁移策略的开始迁移位置为原始数据队列的最新数据位置,这样无需拷贝原始数据队列的最早数据位置与确定总次数小于设定次数时刻的最新数据位置之间的第一数据,能够提升副本迁移完成的速度,并且这样主要是从页面缓存中读取数据,减小了发生真正的磁盘读取的概率,降低存储数据的磁盘的io资源消耗,使得磁盘io资源可主要用于正常业务,减少了副本迁移对正常业务的影响。
9.在一种可能的实现方式中,当所述开始迁移位置为所述最新数据位置时,所述数据迁移方法还包括:在数据迁移过程中获取所述原始数据队列的最早活跃消费者的读取位置;当所述迁移数据队列拷贝到所述生产者最新写入所述原始数据队列的数据时,确定数据迁移过程中所述原始数据队列的最早活跃消费者的读取位置进入所述原始数据队列的第二数据的范围内,完成数据迁移,其中,所述第二数据为所述迁移数据队列已拷贝的数据。
10.也就是说,在该实现方式中,由于确定第一迁移策略的开始迁移位置为原始数据队列的最新数据位置,该原始数据队列中的所有消费者为原始数据队列的实时消费者,当迁移数据队列拷贝到所述生产者最新写入所述原始数据队列的数据时,只要迁移过程中的最早活跃消费者的读取位置进入原始数据队列的已被迁移数据队列拷贝的第二数据的范围,就可保证原始数据队列的所有活跃消费者的读取位置均进入第二数据的范围内,即可完成数据迁移。
11.在一种可能的实现方式中,所述数据迁移方法还包括:当所述最早活跃消费者的读取位置与所述最新数据位置之间的距离大于设定距离时,确定所述第一迁移策略的开始迁移位置为所述最早活跃消费者的读取位置。
12.也就是说,在该实现方式中,当原始数据队列中的最早活跃消费者的读取位置与最新数据位置之间的距离大于设定距离时,即在所有活跃消费者中至少最早活跃消费者为非实时消费者,其在原始数据队列的第一数据位置停留时间较长,此时,可确定第一迁移策略的开始迁移位置为最早活跃消费者的读取位置,使得最早活跃消费者在数据迁移的整个过程中能够一直正常工作,并且无需拷贝原始数据队列的最早数据位置与最早活跃消费者的读取位置之间的第一数据,能够提升副本迁移完成的速度,一定程度上可降低发生真实磁盘读取的概率,从而降低存储数据的磁盘的io资源消耗,减少副本迁移对正常业务的影响。
13.在一种可能的实现方式中,当所述开始迁移位置为所述最早活跃消费者的读取位
置,所述数据迁移方法还包括:确定所述迁移数据队列是否拷贝到所述生产者最新写入所述原始数据队列的数据,完成数据迁移。
14.也就是说,在该实现方式中,由于第一迁移策略的开始迁移位置为最早活跃消费者的读取位置,这样在数据迁移过程中迁移数据队列拷贝到生产者最新写入所述原始数据队列的数据时,可保证所有活跃消费者位于原始数据队列的已被拷贝的第二数据的范围内,从而完成数据迁移。
15.在一种可能的实现方式中,所述获取所述原始数据队列的最早活跃消费者的读取位置,具体包括:获取每个活跃消费者在读取的所有数据队列中的读取位置,其中,所述所有数据队列包括所述原始数据队列;将所述每个活跃消费者与所述每个活跃消费者在读取的所述所有数据队列中的读取位置的映射结构转存为每个数据队列与所述每个数据队列中的所有活跃消费者的读取位置的映射结构,从而获得所述原始数据队列的所有活跃消费者的读取位置;比较所述原始数据队列中的所有活跃消费者的读取位置,以获取所述原始数据队列的最早活跃消费者的读取位置。
16.也就是说,在该实现方式中,无法直接获得原始数据队列存在的所有活跃消费者以及该些活跃消费者的读取位置,但可以获得每个活跃消费者读取的数据队列以及在数据队列中的读取位置,这样可先获取每个活跃消费者在读取的所有数据队列中的读取位置,然后将每个活跃消费者与每个活跃消费者在读取的所有数据队列中的读取位置的映射结构/对应关系转存为每个数据队列与每个数据队列中的所有活跃消费者的读取位置的映射结构/对应关系,从而获得了原始数据队列中存在的活跃消费者及其读取位置,再比较原始数据队列中的所有活跃消费者的读取位置,即可获取原始数据队列中的最早活跃消费者的读取位置。
17.在一种可能的实现方式中,在所述获取每个活跃消费者在读取的所有数据队列中的读取位置前,所述获取所述原始数据队列的最早活跃消费者的读取位置,还包括:获取所有消费者在读取的所述数据队列中的读取位置,其中,所述所有消费者包括非活跃消费者和活跃消费者;查询所述所有消费者的读取状态以将所述所有消费者中的每个消费者划分为所述活跃消费者或所述非活跃消费者,其中,所述活跃消费者的读取状态为正在工作中,所述非活跃消费者的读取状态为暂停;将所述非活跃消费者和所述非活跃消费者在读取的所述数据队列中的读取位置的信息去除。
18.也就是说,在该实现方式中,不方便直接获取所有活跃消费者在读取的所有数据队列中的读取位置,可先获取所有消费者在读取的所述数据队列中的读取位置,所有消费者包括非活跃消费者和活跃消费者。然后,查询所有消费者的读取状态以将消费者划分为活跃消费者和非活跃消费者,活跃消费者的读取状态为正在工作中,非活跃消费者的读取状态为暂停。接着,将非活跃消费者和非活跃消费者在读取的数据队列中的读取位置的信息去除,即可获取每个活跃消费者在读取的所有数据队列中的读取位置。
19.在一种可能的实现方式中,在完成数据迁移后,所述数据迁移方法还包括:确定所述消费者有读取所述原始数据队列的未迁移的所述第一数据的情形,按照设定策略删除所述原始数据队列;或,确定所述消费者没有读取所述原始数据队列的未迁移的所述第一数据的情形,将所述原始数据队列删除。
20.也就是说,在该实现方式中,当选择第一迁移策略来确定开始迁移位置时,由于第
一迁移策略的开始迁移位置位于原始数据队列的最早数据位置的下游,因此原始数据队列中的最早数据位置至开始迁移位置之间的数据没有拷贝到迁移数据队列中,在完成数据迁移后需要判断原始数据队列中未迁移的第一数据是否有被消费者读取的情形,如果没有读取的情形,可以删除原始数据队列;如果有读取的情形,则可按照设定策略删除原始数据队列,设定策略例如可为在消费者读取未迁移的第一数据后再删除原始数据队列,保证不会影响正常工作。
21.在一种可能的实现方式中,所述数据迁移方法包括:当所述总次数大于设定次数时,则选择第二迁移策略来确定开始迁移位置,其中,所述第二迁移策略的开始迁移位置为所述原始数据队列的最早数据位置。
22.也就是说,在该实现方式中,当消费者读取原始数据队列的第一数据的总次数大于设定次数时,由于选择第一迁移策略完成数据迁移后,虽然可按照设定策略删除原始数据队列,以保证消费者在迁移完成后还可以再次读取原始数据队列中未迁移的第一数据,但使消费者从迁移数据队列切换至原始数据队列的消耗较大,因此在消费者读取原始数据队列的第一数据的次数较多时,为了降低消耗,可选择第二迁移策略,以便从原始数据队列的最早数据位置开始迁移,保证消费者在迁移数据队列中能够完成所有读取业务。
23.在一种可能的实现方式中,所述数据迁移方法还包括:确定所述迁移数据队列拷贝到所述生产者最新写入所述原始数据队列的数据,完成数据迁移。
24.也就是说,在该实现方式中,当选择第二迁移策略从原始数据队列的最早数据位置开始迁移时,迁移数据队列拷贝到生产者最新写入原始数据队列的数据时,可保证迁移数据队列拷贝到原始数据队列的所有数据,则完成数据迁移。
25.在一种可能的实现方式中,所述数据迁移方法还包括:在完成数据迁移后将所述原始数据队列删除。
26.也就是说,在该实现方式中,由于第二迁移策略的开始迁移位置为原始数据队列的最早数据位置,迁移数据队列拷贝到生产者最新写入原始数据队列的数据而完成数据迁移后,迁移数据队列可拷贝到原始数据队列的所有数据,因此在完成数据迁移后可将原始数据队列立即删除,以便释放内存。
27.第二方面,本技术实施例提供了一种数据迁移方法,所述数据迁移方法包括:响应迁移第一服务器中的原始数据队列的数据的迁移指令,获取当前时刻所述原始数据队列的最早活跃消费者的读取位置和最新数据位置,其中,所述当前时刻为收到所述迁移指令的时刻,所述最新数据位置为生产者在所述当前时刻写入所述原始数据队列的数据的位置;当所述最早活跃消费者的读取位置与所述最新数据位置之间的距离小于或等于设定距离时,将所述原始数据队列中的数据按照从所述最新数据位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序拷贝至第二服务器中以形成迁移数据队列;和/或,当所述最早活跃消费者的读取位置与所述最新数据位置之间的距离大于设定距离时,将所述原始数据队列中的数据按照从所述最早活跃消费者的读取位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序拷贝至第二服务器中以形成迁移数据队列。
28.在上述方案中,当收到迁移指令的当前时刻的原始数据队列的最早活跃消费者的读取位置与最新数据位置之间的距离小于或等于设定距离时,原始数据队列中的所有活跃
消费者为实时消费者,因此从所述原始数据队列的最新数据位置开始迁移数据;当收到迁移指令的当前时刻的原始数据队列中的最早活跃消费者的读取位置与最新数据位置之间的距离大于设定距离时,至少原始数据队列中的最早活跃消费者不是实时消费者,因此从所述原始数据队列中的最早活跃消费者的读取位置处开始迁移数据,并且,将第一服务器中的的原始数据队列的数据按照从开始迁移位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序拷贝至第二服务器中以形成迁移数据队列,相对于从最早数据位置开始迁移数据的方案,由于生产者写入原始数据队列的数据先存放至页面缓存中一定时间后再由页面缓存中存入磁盘中,所以本技术实施例的数据迁移方法主要从页面缓存中拷贝数据进行迁移,这样降低了从磁盘中拷贝第一数据的概率,即降低了发生真正的磁盘读取的概率,减少了副本迁移对磁盘的正常业务的影响,并且不需要迁移原始数据队列的所有数据,能够提升副本迁移完成的速度。
29.在一种可能的实现方式中,当从所述最新数据位置开始迁移数据时,所述数据迁移方法包括:在数据迁移过程中获取所述原始数据队列的最早活跃消费者的读取位置;当所述迁移数据队列拷贝到所述生产者最新写入所述原始数据队列的数据时,确定数据迁移过程中所述原始数据队列的最早活跃消费者的读取位置进入所述原始数据队列的第二数据范围内,完成数据迁移,其中,所述第二数据为所述迁移数据队列已拷贝的数据。
30.也就是说,在该实现方式中,由于开始迁移位置为原始数据队列的最新数据位置,原始数据队列中的所有消费者为实时消费者,当迁移数据队列拷贝到所述生产者最新写入所述原始数据队列的数据时,只要迁移过程中距离最新数据位置最远的最早活跃消费者的读取位置进入迁移数据队列的范围,就可保证原始数据队列的所有活跃消费者的读取位置均进入迁移数据队列的范围内,即可完成数据迁移。
31.在一种可能的实现方式中,当从所述最早活跃消费者的读取位置开始迁移数据时,所述数据迁移方法还包括:确定所述迁移数据队列拷贝到生产者最新写入所述原始数据队列的数据,完成数据迁移。
32.也就是说,在该实现方式中,由于开始迁移位置为最早活跃消费者的读取位置,这样在数据迁移过程中迁移数据队列拷贝到生产者最新写入所述原始数据队列的数据时,可保证所有活跃消费者位于迁移数据队列的范围内,从而完成数据迁移。
33.在一种可能的实现方式中,所述获取所述原始数据队列中的最早活跃消费者的读取位置,具体包括:获取每个活跃消费者在读取的所有数据队列中的读取位置,其中,所述所有数据队列包括所述原始数据队列;将所述每个活跃消费者与所述每个活跃消费者在读取的所述所有数据队列中的读取位置的映射结构转存为每个数据队列与所述每个数据队列中的所有活跃消费者的读取位置的映射结构,从而获得所述原始数据队列的所有活跃消费者的读取位置;比较所述原始数据队列中的所有活跃消费者的读取位置,以获取所述原始数据队列的最早活跃消费者的读取位置。
34.也就是说,在该实现方式中,无法直接获得原始数据队列存在的所有活跃消费者以及该些活跃消费者的读取位置,但可以获得每个活跃消费者读取的数据队列以及在数据队列中的读取位置,这样可将每个活跃消费者与每个活跃消费者在读取的所有数据队列中的读取位置的映射结构/对应关系,转存为每个数据队列与每个数据队列中的所有活跃消费者的读取位置的映射结构/对应关系,从而获得了原始数据队列中存在的活跃消费者及
其读取位置,再比较原始数据队列中的所有活跃消费者的读取位置,即可获取原始数据队列中的最早活跃消费者的读取位置。
35.在一种可能的实现方式中,在所述获取每个活跃消费者在读取的所有数据队列中的读取位置前,所述获取所述原始数据队列的最早活跃消费者的读取位置,还包括:获取所有消费者在读取的所述数据队列中的读取位置,其中,所述所有消费者包括非活跃消费者和活跃消费者;查询所述所有消费者的读取状态以将所述所有消费者中的每个消费者划分为所述活跃消费者和所述非活跃消费者,其中,所述活跃消费者的读取状态为正在工作中,所述非活跃消费者的读取状态为暂停;将所述非活跃消费者和所述非活跃消费者在读取的所述数据队列中的读取位置的信息去除。
36.也就是说,在该实现方式中,不方便直接获取所有活跃消费者在读取的所有数据队列中的读取位置,可先获取所有消费者在读取的所述数据队列中的读取位置,所有消费者包括非活跃消费者和活跃消费者。然后,查询所有消费者的读取状态以将消费者划分为活跃消费者和非活跃消费者,活跃消费者的读取状态为正在工作中,非活跃消费者的读取状态为暂停。接着,将非活跃消费者和非活跃消费者在读取的数据队列中的读取位置的信息去除,即可获取每个活跃消费者在读取的所有数据队列中的读取位置。
37.在一种可能的实现方式中,在完成数据迁移后,所述数据迁移方法还包括:确定所述消费者有读取所述原始数据队列的未迁移的第一数据的情形,按照设定策略删除所述原始数据队列,其中,所述第一数据为收到所述迁移指令时所述原始数据队列中已写入的数据;或,确定所述消费者没有读取所述原始数据队列的未迁移的所述第一数据的情形,将所述原始数据队列删除。
38.也就是说,在该实现方式中,在完成数据迁移后需要判断原始数据队列中未迁移的第一数据是否有被消费者再次读取的情形,如果没有再次读取的情况,可以立即删除原始数据队列;如果有再次读取的情形,则可按照设定策略删除原始数据队列,例如在消费者再次读取未迁移的第一数据后再删除原始数据队列,从而保证不会影响正常工作。
39.第三方面,本技术实施例提供了一种数据迁移装置,所述数据迁移装置包括:预测单元,用于响应迁移第一服务器中的原始数据队列的数据的迁移指令,预测所述消费者读取所述原始数据队列的第一数据的总次数,其中,所述第一数据为收到所述迁移指令时所述原始数据队列中已写入的数据;选择单元,用于在所述总次数小于或等于设定次数时,选择第一迁移策略来确定开始迁移位置,其中,所述第一迁移策略的开始迁移位置位于所述原始数据队列的最早数据位置的下游;迁移单元,用于按照设定顺序将所述原始数据队列中的数据拷贝至第二服务器中以形成迁移数据队列,其中,所述设定顺序为从所选迁移策略的开始迁移位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序。
40.在一种可能的实现方式中,所述选择单元包括:获取模块,用于获取当前时刻所述原始数据队列的最早活跃消费者的读取位置和最新数据位置,其中,所述当前时刻为确定所述总次数小于所述设定次数的时刻,所述最新数据位置为所述生产者在所述当前时刻写入所述原始数据队列的数据的位置;确定模块,用于在所述最早活跃消费者的读取位置与所述最新数据位置之间的距离小于或等于设定距离时,确定所述第一迁移策略的开始迁移位置为所述最新数据位置。
41.在一种可能的实现方式中,当所述开始迁移位置为所述最新数据位置时,所述获取模块还用于在数据迁移过程中获取所述原始数据队列的最早活跃消费者的读取位置;所述数据迁移装置还包括:第一确定单元,用于在所述迁移数据队列拷贝到所述生产者最新写入所述原始数据队列的数据时,确定数据迁移过程中所述原始数据队列的最早活跃消费者的读取位置进入所述原始数据队列的第二数据的范围内,完成数据迁移,其中,所述第二数据为所述迁移数据队列已拷贝的数据。
42.在一种可能的实现方式中,所述确定模块,还用于在所述最早活跃消费者的读取位置与所述最新数据位置之间的距离大于设定距离时,确定所述第一迁移策略的开始迁移位置为所述最早活跃消费者的读取位置。
43.在一种可能的实现方式中,当所述开始迁移位置为所述最早活跃消费者的读取位置时,所述数据迁移装置还包括:第二确定单元,用于确定所述迁移数据队列拷贝到所述生产者最新写入所述原始数据队列的数据,完成数据迁移。
44.在一种可能的实现方式中,所述获取模块包括:第一获取子模块,用于获取每个活跃消费者在读取的所有数据队列中的读取位置,其中,所述所有数据队列包括所述原始数据队列;转存子模块,用于将所述每个活跃消费者与所述每个活跃消费者在读取的所述所有数据队列中的读取位置的映射结构转存为每个数据队列与所述每个数据队列中的所有活跃消费者的读取位置的映射结构,从而获得所述原始数据队列的所有活跃消费者的读取位置;比较获取子模块,用于比较所述原始数据队列中的所有活跃消费者的读取位置,以获取所述原始数据队列的最早活跃消费者的读取位置。
45.在一种可能的实现方式中,所述获取模块还包括:第二获取子模块,用于获取所有消费者在读取的所述数据队列中的读取位置,其中,所述所有消费者包括非活跃消费者和活跃消费者;查询子模块,用于查询所述所有消费者的读取状态以将所述所有消费者中的每个消费者划分为所述活跃消费者或所述非活跃消费者,其中,所述活跃消费者的读取状态为正在工作中,所述非活跃消费者的读取状态为暂停;去除子模块,用于将所述非活跃消费者和所述非活跃消费者在读取的所述数据队列中的读取位置的信息去除。
46.在一种可能的实现方式中,在完成数据迁移后,所述数据迁移装置还包括:第一删除单元,用于确定所述消费者有读取所述原始数据队列的未迁移的所述第一数据的情形,按照设定策略删除所述原始数据队列;或,用于确定所述消费者没有读取所述原始数据队列的未迁移的所述第一数据的情形,将所述原始数据队列删除。
47.在一种可能的实现方式中,所述选择单元,还用于在所述总次数大于设定次数时,选择第二迁移策略来确定开始迁移位置,其中,所述第二迁移策略的开始迁移位置为所述原始数据队列的最早数据位置。
48.在一种可能的实现方式中,所述数据迁移装置还包括:第三确定单元,用于确定所述迁移数据队列拷贝到所述生产者最新写入所述原始数据队列的数据,完成数据迁移。
49.在一种可能的实现方式中,所述数据迁移装置还包括:第二删除单元,用于在完成数据迁移后将所述原始数据队列删除。
50.第四方面,本技术实施例提供了一种数据迁移装置,所述数据迁移装置包括:获取模块,用于响应迁移第一服务器中的原始数据队列的数据的迁移指令,获取当前时刻所述原始数据队列的最早活跃消费者的读取位置和最新数据位置,其中,所述当前时刻为收到
所述迁移指令的时刻,所述最新数据位置为生产者在所述当前时刻写入所述原始数据队列的数据的位置;迁移模块,用于在所述最早活跃消费者的读取位置与所述最新数据位置之间的距离小于或等于设定距离时,将所述原始数据队列中的数据按照从最新数据位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序拷贝至第二服务器中以形成迁移数据队列;和/或,用于在所述最早活跃消费者的读取位置与所述最新数据位置之间的距离大于设定距离时,将所述原始数据队列中的数据按照从所述最早活跃消费者的读取位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序拷贝至第二服务器中以形成迁移数据队列。
51.在一种可能的实现方式中,当从所述最新数据位置开始迁移数据时,所述获取模块还用于在数据迁移过程中获取所述原始数据队列的最早活跃消费者的读取位置;所述数据迁移装置还包括:第一确定模块,用于在所述迁移数据队列拷贝到生产者最新写入所述原始数据队列的数据时,确定数据迁移过程中所述原始数据队列的最早活跃消费者的读取位置进入所述原始数据队列的第二数据范围内,完成数据迁移,其中,所述第二数据为所述迁移数据队列已拷贝的数据。
52.在一种可能的实现方式中,当从所述最早活跃消费者的读取位置开始迁移数据时,所述数据迁移装置还包括:第二确定模块,用于确定所述迁移数据队列拷贝到所述生产者最新写入所述原始数据队列的数据,完成数据迁移。
53.在一种可能的实现方式中,所述获取模块包括:第一获取子模块,用于获取每个活跃消费者在读取的所有数据队列中的读取位置,其中,所述所有数据队列包括所述原始数据队列;转存子模块,用于将所述每个活跃消费者与所述每个活跃消费者在读取的所述所有数据队列中的读取位置的映射结构转存为每个数据队列与所述每个数据队列中的所有活跃消费者的读取位置的映射结构,从而获得所述原始数据队列的所有活跃消费者的读取位置;比较获取子模块,用于比较所述原始数据队列中的所有活跃消费者的读取位置,以获取所述原始数据队列的最早活跃消费者的读取位置。
54.在一种可能的实现方式中,所述获取模块还包括:第二获取子模块,用于获取所有消费者在读取的所述数据队列中的读取位置,其中,所述所有消费者包括非活跃消费者和活跃消费者;查询子模块,用于查询所述所有消费者的读取状态以将所述所有消费者中的每个消费者划分为所述活跃消费者或所述非活跃消费者,其中,所述活跃消费者的读取状态为正在工作中,所述非活跃消费者的读取状态为暂停;去除子模块,用于将所述非活跃消费者和所述非活跃消费者在读取的所述数据队列中的读取位置的信息去除。
55.在一种可能的实现方式中,在完成数据迁移后,所述数据迁移装置还包括:删除模块,用于确定所述消费者有读取所述原始数据队列的未迁移的第一数据的情形,按照设定策略删除所述原始数据队列,其中,所述第一数据为收到所述迁移指令时所述原始数据队列中已写入的数据;或,用于确定所述消费者没有读取所述原始数据队列的未迁移的所述第一数据的情形,将所述原始数据队列删除。
56.第五方面,本技术实施例提供了一种服务器,包括:收发器,用于接收和发送数据;存储器,存储有计算机程序;处理器,用于执行所述存储器所存储的计算机程序,以使所述服务器实现上述的数据迁移方法,其中,所述服务器为上述的第一服务器或第二服务器。
57.第六方面,本技术实施例提供了一种网络系统,包括:第一服务器和第二服务器,
其中,所述第一服务器或所述第二服务器能够执行上述的数据迁移方法。
58.第七方面,本技术实施例提供了一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据迁移方法。
59.第八方面,本技术实施例提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使得所述计算机执行上述的数据迁移方法。
60.本技术实施例的方案,在保证上下游数据能够有效传输且不会发生数据遗失问题的前提下,能够针对消费者的不同消费情况选择不同的迁移策略,具体地,当消费者读取原始数据队列的第一数据的总次数较少时,即总次数小于或等于设定次数时,可选择第一迁移策略来确定开始迁移位置,其中,第一数据为收到迁移指令时原始数据队列中已写入的数据,第一迁移策略的开始迁移位置位于原始数据队列的最早数据位置的下游,这样减少了第一数据的拷贝数量,由于数据先存储至页面缓存中,一定时间后页面缓存中的数据再存入磁盘中,即未拷贝的数据一般是位于磁盘中的数据,从而增大了从页面缓存中读取数据的比例,使得发生真正的磁盘读取的概率减小,从而降低了存储数据的磁盘的io资源消耗,减少了副本迁移对正常业务的影响,并且无需拷贝原始数据队列的所有数据,提升了副本迁移完成的速度。
附图说明
61.图1是一种kafka集群的架构图;
62.图2是图1所示的kafka集群进行数据迁移时的一种场景示意图;
63.图3是图1所示的kafka集群适用的一种数据迁移方法的过程图;
64.图4是按照图3所示的数据迁移方法迁移数据时磁盘利用率的变化图;
65.图5是本技术实施例提供的一种数据迁移方法的流程图;
66.图6是图5中的步骤531的具体流程图;
67.图7是第一迁移策略的第一种方案的过程图;
68.图8是第一迁移策略的第二种方案的过程图;
69.图9是采用本技术实施例优化后的数据迁移方法与采用原来的数据迁移方法时磁盘利用率的对比图;
70.图10是本技术实施例提供的另一种数据迁移方法的流程图;
71.图11是本技术实施例提供的一种数据迁移装置的结构示意图;
72.图12是图11中的选择单元的结构示意图;
73.图13是图12中的获取模块的结构示意图;
74.图14是本技术实施例提供的另一种数据迁移装置的结构示意图;
75.图15是本技术实施例提供的一种服务器的结构示意图;
76.图16是本技术实施例提供的一种网络系统的结构示意图。
具体实施方式
77.为了使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本技术实施例中的技术方案进行描述。
78.在本技术实施例的描述中,“示例性的”、“例如”或者“举例来说”等词用于表示作
例子、例证或说明。本技术实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
79.在本技术实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,单独存在b,同时存在a和b这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。
80.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
81.数据通道产品多用于上游系统发布消息下游系统订阅使用消息,消息在数据通道中以一种先进先出队列的形式进行存储,下游任务也是顺序获取数据并处理。消息队列一般在架构设计中起到解耦、削峰、异步处理的作用,生产者往队列里写消息,消费者从队列里读取消息进行业务逻辑。kafka是一种高吞吐量的分布式发布订阅消息系统,具有高性能、持久化、多副本备份、横向扩展能力,它可以处理消费者在网站中的所有动作流数据。这种动作,如网页浏览、搜索和其他用户的行动,是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
82.图1是一种kafka集群的架构图。如图1所示,kafka集群包含一个或多个服务器,这种服务器被称为代理(broker),每条发布到kafka集群的消息都有一个主题(topic),同一个主题下的消息/数据的类型相同。每个主题包含一个或多个分区(partition),分区是物理上的概念,每个分区内需要保证消息有序。生产者(productor)是向代理的指定主题中写入消息/数据的客户端,消费者(consumer)是从代理中读取指定主题的消息/数据以进行业务处理的客户端。为了实现水平扩展,可以通过增加分区的数量来进行横向扩容。每新写一条消息/数据,kafka就在对应的文件追加(append)副本数据,以保证原有数据的高可靠特性。
83.在图1中,主题0有两个分区,即分区0和分区1。每个分区有三个副本备份。实线箭头指向生产者写入消息/数据的主题,其为领导者(leader)副本,提供数据生产和消费服务;虚线箭头指向的主题为跟随者(follower)副本,其从leader副本中复制(copy)消息/数据,在leader副本出现问题后,follower副本可被选为leader副本来提供服务。双点划线箭头连接的主题为消费者读取的副本。当代理实例进行扩、缩容时,为了副本在各个代理上尽可能均衡,就需要进行数据迁移的工作,也就是本技术实施例的方案主要使用的场景。
84.图2是图1所示的kafka集群进行数据迁移时的一种场景示意图。具体地,图2的场景为进行扩容时的示意图。如图2所示,在进行扩容时,可增加代理3,并可将代理0中的“主题0分区0”和代理1中的“主题0分区1”的数据拷贝至代理3中,如图2中的单点划线箭头所示。另外,当进行缩容时,假设此时kafka集群包括代理1-5,每个代理包括4个分区,可将代理5中的四个分区分别迁移至代理1-4中。
85.图3是图1所示的kafka集群适用的一种数据迁移方法的过程图。如图3所示,在该数据迁移方法中,从原始数据队列的最早数据位置开始拷贝,在数据迁移过程中,原始数据
队列仍然在提供服务,消费者1和消费者2处于读取数据的工作状态中,并且,生产者仍然在将新的数据写入到原始数据队列中,图3的下部图“迁移完成”的原始数据队列中的黑色矩形代表的数据为数据拷贝开始后生产者新写入的数据。经过漫长的数据拷贝,当原始数据队列中所有的数据都拷贝到新的数据队列中后完成数据迁移。迁移数据队列开始提供服务,此后新写入的数据将写入到迁移数据队列中,原始数据队列中的数据被删除。
86.图4是按照图3所示的数据迁移方法迁移数据时磁盘利用率的变化图。如图3和图4所示,该数据迁移方法存在以下缺点:
87.1、在数据迁移结束前,仍有大量数据(如图3的下部图“迁移完成”的原始数据队列中的黑色矩形代表的数据)写入原始数据队列中,如果不是迁移速度远大于数据写入速度,则迁移数据过程会耗费大量时间。
88.2、数据拷贝过程中有大量的历史数据读写工作,占用存储数据的磁盘的大量io资源,影响正常业务,并且linux借助于页面缓存来缓存近期读写数据,而拷贝过早历史数据很难命中页面缓存,导致发生真实的磁盘读取,如图4所示,在开始迁移位置处,磁盘的利用率直线上升,并且在迁移过程中一直保持较高利用率,会对磁盘中的其他业务产生影响。
89.由于消息通道产品的主要功能是提供上游业务数据发布以及下游业务的数据订阅,因此在数据迁移过程中要保证上下游数据能够有效地传输,不会遗失数据。本技术实施例提供了一种数据迁移方法、数据迁移装置、服务器和网络系统,可应用于消息通道产品如kafka,也可应用于其他类似的存储系统,如分布式文件系统(hadoop distributed file system,hdfs),在保证上下游数据能够有效传输、不会遗失数据的前提下,能够针对消费者的不同消费情况选择迁移策略,有助于提升数据迁移效率和降低存储数据的磁盘的io资源消耗,进而减少副本迁移对正常业务的影响。
90.图5是本技术实施例提供的一种数据迁移方法的流程图。该数据迁移方法用于迁移数据队列中的数据,其中,生产者用于向数据队列中按顺序写入数据,至少一个消费者用于从数据队列中按顺序读取数据。如图5所示,该数据迁移方法包括:
91.步骤51,响应迁移第一服务器中的原始数据队列的数据的迁移指令,预测消费者读取原始数据队列的第一数据的总次数,其中,第一数据为收到迁移指令时原始数据队列中已写入的数据,如图3中白色矩形代表的数据。另外,需说明的是,这里的“总次数”是在收到迁移指令后消费者再次读取第一数据的次数,总次数可基于消费者在收到迁移指令前的历史消费记录和消费者所属业务类型等进行预测。具体地,历史消费记录可包括每个消费者的重消费频率及其变化趋势。另外,若消费者的业务类型允许漏读数据,即当消费者需要重读第一数据时可以允许消费者不读取这些数据,该消费者的读取次数可按照0次计算。相应地,若消费者的业务类型不允许漏读数据,则消费者每次需要读取未迁移的第一数据时都需要计算次数。并且,总次数可以是不同消费者读取原始数据队列的第一数据的总次数,当同一个消费者多次读取第一数据时按照多次计算;若读取原始数据队列的消费者只有一个,总次数为该消费者读取原始数据队列的第一数据的次数。
92.步骤52,判断总次数是否小于或等于设定次数。
93.其中,设定次数可根据工作需要进行设置,例如可为3次或者5次。
94.步骤53,若判断结果为是,则选择第一迁移策略来确定开始迁移位置,其中,第一迁移策略的开始迁移位置位于原始数据队列的最早数据位置的下游。
95.继续参考图3,这里的“原始数据队列的最早数据位置”是原始数据队列中的最早消息(即最早数据)的位置,在图3中,最早数据位置为原始数据队列最左侧的数据位置,“下游”是指位于“最早消息”后面的位置,如下面将介绍的“最新数据位置”,即生产者写入原始数据队列的数据的位置,在图3中,“最新数据位置”为原始数据队列最右侧的数据位置,再如“最早活跃消费者位置”,即位于原始数据队列最前面的活跃消费者的位置,在图3中,“最早活跃消费者位置”为消费者1的位置。
96.步骤54,按照设定顺序将原始数据队列中的数据拷贝至第二服务器中以形成迁移数据队列,其中,设定顺序为从所选迁移策略的开始迁移位置至生产者在迁移过程中最新写入原始数据队列的数据的位置的顺序。
97.在上述方案中,当接收到迁移第一服务器中的原始数据队列的迁移指令时,可先预测消费者在收到迁移指令后再次读取原始数据队列的第一数据的总次数,若总次数小于或等于设定次数,即消费者读取原始数据队列的第一数据的次数较少,可选择第一迁移策略来确定开始迁移位置,由于第一迁移策略的开始迁移位置位于原始数据队列的最早数据位置的下游,这样无需拷贝原始数据队列的最早数据位置与第一迁移策略的开始迁移位置之间的第一数据,能够提升副本迁移完成的速度。另外,生产者写入原始数据队列中的数据首先存放至页面缓存中,经过一段时间后,存放在页面缓存中的数据会存入磁盘中,迁移数据队列时,首先查看页面缓存中是否有需要迁移的数据,若有则从页面缓存中迁移数据,这样不会发生真实的磁盘读取,若页面缓存中没有需要迁移的数据,则从磁盘中迁移数据,会发生真实的磁盘读取。当开始迁移位置位于原始数据队列的最早数据位置的下游时,能够减少第一数据的迁移数量,从而增大从页面缓存中迁移数据的比例,可降低发生真实磁盘读取的概率,减少存储数据的磁盘的io资源消耗,磁盘io资源可主要用于正常业务,降低了副本迁移对正常业务的影响。
98.具体地,第一迁移策略可包括两种方案,第一种方案的开始迁移位置为原始数据队列的最新数据位置;第二种方案的开始迁移位置为原始数据队列中的最早活跃消费者的读取位置。另外,下面将介绍的第二迁移策略包括一种方案,即第三种方案,其开始迁移位置为原始数据队列的最早数据位置。其中,第一种方案和第二种方案的开始迁移位置位于原始数据队列的最早数据位置(第三种方案的开始迁移位置)的下游。
99.下面先对本技术实施例的数据迁移方法的第一种方案进行详细介绍。在主流的业务场景中,消费者的消费任务的位置(即读取位置)一般接近生产者写入原始数据队列的最新消息/数据位置。此时,如图5所示,步骤53选择第一迁移策略来确定开始迁移位置,具体可包括:
100.步骤531,获取当前时刻原始数据队列的最早活跃消费者的读取位置和最新数据位置,其中,这里的“当前时刻”为确定总次数小于设定次数的时刻,最新数据位置为生产者在该当前时刻写入原始数据队列的数据的位置。
101.步骤532,比较最早活跃消费者的读取位置与最新数据位置之间的距离是否小于或等于设定距离;
102.步骤533,若比较结果为是,则确定第一迁移策略的开始迁移位置为最新数据位置,即本技术实施例的数据迁移方法的第一种方案。也就是说,确定总次数小于设定次数的当前时刻的原始数据队列中的最早活跃消费者的读取位置与最新数据位置之间的距离小
于或等于设定距离,最早活跃消费者为实时消费者,最早活跃消费者会紧密跟随最新数据,由于最早活跃消费者为距离最新数据位置最远的消费者,当其为实时消费者时,可确定其他活跃消费者均为实时消费者,则可从原始数据队列的最新数据位置开始迁移数据。
103.接着,可执行步骤54,按照设定顺序将原始数据队列中的数据拷贝至第二服务器中以形成迁移数据队列。
104.由于开始迁移位置为最新数据位置,此时迁移数据全部或大部分是从页面缓存中迁移,能够避免或大大减少发生真实的磁盘读取的情况,降低存储数据的磁盘的io资源消耗,即磁盘io资源可主要用于正常业务,减少了副本迁移对正常业务的影响,并且,迁移数据量较少,能够提升副本迁移完成的速度。
105.图6是图5中的步骤531的具体流程图。如图6所示,步骤531的获取原始数据队列的最早活跃消费者的读取位置,具体可包括:
106.步骤5314,获取每个活跃消费者在读取的所有数据队列中的读取位置,其中,所有数据队列包括原始数据队列。
107.步骤5315,将每个活跃消费者与每个活跃消费者在读取的所有数据队列中的读取位置的映射结构转存为每个数据队列与每个数据队列中的所有活跃消费者的读取位置的映射结构,从而获得原始数据队列的所有活跃消费者的读取位置。
108.步骤5316,比较原始数据队列中的所有活跃消费者的读取位置,以获取原始数据队列的最早活跃消费者的读取位置。
109.kafka只有指定的消费者组(consumer group)查询所有主题数据队列的读取状态的应用程序界面(application program interface,api),即只能获得消费者组(如图1所示)中的每个消费者读取的数据队列。而本技术实施例的方案需要知道每个主题数据队列中的所有下游活跃消费者的读取状态,以便判断从哪个油标/起始位置(offset)进行迁移以及何时完成迁移工作。为解决上述问题,本技术实施例采用如下方案;
110.首先,获取全量/所有活跃消费者读取的主题数据队列的信息,该信息包括数据队列和读取位置。此时,形成了key值为活跃消费者且value值为主题数据队列的映射(map)结构,如下表1所示。接着,将信息转存为主题数据队列为key值且所有活跃消费者及其读取位置为value值的映射结构,如下表2所示,使得api新增查看主题数据队列中的所有活跃消费者的读取位置的服务。其中,该api剔除了下游非活跃消费者的消费情况。这是由于很多消费活动只是临时消费,完成后就退出,因此需要排除这种情况,以确保活跃消费者(即有效消费者)的读取位置一直在向新的数据靠近。
111.keyvalue活跃消费者1数据队列1位置a、数据队列3位置b活跃消费者2数据队列1位置c、数据队列2位置d活跃消费者3数据队列2位置e、数据队列3位置f
112.表1
113.keyvalue数据队列1活跃消费者1位置a、活跃消费者2位置c数据队列2活跃消费者2位置d、活跃消费者3位置e数据队列3活跃消费者1位置b、活跃消费者3位置f
114.表2
115.也就是说,在该实现方式中,无法直接获得原始数据队列存在的所有活跃消费者以及该些活跃消费者的读取位置,但可以获得每个活跃消费者读取的数据队列以及在数据队列中的读取位置,这样可将每个活跃消费者与每个活跃消费者在读取的所有数据队列中的读取位置的映射结构/对应关系转存为每个数据队列与每个数据队列中的所有活跃消费者的读取位置的映射结构/对应关系,即获得了每个数据队列中存在的活跃消费者及其读取位置,再比较原始数据队列中的所有活跃消费者的读取位置,从而可以获取原始数据队列中的最早活跃消费者的读取位置。
116.继续参考图6,获取原始数据队列的最早活跃消费者的读取位置时,在进行步骤5314前,还可以先进行以下步骤:
117.步骤5311,获取所有消费者在读取的数据队列中的读取位置,其中,所有消费者包括非活跃消费者和活跃消费者。
118.步骤5312,查询所有消费者的读取状态以将每个消费者划分为活跃消费者或非活跃消费者,其中,活跃消费者的读取状态为正在工作中,非活跃消费者的读取状态为暂停。
119.步骤5313,将非活跃消费者和非活跃消费者在读取的数据队列中的读取位置的信息去除。
120.也就是说,在该实现方式中,不方便直接获取所有活跃消费者在读取的所有数据队列中的读取位置,可先获取所有消费者在读取的数据队列中的读取位置,所有消费者包括非活跃消费者和活跃消费者。然后,查询所有消费者的读取状态以将每个消费者分为活跃消费者或非活跃消费者,活跃消费者的读取状态为正在工作中,非活跃消费者的读取状态为暂停。接着,将非活跃消费者和非活跃消费者在读取的数据队列中的读取位置的信息去除,即可获取每个活跃消费者在读取的所有数据队列中的读取位置。
121.继续参考图5,当在步骤533确定第一迁移策略的开始迁移位置为原始数据队列的最新数据位置并在步骤54按照设定顺序对原始数据队列进行迁移后,数据迁移方法还包括:
122.步骤55,在数据迁移过程中获取原始数据队列的最早活跃消费者的读取位置;
123.步骤56,判断迁移数据队列是否拷贝到生产者最新写入原始数据队列的数据;
124.步骤57,若判断结果为是,则判断数据迁移过程中原始数据队列的最早活跃消费者的读取位置是否进入原始数据队列的第二数据的范围内,其中,第二数据为迁移数据队列已拷贝的数据;
125.步骤58,若判断结果为是,则完成数据迁移。完成数据迁移后,原始数据队列中不再写入新的数据。当迁移数据队列作为leader副本时,生产者开始向迁移数据队列中写入数据;当迁移数据队列作为follower副本时,迁移数据队列继续拷贝新的leader副本中的数据。
126.由于确定开始迁移位置为原始数据队列的最新数据位置,原始数据队列中的所有消费者为实时消费者,会紧随最新数据移动,这样在迁移数据队列拷贝到生产者最新写入原始数据队列的数据后,只要再确认距离最新数据位置最远的最早活跃消费者的读取位置位于迁移数据队列的范围,即可保证原始数据队列的所有活跃消费者的读取位置均进入迁移数据队列的范围内,从而完成数据迁移。
127.另外,需说明的是,步骤57处的判断迁移是否完成时的“最早活跃消费者”可以与步骤532中确定第一迁移策略的开始迁移位置时提到的“最早活跃消费者”相同或不同。
128.图7是第一迁移策略的第一种方案的过程图。由于数据通道的主要使用场景中下游消费任务的消费进度一般会紧随最新数据以保障获取数据的实时性,并且对于原始副本中的大量第一数据已经被下游任务处理过,非特殊需求下不会从新消费,因此,在第一种方案中,开始迁移位置为原始数据队列的最新数据位置,即生产者当前写入原始数据队列的数据的位置,如图7的上部分图“迁移前状态”中所示,迁移数据时,最新数据位置前的第一数据(即图7中白色矩形代表的数据)不进行拷贝,仅对最新写入原始数据队列的数据(即图7中原始数据队列中的黑色矩形框代表的数据)进行拷贝,这样保证了迁移副本能够立刻跟随原始副本的最新位置。此时,副本迁移完成的标志为迁移数据队列拷贝到原始数据队列的最新数据,并且下游所有活跃消费者的读取位置全部进入迁移数据队列的范围内,如图7的下部分图“迁移完成”中所示,迁移数据队列拷贝到原始数据队列的最新数据,并且消费者1和消费者2的读取位置进入了原始数据队列的已被拷贝的第二数据的范围内,从而保证原始数据队列(原始副本)退出服务后,迁移副本能够有效地提供服务。
129.上面参考图5-图7对第一迁移策略的第一种方案的迁移过程进行了介绍,下面对第一迁移策略的第二种方案的迁移过程进行介绍。继续参考图5,此时,数据迁移方法包括:
130.步骤534,若步骤532的比较结果为否,则确定第一迁移策略的开始迁移位置为原始数据队列中的最早活跃消费者的读取位置,即本技术实施例的数据迁移方法的第二种方案。
131.也就是说,在接收到迁移指令并选择第一迁移策略后,此时原始数据队列的最早活跃消费者的读取位置与最新数据位置之间的距离大于设定距离,所有活跃消费者中至少最早活跃消费者为原始数据队列的非实时消费者,其在原始数据队列的第一数据位置停留时间较长,若按照第一种方案迁移数据,该最早活跃消费者可能不会很快进入迁移数据队列的范围内,故可确定第一迁移策略的开始迁移位置为最早活跃消费者的读取位置,这样可保证最早活跃消费者在数据迁移过程中能够一直正常工作,并且无需拷贝原始数据队列的最早数据位置与最早活跃消费者的读取位置之间的第一数据,能够提升副本迁移完成的速度,可降低发生真实磁盘读取的概率,从而降低磁盘io资源消耗,减少了副本迁移对正常业务的影响。
132.接着,可执行步骤54,按照设定顺序将原始数据队列中的数据拷贝至第二服务器中以形成迁移数据队列。并且,当确定第一迁移策略的开始迁移位置为最早活跃消费者的读取位置时,数据迁移方法还可包括:
133.步骤55’,判断迁移数据队列是否拷贝到生产者最新写入原始数据队列的数据;
134.步骤56’,若判断结果为是,则完成数据迁移。
135.也就是说,对于一些非实时数据通道的消费任务,其消费进度可能会长时间停滞。如果采取第一种方案可能会出现消费者长时间不能进入原始数据队列的已被拷贝的第二数据的区域。因此,提供了开始迁移位置为最早活跃消费者的读取位置的第二种方案,这样在数据迁移过程中迁移数据队列拷贝到生产者最新写入原始数据队列的数据时,可确保所有活跃消费者位于迁移数据队列的范围内,即可完成数据迁移。
136.图8是第一迁移策略的第二种方案的过程图。在第二种方案中,开始迁移位置为原
始数据队列中的最早活跃消费者的读取位置,如图8的上部分图“迁移前状态”中所示的消费者1的读取位置。副本迁移完成的标志为迁移副本跟随上原始副本中最新写入的数据,如图8的下部分图“迁移完成”所示,迁移数据队列已拷贝到原始数据队列最右侧的最新数据。由图8可知,该方案实际迁移的数据只是包含原始数据中未被最早活跃消费者如消费者1读取的数据(包括迁移过程中新写入的数据,即原始数据队列中黑色矩形代表的数据),相比较现有的迁移方案,在保证消费者1和消费者2正常读取的前提下,能够大幅减少拷贝的数据量。
137.图9是采用本技术实施例优化后的数据迁移方法与采用原来的数据迁移方法时磁盘利用率的对比图。如图9所示,在本技术实施例优化后的第一种和第二种方案中,实际迁移的数据只有很少的一部分,并且因为拷贝原始副本的的数据都是最新写入的,数据大概率仍然存在操作系统的页面缓存(page cache)中,页面缓存是对源自辅助存储设备(如硬盘驱动器或固态驱动器)的页面的透明缓存,因此读取原始副本一般不会触发真正的磁盘读取操作,这样不仅提升了读取性能,也减少了存储数据的磁盘io冲击给正常业务来的的影响。而采用原来的方案,即从最早数据位置开始迁移,拷贝过早的第一数据很难命中页面缓存,导致发生真实的磁盘读取,会对磁盘处理正常业务产生影响。
138.另外,在上述第一种和第二种方案中,数据迁移完成后,迁移副本可以承担原始副本的工作,可根据数据是否存在读取原始数据队列的未迁移的第一数据的情形以及原始节点的磁盘负载情况,选择删除原始数据队列的时机,具体地,继续参考图5,在完成数据迁移后,该数据迁移方法还包括:
139.步骤59,判断是否有读取原始数据队列的未迁移的第一数据的情形。
140.步骤510,若判断结果为是,则按照设定策略删除原始数据队列。也就是说,原始数据队列不提供数据写入服务,数据会按照设定策略逐渐减少,直至彻底删除。业务如果存在读取第一数据的场景,仍然可以使用。
141.步骤511,若判断结果为否,则将原始数据队列删除。这样可立刻释放空间,减少集群负载。
142.也就是说,由于第一迁移策略的开始迁移位置位于原始数据队列的最早数据位置的下游,当选择第一迁移策略来确定开始迁移位置时,原始数据队列中的最早数据位置至开始迁移位置之间的数据没有拷贝到迁移数据队列中,在完成数据迁移后需要判断原始数据队列中未迁移的第一数据是否有被消费者读取的情形,如果没有读取的情形,即在迁移完成后读取原始数据队列的未迁移的第一数据的次数为0,可以立即删除原始数据队列;如果在迁移完成后有读取原始数据队列的未迁移的第一数据的情形,即在迁移完成后读取原始数据队列的未迁移的第一数据的次数不为0,但小于或等于设定次数,例如可为1次或2次,则可按照设定策略删除原始数据队列,例如在消费者读取未迁移的第一数据后再删除原始数据队列,以保证不会影响正常工作。
143.上面参考图5-图9对本技术实施例的数据迁移方法的第一迁移策略的两种方案进行了介绍,下面对本技术实施例的数据迁移方法的第二迁移策略的方案进行介绍。具体地,继续参考图5,该数据迁移方法还包括:
144.步骤53’,若步骤52的判断结果为否,即消费者读取原始数据队列的第一数据的总次数大于设定次数,则选择第二迁移策略来确定开始迁移位置,其中,第二迁移策略的开始
迁移位置为原始数据队列的最早数据位置,即本技术实施例的数据迁移方法的第三种方案。
145.也就是说,虽然选择第一迁移策略的第一种方案和第二种方案完成数据迁移后,可按照设定策略删除原始数据队列,来保证消费者可以读取原始数据队列中的未迁移的第一数据,但使消费者从第二服务器中的迁移数据队列切换至第一服务器中的原始数据队列的消耗较大,因此在消费者读取原始数据队列的第一数据的次数较多时,为了降低消耗,可选择第二迁移策略,以便从原始数据队列的最早数据位置开始迁移,保证消费者的读取业务能够正常进行。并且,此时,数据迁移方法还可包括:
146.步骤55”,判断迁移数据队列是否拷贝到生产者最新写入原始数据队列的数据;
147.步骤56”,若判断结果为是,则完成数据迁移。
148.也就是说,当选择第二迁移策略从原始数据队列的最早数据位置开始迁移时,迁移数据队列拷贝到生产者最新写入原始数据队列的数据时,可保证迁移数据队列拷贝到原始数据队列的所有数据,则完成数据迁移。
149.步骤57”,在完成数据迁移后将原始数据队列删除。
150.由于第二迁移策略的开始迁移位置为原始数据队列的最早数据位置,迁移数据队列拷贝到生产者最新写入原始数据队列的数据而完成数据迁移后,迁移数据队列可拷贝到原始数据队列的所有数据,因此在完成数据迁移后可将原始数据队列立即删除,以便释放内存。
151.本技术实施例提供的数据迁移方法,在保证上下游数据能够有效传输且不会发生数据遗失问题的前提下,能够针对消费者的不同消费情况选择不同迁移方案,有助于提升副本迁移完成的速度,降低存储数据的磁盘的io资源消耗,进而减少副本迁移对正常业务的影响。
152.综上所述,以使用最广泛的消息通道产品kafka为例介绍了本技术实施例要求保护的技术方案,关键技术点如下:
153.1、根据消费者读取原始数据队列中的数据的情况确定从原始leader副本的哪个位置开始迁移,即选择开始迁移位置。具体地,开始迁移位置可为原始数据队列的最新数据位置(第一种方案)、原始数据队列中的最早活跃消费者的读取位置(第二种方案)和原始数据队列的最早数据位置(第三种方案)中的一者。
154.2、获取原始数据队列存在的最早活跃消费者的读取位置,参见步骤5314-步骤5316或步骤5311-步骤5316。
155.3、关于数据迁移完成的判断标准
156.对于第一种方案,首先,需要判断迁移数据队列是否拷贝到生产者最新写入原始数据队列(即领导者副本)的数据,当判断结果为是时,接着,需要调用上面介绍的应用程序界面api确认迁移过程中的最早活跃消费者的读取位置进入原始数据队列的已被迁移数据队列拷贝的第二数据的范围内,即完成数据迁移。
157.对于第二种方案和第三种方案,迁移数据队列拷贝到生产者在迁移过程中最新写入所述原始数据队列的数据时,即完成数据迁移。
158.4、关于是否删除原始数据队列
159.对于第一迁移策略的两种方案,判断是否读取原始数据队列中的未迁移的第一数
据的情形,如果有读取情形,按照设定策略删除原始数据队列,即迁移完成后原始数据队列的删除策略沿用kafka本身的删除策略,如只保存固定时间的最新数据或者固定大小的数据文件;如果没有读取情形,则在完成数据迁移后可立即删除原始数据队列。
160.对于第三种方案,由于迁移数据队列已经拷贝了原始数据队列的所有数据,因此在完成数据迁移后可以将原始数据队列立即删除,以便尽快释放磁盘空间。
161.图10是本技术实施例提供的另一种数据迁移方法的流程图。该数据迁移方法用于迁移数据队列中的数据,其中,生产者用于向数据队列中按顺序写入数据,至少一个消费者用于从数据队列中按顺序读取数据,如图10所示,数据迁移方法包括:
162.步骤1001,响应迁移第一服务器中的原始数据队列的数据的迁移指令,获取当前时刻原始数据队列的最早活跃消费者的读取位置和最新数据位置,其中,这里的“当前时刻”为收到迁移指令的时刻,最新数据位置为生产者在该当前时刻写入原始数据队列的数据的位置;
163.步骤1002,比较最早活跃消费者的读取位置与最新数据位置之间的距离是否小于或等于设定距离;
164.步骤1003,若比较结果为是,则将原始数据队列中的数据按照从最新数据位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序拷贝至第二服务器中以形成迁移数据队列,即开始迁移位置为原始数据队列的最新数据位置;和/或,
165.步骤1004,若比较结果为否,则将原始数据队列中的数据按照从最早活跃消费者的读取位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序拷贝至第二服务器中以形成迁移数据队列,即开始迁移位置为原始数据队列的最早活跃消费者的读取位置。
166.在上述方案中,在接收到迁移指令的当前时刻,若原始数据队列中的最早活跃消费者的读取位置与最新数据位置之间的距离小于或等于设定距离,活跃消费者为紧随最新数据的实时消费者,可从原始数据队列的最新数据位置开始迁移数据;若原始数据队列中的最早活跃消费者的读取位置与最新数据位置之间的距离大于设定距离,活跃消费者在原始数据队列的第一数据处停留时间较长,为原始数据队列的非实时消费者,可从原始数据队列中的最早消费者的读取位置处开始迁移数据,并且,将第一服务器中的的原始数据队列的数据按照从开始迁移位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序拷贝至第二服务器中以形成迁移数据队列,相对于从最早数据位置开始迁移数据的方案,由于生产者新写入原始数据队列的数据先存放至页面缓存中且一定时间后再从页面缓存中存入磁盘中,故本技术实施例的数据迁移方法能够增大从页面缓存中拷贝数据进行迁移的比率,减少从磁盘中拷贝第一数据的数量,降低了发生真实的磁盘读取的概率,减少了副本迁移对正常业务的影响,并且由于不需要迁移原始数据队列的所有数据,能够提升副本迁移完成的速度。
167.另外,当从原始数据队列的最新数据位置开始迁移数据时,数据迁移方法还包括:
168.步骤1005,在数据迁移过程中获取原始数据队列的最早活跃消费者的读取位置;
169.步骤1006,判断迁移数据队列是否拷贝到生产者最新写入原始数据队列的数据;
170.步骤1007,若判断结果为是,则判断数据迁移过程中原始数据队列的最早活跃消费者的读取位置是否进入原始数据队列的第二数据范围内,第二数据为迁移数据队列已拷
贝的数据;
171.步骤1008,若判断结果为是,则完成数据迁移。
172.由于开始迁移位置为原始数据队列的最新数据位置,原始数据队列中的所有活跃消费者为实时消费者,当迁移数据队列拷贝到生产者在迁移过程中最新写入原始数据队列的数据时,只要迁移过程中距离最新数据位置最远的最早活跃消费者的读取位置进入原始数据队列的已被迁移数据队列拷贝的第二数据的范围,就可保证原始数据队列的所有活跃消费者的读取位置均进入迁移数据队列的范围内,即可完成数据迁移,具体迁移过程可参见图7。
173.当从原始数据队列中的最早活跃消费者的读取位置处开始迁移数据时,数据迁移方法还包括:
174.步骤1005’,判断迁移数据队列是否拷贝到生产者最新写入原始数据队列的数据;
175.步骤1006’,若判断结果为是,则完成数据迁移。
176.由于开始迁移位置为最早活跃消费者的读取位置,这样在数据迁移过程中迁移数据队列拷贝到生产者最新写入原始数据队列的数据时,所有活跃消费者一定位于迁移数据队列的范围内,即可完成数据迁移,具体迁移过程可参见图8。
177.需说明的是,步骤1001和步骤1005处的“获取原始数据队列的最早活跃消费者的读取位置”的过程,可按照上面介绍的步骤5314-步骤5316或步骤5311-步骤5316进行。另外,如在图10中所示,在步骤1008或步骤1006’处完成数据迁移后,数据迁移方法还包括:
178.步骤1009,判断是否有读取原始数据队列的未迁移的第一数据的情形,其中,第一数据为收到迁移指令时原始数据队列中已写入的数据。
179.步骤1010,若判断结果为是,则按照设定策略删除原始数据队列。
180.步骤1011,若判断结果为否,则将原始数据队列删除。
181.也就是说,在完成数据迁移后需要判断原始数据队列中未迁移的第一数据是否有被消费者读取的情况,如果没有读取的情况,可以立即删除原始数据队列;如果有读取的情形,则可以按照原来的设定策略删除原始数据队列,例如在消费者读取未迁移的第一数据后再删除原始数据队列,以保证不会影响正常工作。
182.本技术实施例的数据迁移方法,副本数据拷贝时可以根据用户决策进行有限数据拷贝,在满足数据可靠性前提下提升了迁移效率,降低了迁移影响。另外,在数据迁移完成后,也提供了两种删除原始数据数据的方案:1、按照原来的设定策略删除原始数据队列,这样能够实现业务在数据上的可回放性;2、立即删除原始数据队列,这样能够释放磁盘容量。
183.图11是本技术实施例提供的一种数据迁移装置的结构示意图。该数据迁移装置1100用于迁移数据队列中的数据,其中,生产者用于向数据队列中按顺序写入数据,至少一个消费者用于从数据队列中按顺序读取数据。如图11所示,该数据迁移装置1100包括预测单元1101、选择单元1102和迁移单元1103。预测单元1101用于响应迁移第一服务器中的原始数据队列中的数据的迁移指令,预测消费者读取原始数据队列的第一数据的总次数,其中,第一数据为收到迁移指令时原始数据队列中已写入的数据。选择单元1102用于在总次数小于或等于设定次数时,选择第一迁移策略来确定开始迁移位置,其中,第一迁移策略的开始迁移位置位于原始数据队列的最早数据位置的下游。迁移单元1103用于按照设定顺序将原始数据队列中的数据拷贝至第二服务器中以形成迁移数据队列,其中,设定顺序为从
所选迁移策略的开始迁移位置至生产者在迁移过程中最新写入原始数据队列的数据的位置的顺序。
184.图12是图11中的选择单元的结构示意图。如图12所示,选择单元1102包括获取模块21和确定模块22。获取模块21用于获取当前时刻原始数据队列的最早活跃消费者的读取位置和最新数据位置,其中,这里的“当前时刻”为确定总次数小于设定次数的时刻,最新数据位置为生产者在该当前时刻写入原始数据队列的数据的位置。确定模块22用于在原始数据队列中的最早活跃消费者的读取位置与最新数据位置之间的距离小于或等于设定距离时,确定第一迁移策略的开始迁移位置为原始数据队列的最新数据位置。
185.当确定模块22确定第一迁移策略的开始迁移位置为原始数据队列的最新数据位置时,获取模块21还用于在数据迁移过程中获取原始数据队列的最早活跃消费者的读取位置,如图11所示,数据迁移装置1100还包括第一确定单元1104,用于在迁移数据队列拷贝到生产者最新写入原始数据队列的数据时,确定数据迁移过程中原始数据队列的最早活跃消费者的读取位置进入原始数据队列的第二数据范围内,完成数据迁移,其中,第二数据为迁移数据队列已拷贝的数据。
186.进一步地,确定模块22还可用于在最早活跃消费者的读取位置与最新数据位置之间的距离大于设定距离,确定第一迁移策略的开始迁移位置为最早活跃消费者的读取位置。当确定模块22确定第一迁移策略的开始迁移位置为最早活跃消费者的读取位置时,如图11所示,数据迁移装置1100还可包括第二确定单元1105,用于确定迁移数据队列拷贝到生产者最新写入原始数据队列的数据,完成数据迁移。
187.图13是图12中的获取模块的结构示意图。如图13所示,获取模块21可包括第一获取子模块211、转存子模块212和比较获取子模块213。第一获取子模块211用于获取每个活跃消费者在读取的所有数据队列中的读取位置,所有数据队列包括原始数据队列。转存子模块212用于将每个活跃消费者与每个活跃消费者在读取的所有数据队列中的读取位置的映射结构转存为每个数据队列与每个数据队列中的所有活跃消费者的读取位置的映射结构,从而获得原始数据队列的所有活跃消费者的读取位置。比较获取子模块213用于比较原始数据队列中的所有活跃消费者的读取位置,以获取原始数据队列的最早活跃消费者的读取位置。
188.进一步地,获取模块21还可包括第二获取子模块214、查询子模块215和去除子模块216,第二获取子模块214用于获取所有消费者在读取的数据队列中的读取位置,其中,所有消费者包括非活跃消费者和活跃消费者。查询子模块215用于查询所有消费者的读取状态以将每个消费者划分为活跃消费者或非活跃消费者,其中,活跃消费者的读取状态为正在工作中,非活跃消费者的读取状态为暂停。去除子模块216用于将非活跃消费者和非活跃消费者在读取的数据队列中的读取位置的信息去除,从而获取原始数据队列中的最早活跃消费者的读取位置。
189.继续参考图11,当选择单元1103选择第一迁移策略来确定开始迁移位置时,数据迁移装置1100还包括第一删除单元1106,在完成数据迁移后,用于确定消费者有读取原始数据队列的未迁移的第一数据的情形,按照设定策略删除原始数据队列;用于确定消费者没有读取原始数据队列的未迁移的所述第一数据的情形,将原始数据队列删除。
190.另外,选择单元1102还用于在总次数大于设定次数时,选择第二迁移策略来确定
开始迁移位置,其中,第二迁移策略的开始迁移位置为原始数据队列的最早数据位置。当选择单元1102选择第二迁移策略来确定开始迁移位置时,如图11所示,数据迁移装置1100还可包括第三确定单元1107,用于确定迁移数据队列拷贝到生产者最新写入原始数据队列的数据,完成数据迁移。进一步地,数据迁移装置1100还可包括第二删除单元1108,用于在完成数据迁移后将原始数据队列删除。
191.根据本技术实施例的数据迁移装置,在保证上下游数据能够有效传输且不会发生数据遗失问题的前提下,能够针对消费者的不同消费情况选择迁移方案,具体地,当消费者读取原始数据队列的第一数据的总次数较少时,即总次数小于或等于设定次数时,可选择第一迁移策略来确定开始迁移位置,并且第一迁移策略的开始迁移位置位于原始数据队列的最早数据位置的下游,当原始数据队列中的最早活跃消费者的读取位置与最新数据位置之间的距离小于或等于设定距离时,确定第一迁移策略的开始迁移位置为原始数据队列的最新数据位置,即第一种方案;当原始数据队列中的最早活跃消费者的读取位置与最新数据位置之间的距离大于设定距离时,确定第一迁移策略的开始迁移位置为原始数据队列中的最早活跃消费者的读取位置,即第二种方案。由于在第一种方案和第二种方案中无需拷贝原始数据队列的所有数据,即减少了第一数据的拷贝数量,从而提升了副本迁移完成的速度,降低了存储数据的磁盘的io资源消耗,进而减少了副本迁移对正常业务的影响。另外,在数据迁移成功后,也提供了两种原始数据数据消除方式,即按照设定策略删除原始数据队列和立即删除原始数据队列,选择按照设定策略删除原始数据队列,数据可回放,即消费者能够再次读取第一数据,选择立即删除原始数据,能够尽快释放磁盘容量,从而方便业务在数据可回放性与磁盘容量上做出选择。而当数据迁移完成后消费者读取原始数据队列的第一数据的总次数较多时,即总次数大于设定次数时,可选择第二迁移策略来确定开始迁移位置,第二迁移策略的开始迁移位置为原始数据队列的最早数据位置,即第三种方案,这样迁移数据队列拷贝了原始数据队列的所有数据,在迁移完成后可以立即删除原始数据队列,释放空间,并且也能够满足消费者再次读取第一数据的需求。
192.图14是本技术实施例提供的另一种数据迁移装置的结构示意图。该数据迁移装置用于迁移数据队列中的数据,其中,生产者用于向数据队列中按顺序写入数据,至少一个消费者用于从数据队列中按顺序读取数据。如图14所示,数据迁移装置1400包括获取模块1401和迁移模块1402。获取模块1401用于响应迁移第一服务器中的原始数据队列的迁移指令,获取当前时刻原始数据队列的最早活跃消费者的读取位置和最新数据位置,其中,这里的“当前时刻”为收到迁移指令的时刻,最新数据位置为生产者在该当前时刻写入原始数据队列的数据的位置。迁移模块1402,用于在原始数据队列中的最早活跃消费者的读取位置与最新数据位置之间的距离小于或等于设定距离时,将原始数据队列中的数据按照从最新数据位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序拷贝至第二服务器中以形成迁移数据队列,即此时开始迁移位置为最新数据位置;和/或,用于在原始数据队列中的最早活跃消费者的读取位置与最新数据位置之间的距离大于设定距离时,将原始数据队列中的数据按照从最早消费者的读取位置至生产者在迁移过程中最新写入所述原始数据队列的数据的位置的顺序拷贝至第二服务器中以形成迁移数据队列,即此时开始迁移位置为最早消费者的读取位置。其中,获取模块1401的具体结构可与上面提到获取模块21的具体结构相同。
193.当从原始数据队列的最新数据位置开始迁移数据时,获取模块1401还用于在数据迁移过程中获取原始数据队列的最早活跃消费者的读取位置。数据迁移装置1400还包括第一确定模块1403,用于在迁移数据队列拷贝到生产者最新写入原始数据队列的数据时,确定数据迁移过程中原始数据队列的最早活跃消费者的读取位置进入原始数据队列的第二数据范围内,完成数据迁移,其中,第二数据为迁移数据队列已拷贝的数据。
194.当从原始数据队列中的最早消费者的读取位置处开始迁移数据时,数据迁移装置1400还包括第二确定模块1404,用于确定迁移数据队列拷贝到生产者最新写入原始数据队列的数据,完成数据迁移。
195.进一步地,在完成数据迁移后,数据迁移装置1400还可包括删除模块1405,用于确定消费者有读取原始数据队列的未迁移的第一数据的情形,按照设定策略删除所述原始数据队列,其中,第一数据为收到迁移指令时原始数据队列中已写入的数据;用于确定消费者没有读取原始数据队列的未迁移的第一数据的情形,将原始数据队列立即删除。
196.本技术实施例的方案基于下游数据读取状态,确定迁移起始位置以及迁移结束条件并保障下游任务数据消费不丢失,能够快速完成消息通道的数据拷贝工作。例如,一个典型的200g的副本,原始迁移方案时间需要2-3小时,使用本技术实施例的方案,能够在十分钟内完成迁移,大大提升了迁移效率。同时,数据拷贝过程减少大量磁盘读写,降低对正常业务的冲击。另外,根据业务需求确定原始数据副本两种删除方案,原始副本按照设定策略删除的方案使数据可回放消费;而立即删除原始副本的方案,可实现空间最优。
197.另外,由于在诸如kafka集群的系统中,与生产者、消费者和数据队列等相关的信息在多个服务器中是共享的,因此,上述的数据迁移方法可由第一服务器执行,也可由第二服务器执行。图15是本技术实施例提供的一种服务器的结构示意图。如图15所示,该服务器1500包括收发器1501、存储器1502和处理器1503。其中,收发器1501用于接收和发送数据。存储器1502存储有计算机程序。处理器1503用于执行存储器1502所存储的计算机程序,以使服务器1500实现本技术实施例的数据迁移方法。其中,该服务器为上述的数据迁移方法中提到的第一服务器或所述第二服务器。
198.图16是本技术实施例提供的一种网络系统的结构示意图。如图16所示,该网络系统至少包括两个服务器,即服务器a和服务器b,原始数据队列位于服务器a中,迁移数据队列位于服务器b中。其中,服务器a或服务器b能够执行本技术实施例的数据迁移方法。
199.应理解,上述方法实施例的各步骤可以通过处理器中的硬件形式的逻辑电路或者软件形式的指令完成。处理器可以是cpu、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其它可编程逻辑器件,例如,分立门、晶体管逻辑器件或分立硬件组件。
200.可以理解的是,本技术的实施例中的处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
201.本技术的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,ram)、闪存、只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)、寄存器、硬盘、移动硬盘、cd-rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。
202.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
203.可以理解的是,在本技术的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术的实施例的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1