一种可自定义负载均衡策略的数据传输方法与流程

文档序号:12134362阅读:158来源:国知局
一种可自定义负载均衡策略的数据传输方法与流程

本技术涉及一种信息技术领域的数据处理方法,特别涉及一种数据传输方法及系统。



背景技术:

随着信息技术和网络技术的快速发展,网络中需要传输和存储的数据量增长非常迅速。在许多大型业务网络中,需要从多个节点中采集数据并传输到分布式数据处理或存储平台,这些网络中大多采用分布式数据传输系统来传输数据。然而在分布式存储系统中,各节点之间传输数据时存在多条路径,即便是各节点的硬件资源完全相同,因为所传输的数据资源的不同,也可能会导致各节点线路的负载不均衡,从而影响系统整体的性能和吞吐量。

大多数分布式数据传输系统都是根据数据量进行负载均衡的,并没有对数据进行分类,不能使用不同的负载均衡策略来传输不同类型的数据。另外,传统的在每个数据发送节点上通过在配置文件中指定数据接收节点地址列表的方式,无法自动适应系统节点的动态扩展,也增加了系统维护人员的工作负担。



技术实现要素:

针对分布式数据传输系统中的配置复杂、无法使用不同的负载均衡策略来传输不同类型的数据等情况,本发明提出了一种可自定义负载均衡策略的数据传输方法,能够适应不同类型数据的传输,取得较好的负载均衡效果,并且简化了配置方式、易于使用。为了实现上述的发明目的,本发明提供了以下技术方案:

一种可自定义负载均衡策略的数据传输方法,包括调度管理模块、数据发送模块和数据接收模块,并将数据类型分为不需要保证关联性的普通数据、保证关联一致性的关联数据,以及根据每条日志记录的关联字段计算出关联ID并保证同一关联ID的记录被传输到同一个数据接收节点的日志数据;所述调度管理模块从配置文件中读取相关信息,进行系统初始化,根据不同类型数据的发送节点和接收节点的数量,生成数据传输节点的对应关系表,并根据数据发送节点和数据接收节点的状态信息动态调整对应关系表;所述数据发送模块读取本地配置信息,获取数据来源的相关信息,向调度管理模块发起请求,建立相应的数据传输队列并向数据接收模块发送数据;所述数据接收模块读取本地配置信息,根据数据类型进行数据接收,把数据保存到存储设备或者传输到下一级的处理节点。

进一步的,所述调度管理模块的调度过程包括下列步骤:

(1)读取配置信息,根据不同类型数据的发送节点和接收节点的数量,生成数据传输节点的对应关系表;

(2)接收数据发送节点获取数据传输规则的请求,把该发送节点对应的接收节点信息列表(节点信息包括节点的IP地址、传输端口、负载值以及描述信息)反馈给此发送节点;

(3)接收数据发送节点和数据接收节点发送的节点状态信息,根据数据接收节点的状态信息,动态调整数据接收节点的负载指标值,以保证负载均衡的效果。

进一步的,所述数据发送模块的发送数据过程包括以下步骤:

(1)读取本地配置信息,获取数据来源的相关信息,以便接收从应用模块传输过来的数据信息,或者直接从指定的目录列表中读取待传输的文件内容;

(2)向调度管理模块发起请求,获取不同类型数据的接收节点的信息列表,根据不同类型数据对应的数据接收节点列表,建立相应的数据传输队列;

(3)接收数据内容或者从文件读取,根据数据类型,选用相应的负载均衡策略,把数据发送到接收端;如果数据传输异常,则暂停当前队列数据的传输,等待指定的时间后再次重试,如果多次传输失败,则发送相关信息到调度管理节点;

(4)定期从调度管理模块获取更新后的接收节点的信息列表,在保证传输一致性的前提下,开始使用新的策略进行数据传输。

其中,所述数据发送模块的发送数据过程中的步骤(3)中,选用的负载均衡策略计算如下所述:

1)根据数据接收节点的负载系数以及当前需要传输的数据量或记录条数,计算出每个数据接收节点所对应的数据传输当量总值,所述数据传输当量总值是指数据传输量的加权值,每次获取到数据时,把数据添加到数据传输当量总值最小的数据接收节点对应的传输队列中;

