数据加载的方法、装置及系统的制作方法_4

文档序号:8472988阅读:来源:国知局
,因此主机房中控服务器不必控制各个进程是否向同一加载机写入数据,只需要维护好每个进程的正常运行即可。
[0127]为了保证将数据分片写入加载机时能够稳定且快速,因此可以将不同的进程分配给不同组的加载机进行写入操作。若进程数量大于加载机的组数,需要多个进程同时向一组加载机写入数据分片时,可以参照每组中各个加载机的编号为多个进程分别分配一个起始加载机,然后开始顺序向后续的加载机写入数据分片。
[0128]无论是将不同的进程分配给不同组的加载机进行写入操作还是多个进程同时向一组加载机写入数据分片时为多个进程分别分配一个起始加载机,然后开始顺序向后续的加载机写入数据分片,这两种实现方式都能避免过多的进程同时向同一个加载机写入大量数据,以此提高向加载机中写入数据的稳定性和快捷性。
[0129]为了保证每个加载机中都能被写入全部的数据,这种为不同进程分配不同起始加载机的方式还需要检测所有的加载机是否已经写入了数据。为了实现检测机制,保证每个进程能将起始加载机之前的加载机写入数据分片,作为一种可选的实施方式,主机房中控服务器可以创建一个加载机标识表,用于记录加载机的组数以及每组加载机的编号信息。各个进程在执行写入操作的过程中,可以调取该加载机标识表,每当完成对一个加载机的写入操作后,就在加载机标识表中对对应的加载机进行标记,当对最后一个加载机写入结束后,开始遍历加载机标识表,确定加载机是否全部进行了标记,若没有,则按照加载机标识表中的编号顺序对没有进行标记的加载机进行写入操作,直至加载机标识表中的每个加载机编号都被标记,从而完成每个进程向对应加载机的写入操作。
[0130]进一步的,主机房中控服务器在建立多个进程之前,除了要考虑自身的处理资源夕卜,还要考虑加载机的负载能力,根据加载机的性能预先设定加载机所能承受的最大进程数量,主机房中控服务器建立的进程数量不能大于预设的进程数量,以此来控制每个加载机的负载压力,避免加载机负载过大导致数据写入失败以及对加载机的损害。
[0131]主机房中控服务器除了建立一定数量的进程用于对每组加载机进行写入操作,进一步的还可以在每个进程下分别建立多条线程,用于加快写入数据分片的速度,其中一条线程负责至少一个加载机的写入操作。在实际通过线程写入数据分片的过程中,可以有多种实施方式,包括:
[0132]a) 一个加载机对应一条线程。以一个进程为例,该进程根据其负责的加载机的个数建立与加载机个数相同的多条线程,通过多条线程并行向各个加载机写入数据分片,以此提高进程速度。
[0133]b) 一组加载机对应一条线程,即一个进程根据其负责的加载机的组数建立与加载机组数相同的多条线程,通过多条线程并行向各组加载机写入数据分片,其中,一条线程针对其负责的一组加载机在进行写入操作时,可以串行向该组加载机顺序写入数据分片。
[0134]c)多组加载机对应一条线程,即一个进程建立的线程数量小于该进程负责的加载机的组数。
[0135]由于主机房中控服务器向加载机执行写入操作时的环境复杂,如多条进程及多条线程并行推送数据,同时数据在推送过程中也可能出现损坏,因此需要检测数据是否成功写入到加载机中。检测可以由主机房中控服务器在向加载机写入数据的过程中记录每条数据的写入状态,在写入操作结束后调取数据的写入状态记录表,若存在写入失败的数据,则主机房中控服务器重新向加载机写入数据块或数据分片,或者根据记录表中写入失败的数据(单位为条)的标识或编号重新推送该条数据。
[0136]当然,检测也可以由加载机在主机房中控服务器执行写入操作的过程中记录每条数据的写入状态,在写入操作结束后调取数据的写入状态记录表,若存在数据写入失败,则加载机向主机房中控服务器请求重新执行写入操作,或者根据记录表中写入失败的数据(单位为条)的标识或编号向主机房中控服务器重新请求推送该条数据。
[0137]由于数据的写入失败可能是加载机或主机房负载压力过大导致的,也可能是因为数据在推送过程中发生了不可逆转的损坏导致的。若是前者,则后续是可以再次成功写入该数据的;若是后者,则不管后续再写入多少次,该数据还是无法成功写入。因此,主机房中控服务器需要控制重新写入操作的次数,避免在数据出现不可逆转的损坏的情况下,持续推送该数据导致对主机房中控服务器处理资源的占用以及对加载机写入接口的持续占用,使其他进程无法写入其他数据。
[0138]主机房中控服务器重写操作的次数可以人为设定,也可以由主机房中控服务器根据当前的处理资源的占用情况进行调整,原则是处理资源充足的情况下,设定较少的重写次数;处理资源占用严重的情况下,设定较多的重写次数。例如,若处理资源充足,则可以设定一次或两次重写上限,若处理资源占用严重,则可以设定五次或六次重写上限,具体的重写次数本实施例不作限制。
[0139]进一步的,在二级服务器向加载机请求写入数据的过程中,考虑到二级服务器的负载能力,若加载的数据较多时,加载速度过快可能会导致二级服务器加载数据失败,因此可以通过主机房中控服务器对二级服务器的加载速度进行限速。作为一种可选的实施方式,在加载机向二级服务器推送数据时,由主机房中控服务器控制主机房中的加载机将数据进行分片并建立多条进程,多进程并行向二级服务器推送小数据量的数据分片,以此来对二级服务器加载数据进行限速,同时尽量缩短二级服务器加载数据的时间。
[0140]在实际的数据查询系统中,机房中的服务器除了进行数据的加载/推送外,更重要的是对用户的查询请求进行响应,为用户查询数据。但是数据的推送涉及范围大,为了保证数据的时效性,就需要在数据发生变化时立即进行数据的推送,此时,推送数据的过程很可能会与用户查询数据的过程发生冲突,造成对系统资源的抢夺。因此,为了保证数据更新及时同时又不影响用户的查询,主机房中控服务器可以采用后台同步机制向从机房中的二级服务器写入数据,在写入数据的过程中不会影响系统当前请求的响应时间,可以为用户提供实时查询服务。
[0141]本发明实施例除了改进了数据推送方式,由原有的串行方式改为并行方式,在数据量不变的情况下缩短了数据推送时间,进一步的,对机房的分布采用了主从机制,主机房负责加载数据,从机房负责从主机房同步数据,并且采用了后台同步机制,在不影响系统当前请求响应时间的情况下又能提供实时查询服务;同时,数据的加载及推送增加了多进程、多线程以及重试机制,保证数据一致性的同时缩短了数据加载及推送的时间。
[0142]进一步的,作为对上述图1及图11所示方法的实现,本发明实施例提供了一种数据加载的装置,该装置可以位于主机房或主机房中控服务器中,也可以独立于主机房或主机房中控服务器但与主机房或主机房中控服务器之间具有数据交互关系。如图12所示,该装置包括:接收单元121、写入单元122及控制单元123,其中,
[0143]接收单元121,用于接收中转设备发送的数据块;
[0144]写入单元122,用于将接收单元121接收到的数据块分别写入到主机房中的各组加载机中,其中,主机房中包含多组加载机,加载机的组数与从机房的个数相同,每组加载机的数量与对应从机房中的二级服务器数量相同;
[0145]控制单元123,用于控制加载机将写入单元122写入的数据块写入到从机房中与加载机对应的二级服务器中。
[0146]进一步的,接收单元121,用于接收中转设备并行发送的多个数据分片,多个数据分片由中转设备对数据块进行切片所获得。
[0147]进一步的,写入单元122,用于建立与数据分片数量相等的多个进程,其中每个进程负责一个数据分片的写入操作,通过进程将对应的数据分片分别写入到主机房中的各组加载机中。
[0148]进一步的,写入单元122,用于在建立与数据分片数量相等的多个进程之前,控制并发进程数目不大于预定进程数目。
[0149]进一步的,写入单元122,用于在每个进程下分别建立多条线程,其中,一条线程负责至少一个加载机的写入操作,通过多条线程并行向多条线程各自负责的加载机写入进程对应的数据分片。
[0150]进一步的,如图13所示,所述装置还包括:
[0151]判断单元124,用于在写入单元122将接收单元121接收到的数据块分别写入到主机房中的各组加载机中之后,判断数据块是否成功写入到加载机中;
[0152]写入单元122,用于当判断单元124判断数据块写入失败时,对数据块进行有限次的重写操作。
[0153]进一步的,控制单元123,用于对加载机将数据块写入到与加载机对应的二级服务器中的速度进行限速。
[0154]进一步的,控制单元123,用于采用后台同步机制控制加载机将数据块写入到从机房中与加载机对应的二级服务器中。
[0155]本发明实施例提供的数据加载的装置,能够将中转设备中的数据块发送至主机房中,通过主机房将数据块分别写入到主机房内的各组加载机中,再由各组加载机将数据块写入到从机房中与加载机对应的二级服务器。与现有技术中由中转设备顺序推送数据到不同机房的方式相比,本发明由主机房负责数据的加载,通过主机房内的多组加载机并行向多个从机房中的二级服务器推送数据,中转设备只需将数据发送至主机房即可,由于中转设备只涉及一次数据加载过程,因此可以大大节省I/o的资源占用,从而能够提高跨机房环境下的数据加载效率。
[0156]此外,本发明实施例除了改进了数据推送方式,由原有的串行方式改为并行方式,在数据量不变的情况下缩短了数据推送时间,进一步的,对机房的分布采用了主从机制,主机房负责加载数据,从机房负责从主机房同步数据,并且采用了后台同步机制,在不影响系统当前请求响应时间的情况下又能提供实时查询服务;同时,数据的加载及推送增加了多进程、多线程以及重试机制,保证数据一致性的同时缩短了数据加载及推送的时间。
[0157]进一步的,作为对上述图1及图11所示方法的实现以及对上述图12及图13所示装置的应用,本发明实施例还提供了一种数据加载的系统,如图14所示,该系统包括:中转设备141、主机房142及从机房143,其中,
[0158]主机房142中包含主机房中控服务器1421及多组加载机1422 ;
[0159]从机房143中包含二级服务器1431,加载机1422的组数与从机房143的个数相同,每组加载机1422的数量与对应从机房143中的二级服务器1431数量相同;
[0160]中转设备141,用于将数据块发送至主机房中控服务器1421 ;
[0161]主机房中控服务器1421,用于将中转设备141发送的数据块分别写入到各组的每个加载机1422中;
[0162]加载机1422,用于将主机房中控服务器1421写入的数据块写入到从机房143中与加载机1422对应的二级服务器1431中。
[0163]进一步的,从机房143中包含三级服务器1432,三级服务器1432与二级服务器1431个数相同且一一对应,二级服务器
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1