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

文档序号:8472988阅读:来源:国知局
机被写入了数据后,就需要向大量的从机房推送数据。其中,从机房的个数与主机房中加载机的组数相同,有多少个从机房就会在主机房中部署有多少组加载机,一组加载机负责一个从机房的写入操作。其中,从机房不仅包括二级服务器,还包括三级服务器,这些数据就会被存储在从机房的二级服务器和三级服务器中。二级服务器的个数与每组加载机的个数相同且一一对应,一个加载机负责一个二级服务器的写入操作;三级服务器的个数与二级服务器的个数相同且一一对应,一个二级服务器负责一个三级服务器的写入操作。
[0088]进一步的,考虑到需要向加载机推送的数据较多且推送的路径复杂,为了避免加载机继续向二级服务器推送数据时出现重复或者遗漏,作为一种可选的实施方式,可以在将加载机中的数据块或数据分片写入到从机房中的二级服务器中之前,先由二级服务器对对应的加载机中的数据状态进行检测,若发现加载机中的数据发生变化,则二级服务器向对应的加载机请求加载数据。
[0089]为了能够让二级服务器检测到加载机中的数据状态,可以在加载机中建立一个加载机数据表,该加载机数据表记录有加载机中写入的每条数据,且每条数据都具有标识或编号,每当加载机中进行了数据更新时,该加载机数据表也会被同步更新;当然,在二级服务器中也会建立一个二级服务器数据表,同加载机数据表的性质一样(数据和标识或编号的对应关系一致),二级服务器数据表也记录有二级服务器中写入的每条数据,且每条数据也都具有标识或编号。二级服务器将二级服务器数据表和加载机数据表进行比对,若发现两个数据表中存在不一致,即二级服务器发现加载机中的数据有更新时,二级服务器按照加载机数据表的内容,向加载机请求写入更新的数据或者自行删除数据,从而完成二级服务器中数据的更新。
[0090]进一步的,在二级服务器向加载机请求写入数据的过程中,考虑到二级服务器的负载能力,若加载的数据较多时,加载速度过快可能会导致二级服务器加载数据失败,因此可以对二级服务器的加载速度进行限速。作为一种可选的实施方式,可以在加载机向二级服务器推送数据时,将数据进行分片并建立多条进程,多进程并行向二级服务器推送小数据量的数据分片,以此来对二级服务器加载数据进行限速,同时尽量缩短二级服务器加载数据的时间。
[0091]在实际的数据查询系统中,机房中的服务器除了进行数据的加载/推送外,更重要的是对用户的查询请求进行响应,为用户查询数据。但是数据的推送涉及范围大,为了保证数据的时效性,就需要在数据发生变化时立即进行数据的推送,此时,推送数据的过程很可能会与用户查询数据的过程发生冲突,造成对系统资源的抢夺。因此,为了保证数据更新及时同时又不影响用户的查询,可以采用后台同步机制向从机房中二级服务器写入数据,在写入数据的过程中不会影响系统当前请求的响应时间,可以为用户提供实时查询服务。当然,从机房中二级服务器向三级服务器推送数据也可以采用后台同步机制进行。
[0092]本发明实施例除了改进了数据推送方式,由原有的串行方式改为并行方式,在数据量不变的情况下缩短了数据推送时间,进一步的,对机房的分布采用了主从机制,主机房负责加载数据,从机房负责从主机房同步数据,并且采用了后台同步机制,在不影响系统当前请求响应时间的情况下又能提供实时查询服务;同时,数据的加载及推送增加了多进程、多线程以及重试机制,保证数据一致性的同时缩短了数据加载及推送的时间。
[0093]上述实施例是以中转设备、加载机、二级服务器及三级服务器为主对跨机房的数据加载进行的说明,下面本实施例还将以主机房为主对跨机房的数据加载进行说明,其中主机房包含主机房中控服务器,该数据加载的方法如图11所示,包括:
[0094]201、主机房中控服务器接收中转设备发送的数据块。
[0095]主机房中控服务器作为主机房内的核心部件,可以接收中转设备发送的各种数据,包括:
[0096]I)接收中转设备向主机房发送的数据块。
[0097]这种由中控服务器直接接收数据块的方式虽然能够减小创建和维护数据推送进程的资源开销,但是由于数据块的数据量过大,还是会导致数据接收的时间过长。
[0098]2)以单个进程接收中转设备串行发送的经过切片后得到的数据分片。
[0099]这种以单个进程接收数据分片的方式,能够减小单次接收的数据量,从而使每次接收数据的时间较短,相比于一次接收数据量较大的数据块可能造成的传输卡顿而言,通过多次接收小数据量的数据分片的方式能够更快的接收到中转设备发送的全部数据。
[0100]3)以多个进程接收中转设备并行发送的经过切片后得到的数据分片。
[0101]基于上述以单个进程接收中转设备串行发送的经过切片后得到的数据分片的方式而言,这种以多个进程接收中转设备并行发送的经过切片后得到的数据分片的方式虽然需要在创建和维护数据推送进程方面开销一定的资源,但是在不超出主机房中控服务器的处理资源的情况下,能够极大的提高主机房中控服务器接收数据的速度。
[0102]202、主机房中控服务器将接收到的数据块分别写入到主机房中的各组加载机中。
[0103]主机房中控服务器将接收到的数据块分别写入到各组的每个加载机中,这一步骤的结果是使每个加载机都被写入完整的数据块。
[0104]进一步的,主机房中控服务器将数据块写入到加载机中的实现方式可以包括:
[0105]I)主机房中控服务器将接收到的完整的数据块以单个线程向各组的每个加载机串行发送,直至每个加载机都被写入完整的数据块。
[0106]2)主机房中控服务器将接收到的完整的数据块以多个线程并行向各组的每个加载机发送,直至每个加载机都被写入完整的数据块。
[0107]这种以多个线程并行向各组加载机发送数据块的实现方式,虽然需要在创建和维护数据推送线程方面开销一定的资源,但是在不超出主机房的处理资源的情况下,能够极大的提高向加载机发送数据的速度。
[0108]3)主机房中控服务器将接收到的完整的数据块进行切片后获得数据分片,再将数据分片以单个线程依次向各组的每个加载机串行发送。
[0109]这种依次向加载机中写入数据量较小的数据分片的方式相对于一次向加载机中写入数据量较大的数据块而言,能够在整体上缩短向加载机中写入完整数据块的时间。
[0110]4)主机房中控服务器将接收到的完整的数据块进行切片后获得数据分片,再将数据分片以多个线程并行向各组的每个加载机串行发送。
[0111]这种将数据分片以多个线程并行发送的方式相比于单个线程串行发送的方式而言,在不考虑创建和维护数据推送线程开销资源的情况下,能够极大的缩短将数据发送给加载机的时间。
[0112]此外,当主机房中控服务器接收到的是中转设备发送的数据分片时,其向加载机发送数据分片的方式同样也可以为单个线程串行发送或者多个线程并行发送,此处不再赘述。
[0113]这里需要说明的是,在将数据块切片得到数据分片后,将数据分片发送给加载机的方式实际上已经能够缩短发送数据的时间,在实际应用中确定是以单个线程串行发送还是以多个线程并行发送时,主要看主机房、加载机等处理资源的开销情况,当处理资源能够满足多线程发送数据时,以多线程并行发送数据的方式能够实现数据较快的推送。
[0114]203、主机房中控服务器通过加载机将数据块写入到从机房中与加载机对应的二级服务器中。
[0115]当主机房中控服务器将接收到的数据(数据块/数据分片)发送到加载机中后,就可以向从机房推送数据了。由于从机房的个数与主机房中加载机的组数相同,从机房中二级服务器的个数与每组加载机的个数相同且一一对应,因此,主机房中控服务器可以通过控制各组的每个加载机将数据块推送给加载机对应的二级服务器中,实现数据在各个机房中的分布。
[0116]当然,主机房中控服务器可以控制加载机将整个数据块发送给对应的二级服务器;也可以把数据块切片后将数据分片以单个进程串行发送给对应的二级服务器,或者把数据块切片后将数据分片以多个进程并行发送给对应的二级服务器。
[0117]本发明实施例提供的数据加载的方法,能够将中转设备中的数据块发送至主机房中,通过主机房将数据块分别写入到主机房内的各组加载机中,再由各组加载机将数据块写入到从机房中与加载机对应的二级服务器。与现有技术中由中转设备顺序推送数据到不同机房的方式相比,本发明由主机房负责数据的加载,通过主机房内的多组加载机并行向多个从机房中的二级服务器推送数据,中转设备只需将数据发送至主机房即可,由于中转设备只涉及一次数据加载过程,因此可以大大节省I/o的资源占用,从而能够提高跨机房环境下的数据加载效率。
[0118]由于中转设备可以将系统内大量数据进行磁盘化以便数据的推送,所以中转设备不仅可以将整个数据块发送给主机房,还可以先将数据块进行切片得到数据分片,然后将数据分片发送给主机房。在实际将数据块切片的过程中,不仅要考虑数据分片的数量,而且要考虑切片的规则。
[0119]在实际将数据块切片时,并不是数据分片的数量越多,每个数据分片的数据量越小,其发送给主机房的时间就会缩短。由于每个数据分片的发送都要占用一个进程,当大量数据分片并行发送时,主机房中控服务器需要建立大量的进程,而创建和维护这些进程需要开销主机房中控服务器的处理资源,因此在确定数据分片的数量时,一定要考虑主机房中控服务器所能维护的进程数量,不能随意将数据块进行切片。此时,可以由网管人员根据主机房中控服务器的负载状态设定进程的数量,参考主机房中控服务器当前所能维护的进程数量将数据块切为相应数量的数据分片。
[0120]当按照确定的数据分片的数量对数据块进行切片时,可以依照不同的规则进行切片,其实现方式可以包括:
[0121]I)根据每条数据的标识或者编号按照轮询机制划分为不同的数据分片;
[0122]2)按照每条数据的编号顺序划分为不同的数据分片,其中,每个数据分片中包含的数据条数可以相同,也可以不同。
[0123]这里需要说明的是,按照每条数据的编号进行切片的方式要么需要计算数据的条数,从而能够均衡的将数据块切分为数据量相当的数据分片;要么随机对数据块进行切片,得到数据量大小不一的数据分片,若数据分片的数据量过大,则不利于数据的推送。
[0124]而按照轮询机制划分数据分片则不需要计算数据的条数,即把每一条数据依次分配给与进程对应的每个数据分片,直至每条数据被分配完毕。按照轮询机制划分数据分片的操作简洁,能够最大程度的保证每个数据分片对应进程的负载相对均衡。
[0125]中转设备可以按照上述方式将数据块切分为数据分片,并将多个数据分片以多个进程并行发送给主机房中控服务器。
[0126]进一步的,主机房中控服务器将接收到的数据(数据块/数据分片)分别写入到各组的每个加载机中的实际执行过程中,可以建立与数据分片数量相等的多个进程,其中每个进程负责一个数据分片的写入操作。由于每个进程在写入数据分片时是独立的
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1