2)对于普通类型的数据,根据数据传输当量总值最小的节点编号找到相应的数据待发队列,然后把数据打包(包括数据格式化、数据压缩、数据加密等操作)后添加到该节点对应的待发数据队列;

3)对于关联类型的数据,同一个关联ID的数据第一次到来时,根据数据传输当量总值最小的节点编号找到相应的数据待发队列,把数据打包(包括数据格式化、数据压缩、数据加密等操作)后添加到该节点对应的待发数据队列;然后把关联ID和队列编号添加到关联ID对应表,以后同一关联ID的数据再次到来时,通过查表的方式来把数据添加到相同的队列;

4)对于日志类型的数据,首先根据关联字段计算出一条日志记录的HASH值(散列值),然后使用HASH值mod(取余)当前节点对应的接收节点的个数,最后的余数就是默认的数据接收节点编号。如果所得到的编号对应队列的数据传输当量总值比所有队列的均值大于指定的阈值,则根据数据传输当量总值最小的节点编号找到相应的数据待发队列,把数据打包(包括数据格式化、数据压缩、数据加密等操作)后添加到该节点对应的待发数据队列;然后把HASH值和队列编号添加到HASH值对应表中,以后同一HASH值的日志数据再次到来时,通过查表的方式来把数据添加到相同的队列;

5)数据发送任务从队列中获取数据进行传输,如果数据传输异常,则暂停当前队列数据的传输,等待指定的时间后再次重试;如果多次传输失败,则发送相关信息到调度管理节点。

其中,所述数据接收模块的接收数据过程包括以下步骤:

(1)读取本地配置信息,针对每种数据类型,启动一个任务在指定的服务端口进行监听,等待数据发送节点的连接请求,进行数据接收;

(2)定期收集当前数据接收节点的状态信息(网络带宽、CPU、内存、存储负载等信息),发送给调度管理模块;

(3)接收数据发送端传输来的数据,根据数据类型,选择不同的输出策略,把数据保存到存储设备或者传输到下一级的处理节点。

所述对应关系表包括三种数据类型的对应关系表,一是读取普通数据对应的发送节点列表和接收节点列表,生成普通数据传输的发送节点和接收节点的对应关系表;二是读取关联数据对应的发送节点列表和接收节点列表,生成关联数据传输的发送节点和接收节点的对应关系表;三是读取日志数据对应的发送节点列表和接收节点列表,生成日志数据传输的发送节点和接收节点的对应关系表。

对于三种数据类型的对应关系表,根据发送方地址列表(S1,S2,…,Sn)和接收方地址列表(R1,R2,…,Rm),建立对应关系表,(1)m≥n时,使用接收方的节点总数m÷发送方的节点总数n≈匹配因子x,如果不能整除则向上取整;(2)m<n时,使用发送方的节点总数n÷接收方的节点总数m≈匹配因子y,如果不能整除则向上取整。

所述调度管理模块的调度过程的步骤(3)中,动态调整数据接收节点的负载系数的方法如下:

(1)接收所有接收节点的状态信息,更新节点的状态信息列表;

(2)定期计算各节点的负载系数,所述负载系数是指该节点的各单项指标负载与权重的乘积之和,如果一个节点的任何一个单项指标的负载值连续M个周期都超过了指定的最高阈值,则认为系统已经过载,此时需要在节点负载表中把该节点的负载系数设置为100%;

(3)计算每个周期内所有节点的负载系数均值和各单项指标负载的均值,比较当前周期内每个节点的负载系数和单项指标负载与相关均值的偏离度,如果连续N个周期内某个节点的负载系数或单项指标负载与相关均值的偏离度大于V,则认为该节点的负载过重,则反馈给数据发送节点的信息列表中该数据接收节点的负载系数增加20%,直至相关指标的偏离度小于V。

所述数据传输当量总值的计算方法为:数据传输当量总值=数据传输当量总值(前值)+本次传输数据量(或记录条数)×传输权重。

所述数据接收模块的接收数据过程的步骤(3)中,输出策略包括下列步骤:

1)接收数据发送节点传输过来的数据,进行数据解包,判断数据的类型,然后根据不同的数据类型转入相关类型的数据处理流程;

