一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式存储系统的数据传输方法、系统、设备及介质与流程

2022-08-03 02:10:26 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种分布式存储系统的数据传输方法、系统、设备及介质。


背景技术:

2.分布式存储系统包括一套多个节点组成的存储集群,运行过程中,其内部有着大量的数据传输,因此数据传输的功能、性能对分布式存储系统至关重要。
3.相关技术中的数据传输方式中同样的任务需要更多的流程来实现,完成认为时需要循环请求或响应等,或者需要依赖于多线程等技术来实现,耗时,且增加了对系统资源的消耗。


技术实现要素:

4.鉴于以上所述现有技术的缺点,本发明提供一种分布式存储系统的数据传输方法、系统设备及介质,以解决上述技术问题。
5.本发明提供的一种分布式存储系统的数据传输方法,所述方法包括:
6.将待传输数据分割为多个分割数据,并将各所述分割数据通过发送队列分别发送至各所述分割数据对应的目标对象;
7.获取各所述目标对象的响应消息,并生成所述待传输数据的传输结果。
8.可选的,将各所述分割数据通过发送队列分别发送至各分割数据对应的目标对象包括:
9.生成所述待传输数据的至少一个冗余数据,将所述冗余数据新增为分割数据;
10.获取分割数据对应的目标对象标识,根据所述分割数据、目标对象标识和发送标识生成待发送消息,得到各分割数据对应的待发送消息;
11.将各所述待发送消息通过发送队列分别发送至各所述分割数据对应的目标对象。
12.可选的,所述响应消息包括响应标识,所述响应标识与所述发送标识一一对应,获取各所述目标对象的响应消息,并生成所述待传输数据的传输结果包括:
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.图1是本发明一实施例中提供的分布式存储系统的数据传输方法的一种流程示意图;
53.图2是本发明一实施例中提供的分布式存储系统的数据传输方法的另一种流程示意图;
54.图3是本发明一实施例中提供的分布式存储系统的数据传输方法的另一种流程示意图;
55.图4是本发明一实施例中提供的各数据传输节点调用关系的一种连接示意图;
56.图5是本发明一实施例中提供的分布式存储系统的数据传输方法的另一种流程示意图;
57.图6是本发明一实施例中提供的分布式存储系统的数据传输方法的另一种流程示意图;
58.图7是本发明一实施例中提供的分布式存储系统的数据传输方法的另一种流程示意图;
59.图8是本发明一实施例中提供的分布式存储系统的数据传输系统的一种结构示意图;
60.图9是本发明一实施例中提供的分布式存储系统的数据传输系统应用的一种具体示例结构示意图;
61.图10是本发明一实施例提供的一种电子设备的结构示意图。
具体实施方式
62.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
63.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
64.在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
65.如图1所示,本实施例提供了一种分布式存储系统的数据传输方法,该方法包括:
66.步骤s101:将待传输数据分割为多个分割数据,并将各分割数据通过发送队列分别发送至各分割数据对应的目标对象。
67.相关技术中,分布式存储系统一般在完成消息分发任务时需要循环请求或响应其他的流程,比如多线程等技术来实现,耗时、系统资源占用大。本实施例提供的分布式存储系统的数据传输方法则是先将待传输数据再客户端进行分割,得到多个分割数据,通过客户端本地线程的发送队列进行分割数据的发送,提升了数据传输的效率。
68.将待传输数据分割为多个分割数据的方式可以采用本领域技术人员所知晓的方式实现,在将各分割数据通过发送队列分别发送至各分割数据对应的目标对象之前,先将各分割数据进行数据对齐,数据对齐的方式也可以采用本领域技术人员所知晓的方式实现,在此不做限定。
69.在一个实施例中,由于在分布式系统中,一般可以用多副本或者纠删码来保证数据的可靠性,此时,客户端一份数据需要往多个节点(目标对象)来写入。此时,将各分割数据通过发送队列分别发送至各分割数据对应的目标对象包括:
70.生成待传输数据的至少一个冗余数据,将冗余数据新增为分割数据;
71.获取分割数据对应的目标发送对象标识,根据分割数据、目标对象标识和发送标识生成待发送消息,得到各分割数据对应的待发送消息;
72.将各待发送消息通过发送队列分别发送至各分割数据对应的目标对象。
73.冗余数据的生成方式可以采用本领域技术人员所知晓的方式实现,在此不做赘述。
74.由于在原始的待传输数据的基础上增加了冗余数据以保证数据的可靠性,此时,冗余数据也需要发送给对应的目标对象,故可以将得到的冗余数据确定为新的分割数据,加入到分割数据集合中,一并发送给目标对象。这样,即便某一个待传输数据所分割得到的分割数据(原始分割数据)在传输过程中发生了丢失,也可以通过冗余数据和其他原始分割数据还原得到待传输数据,提升数据传输的可靠性。
75.目标对象可以是服务端等,待传输数据初始状态下存储于客户端中,通过客户端对待分割数据进行分割,并生成冗余数据,将分割数据和由冗余数据确定的分割数据均传输给服务端。该目标对象为分割数据所要发送的对象。在分布式存储系统中,一般来说,同一个待传输数据所对应的各个分割数据所要发送的对象(目标对象)是不相同的。
76.为区分各服务端(目标对象),可为各目标对象预先配置全局唯一的目标对象标识,对每一个分割数据(由待传输数据分割得到的分割数据、生成的冗余数据确定得到的分割数据)也预先配置有全局唯一的发送标识,再根据发送标识、目标对象标识以及分割数据生成该分割数据对应的待发送消息,通过该待发送消息携带该分割数据达到目标对象。
77.在一个实施例中,发送队列一般为多个,发送队列的数量与发送该待发送消息的cpu的cpu核数相同。
78.可选的,若目标对象标识包括ip地址,将各所述待发送消息通过发送队列分别发送至各所述分割数据对应的目标对象时,可以先将各待发送消息根据ip地址hash后,将各待发送消息均衡的分布在发送队列中的多个发送列。
79.步骤s102:获取各目标对象的响应消息,并生成待传输数据的传输结果。
80.由于待传输数据被拆分为多个分割数据进行传输,后续得到的响应消息也为多个,此时,可以将多个响应消息进行聚合,以得到该待传输数据最终的传输结果。
81.在一个实施例中,响应消息包括响应标识,响应标识与发送标识一一对应,获取各目标对象的响应消息,并生成待传输数据的传输结果包括:
82.获取各响应消息中的响应标识;
83.根据预设响应标识-发送标识映射关系确定响应标识对应的发送标识,并确定各分割数据的传输状态;
84.根据各分割数据的传输状态确定传输结果。
85.可选的,响应标识可以是与发送标识内容相同的数据,其区别仅在于响应标识是由目标对象返回的消息所携带的,发送标识是本地所配置的。这样,本地接收到响应标识,根据其内容就能够知晓该响应标识与哪一个发送标识是对应的,进而可以知晓与该发送标识对应的分割数据的传输状态,若响应标识m与发送标识n内容相同,发送标识与分割数据d对应,则可以知晓分割数据d传输成功。若没有接收到与发送标识n相同的响应标识,则说明分割数据d传输失败。
86.当然,响应标识与发送标识也可以内容不同,但响应标识与目标对象一一对应,这样,在接收到响应消息的响应标识后,由于已知分割数据、发送标识、目标对象之间的对应关系,进而可以根据响应标识与目标对象的对应关系、分割数据、发送标识、目标对象之间的对应关系而知晓接收到的响应标识与发送标识、分割数据之间的对应关系,若接收到某一分割数据对应的响应标识,则说明该分割数据传输成功。若没有接收到或者超时接收到某一分割数据对应的响应标识,则说明该分割数据传输失败。
87.在一个实施例中,根据各分割数据的传输状态确定传输结果包括:
88.若不存在分割数据对应的响应标识,分割数据的传输状态为传输失败;
89.获取目标分割数据的失败数量,确定传输结果,其中目标分割数据包括传输状态为传输失败的分割数据。
90.若存在分割数据对应的响应标识,分割数据的传输状态为传输成功。
91.可选的,还可以获取失败数据类型,失败数据类型包括冗余(失败的分割数据是冗余数据确定的)或原始分割(失败的分割数据是直接由待传输数据分割所得到的)。进而可以告知用户传输失败的哪些数据,以便用户进行重新发送或下一步处理。
92.根据失败数量和失败数据类型确定传输结果的方式可以采用本领域技术人员所知晓的解码规则实现。例如,当待传输数据分割所得到m个分割数据,后续通过纠删码算法对待传输数据进行编码生成n个冗余数据,当失败数量(不论失败的是原始分割数据或冗余数据)小于或等于n时,均可以通过对应的重构算法恢复得到原来的m个数据。此时,可判定传输成功。否则,当失败数量大于冗余数据数量n时,则传输失败。
93.可选的,若失败数量大于冗余数据的数量,则传输失败,否则,传输成功。
94.在一个实施例中,生成待传输数据的传输结果包括以下至少之一:
95.监听各目标对象的响应消息,获取监听时长,若监听时长超过预设时长阈值,停止监听根据当前获取的各目标对象的响应消息生成待传输数据的传输结果;
96.监听各目标对象的响应消息,获取监听时长,将监听时长超过预设时长阈值后获取到的响应消息丢弃。
97.其中,预设时长阈值可以由本领域技术人员根据需要进行设定,在此不做限定。监听时长可以是自待发送消息发送完成起进行计时,也可以由本领域技术人员根据需要进行计时起始的确定。
98.通过设置预设时长阈值,可以节约系统资源占用,避免因个别响应消息返回不及时拖慢整体数据传输进程。
99.通过上述提供的数据传输方法,能够对待传输数据进行分割,实现消息的分聚,在客户端本地线程中就完成了对集群多个节点的请求分发及结果合并,大大提高了数据传输处理的效率。解决了相关技术中由于不能支持消息请求、响应的分解聚合,完成任务时需要循环请求或响应或其他的流程(比如多线程等技术)来实现,不仅耗时,同样也增加了对系统资源的消耗的问题。
100.下面通过一个具体的实施例,示例性的对上述数据传输方法进行说明。在分布式系统中,一般适用多副本或者纠删码等方式保证数据的可靠性。在这种情况下,客户端写一份数据需要往多个节点写入。假设客户端使用纠删码策略,向服务端s1,s2,s3,s4,s5,s6写入数据a(已对齐,数据对齐方式可以采用本领域技术人员所知晓的方式实现,在此不做限定),参见图2,该数据传输方式的示意性步骤如下:
101.步骤s201:客户端将待传输数据分割为多个分割数据,生成冗余数据。
102.例如,客户端将数据a(待传输数据)按分片大小分割成a1,a2,a3,a4(分割数据),计算纠删码,其冗余数据为a5,a6。将冗余数据确定为新增的分割数据。
103.步骤s202:客户端根据分割数据生成待发送消息。
104.如,将步骤s201中的a1,a2,a3,a4,a5,a6分别构造成消息体(待发送消息)ma1,ma2,ma3,ma4,ma5,ma6,其特征如下:
105.每个消息体都有一个编号(发送标识),依次1,2,3,4,5,6。
106.每个消息体分别对应各需要发送的服务器(目标对象标识),依次为s1,s2,s3,s4,s5,s6。
107.步骤s203:通过发送队列发送待发送消息,并监听响应消息。
108.将ma1,ma2,ma3,ma4,ma5,ma6加入发送队列,发送队列一般为多个,与cpu核数相同。ma1,ma2,ma3,ma4,ma5,ma6根据ip地址hash后,基本能够均衡的在多个发送列。
109.客户端等待ma1,ma2,ma3,ma4,ma5,ma6的响应结果。
110.步骤s204:获取各待发送消息的响应消息,生成传输结果。
111.服务端s1,s2,s3,s4,s5,s6处理请求(待发送消息)后,将结果返回,响应体(响应消息)为ra1,ra2,ra3,ra4,ra5,ra6,每个结果返回都有响应编号(响应标识),与ma1,ma2,ma3,ma4,ma5,ma6编号一一对应,分别为1,2,3,4,5,6。
112.客户端收到ra1,ra2,ra3,ra4,ra5,ra6,按编号(响应标识)1,2,3,4,5,6聚合成一个对写入数据a的响应(传输结果)。
113.步骤s205:丢弃超时响应消息。
114.客户端收到响应a后进行数据处理,客户端等待时间可设置一个超时时间(预设时长阈值),如果未在规定时间内返回,请求失败。如果响应后来返回了,但客户端已超时,则该响应结果(响应消息)会被丢弃。
115.通过消息的分聚,在客户端本地线程中就完成了对集群多个节点的请求分发及结果合并,大大提高了数据传输处理的效率。
116.本发明实施例还提供了一种数据传输方法,参见图3,该数据传输方法包括:
117.步骤s301:将发送端和各目标对象确定为数据传输节点,依次建立各数据传输节点之间的连接。
118.一般而言,是客户端向服务端发送请求,处理响应。但在分布式系统中,每个节点之间均存在联系,每个节点不是一个孤立的存在,接口上存在相互调用。因此对于一条连接而言不能只是客户端、服务端的关系,一条连接在调用上,两端应该是平等位置,没有方向性。比如节点s1,s2,s3,s4,s5,s6,其调用图可参见图4。图4中s1,s2,s3,s4,s5,s6分别表示各节点,节点间的连线表示一条网络连接。因此s1,s2,s3,s4,s5,s6间的调用没有方向性,均可以在一条连接上相互调用,每个节点间都存在调用,因此该集群的连接调用关系构成了一个无向完全调用图。
119.建立各数据传输节点之间的连接也即将任意两个数据传输节点之间建立连接。换句话说每一个数据传输节点均与除该数据传输节点之外的每一个数据传输节点均建立了连接。
120.步骤s302:为每一个连接分配网络句柄,通过网络句柄标识连接。
121.网络句柄可以是在连接过程中系统生成的。对于每一个连接均对应有一个网络句柄。
122.步骤s303:获取各数据传输节点的地址信息,并建立各地址信息与网络句柄之间的映射关系。
123.也即,对于一个分布式存储系统中,每两个数据传输节点之间将存在一个连接,对应有一个网络句柄,两个数据传输节点具有两个ip地址(地址信息),为方便后续查找,可以先建立各地址信息与网络句柄之间的映射关系。
124.步骤s304:各数据传输节点分别将连接节点的地址信息、网络句柄及映射关系进行存储,连接节点为与数据传输节点连接的其他的数据传输节点。
125.可选的,在分布式存储系统启动,发起连接时,连接两端会将连接过程中生成的网
络句柄与对端ip(连接另一端的地址信息)保存在本地内存。例如,继续参见图4,数据传输节点s1将存储有数据传输节点s2、s3、s4、s5、s6的5个地址信息,s1分别与s2、s3、s4、s5、s6之间5个连接的5个网络句柄,以及各网络句柄和地址信息的对应关系。这样,后续s1想要给s3传输数据时,通过s3的ip地址(地址信息)即可找到s3与s1之间连接的网络句柄,进而可以发送待传输数据或请求。
126.通过上述的数据传输方式,可以实现任意两个数据传输节点之间互相进行请求发送和响应消息的发送。
127.当需要新增数据传输节点时,只需要按照步骤s301-步骤s304执行,就可以实现新增节点的加入,将新增数据传输节点与现有数据传输节点建立新增连接,生成各新增连接的网络句柄,各现有数据传输节点分别存储新增数据传输节点的地址信息和网络句柄,新增数据传输节点存储各现有数据传输节点的网络句柄和地址信息。
128.在一个实施例中,图1所示的方法中,通过发送端将各所述分割数据通过发送队列分别发送至各所述分割数据对应的目标对象,图3所示的数据传输方法也可以执行于图1所述的数据传输方法中发送端将各所述分割数据通过发送队列分别发送至各所述分割数据对应的目标对象之前,通过图3所示的方法对分布式存储系统的各数据传输节点进行连接建立和数据传输准备。此时,发送端将各分割数据通过发送队列分别发送至各分割数据对应的目标对象包括:
129.获取分割数据对应的发送标识,发送标识包括地址信息;
130.根据地址信息和映射关系确定分割数据对应的网络句柄,得到各分割数据对应的网络句柄;
131.发送端基于各网络句柄将各分割数据通过发送队列分别发送至各分割数据对应的目标对象。
132.分布式存储系统不仅集群内部有大量连接,还需要与外部进行连接。因此连接的管理非常重要,大量的连接必然带来大量的资源管理消耗。相关技术中对于传输连接是否正常,需要不停轮询发送连接保活消息,在大量连接时,对性能影响很大。为此,本发明实施例还提供了一种数据传输方法,参见图5,该方法包括:
133.步骤s501:分别获取各连接下各数据传输节点的数据流量。
134.数据传输节点为分布式存储系统中的各个节点,每一个连接均存在两个数据传输节点,该连接下的两个数据传输节点可以通过该连接进行通信。
135.可选的,可以在建立连接时,在连接的两个数据传输节点分别设置一个流量状态位,监测各数据传输节点的数据流程状态,初始值为零,即无流量通过。
136.步骤s502:若存在零流连接,分别控制各零流连接的一个数据传输节点间隔第一预设时间向零流连接的另一个数据传输节点发送探测消息。其中,探测消息用于触发另一个数据传输节点生成响应探测消息并通过零流连接进行反馈,零流连接中存在至少一个数据传输节点的数据流量为零。
137.也即,对于任意一个连接下,若存在至少一个数据传输节点的数据流量为零,且这个状态持续了一定时长(也即,可以在步骤s501时获取一定预设时长下的数据流量,若为零,则说明是零流连接),此时可以控制该连接下期中一个数据传输节点向另一个数据传输节点主动发送一个探测消息,在连接状态正常的情况下,另一个数据传输节点接收到该探
测消息后,将生成一个响应探测消息,通过该连接返回给到一个数据传输节点。但若连接失效,此时另一个数据传输节点将接收不到该探测消息,此时也就不可能生成响应探测消息,此时,另一个数据传输节点的数据流量仍然保持为零。
138.步骤s503:若零流连接的另一个数据传输节点间隔第二预设时间的数据流量为零,将零流连接确定为失效连接。其中,第二预设时间少于所述第一预设时间。
139.第一预设时间以及第二预设时间可以由本领域技术人员根据需要进行设定,在此不做限定。需要说明的是,第一预设时间少于第一预设时间。也即,先间隔一定时间a通过连接f发送一个探测消息,若某一个数据传输节点过了一定时间b仍没有收到连接f的探测消息,则说明连接f失效了,也即将连接f确定为失效连接。可以关闭该连接,待后续自动重连。
140.在一个实施例中,由于很多连接可能存在自然的数据传输,为节省资源,可以对各连接的数据流量进行监测,对于那些数据流量为零的连接进行探测,而存在自然的数据传输的连接则可以免于探测消息的发送。此时,零流连接的确定方式包括:
141.分别获取各连接中各数据传输节点的数据流量;
142.若某一数据传输节点的数据流量为零,将该数据传输节点所在的连接确定为零流连接。
143.在一个实施例中,分别控制各零流连接的一个数据传输节点间隔第一预设时间向零流连接的另一个数据传输节点发送探测消息之前,方法还包括:
144.若存在至少两个零流连接,分别获取各零流连接中各数据传输节点的出现频次,将各零流节点中出现频次较大的数据传输节点确定为一个数据传输节点。这样,可以控制尽量少的数据传输节点来实现连接探测。
145.也即,当某一个连接的数据流量为零时,再控制该连接两端的两个数据传输节点中的任意一个数据传输节点h间隔第一预设时间向需探测连接的连接节点j发送探测消息。这样,再对连接节点j的数据流量进行监控,以知晓该需探测连接的连接状态是否有效。可选的,数据传输节点h不需要等待连接节点j的响应消息。
146.在一个实施例中,图5所示的数据传输方法还可以应用于图3、图1所提供的数据传输方法,在完成连接建立后对连接状态进行检测。
147.通过图5提供的数据传输方法,可以有效的减少连接状态管理的资源消耗,提升性能。
148.下面通过一个具体的实施例示例性的对图5提供的数据传输方法进行参数。参见图6,该具体的方法包括:
149.步骤s601:建立连接。
150.可选的,连接建立,在连接两端均保存该连接信息,连接信息的其特征包含一个流量状态位,初始值为无流量通过,即为零。
151.步骤s602:监测各连接的数据流量,确定零流连接。
152.例如,连接探测模块每隔1秒检查该状态位,如果有流量通过,则无需其他操作。如果无流量通过,将该连接作为需探测连接,执行步骤s603。
153.步骤s603:发送探测消息,确定零流连接的连接状态。
154.例如,零流连接中的一个数据传输节点向对端数据传输节点发送一次探测消息,但无需等待对端响应。
155.收到探测消息的一端(对端数据传输节点),即时响应该探测消息,生成响应探测消息。
156.探测消息发送端(一个数据传输节点)由于此时有流量通过,则状态位变为有流量通过(不为零)。
157.如果连续3次(3秒钟)另一个数据传输节点的状态位都没有从无流量通过变为有流量通过,则该连接失效被关闭,等待自动重连。
158.需要说明的是,一般状态下,网络都是正常的,并且分布式存储系统流量巨大,时刻都有流量通过,即仅需要检查状态位即可判断连接是否正常即可,也即只需要监测数据流量,数据流量为零的情况较为少见。
159.分布式存储系统中各数据传输节点的连接建立后,连接两端可以通过网络调用对端函数,相关技术中,要么是通过手动注册消息类型以区分调用函数,要么是通过手动注册函数名以区分调用函数,上述两种方案在分布式开发中均需要注意是否有消息冲突或遗漏。为此,本技术实施例还提供了一种数据传输方法,该方法也适用于上述任一项实施例中的数据传输方法,参见图7,该方法包括:
160.步骤s701:对目标对象设置自定义数据段,该自定义数据段包括多个调用函数和各调用函数的调用函数标识,调用函数用于处理分割数据。
161.后续通过直接发送包括有需要调用的函数的调用函数标识,以实现客户端对服务端调用函数的调用。
162.上述数据传输方法也可以应用于图1提供的数据传输方法,此时,待发送消息还包括调用函数标识,该方法还包括:
163.目标对象获取待发送消息后,通过调用函数标识对应的调用函数处理待发送消息,生成反馈消息;
164.获取目标对象反馈的反馈消息。
165.由于目标对象中存储有关于调用函数和调用函数标识映射关系的反射表,此时目标对象可以根据所获取的调用函数标识从反射表中得到调用函数,进而以该调用函数处理该待发送消息(特别是其所包括的分割数据),生成反馈消息。
166.在一个实施例中,该方法还包括:
167.获取更新消息,更新消息包括新增函数和删除函数中至少之一;
168.根据更新消息对自定义数据段进行更新。
169.若更新消息包括新增函数,则在自定义数据段进行函数新增。若更新消息包括删除函数则在自定义数据段进行函数删除。
170.若存在新增函数,将新增函数和新增函数名添加到反射表中。
171.由于预先设定了各目标对象的自定义数据段,此时,若需要对目标对象的函数进行修改或新增,也可以通过直接对自定义数据段进行修改实现,也即无论之后怎么添加、删除调用过程,无需修改任何配置,或手动注册,只需要关注自身业务即可,实现了全自动的直接远程过程调用。
172.通过上述方式可以直接实现远程过程调用,不需要手动注册大量消息类型进行区分,便于开发管理。更新调用函数时无需关注消息反射表(请求名与处理函数的对应关系表)。调用端直接对端函数名即可。
173.下面通过一个具体的实施例对上述图7所述的方法进行示例性的说明。
174.调用端:
175.在请求远端函数时,直接调用远程函数名即可。比如远程函数名为func,
176.则其调用形式为:x(control,#func,ret,param,
……
),x函数根据control参数将“func“及param,
……
打包发送到对端,对端收到请求后,将响应结果返回给调用端,ret就是收到的响应结果。
177.被调用端:
178.自定义数据段xproc,开发时将过程函数与过程函数名存到数据段xproc_start,xproc_end起始之间,编译后所有的过程函数均在数据段xproc中,在elf文件中可以看到:
179.xproc_start
180.funcname1
181.func1
182.funcname2
183.func2
184.……
185.funcnamen
186.funcn
187.xproc_end
188.添加新调用时,其表达形式为:
189.xproc char*funcname=#func
190.xproc func(
……
);
191.然后将过程函数func与过程函数名funcname添加到反射表中,在函数调用前的起始代码中,扫描数据段xproc的xproc_start,xproc_end起始之间的所有内容即可得到反射表。
192.收到请求时,通过反射表查找请求函数对应的过程函数名,将消息参数传递给过程函数名,即可完成调用。
193.调用完成后,将响应返回给调用端即可。
194.通过上述具体的实施例,能够实现方便便捷的对分布式存储系统中的各节点的函数进行新增或删除,同时也能够为后续通过直接调用函数的方式进行数据传输奠定了基础。
195.下面,通过一个具体的实施例对上述实施例中的数据传输方法进行进一步的示例性说明。分布式存储系统中各节点的连接关系以图4的调用图为例。
196.第一,当系统启动时,发起连接时,连接两端会将连接过程中系统生成的网络句柄与对端ip(地址信息)保存在本地内存。
197.第二,在一条连接建立后,连接两端均可向系统内添加调用函数、连接异常处理方法,在调用时,只需要通过ip地址找到对应的网络句柄(根据地址信息在预设的地址信息与网络句柄之间的映射关系中确定网络句柄),即可发送请求。
198.第三,此时,调用图即建立,后续新加入节点,按步骤第一、第二执行即可不断扩大调用图。
199.第四,在调用图上的任何两个节点之间均可相互发送请求(待发送消息)、响应消息。比如,s1发起连接,并与s4建立了连接,s1添加了func1,s4添加了func2,s1查询s4的ip地址得到网络句柄,可通过网络调用s4的func2,s4查询s1的ip地址得到网络句柄,可通过网络调用s1的func1。
200.此外,在连接断开时,传输模块调用异常s1、s4的异常处理方法,s1、s4触发连接异常处理,对相应的ip地址或网络句柄进行处理,不用外部轮询连接检查处理异常,这样能够支持集群无向完全调用,需要建立大量连接或轮询,增加了复杂度、及系统资源的消耗。
201.上述实施例提供的分布式存储系统的数据传输方法,支持消息请求(待传输数据)、响应(响应消息)的分解聚合,客户端能够响应服务端的请求消息,连接微探测,支持直接远程过程调用。提出一种高内聚、扩展性好,高性能、可用性高的无向完全直接远程过程调用数据传输方法,大幅提高了分布式存储系统的网络传输性能,降低了对系统资源的消耗,降低了开发成本,运维方便。
202.请参阅图8,本实施例提供了一种分布式存储系统的数据传输系统800,该系统包括:
203.分割模块801,将待传输数据分割为多个分割数据,并将各分割数据通过发送队列分别发送至各分割数据对应的目标对象;
204.聚合模块802,用于获取各目标对象的响应消息,并生成待传输数据的传输结果。
205.可选的,该分布式存储系统的数据传输系统800可以应用于数据传输的客户端(发送端),以实现在本地进行消息的分解和响应消息的聚合。
206.在一个实施例中,该系统还包括以下至少之一:
207.自定义数据段模块,用于对目标对象设置自定义数据段,自定义数据段包括多个调用函数和各调用函数的调用函数标识,调用函数用于处理分割数据。
208.可以通过对自定义数据段模块进行编辑实现函数的新增或删除。
209.在一个实施例中,发送端将各所述分割数据通过发送队列分别发送至各所述分割数据对应的目标对象,该系统还包括:
210.连接建立模块,用于将发送端和各目标对象确定为数据传输节点,依次建立各数据传输节点之间的连接;
211.分配模块,用于为每一个连接分配网络句柄,通过网络句柄标识连接;
212.映射建立模块,用于获取各数据传输节点的地址信息,并建立各地址信息与网络句柄之间的映射关系;
213.存储模块,用于各数据传输节点分别将连接节点的地址信息、网络句柄及映射关系进行存储,连接节点为与数据传输节点连接的其他的数据传输节点。
214.在一个实施例中,该系统还包括:
215.流量监听模块,用于分别获取各连接下各数据传输节点的数据流量;
216.控制模块,用于若存在零流连接,分别控制各零流连接的一个数据传输节点间隔第一预设时间向零流连接的另一个数据传输节点发送探测消息,探测消息用于触发另一个数据传输节点生成响应探测消息并通过零流连接进行反馈,零流连接中存在至少一个数据传输节点的数据流量为零;
217.确定模块,用于若零流连接的另一个数据传输节点间隔第二预设时间的数据流量
为零,将该零流连接确定为失效连接,第二预设时间少于第一预设时间。
218.在本实施例中,该系统实质上是设置了多个模块用以执行上述实施例中的方法,具体功能和技术效果参照上述方法实施例即可,此处不再赘述。
219.下面再通过一个具体的实施例对上述图8提供的数据传输系统进行示例性的说明,参见图9,分布式存储数据系统包括客户端c和服务端s,两者通过数据传输系统进行数据传输,服务端s调用数据传输系统接口开启监听,客户端c调用传输系统远程函数func,数据传输系统内部自动连接到服务端s,然后将请求(如包括分割数据的待发送消息等)发送给服务端s,服务端s响应请求,调用func,并将响应消息发送给客户端c,客户端c处理响应结果(得到传输结果)。在该系统中,更新网络业务流程直接更新相关过程函数即可,不需要其他修改,更加方便便捷。
220.参见图10,本发明实施例还提供了一种电子设备1100,包括处理器1101、存储器1102和通信总线1103;
221.通信总线1103用于将处理器1101和存储器连接1102;
222.处理器1101用于执行存储器1102中存储的计算机程序,以实现如上述实施例一中的一个或多个的方法。
223.本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,
224.计算机程序用于使计算机执行如上述实施例一中的任一项的方法。
225.本技术实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本技术实施例的实施例一所包含步骤的指令(instructions)。
226.需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
227.上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
228.可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c
,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
229.附图中的流程图和框图,图示了按照本公开各种实施例的方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
230.上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献