2)对于普通类型的数据,如果需要输出到下一级数据处理节点,则按照在数据发送模块描述的负载均衡策略把数据传输给下一级数据接收节点,或者把数据直接发送到指定的节点;如果需要保存到文件,则先提取文件名、时间、和数据内容等信息,判断文件名是否为空;如果文件名为空,则根据指定的策略生成文件名,然后把数据保存到指定的文件中;

3)对于关联类型的数据,如果需要输出到下一级数据处理节点,则按照在数据发送模块描述的负载均衡策略把数据传输给下一级数据接收节点,或者把数据直接发送到指定的节点;如果需要保存到文件,则先提取文件名、时间、关联ID和数据内容等信息,判断文件名是否为空;如果文件名为空,根据当前关联ID从关联表中查找对应的文件序列号,如果没有找到当前关联ID对应的文件序列号,则设置该文件序列号的值为0,并且把该关联ID和文件序列号添加到关联表中;然后根据时间、关联ID、文件序列号自动生成一个文件名和保存路径,把数据保存到指定的文件中,最后把关联表中该关联ID对应的文件序列号加1,并且遍历关联表,删除超时节点;

4)对于日志类型的数据,如果需要输出到下一级数据处理节点,则按照在数据发送模块描述的负载均衡策略把数据传输给下一级数据接收节点,或者把数据直接发送到指定的节点;如果需要保存到文件,则先提取文件名、时间、日志类型和日志记录等信息,判断文件名是否为空;如果文件名为空,则根据时间、日志类型从关联表中查找对应的文件名序列号,如果没有找到该时间、日志类型对应的文件序列号,则设置该文件序列号的值为0,并且把该时间、日志类型和文件序列号添加到关联表中;然后根据时间、日志类型,以及文件序列号生成文件名和保存路径,把日志记录追加到该文件中。如果记录已经达到指定的条数或者超过指定的时间间隔,则关闭当前文件,然后把文件序列号加1。

本发明描述的数据传输方法,针对不同的数据类型,采用不同的负载均衡算法,能够满足大多数数据种类的传输要求,并且具有良好的灵活性,能够适应不同的网络环境和设备配置情况。

附图说明

图1为数据发送节点和数据接收节点的对应关系图1;

图2为数据发送节点和数据接收节点的对应关系图2;

图3为数据发送节点的模块结构图;

图4为数据发送节点的工作流程图。

具体实施方式

本发明的核心思想是:提供一套可自定义负载均衡策略的数据传输方法,可以针对不同的数据类型选用不同的负载均衡策略,通过调度管理模块来动态的调整负载均衡的策略,同时简化了配置,更易于使用。

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例仅用于说明本发明而不是限制,并且在应用上可以延伸到其它的修改、变化、应用和实施例,同时认为所有这样的修改、变化、应用和实施例都在本发明的范围内。

一种可自定义负载均衡策略的数据传输方法,包括调度管理模块、数据发送模块和数据接收模块。该方法把数据类型分为以下三种:

普通数据

此类数据需要传输到数据接收节点进行处理或存储,只要按照尽量让数据量(传输数据的字节数)均匀分布的策略进行均衡,不需要保证关联性。

关联数据

此类数据要保证同一个关联ID相关的一组数据传输到同一个数据接收节点上,需要在保证关联一致性的前提下,按照尽量让数据量(传输数据的字节数)均匀分布的策略进行均衡。

日志数据

日志数据需要根据每条日志记录的关联字段计算出关联ID,保证同一关联ID的记录被传输到同一个数据接收节点,在保证日志记录的关联一致性的前提下,按照数据量或记录条数均匀分布的策略进行均衡。

本发明主要涉及的三个组件:调度管理模块、数据发送模块和数据接收模块。分别描述如下所述:

调度管理模块主要负责:

A1.从配置文件中读取相关信息,进行系统初始化工作。主要包括以下工作:读取普通数据对应的发送节点列表和接收节点列表,生成普通数据传输的发送节点和接收节点的对应关系表;读取关联数据对应的发送节点列表和接收节点列表,生成关联数据传输的发送节点和接收节点的对应关系表;读取日志数据对应的发送节点列表和接收节点列表,生成日志数据传输的发送节点和接收节点的对应关系表;读取计算节点负载的相关指标的权重及其它配置信息,初始化节点负载计算表。

A2.接收数据发送节点获取数据传输规则的请求,反馈该节点对应的数据接收节点信息列表(节点信息包括节点的IP地址、传输端口、负载值以及描述信息)。主要包括以下工作:接收获取普通文件数据传输规则的请求,返回相应的接收节点信息列表;接收获取关联文件数据传输规则的请求,返回相应的接收节点信息列表;接收获取日志文件数据传输规则的请求,返回相应的接收节点信息列表。

A3.接收数据发送节点和数据接收节点发送的节点状态信息,根据数据接收节点的状态信息计算该节点的负载值,并根据相关策略动态调整数据接收节点的负载系数,以保证负载均衡的效果。

其中对于A1,进行系统初始化过程如下:

A11.读取普通数据传输相关的发送方地址列表(S1,S2,…,Sn)和接收方地址列表(R1,R2,…,Rm),建立对应关系表。所述对应关系表的关系可以参考图1和图2。

如果m≥n,使用接收方的节点总数m÷发送方的节点总数n≈匹配因子x,如果不能整除则向上取整。发送节点和接收节点的对应关系图参见附图1,原则上是每个发送方节点对应2x个接收方节点,具体对应关系列表如下:

S[1]:R[1],R[2],…,R[x],R[x+1],R[x+2],…,R[2x]

S[2]:R[x+1],R[x+2],…,R[2x],R[2x+1],R[2x+2],…,R[3x]

S[3]:R[2x+1],R[2x+2],…,R[3x],R[3x+1],R[3x+2],…,R[4x]

S[n]:R[(n-1)x+1],R[(n-1)x+2],…,R[m],R[1],R[2],…,R[x]

如果m<n,使用发送方的节点总数n÷接收方的节点总数m≈匹配因子y,如果不能整除则向上取整。发送节点和接收节点的对应关系图参见附图2,原则上是每个接收方节点对应2y个发送方节点,具体对应关系列表如下:

S[1]----S[y]:R[1]、R[2]

S[y+1]----S[2y]:R[2]、R[3]

S[2y+1]----S[3y]:R[3]、R[4]

S[(m-1)y+1]----S[n]:R[m]、R[1]

A12.读取关联数据传输相关的发送方地址列表和接收方地址列表,采用与A1同样的算法建立关联数据类型的发送方节点和接收方节点的对应关系表。

A13.读取日志数据传输相关的发送方地址列表和接收方地址列表,采用与A1同样的算法建立日志数据类型的发送方节点和接收方节点的对应关系表。

A14.读取计算节点负载的相关指标(CPU使用率,网络带宽使用率,内存使用率,存储IO使用率,存储容量使用率)的权重信息及最高阈值信息,初始化接收节点负载表。每个指标的权重在0-1之间,所有指标的权重之和等于1,如果不想让某个指标参与运算,直接设置其权重为0即可。

对于A3,动态调整数据接收节点的负载系数的策略如下:

A31.接收所有接收节点的状态信息,更新节点的状态信息列表。检查是否有节点发生故障,如果有节点发生故障,则把该节点从数据接收节点列表剔除,然后根据A1步骤的算法重新生成数据发送节点和数据接收节点的对应关系。

A32.定期计算各节点的负载系数(该节点的各单项指标负载与权重的乘积之和),如果一个节点的任何一个单项指标的负载值连续M个周期都超过了指定的最高阈值,则认为系统已经过载,此时需要在节点负载表中把该节点的负载系数设置为100%。(其中的M值可以根据具体的应用场景,通过修改配置文件来调整)。

A33.计算每个周期内所有节点的负载系数均值和各单项指标负载的均值,比较当前周期内每个节点的负载系数和单项指标负载与相关均值的偏离度,如果连续N个周期内某个节点的负载系数或单项指标负载与相关均值的偏离度大于V,则认为该节点的负载过重,则反馈给数据发送节点的信息列表中该数据接收节点的负载系数增加20%,直至相关指标的偏离度小于V。(其中的N和V可以根据具体的应用场景,通过修改配置文件来调整,每个节点的负载系数最高为100%)。

数据发送模块主要负责:

B1.读取本地配置信息,进行系统初始化工作。主要包括以下工作:读取普通数据获取的相关配置信息,如果是需要从指定目录读取待传输的文件内容,则创建普通数据读取任务;读取关联数据获取的相关配置信息,如果是需要从指定目录读取待传输的文件内容,则创建关联数据读取任务;读取日志数据获取的相关配置信息,如果是需要从指定目录读取待传输的文件内容,则创建日志数据读取任务。

B2.向调度管理模块发起请求,获取本节点对应的数据传输规则。主要包括以下工作:获取普通数据对应的数据接收节点信息列表,创建普通数据的传输队列,每个数据接收节点对应一个数据传输队列,并且启动相应的普通数据发送任务;获取关联数据对应的数据接收节点信息列表,创建关联数据的传输队列,每个数据接收节点对应一个数据传输队列,并且启动相应的关联数据发送任务,初始化关联数据对应表;获取日志数据对应的数据接收节点信息列表,创建日志数据的传输队列,每个数据接收节点对应一个数据传输队列,并且启动相应的日志数据发送任务,初始化日志数据对应表。

B3.获取待传输的数据内容和数据类型,选用相应的负载均衡策略进行数据传输,具体工作流程参见附图4。如果数据传输异常,则暂停当前队列数据的传输,等待指定的时间后再次重试,如果多次传输失败,则发送相关信息到调度管理节点。

B4.定期从调度管理模块获取更新后的数据接收节点信息列表(包括节点的地址、节点的负载系数等),在保证数据传输一致性的前提下,开始使用新的策略进行数据传输。

其中对于B3,如图3和图4所示,针对不同的数据类型,选用的负载均衡策略详细描述如下:

B31.对于数据传输时采用的负载均衡策略,主要思路为:根据数据接收节点的负载系数以及当前需要传输的数据量或记录条数,计算出每个数据接收节点所对应的数据传输当量总值(数据传输量的加权值),每次接收到数据时,把数据添加到数据传输当量总值最小的数据接收节点对应的传输队列中。数据传输当量总值的计算方法为:数据传输当量总值=数据传输当量总值(前值)+本次传输数据量(或记录条数)×传输权重。数据接收节点的负载系数对应的传输权重可以通过修改配置的方式来调整,默认设置如下:

B32.对于普通类型的数据,每次接收到数据或者从文件读取到数据后,找到数据传输当量总值最小的数据接收节点对应的传输队列和状态信息(包括节点地址、传输端口、统计信息、负载系数等),根据步骤B31描述的策略计算本次要传输数据的传输当量值,然后把数据打包(包括数据格式化、数据压缩、数据加密等操作)后添加到传输队列。更新当前数据接收节点对应的统计信息,包括数据传输总量(字节数)、数据传输当量总值、传输数据块或文件总数等。

B33.对于关联类型的数据,每次接收到数据或者从文件读取到数据后,首先根据数据的关联ID查找关联ID对应表,取得此关联ID对应的数据接收节点编号。如果编号值有效(大于-1,且小于接收节点的个数),记录该编号作为当前数据接收节点编号;如果编号值无效(小于0,或大于等于接收节点的个数),则找到数据传输当量总值最小的数据接收节点编号,记录该编号作为当前数据接收节点编号。然后根据步骤B31描述的策略计算本次要传输数据的传输当量值,把数据打包(包括数据格式化、数据压缩、数据加密等操作)后添加到当前数据接收节点编号对应的传输队列,同时更新当前数据接收节点对应的统计信息,包括数据传输总量(字节数)、数据传输当量总值、传输数据块或文件总数等。最后把关联ID和对应的数据接收节点编号添加到关联ID对应表,并且遍历超时链表,从关联ID与节点编号的对应关系表中删除相应的超时节点。

B34.对于日志类型的数据,每次读取一行日志记录,根据配置文件中指定的关联字段获取相关的内容,使用这些字段值进行HASH运算,然后在HASH值对应表中查找该HASH值对应的数据接收节点编号。如果编号值有效(大于-1,且小于接收节点的个数),记录该编号作为当前数据接收节点编号;如果编号值无效(小于0,或大于等于接收节点的个数),则使用HASH值mod(取余)当前节点对应的接收节点的个数,最后的余数就作为默认的当前数据接收节点编号;如果默认的当前数据接收节点编号对应的数据传输当量总值比所有队列的均值大20%以上,则取数据传输当量总值最小的数据接收节点编号作为当前数据接收节点编号。然后根据步骤B31描述的策略计算本次要传输数据的传输当量值,把数据打包(包括数据格式化、数据压缩、数据加密等操作)后添加到当前数据接收节点编号对应的传输队列,同时更新当前数据接收节点对应的统计信息,包括数据传输总量(字节数和记录条数)、数据传输当量总值、传输数据块或文件总数等。最后把HASH值和对应的数据接收节点编号添加到HASH值对应表。

B35.数据发送任务从传输队列中获取数据进行传输。每种数据类型对应每个数据接收节点都会有一个数据发送任务,每个数据发送任务每次从对应的传输队列中取出一个数据块进行传输。如果数据传输异常,则暂停当前队列数据的传输,等待指定的时间后再次重试;如果多次传输失败,则发送相关状态信息到调度管理节点,并且把数据块重新添加到相应传输队列的头部。

数据接收模块负责:

C1.读取本地配置信息,针对每种数据类型,启动一个数据接收任务。启动普通数据的监听任务,等待接收和处理普通数据;启动关联数据的监听任务,等待接收和处理关联数据;启动日志数据的监听任务,等待接收和处理日志数据。

C2.定期收集当前数据接收节点的网络带宽使用率、CPU使用率、内存使用率、存储空间使用率和存储IO使用率等负载信息,把数据格式化后发送给调度管理模块。

C3.接收数据发送节点传输过来的数据,根据数据类型,选择不同的输出策略,把数据保存到存储设备或者传输到下一级的数据接收节点。

其中对于步骤C3,可以具体描述为:

C31.接收数据发送节点传输过来的数据,进行数据解包(包括数据项提取、数据解压、数据解密等操作),判断数据的类型,然后根据不同的数据类型转入相关类型的数据处理流程。

C32.对于普通类型的数据,如果需要输出到下一级数据处理节点,则按照在数据发送模块描述的负载均衡策略把数据传输给下一级数据接收节点,或者把数据直接发送到指定的节点。如果需要保存到文件,则先提取文件名、时间、和数据内容等信息,判断文件名是否为空;如果文件名为空,则根据指定的策略生成文件名(系统默认根据当前时间和全局序列号自动生成一个文件名),然后把数据保存到指定的文件中。

C33.对于关联类型的数据,如果需要输出到下一级数据处理节点,则按照在数据发送模块描述的负载均衡策略把数据传输给下一级数据接收节点,或者把数据直接发送到指定的节点。如果需要保存到文件,则先提取文件名、时间、关联ID和数据内容等信息,判断文件名是否为空;如果文件名为空,根据当前关联ID从关联表中查找对应的文件序列号,如果没有找到当前关联ID对应的文件序列号,则设置该文件序列号的值为0,并且把该关联ID和文件序列号添加到关联表中。然后根据时间、关联ID、文件序列号自动生成一个文件名和保存路径,把数据保存到指定的文件中,最后把关联表中该关联ID对应的文件序列号加1,并且遍历关联表,删除超时节点。

C34.对于日志类型的数据,如果需要输出到下一级数据处理节点,则按照在数据发送模块描述的负载均衡策略把数据传输给下一级数据接收节点,或者把数据直接发送到指定的节点。如果需要保存到文件,则先提取文件名、时间、日志类型和日志记录等信息,判断文件名是否为空。如果文件名为空,则根据时间、日志类型从关联表中查找对应的文件名序列号,如果没有找到该时间、日志类型对应的文件序列号,则设置该文件序列号的值为0,并且把该时间、日志类型和文件序列号添加到关联表中。然后根据时间、日志类型,以及文件序列号生成文件名和保存路径,把日志记录追加到该文件中。如果记录已经达到指定的条数或者超过指定的时间间隔,则关闭当前文件,然后把文件序列号加1。

本发明描述的数据传输方法,针对不同的数据类型,采用不同的负载均衡算法,能够满足大多数数据种类的传输要求,并且具有良好的灵活性,能够适应不同的网络环境和设备配置情况。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1