处理写请求或读请求的方法、交换机、控制节点与流程

文档序号:14253132阅读:142来源:国知局
处理写请求或读请求的方法、交换机、控制节点与流程
本发明涉及信息
技术领域
,并且更具体地,涉及一种处理写请求或读请求的方法、交换机、控制节点。
背景技术
:随着数据量的爆炸式增长,传统的外置存储系统由于性能和容量无法线性扩展而很难满足数据中心的要求,分布式存储系统应运而生。在分布式存储系统中,为确保数据的高可用性,通过在各个存储节点间实现对所述数据的冗余,如可以通过独立磁盘冗余阵列(redundantarrayofindependentdisks,raid)等方式实现数据冗余,这样可以确保在单个存储节点故障时,所述数据不丢失,业务不中断。为现有技术中分布式存储系统中,当主机有数据需要写入时,将写请求通过交换机发送给任一存储节点,所述任一存储节点会将所述写请求中的数据进行分片操作后基于每一个分片生成新的写请求,然后再将每一个所述新的写请求通过所述交换机再分别发送给其它存储节点保存。经发明人分析发现,在现有技术中存在以下不足:交换机工作负荷重:来自所述主机的写请求的数据需要在所述交换机上传输2次才能完成数据写入,导致网络资源浪费以及交换机工作负荷重。技术实现要素:本发明实施例提供了一种处理写请求或读请求的方法、交换机、控制节点,能够实现在分布式存储系统中待写入的数据只需要在交换机上传输1次,由此降低所述交换机的工作负荷、节省网络资源,而且还大大降低了写请求的处理时延,提升了所述分布式存储系统的处理效率和性能。第一方面,提供了一种处理写请求的方法,其中,所述方法应用于交换机,所述交换机中预先配置有转发表,所述转发表包含多条转发记录,每一条转发记录包含主机地址、服务交换机地址、卷、冗余等级编号以及存储节点地址,所述方法包括:接收来自主机的第一写请求,所述第一写请求中携带第一元数据以及第一数据;基于所述第一元数据查询所述转发表以获取k条转发记录,k大于等于2;基于所述k条转发记录中的冗余等级编号对所述第一数据进行分片操作,得到k个分片;基于所述k条转发记录中的冗余等级编号及存储节点地址生成k个第二写请求,所述k个第二写请求中的每一个第二写请求携带第二数据,所述第二数据为所述k个分片中的1个分片;分别向k个存储节点发送所述k个第二写请求。结合第一方面,在第一种可能的实现方式中,所述第一元数据包含第一源地址、第一目的地址、存储索引及数据净荷长度,其中所述第一源地址为所述主机的地址,所述第一目的地址为所述交换机的地址,所述数据净荷长度用于指示所述第一数据的大小;则所述基于所述第一元数据查询所述转发表具体为:基于所述第一源地址、第一目的地址和存储索引分别匹配所述转发表中所述每一条转发记录的主机地址、服务交换机地址和卷以获取所述k条转发记录。可选的,所述第一元数据还可以包括存储类型、序列号。可选的,所述分片操作为基于所查询的冗余等级编号将所述第一数据划分为多个数据分片,并且基于所述多个数据分片计算至少1个冗余分片,所述多个数据分片以及所述至少1个冗余分片构成对应于所述第一数据的k个分片。可选的,所述k个第二写请求中的每一个第二写请求还携带第二元数据,所述第二元数据包括第二源地址、第二目的地址、存储索引、冗余等级编号及数据净荷长度,其中所述第二源地址为所述交换机的地址,所述第二目的地址为所述k条转发记录中的1条转发记录的存储节点地址,所述冗余等级编号为所述k条转发记录中的1条转发记录的冗余等级编号,所述数据净荷长度用于指示所述1个分片的大小。可选的,所述第二元数据还可以包括存储类型、序列号。可选的,所述交换机还可以创建状态表,用于记录针对所述第一写请求处理的状态信息。结合第一方面,可选的,所述方法还包括:所述k个存储节点分别接收来自所述交换机的第二写请求;以所述接收到的第二写请求所携带的第二元数据中的所述存储索引以及所述冗余等级编号作为键来存储所述接收到的第二写请求中携带的第二数据;向所述交换机发送第二写成功消息。可选的,所述方法还包括:所述交换机分别接收来自所述k个存储节点的第二写成功消息;向所述主机发送第一写成功消息。可选的,所述交换机还可以基于所述每一个第二写成功消息更新所述状态表,即根据所述第二写成功消息所携带的第二元数据信息查询所述状态表,修改所述状态表中对应行的操作状态。进一步的,可选的,所述交换机还可以删除所述状态表。可以看出,在所述交换机中保存有转发表,则当为所述交换机接收到来自所述主机的所述第一写请求后,可以基于所述转发表直接对所述第一写请求中携带的数据进行分片并计算冗余分片,然后生成相应个数的所述第二写请求,然后直接将所述第二写请求分别发送给相应的存储节点以保存其携带的数据,这样就可以完成所述第一写请求中携带的数据的保存。在本发明实施例中,所述第一写请求中的数据只需要在所述交换机上传输1次就能完成保存,避免了像现有技术那种需要传输2次才能保存,由此大大减少了交换机的工作负荷以及网络资源的浪费,也减少了一次写请求处理的时延,大大提升了分布式存储系统的处理效率和性能。第二方面,还提供一种处理读请求的方法,所述方法应用于交换机,所述交换机中预先配置有转发表,所述转发表包含多条转发记录,每一条转发记录包含主机地址、服务交换机地址、卷、冗余等级编号以及存储节点地址,所述方法包括:接收来自主机的第一读请求,所述第一读请求中携带第三元数据;基于所述第三元数据查询所述转发表以获取k条转发记录,k大于等于2;基于所述k条转发记录中的冗余等级编号及存储节点地址生成k个第二读请求;分别向k个存储节点发送所述k个第二读请求。可选的,所述第三元数据包含第三源地址、第三目的地址、存储索引及数据净荷长度,其中所述第三源地址为所述主机的地址,所述第三目的地址为所述交换机的地址,所述数据净荷长度用于指示需要读取的数据的大小;则所述基于所述第三元数据查询所述转发表具体为:基于所述第三元数据中的所述第三源地址、所述第三目的地址及所述存储索引分别匹配所述转发表中所述每一条转发记录的主机地址、服务交换机地址和卷以获取所述k条转发记录。可选的,所述交换机还可以创建状态表,用于记录针对所述第一读请求处理的状态信息。可选的,所述k个第二读请求中的每一个第二读请求还携带第四元数据,所述第四元数据包括第四源地址、第四目的地址、存储索引、冗余等级编号及数据净荷长度,其中所述第四源地址为所述交换机的地址,所述第四目的地址为所述k条转发记录中的1条转发记录的存储节点地址,所述冗余等级编号为所述k条转发记录中的1条转发记录的冗余等级编号,所述数据净荷长度用于指示需要读取的数据的大小,所述方法还包括:所述k个存储节点中的每一个存储节点接收来自所述交换机的第二读请求;以所述第二读请求所携带的第四元数据中的所述存储索引以及所述冗余等级编号作为键读取数据;向所述交换机发送第二读完成消息,所述第二读完成消息携带所述读取的数据。可选的,所述方法还包括:所述交换机分别接收来自所述k个存储节点中的每一个存储节点的第二读完成消息;对所述k个第二读完成消息中携带的数据进行重组;向所述主机发送第一读完成消息,所述第一读完成消息中携带所述重组后的数据。可选的,所述交换机还可以基于所述每一个第二读完成消息更新所述状态表,即根据所述第二读完成消息所携带的元数据信息查询所述状态表,修改所述状态表中对应行的操作状态。进一步的,可选的,所述交换机还可以删除所述状态表。通过上述实施方式,需要读取的数据在从多个存储节点经过所述交换机到所述主机的方向上只需要经过所述交换机1次,避免了像现有技术那种需要传输2次才能完成数据读取,由此大大减少了交换机的工作负荷以及网络资源的浪费,也减少了读请求处理的时延,大大提升了所述分布式存储系统的处理效率和性能。第三方面,还提供一种交换机,所述交换机包括接收器、存储器、处理器、发射器和raid引擎,其中:所述接收器,用于接收来自主机的第一写请求,所述第一写请求中携带第一元数据以及第一数据;所述存储器,用于存储转发表,所述转发表包含多条转发记录,每一条转发记录包含主机地址、服务交换机地址、卷、冗余等级编号以及存储节点地址;所述处理器,用于解析所述第一写请求以获取所述第一元数据以及所述第一数据,基于所述第一元数据查询所述转发表以获取k条转发记录,k大于等于2;所述raid引擎,用于基于所述k条转发记录中的冗余等级编号对所述第一数据进行分片操作,得到k个分片;所述处理器,还用于基于所述k条转发记录中的冗余等级编号及存储节点地址生成k个第二写请求,所述k个第二写请求中的每一个第二写请求携带第二数据,所述第二数据为所述k个分片中的1个分片;所述发射器,用于分别向k个存储节点发送所述k个第二写请求。结合第三方面,在第一种可能的实现方式中,所述第一元数据包含第一源地址、第一目的地址、存储索引及数据净荷长度,其中所述第一源地址为所述主机的地址,所述第一目的地址为所述交换机的地址,所述数据净荷长度用于指示所述第一数据的大小;则所述处理器用于所述基于所述第一元数据查询所述转发表以获取k条转发记录具体为:基于所述第一源地址、第一目的地址和存储索引分别匹配所述转发表中所述每一条转发记录的主机地址、服务交换机地址和卷以获取所述k条转发记录。可选的,所述接收器,所述接收器,还用于分别接收来自所述k个存储节点中的每一个存储节点的第二写成功消息;所述处理器,还用于基于所述来自所述k个存储节点中的每一个存储节点的第二写成功消息生成第一写成功消息;所述发射器,还用于向所述主机发送所述第一写成功消息。可以看出,当所述交换机接收到来自所述主机的所述第一写请求后,可以基于所述转发表直接对所述第一写请求中携带的数据进行分片并计算冗余分片,然后生成相应个数的所述第二写请求,然后直接将所述第二写请求分别发送给相应的存储节点保存其携带的数据,这样就可以完成所述第一写请求中携带的数据的保存。在本发明实施例中,所述第一写请求中的数据只需要在所述交换机上传输1次就能完成保存,避免了像现有技术那种需要传输2次才能保存,由此大大减少了交换机的工作负荷以及网络资源的浪费,也减少了一次写请求处理的时延,大大提升了所述分布式存储系统的处理效率和性能。第四方面,还提供一种交换机,所述交换机包括接收器、存储器、处理器和发射器,其中:所述接收器,用于接收来自主机的第一读请求,所述第一读请求中携带第三元数据;所述存储器,用于存储转发表,所述转发表包含多条转发记录,每一条转发记录包含主机地址、服务交换机地址、卷、冗余等级编号以及存储节点地址;所述处理器,用于解析所述第一读请求以获取所述第三元数据,基于所述第三元数据查询所述转发表以获取k条转发记录,k大于等于2,基于所述k条转发记录中的冗余等级编号及存储节点地址生成k个第二读请求;所述发射器,用于分别向k个存储节点发送所述k个第二读请求。结合第四方面,在第一种可能的实现方式中,所述交换机还包括raid引擎;所述接收器,还用于分别接收来自所述k个存储节点中的每一个存储节点的第二读完成消息;所述处理器,用于解析所述来自所述k个存储节点中的每一个存储节点的第二读完成消息以获取每一个所述第二读完成消息所携带的数据;所述raid引擎,用于对所述k个第二读完成消息中携带的数据进行重组;所述处理器,还用于生成第一读完成消息,所述第一读完成消息携带所述重组的数据;所述发射器,用于向所述主机发送第一读完成消息。通过上述实施方式,需要读取的数据在从多个存储节点经过所述交换机到所述主机的方向上只需要经过所述交换机1次,避免了像现有技术那种需要传输2次才能完成数据读取,由此大大减少了交换机的工作负荷以及网络资源的浪费,也减少了读请求处理的时延,大大提升了所述分布式存储系统的处理效率和性能。第五方面,还提供一种控制节点,所述控制节点包括接收器、处理器、存储器、发射器,其中:所述发射器,用于向交换机发送交换机能力信息查询报文,向存储节点发送存储节点能力信息查询报文;所述接收器,用于接收来自所述交换机的交换机能力信息查询响应报文,所述交换机能力信息查询响应报文携带交换机能力信息,接收来自所述存储节点的存储节点能力信息查询响应报文,所述存储节点能力信息查询响应报文携带存储节点能力信息;所述处理器,还用于解析所述交换机能力信息查询响应报文以获取所述交换机能力信息,解析所述存储节点能力信息查询响应报文以获取所述存储节点能力信息;所述存储器,用于保存所述交换机能力信息和所述存储节点能力信息;所述接收器,还用于接收主机存储需求;所述处理器,还用于基于所述主机存储需求以及所述交换机能力信息和所述存储节点能力信息为所述主机分配服务交换机、分配多个存储节点以及配置转发表;所述发射器,还用于将所述服务交换机的地址发送给所述主机,将所述转发表发送给所述服务交换机。可选的,所述交换机能力信息可以包括交换机id、交换机地址、交换机是否具备分片及冗余计算能力;所述存储节点能力信息可以包括:存储节点地址、存储节点容量。可选的,所述控制节点可以以单播的方式分别向每一个交换机发送发送交换机能力信息查询报文,以单播的方式分别向每一个存储节点发送存储节点能力信息查询报文,也可以是以广播的方式发送上述报文。所述服务交换机应该具备分片及冗余计算能力。可选的,所述处理器可以是随机选择1个具备分片及冗余计算能力的交换机作为所述主机的服务交换机,也可以选择网络路由上距离所述主机最近的具备分片及冗余计算能力的交换机作为所述主机的服务交换机,也可以是参照负载均衡原则从多个具备分片及冗余计算能力的交换机中选择当前计算任务较少的交换机作为所述主机的服务交换机。可选的,所述处理器可以是随机挑选存储节点,也可以是考虑负载均衡原则优先挑选当前使用率较低的存储节点,也可以是挑选与所述服务交换机在网络拓扑上最近的存储节点。可选的,所述转发表可以包括如下信息:主机地址、服务交换机地址、卷、冗余等级编号以及存储节点地址等。通过本本发明实施例所提供的控制节点,可以实现对所述分布式存储系统的自动化集中配置,避免了现有技术中需要通过人工手动配置且需要分别配置不同交换机、存储节点的问题,极大的提升了分布式存储系统中的配置效率。进一步的,通过所述控制节点来配置转发表,交换机根据所述控制节点配置的转发表进行转发操作,由此实现控制/转发分离,由此可以大大提升所述分布式存储系统的性能。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。图1是本发明实施例提供的一种分布式存储系统的架构示意图。图2是本发明实施例提供的一种消息的结构示意图。图3是本发明实施例提供的一种处理写请求的示意性流程图。图4是本发明实施例提供的一种处理读请求的示意性流程图。图5是本发明实施例提供的一种交换机的结构示意图。图6本发明实施例提供的一种控制节点的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。如图1所示,为本发明实施例提供的一种示例性的分布式存储系统的系统架构。在所述分布式存储系统中,多个主机分别通过任一交换机与多个存储节点中的任一一个进行通信,每一个交换机与至少1个其它交换机相连,每一个主机可以与至少1个交换机相连,每一个存储节点也可以与至少1个交换机相连。优选的,所述分布式存储系统还可以包括控制节点,所述控制节点可以与任一一个或多个交换机相通信,并且所述控制节点还可以通过所述任一一个或多个交换机与任一一个主机及任一一个存储节点相通信。本领域技术人员可以理解的是,在实际组网中,可以有1个或多个主机,可以有1个或多个交换机以及至少2个以上的存储节点。主机、交换机以及存储节点的数量基于实际业务需求来决定,图1仅仅给出一种示例性的组网结构,不对实际组网构成限定。在本发明实施例提供的分布式存储系统中,在一个或多个交换机上实现对来自任一主机的写请求的数据进行分片以及冗余计算,然后通过所述交换机将对应于所述写请求的数据的每一个分片(数据分片或冗余分片)生成新的写请求,并分别将每一个所述新的写请求发送给不同的存储节点以完成对所述写请求中携带数据的保存。针对每一个来自主机的写请求,在所述交换机上做分片处理后就各个分片分别发送到各个存储节点上保存,这样,每一个来自主机的写请求的数据只需要在交换机上传输1次就可以保存到存储节点中,避免了像现有技术那样需要在交换机上传输2次而导致的交换机工作负荷重、网络资源浪费以及时延大的问题。本发明实施例中,在初始阶段,控制节点向每一个交换机分别发送交换机能力信息查询报文,要求所述交换机上报其能力信息。所述每一个交换机在收到所述交换机能力信息查询报文后,可以向所述控制节点返回交换机能力信息查询响应报文,所述交换机能力信息查询响应报文可以包含如下信息:交换机id、交换机地址、交换机是否具备分片及冗余计算能力。这里需要说明的是,本发明实施例并不要求所述分布式存储系统中每一个交换机都具备分片及冗余计算能力,在实际组网中,包含1个或多个传统交换机,只需要确保在部署的系统中至少有1个交换机具备分片及冗余计算能力就可以实施本发明。优选地,从可靠性角度考虑,建议部署2个以上的具备分片及冗余计算能力的交换机。如下表1,是各个交换机的能力信息情况(表1以系统中有3个交换机为例进行说明):表1所述控制节点向每一个存储节点发送存储节点能力信息查询报文,要求所述每一个存储节点上报其能力信息。每一个存储节点在收到所述存储节点能力信息查询报文后,可以通过存储节点能力信息查询响应报文向所述控制节点返回如下信息:存储节点地址、存储节点容量。如下表2,是各个存储节点的能力信息(表2以系统中有6个存储节点为例进行说明):存储节点地址存储节点容量200.1.1.11020t200.1.1.11120t200.1.1.11220t200.1.1.11320t200.1.1.11420t200.1.1.11530t表2所述控制节点可以以单播的形式分别向每一个交换机或存储节点发送上述查询报文,也可以是以广播的方式在网络内广播上述查询报文;本领域技术人员可以理解的是,上述的“交换机能力信息查询报文”、“交换机能力信息查询响应报文”、“存储节点能力信息查询报文”及“存储节点能力信息查询响应报文”仅仅一种举例说明,该报文名称本身不构成特别限定,在不同实践中,只要是具备类似作用的报文都落入本发明实施例的保护范围。所述控制节点收集到所述分布式存储系统中每一个交换机、以及每一个存储节点的能力信息后,可以主动或应主机需求向主机配置存储资源。如根据主机的容量需求以及冗余等级的要求为所述主机分配交换机、存储节点,并对所述分配的交换机内部的转发表项进行配置。所述容量需求即主机所需要的存储容量大小,如10t或20t;所述冗余等级可以是raid级别,如raid1,raid3或raid5等;优选地,所述主机还可以在冗余等级中进一步要求构成所述raid级别的存储节点数,如raid1/3,即表示用分别来自3个存储节点的存储资源实现raid1。示例地,如下表3所示:主机向所述控制节点发送了2个存储需求,第一个需求是要求为其分配卷标识为luna的卷,其容量是10t,冗余等级为raid1/3,即该luna的冗余等级为raid1,分布在3个存储节点上;第二个需求是要求为其分配卷标识为lunb的卷,其容量是50t,冗余等级为raid5/5,即该lunb的冗余等级为raid5,分布在5个存储节点上。主机地址卷标识容量需求冗余等级200.1.1.3luna10traid1/3200.1.1.3lunb50traid5/5表3所述控制节点接收到来自主机的存储需求后,基于前述收集到的各个交换机以及存储节点的能力信息为所述主机的存储需求配置资源,具体包括:1)为所述主机指定服务交换机。所述服务交换机需要对来自所述主机的写请求中的数据进行分片操作以及计算冗余分片,因此服务交换机只能从具备分片及冗余计算能力的交换机中选择。若所述分布式存储系统中有多个交换机都具备具备分片及冗余计算能力,则所述控制节点可以随机选择1个交换机作为所述主机的服务交换机;也可以选择网络路由上距离所述主机最近的交换机,这里所述网络路由上距离所述主机最近的交换机是指所述主机发出的报文在网络上经过最少跳数就可以被路由到的交换机;或者,参照负载均衡原则,从多个具备分片及冗余计算能力的交换机中选择当前计算任务较少的交换机作为所述主机的服务交换机。例如,参照表1,针对上述第一个存储需求,所述控制节点可以选择交换机2作为服务交换机;针对上述第二存储需求,所述控制节点可以选择交换机3作为服务交换机。2)为所述主机分配存储节点。所述控制节点根据各个存储节点的能力信息选择合适的存储节点来向所述主机提供存储服务。举例说明,如上述第一个存储需求,所述主机要求为其分配卷标识为luna的卷,其容量是10t,冗余等级为raid1/3,这就意味着所述控制节点需要挑选3个存储节点,每个存储节点至少要有3.4t的可用存储容量。所述控制节点在接收到上述主机的需求后,查看各个存储节点的能力信息,从可用存储容量满足要求的多个存储节点中选择3个存储节点来为所述主机的存储需求提供存储服务。所述控制节点可以是在满足要求的多个存储节点中随机挑选3个存储节点;也可以是考虑负载均衡原则,优先挑选当前使用率较低的存储节点,这样尽量保证各个存储节点的使用率比较均衡,这里,所谓的使用率是指某个存储节点上被分配出去的容量占该存储节点的全部容量的比率;另外,所述控制节点还可以考虑各个存储节点与所述服务交换机之间的网络拓扑关系,可以优先挑选与所述服务交换机在网络拓扑上最近的存储节点。例如,在如图3所示的分布式存储系统中,假设交换机2是主机1的服务交换机,则所述控制节点可以优先挑选存储节点0以及存储节点1来为所述主机提供服务,因为这2个存储节点与交换机2直接相连,从网络拓扑上看与所述交换机2最近,其次再从存储节点2至存储节点n+1中挑选。例如,参照表2,针对上述第一个存储需求,可选择地址为200.1.1.110、200.1.1.111、200.1.1.112的3个存储节点为所述主机的第一个存储需求提供存储服务;针对上述第二存储需求,可选择地址为200.1.1.111、200.1.1.112、200.1.1.113、200.1.1.114、200.1.1.115的5个存储节点为所述主机的第二个存储需求提供存储服务。3)基于所述指定的服务交换机以及为所选择的存储节点配置转发表。基于前述的2个存储需求以及所述控制节点所选择的服务交换机以及存储节点,所述控制节点配置所述转发表,所述转发表包含可以包含多条转发记录,每一条转发记录可以包括如下信息:主机地址、服务交换机地址、卷、冗余等级编号以及存储节点地址;其中,冗余等级编号可以用raidm/n_x表示,其中raidm/n即冗余等级,所述m表示raid级数,其取值范围为m>=0,本领域技术人员可以理解是,m通常取值为0、1、3、5、6、10、50等;其中所述n表示构成该raid级数的存储节点数,如raid1/3,表示需要由3个存储节点来实现raid1;其中x取值为[0…n-1],分别用来表示由n个存储节点所构成的raidm中的第0个…第n-1个成员存储节点,当然也可以取值为[1…n],分别用来表示由n个存储节点构成的raid中的第1个…第n个成员存储节点;这里,所述的存储节点地址即相应记录的转发路径。如下表4所示,是一个示例性的转发表:表4如上表4可知,对应于地址为200.1.1.3的主机的luna及地址为200.1.1.101的服务交换机,有3条转发记录,这3条转发记录的冗余等级编号分别为raid1/3_0、raid1/3_1、raid1/3_2,其分别对应的3个存储节点其地址分别为200.1.1.110、200.1.1.111、200.1.1.112,也即表明如果有来自所述主机的数据需要写入luna,则该数据需要以raid1的方式分别写入地址分别为200.1.1.110、200.1.1.111、200.1.1.112的3个存储节点。所述控制节点在配置完所述转发表后,可以主动将所述转发表分别发送给各个服务交换机,由所述各个服务交换机本地保存所述转发表项,也可以是在接收到来自某一交换机的转发表查询请求后,再将所述转发表发给该交换机。进一步的,所述控制节点还可以通知所述主机为其指定的服务交换机的地址,这样后续主机的各类业务相关报文就可以直接发送给所述服务交换机。本领域技术人员应当理解的是,上述表1、2、3、4仅仅是本发明实施例中为清楚描述而做的示例性的说明,但其并不构成限定上述信息的呈现方式、保存方式,在具体实践中,可以灵活应用如链表、文件、日志等多种方式实现上述信息的保存和记录,这些不同实现不应认为超出本发明的范围,本发明实施例在此不一一陈述。在本发明实施例中,通过上述方式,可以实现对所述分布式存储系统的自动化集中配置,避免了现有技术中需要通过人工手动配置且需要分别配置不同交换机、存储节点的问题,极大的提升了分布式存储系统中的配置效率。进一步的,通过所述控制节点来配置转发表,交换机根据所述控制节点配置的转发表进行转发操作,由此实现控制/转发分离,由此可以大大提升所述分布式存储系统的性能。如图2所示,为本发明实施例提供的所述分布式存储系统中主机与交换机、交换机与存储节点之间通信的消息的结构示意图,主机与交换机、交换机与存储节点之间通信的消息可以包括元数据、数据净荷,其中元数据是每一个消息都必须要包含的部分,数据净荷是可选部分。所述元数据可以包含源地址、目的地址以及层4消息头,其中所述源地址用于表示发送该消息的实体的地址,例如若该消息是从主机发送,则源地址为该主机的地址,若该消息是从交换机发送,则源地址为该交换机的地址;所述目的地址用于表示该消息最终的接收主体。所述层4消息头可以包含存储头、操作命令、冗余等级编号、序列号以及数据净荷长度。其中所述存储头可以是存储类型(storagetype)及存储索引(storageindex),所述存储类型用于表示存储的访问类型,比如:块(block),文件(file),对象(object)等;所述存储索引与所述存储类型相对应,例如:如果存储类型为块,则存储索引为卷id+逻辑地址,如果存储类型为文件,则存储索引为文件系统id(filesystemid)+目录(directory)+文件名(filename)+偏移地址(offset),如果存储类型为对象,则存储索引为键(key)+版本号(version)。需要说明的是,因为不同的存储类型所对应的存储索引本身的结构完全不同,所以在本发明实施例中,所述存储类型字段可以为可选字段。所述操作命令用于表示该消息需要进行的操作类型,本发明实施例中,所述操作命令可以是“写”、“读”、“写完成”、“写失败”、“读完成”、“读失败”等,其中“写”表示有数据需要写入存储节点中,“读”表示需要从存储节点中读取数据,“写完成”、“写失败”分别表示写入操作的2种结果,“读完成”、“读失败”分别表示读操作的2种结果。所述冗余等级编号参照上述表4关于转发表的描述,此处不再重复,一般情况下,在从主机发送给交换机的消息中可以不需要携带冗余等级编号,在从交换机发给存储节点的消息中需要携带该字段。所序列号为可选字段,用于从主机发出的消息的上下文识别,由所述主机顺序累加获得,如主机发出的第一个消息的序列号可以是ox0000,第二消息的序列号可以是ox0001,第三个消息的序列号可以是ox0002,以此类推。所述数据净荷长度也是可选字段,用于描述待写入的数据的长度、或需要读出的数据的长度,本发明实施例中,所述数据净荷长度的取值可以是128字节、256字节、512字节、1024字节或2048字节等。所述数据净荷是待写入的数据或读出的数据。图2所示的消息结构以及上述说明仅仅是本发明实施例的实例性描述,每个字段的名称等不构成对消息结构的具体限定,在具体实践中,消息中各个字段的名称可以有变化,但只要其承载的信息本身没有超出上述描述的实质,这些不同实现不应认为超出本发明的范围,本发明实施例在此不一一陈述。如图3所示,为本发明实施例提供的对来自主机的写请求进行处理的方法。步骤300:接收来自主机的第一写请求,所述第一写请求中携带第一元数据以及第一数据。在上述控制节点基于所述主机的存储需求完成配置后,会通知所述主机为其选定的服务交换机,则当主机有数据需要写入时可以发送第一写请求,所述第一写请求中携带第一元数据以及第一数据。参照图2以及前述的消息结构,本发明实施例中,所述第一元数据可以包括:第一源地址、第一目的地址、存储索引、操作命令以及数据净荷长度,其中:所述第一源地址为所述主机的地址,即200.1.1.3;所述第一目的地址为所述主机的服务交换机的地址,即200.1.1.101;所述存储索引为luna+ox0000ffff,即表示该写请求要在卷a的起始地址为ox0000ffff处写入所携带的第一数据;所述操作命令为“写”;所述数据净荷长度取值可以是512字节。可选的,本发明实施例中,所述第一元数据还可以包括存储类型,如所述存储类型为“块”,与其相对应的存储索引如上所述为luna+ox0000ffff;所述第一元数据还可以包括序列号,所述序列号的取值为所述主机基于在发送所述第一写请求前已经发送的消息个数据加1,如所述第一写请求的序列号可以是ox1234。步骤301:基于所述第一元数据查询转发表。所述服务交换机接收到所述第一写请求后,需要通过查询所述转发表决定如何处理该写请求。如可以是基于所述第一写请求携带的第一元数据查询所述转发表以获取k条转发记录,这里所述k的取值大于等于2;以上述表4为例,在所述表4中可以查找到与主机200.1.1.3、服务交换机200.1.1.101及luna对应有3条转发记录,其对应的冗余等级编号分别分别为raid1/3_0、raid1/3_1、raid1/3_2,也即对应于所述主机200.1.1.3的luna的冗余等级为raid1/3,其分别所对应的转发路径为3个存储节点,其地址分别为:200.1.1.110、200.1.1.111、200.1.1.112。步骤302:对所述第一写请求中的第一数据进行分片操作。基于所查询到k条转发记录的冗余等级编号对所述第一写请求中的第一数据进行分片操作,如前所述,查询到的冗余等级编号分别为raid1/3_0、raid1/3_1、raid1/3_2,即其冗余等级为raid1/3,也就说raid级别为raid1,由3个存储节点构成,因为在raid1的情况下是不需要对所述第一数据进行条带化处理,也不需要针对所述第一数据进行冗余计算,raid1保护是将所述第一数据进行镜像,本实施例中,因为冗余等级是raid1/3,因此在这种情况下,所述的分片操作可以直接将所述第一数据再复制3份,所复制的3份第一数据共同构成对应于所述第一写请求中的第一数据的分片,分别由所述对应的3个存储节点来保存即可。本领域普通技术人员可以理解的是,如表4,在冗余等级编号分别为raid5/5_0、raid5/5_1、raid5/5_2、raid5/5_3、raid5/5_4的情况下其冗余等级为raid5/5,表示由5个存储节点构成raid5,则需要将所述第一数据分成4个数据分片,并基于所述第一数据计算1个冗余分片,由所述的4个数据分片以及1个冗余分片构成对应于所述第一数据的5个分片,其中每一个分片分别有1个存储节点保存。本领域技术人员可以理解的是,针对第一数据应该如何分片以及是否需要计算冗余分片以及需要计算多个个冗余分片,根据raid技术的基本原理来基于所查询到的冗余等级就可以直接确定,在此不需要做详细说明。后面还是以冗余等级为raid1/3为例进行说明。步骤303:发送第二写请求。基于所述k条转发记录中的冗余等级编号及存储节点地址生成k个第二写请求,分别向k个存储节点发送所述k个第二写请求。如步骤301中,因为查询到的冗余等级为raid1/3,对应于3个冗余等级编号raid1/3_0、raid1/3_1、raid1/3_2、相应存储节点地址是200.1.1.110、200.1.1.111、200.1.1.112的3个存储节点,所以所述服务交换机会构建3个第二写请求,每个所述第二写请求包含第二元数据以及第二数据,所述3个第二写请求中所述第二数据分别为上述3个分片之一,所述3个第二写请求中的所述第二元数据中的第二源地址为200.1.1.101,即表示该第二写请求由地址为200.1.1.101的服务交换机发出;第二目的地址分别为200.1.1.110、或200.1.1.111、或200.1.1.112,表示所述3个第二写请求需要分别发送给地址为200.1.1.110、或200.1.1.111、或200.1.1.112的存储节点;所述第二元数据中的操作命令都为“写”;所述第二元数据中的存储索引与所述第一元数据中的所述存储索引相同,依然为luna+ox0000ffff;所述净荷数据长度为512字节。进一步的,因为所述第二写请求是由所述交换机发送给存储节点,因此在所述第二写请求的第二元数据中还需要包括所述冗余等级编号,参照上述表4,所述3个第二写请求的第二元数据中的冗余等级编号分别是raid1/3_0、raid1/3_1、raid1/3_2。可选的,如前所描述,所述第二写请求的第二元数据还可以包括存储类型,其取值与所述第一元数据中的存储类型取值相同,如为“块”;所述第二写请求的第二元数据还可以包括序列号,其取值与所述第一元数据中的序列号取值相同,如为ox1234。可选的,还可以在所述第二写请求中包括数据校验,数据校验的计算方法如前所述,在此不再赘述。所述服务交换机将所述3个第二写请求分别发送给地址为200.1.1.110、200.1.1.111、200.1.1.112的3个存储节点。可选的,所述服务交换机在接收到所述第一写请求后进行查询转发表、分片以及发送所述第二写请求的过程中,还可以创建状态表,用于记录针对第一写请求处理的状态信息,在上述表4的基础上增加状态信息,所述状态表中的操作状态为所述第一元数据中的操作命令,这里记录为“写”;所述状态表中的序列号取值为所述第一元数据中的序列号,例如可以是ox1234;所述状态表中的净荷长度取值为所述第一元数据中的数据净荷长度,例如可以是512字节。具体如下表5所示:表5进一步的,此处需要说明的是,上述状态表的创建为可选步骤,而且创建所述状态表可以是在步骤303之后,也可以是在步骤302之后就创建,当然也可以是在步骤301之后就创建。步骤304:保存数据。所述k个存储节点分别接收所述第二写请求并保存其携带的第二数据。参照上述步骤,地址为200.1.1.110、200.1.1.111、200.1.1.112的3个存储节点分别接收来自所述服务交换机的所述第二写请求,然后将所接收到的第二写请求中所携带的第二数据保存。优选的,在本发明实施例中,所述存储节点可以以对象存储的方式保存所述第二数据,本领域普通技术人员可以理解的是,对象存储是以键-值(即key-value)的方式进行保存,其中键(key)用于索引保存的所述值(value)。这里所述的值(即value)是所述第二数据,与值对应的键(即key)则可以是所述第二写请求中的第二元数据中的存储索引(即卷id+逻辑地址)以及冗余等级编号构成,本发明实施例中,所述键的取值可以就是所述卷id+逻辑地址+冗余等级编号;或者所述键的取值也可以是对所述卷id+逻辑地址+冗余等级编号进行哈希运算而得到。这样,后续所述存储节点需要读取数据时,就可以直接以所述卷id+逻辑地址+冗余等级编号作为键来索引相应的数据。步骤305:存储节点分别向所述服务交换机发送第二写成功消息。所述k个存储节点完成所述第二写请求中的所述第二数据的保存后,向所述服务交换机发送第二写成功消息,如前述步骤所述,本实施例中k为3。参照图2所述的消息结构,所述第二写成功消息只需要包含元数据部分,不需要包含数据净荷以及数据校验部分。其中,所述第二写成功消息的元数据具体为:源地址:即为所述存储节点的地址,如分别为200.1.1.110、或200.1.1.111、或200.1.1.112;目的地址:所述服务交换机的地址,如200.1.1.101;存储类型:同所述第二写请求中的存储类型的取值,如“块”;存储索引:同所述第二写请求中的存储索引的取值,如“luna+ox0000ffff”;操作命令:写完成;冗余等级编号:同所述第二写请求中的冗余等级编号的取值,如分别为“raid1/3_0、raid1/3_1、raid1/3_2”;序列号:同所述第二写请求中的序列号的取值,如“ox1234”。因为所述第二写成功消息不需要携带任何数据,所以在元数据中也不需要数据净荷长度这个字段。本领域普通技术人员可以理解的是,参照前面关于第一写请求以及第二写请求的描述,所述第二写成功消息中元数据部分的序列号、存储类型两个字段也是可选的。步骤306:所述服务交换机向所述主机发送第一写成功消息。所述服务交换机在分别收到来自前面所述的k个存储节点的第二写成功消息后,可以判断针对所述第一写请求完成了数据存储,因此向所述主机发送第一写成功消息,与所述第二写成功消息相同,所述第一写成功消息只需要包含元数据部分,不需要包含数据净荷以及数据校验部分。其中,所述第一写成功消息的元数据具体为:源地址:即为所述服务交换机的地址,如200.1.1.101;目的地址:所述主机的地址,如200.1.1.3;存储类型:同所述第一写请求中的存储类型的取值,如“块”;存储索引:同所述第一写请求中的存储索引的取值,如“luna+ox0000ffff”;操作命令:写完成;序列号:同所述第一写请求中的序列号的取值,如“ox1234”。因为所述第二写成功消息不需要携带任何数据,所以在元数据中也不需要数据净荷长度这个字段;如前所述,在所述服务交换机同所述主机之间的消息,不需要携带冗余等级编号字段。本领域普通技术人员可以理解的是,参照前面关于第一写请求以及第二写请求的描述,所述第一写成功消息中元数据部分的序列号、存储类型两个字段也是可选的。进一步的,如果所述服务交换机在收到所述第一写请求后有创建状态表,则在本环节中,所述服务交换机每收到1个来自所述存储节点的第二写成功消息,就将所述状态表(如表5)中的操作状态修改为“写成功”,具体如表6所示,所述服务交换机在收到来自所述各个存储节点的第二写成功消息后,根据其携带的第二元数据信息查询状态表,将所述状态表中对应行的操作状态修改为“写成功”:表6进一步的,当从所述3个存储节点收到所述第二写成功消息以触发将所述状态表的操作状态都改为“写成功”,则说明所述第一写请求处理成功,则可以向所述主机发送所述第一写成功消息,并且可以将所述状态表删除。上述实施例的写请求处理过程是以冗余等级为raid1/3为例来进行说明,本领域技术人员可以理解的是,冗余等级可以是基于raid0、raid1、raid3、raid5、raid10或raid50等不同raid级别、并且可以由不同数量的存储节点来实现相应的raid级别的多种情况,则在不同的冗余等级的情况下,在步骤302应该基于相应raid级别以及构成该raid级别的存储节点数来对所述第一数据进行分片操作以及计算冗余分片,该分片操作以及计算冗余分片属于raid技术的基本原理,因此本发明实施例不一一针对不同冗余等级进行详细说明。从上述实施例可以看出,在所述交换机中保存有转发表,则当为所述交换机接收到来自所述主机的所述第一写请求后,可以基于所述转发表直接对所述第一写请求中携带的数据进行分片并计算冗余分片,然后生成相应个数的所述第二写请求,然后直接将所述第二写请求分别发送给相应的存储节点保存其携带的数据,这样就可以完成所述第一写请求中携带的数据的保存。在本发明实施例中,所述第一写请求中的数据只需要在所述服务交换机上传输1次就能完成保存,避免了像现有技术那种需要传输2次才能保存,由此大大减少了交换机的工作负荷以及网络资源的浪费,也减少了一次写请求处理的时延,大大提升了所述分布式存储系统的处理效率和性能。如图4所示,是本发明实施例提供的分布式存储系统中针对来自主机的读请求的处理过程。步骤400:接收来自主机的第一读请求,所述第一读请求中携带第三元数据。当所述主机有读数据的需求时,会发送第一读请求,所述第一读请求中会携带所述第三元数据。所述第三元数据可以包括:第三源地址、第三目的地址、存储索引及数据净荷长度,其中:其中所述第三源地址为所述主机的地址,即200.1.1.3;所述第三目的地址为所述交换机的地址,即200.1.1.101;所述存储索引为luna+ox0000ffff,即表示该读请求要从卷a的起始地址为ox0000ffff处开始读取数据;所述操作命令为“读”;所述数据净荷长度用于指示需要读取的数据的大小取值,如可以是512字节,表明需要从上述存储索引所指示的卷a的起始地址为ox0000ffff处连续读取512字节的数据。可选的,本发明实施例中,所述第三元数据还可以包括存储类型,如所述存储类型为“块”,与其相对应的存储索引如上所述为luna+ox0000ffff;所述第三元数据还可以包括序列号,所述序列号的取值为所述主机基于在发送所述第一读请求前已经发送的消息个数据加1,如所述第一读请求的序列号可以是ox5678。步骤401:基于所述第三元数据查询转发表。所述服务交换机接收到所述第一读请求后,需要通过查询转发表决定如何处理该读请求,可以是基于所述第三元数据中的所述第三源地址、所述第三目的地址及所述存储索引分别匹配所述转发表中所述每一条转发记录的主机地址、服务交换机地址和卷以获取所述k条转发记录,k的取值为大于等于2。在所述表4中可以查找到与主机200.1.1.3、服务交换机200.1.1.101及luna对应有3条转发记录,其对应的冗余等级编号分别分别为raid1/3_0、raid1/3_1、raid1/3_2,也即对应于所述主机200.1.1.3的luna的冗余等级为raid1/3,其分别所对应的转发路径为3个存储节点,其地址分别为:200.1.1.110、200.1.1.111、200.1.1.112。步骤402:发送第二读请求。基于所述k条转发记录中的冗余等级编号及存储节点地址生成k个第二读请求,分别向k个存储节点发送所述k个第二读请求。如步骤401中的实施方式,因为查询到的冗余等级为raid1/3,对应于3个冗余等级编号raid1/3_0、raid1/3_1、raid1/3_2转发路径分别是地址为200.1.1.110、200.1.1.111、200.1.1.112的3个存储节点,所以所述服务交换机会构建3个第二读请求,每个所述第二读请求包含第四元数据,所述3个第二读请求中的所述第四元数据中的第四源地址为200.1.1.101,即表示该第二读请求由地址为200.1.1.101的服务交换机发出;第四目的地址分别为200.1.1.110、或200.1.1.111、或200.1.1.112,表示所述3个第二读请求需要分别发送给地址为200.1.1.110、或200.1.1.111、或200.1.1.112的存储节点;所述第四元数据中的操作命令都为“读”;所述第四元数据中的存储索引与所述第三元数据中的所述存储索引相同,依然为luna+ox0000ffff;所述第四元数据中的净荷数据长度与所述第三元数据中的所述净荷数据长度相同,依然为512字节。进一步的,因为所述第二读请求是由所述交换机发送给存储节点,因此在所述第二读请求的第四元数据中还需要包括冗余等级编号,参照上述表4,所述3个第二读请求的第四元数据中的冗余等级编号分别是raid1/3_0、raid1/3_1、raid1/3_2。可选的,如前所描述,所述第二读请求的第四元数据还可以包括存储类型,其取值与所述第三元数据中的存储类型取值相同,如为“块”;所述第二读请求的第四元数据还可以包括序列号,其取值与所述第三元数据中的序列号取值相同,如为ox5678。所述服务交换机将所述3个第二读请求分别发送给地址为200.1.1.110、200.1.1.111、200.1.1.112的3个存储节点。可选的,所述服务交换机在接收到所述第一读请求后进行查询转发表、及发送所述第二读请求的过程中,还可以创建状态表,用于记录针对所述第一读请求处理的状态信息,在上述表4的基础上增加状态信息,所述状态表中的操作状态为第三元数据中的操作命令,这里记录为“读”;所述状态表中的序列号取值为所述第三元数据中的序列号,例如可以是ox5678;所述状态表中的净荷长度取值为所述第三元数据中的数据净荷长度,例如可以是512字节。具体如下表7所示:表7进一步的,此处需要说明的是,上述状态表的创建为可选步骤,而且创建所述状态表可以是在步骤401之后,也可以是在步骤402之后就创建。步骤403:存储节点发送第二读完成消息。所述k个存储节点中的每一个存储节点接收来自所述交换机的第二读请求,以所述第二读请求所携带的第四元数据中的所述存储索引以及所述冗余等级编号作为键读取数据。如地址为200.1.1.110、200.1.1.111、200.1.1.112的3个存储节点分别接收来自所述服务交换机的所述3第二读请求中的1个,基于所述第二读请求中的所述第四元数据从本地读取数据。在本发明实施例中,如图3及相应实施例描述所记载,若所述存储节点以对象存储的方式保存数据,则在本步骤中,所述存储节点以所述第四元数据中的存储索引(即卷id+逻辑地址)以及冗余等级编号作为键来索引需要读取的数据;或者基于所述第四元数据中的存储索引(即卷id+逻辑地址)以及冗余等级编号进行哈希运算而得到键,然后以所得到的所述键来索引需要读取的数据。所述k个存储节点分别基于所读取的数据生成第二读完成消息并发送给所述服务交换机。参照图4所述的消息结构,所述第二读完成消息包含元数据和数据净荷。其中,所述第二读完成消息的元数据具体为:源地址:即为所述存储节点的地址,如分别为200.1.1.110、或200.1.1.111、或200.1.1.112;目的地址:所述服务交换机的地址,如200.1.1.101;存储类型:同所述第二读请求中的存储类型的取值,如“块”;存储索引:同所述第二读请求中的存储索引的取值,如“luna+ox0000ffff”;操作命令:读完成;冗余等级编号:同所述第二读请求中的冗余等级编号的取值,如分别为“raid1/3_0、raid1/3_1、raid1/3_2”;序列号:同所述第二读请求中的序列号的取值,如“ox5678”;数据净荷长度:同所述第二读请求中的数据净荷长度的取值,如“512字节”。本领域普通技术人员可以理解的是,参照前面关于第一读请求以及第二读请求的描述,所述第二读完成消息中元数据部分的序列号、存储类型两个字段也是可选的。所述第二读完成消息中的数据净荷即是所述存储节点基于所述第二读请求从本地读取出来的数据。步骤404:分片重组。所述服务交换机分别接收到来自所述来自所述k个存储节点中的每一个存储节点的第二读完成消息,从所述每一个第二读完成消息中解析出所携带的数据,对所述k个第二读完成消息中携带的数据进行重组。在本实施例中是以冗余等级为raid1/3为例进行说明,因此所述服务交换机将来自所述3个存储节点的所述第二读完成消息中的数据净荷进行校验无误后,将其重组为1个512字节的数据,该数据即是所述主机需要读取的数据,在后续流程中将该数据发送给所述主机。本领域普通技术人员可以理解的是,若在冗余等级为raid5/5的情况下,则所述服务交换机会分别接收到来自5个不同存储节点返回的第二读完成消息,则分别从所述来自5个不同存储节点返回的第二读完成消息中解析出数据净荷,这里所述解析出来的5个数据净荷分别包含4个数据分片以及1个冗余分片,所述服务交换机分别对所述5个数据净荷进行校验无误后基于raid5技术对所述4个数据分片以及1个冗余分片进行重组,生成所述主机需要读取的数据,在后续流程中将该数据发送给所述主机。本领域技术人员可以理解的是,冗余等级可以是基于raid0、raid1、raid3、raid5、raid10或raid50等不同raid级别、并且可以由不同数量的存储节点来实现相应的raid级别的多种情况,则在不同的冗余等级的情况下,在步骤604应该基于相应raid级别以及构成该raid级别的存储节点数来对来自不同存储节点的第二读完成消息中的数据净荷进行分片重组,该分片重组属于raid技术的基本原理,因此本发明实施例不一一针对不同冗余等级进行详细说明。后面还是以冗余等级为raid1/3为例进行说明。步骤405:向所述主机发送第一读完成消息。所述服务交换机基于所述分片重组后的数据生成第一读完成消息。参照图4所述的消息结构,所述第一读完成消息包含元数据和数据净荷。其中,所述第一读完成消息中的数据净荷即是所述服务交换机基于所述分片重组后的数据;所述第一读完成消息的元数据具体为:源地址:即为所述服务交换机的地址,如200.1.1.101;目的地址:所述主机的地址,如200.1.1.3;存储类型:同所述第二读请求中的存储类型的取值,如“块”;存储索引:同所述第二读请求中的存储索引的取值,如“luna+ox0000ffff”;操作命令:读完成;序列号:同所述第二读请求中的序列号的取值,如“ox5678”;数据净荷长度:同所述第二读请求中的数据净荷长度的取值,如“512字节”。如前所述,在所述服务交换机同所述主机之间的消息,不需要携带冗余等级编号字段。本领域普通技术人员可以理解的是,参照前面关于第一读请求以及第二读请求的描述,所述第一读完成消息中元数据部分的序列号、存储类型两个字段也是可选的。进一步的,如果所述服务交换机在收到所述第一读请求后有创建状态表表7,则在本实施例中,所述服务交换机每收到1个来自所述存储节点的第二读完成消息,就将所述状态表(如表7)中的操作状态修改为“读成功”,具体如表8所示:表8进一步的,当从所述3个存储节点收到所述第二读完成消息以触发将所述状态表的操作状态都改为“读成功”,则说明所述第一读请求处理成功,则可以向所述主机发送所述第一读完成消息,并且可以将所述状态表删除。在本发明实施例提供的所述分布式存储系统中,当为所述主机配置的所述服务交换机接收到来自所述主机的所述第一读请求后,可以基于所述转发表直接将所述第一读请求拆分成多个所述第二读请求,然后分别发送给相应的存储节点读取数据,分别收到来自所述多个存储节点返回的多个第二读完成消息中携带的数据后,基于raid技术将所述多个第二读完成消息中携带的数据进行重组并再通过所述第一读完成消息返回给所述主机,由此实现了快速的读请求处理,这里所述主机需要读取的数据在从多个存储节点经过所述服务交换机到所述主机的方向上只需要经过所述服务交换机1次,避免了像现有技术那种需要传输2次才能完成数据读取,由此减少了交换机的网络资源的浪费,也减少了读请求处理的时延,大大提升了所述分布式存储系统的处理效率和性能。基于与如图1、2、3、4及上述相应实施例描述相同或相类似的发明构思,如图5所示,为本发明实施例提供的一种交换机的结构示意图,所述交换机500包括接收器501、处理器502、存储器503、raid引擎504和发射器505。本发明实施例中,所述接收器501用于接收来自控制节点的交换机能力信息查询报文,所述处理器502用于解析所述交换机能力信息查询报文,基于所述交换机能力信息查询报文查询所述交换机的能力信息,如交换机id、交换机地址、交换机是否具备分片及冗余计算能力等,基于上述能力信息生成交换机能力信息查询响应报文,所述发射器505用于向所述控制节点发送所述交换机能力信息查询响应报文。进一步的,所述接收器501还用于接收来自所述控制节点的转发表,所述处理器502用于解析所述转发表后交由所述存储器503保存所述转发表。进一步的,所述接收器501还用于接收来自主机的第一写请求,所述第一写请求中携带第一元数据以及第一数据;所述处理器502,还用于解析所述第一写请求以获取所述第一元数据以及所述第一数据,基于所述第一元数据查询所述转发表以获取k条转发记录,k大于等于2;所述raid引擎504,用于用于基于所述k条转发记录中的冗余等级编号对所述第一数据进行分片操作,得到k个分片;所述处理器502,还用于基于所述k条转发记录中的冗余等级编号及存储节点地址生成k个第二写请求,所述k个第二写请求中的每一个第二写请求携带第二数据,所述第二数据为所述k个分片中的1个分片;所述发射器505,还用于用于分别向k个存储节点发送所述k个第二写请求。所述接收器501,还用于分别接收来自所述k个存储节点中的每一个存储节点的第二写成功消息;所述处理器502,还用于基于所述来自所述k个存储节点中的每一个存储节点的第二写成功消息生成第一写成功消息;所述发射器505,还用于向所述主机发送所述第一写成功消息。所述转发表及第一写请求所携带的第一元数据的构成参见图1、2、3及相应实施例的描述,本装置实施例不再赘述;同样,所述处理器502如何基于所述第一元数据查询转发表、分片操作、生成k个第二写请求、以及基于所述来自所述k个存储节点中的每一个存储节点的第二写成功消息生成第一写成功消息的实施细节也请参见图1、2、3及相应实施例的描述,本装置实施例不再赘述;进一步的,参照图3及相应实施例的描述,在写请求的处理过程中,所述处理器502还可以用于创建状态表,并且在收到所述来自所述多个存储节点中的每一个存储节点的第二写成功消息后更新所述状态表以及删除所述状态表。本发明实施例提供的所述交换机,在接收到来自所述主机的所述第一写请求后,可以基于所述转发表直接对所述第一写请求中携带的数据进行分片并计算冗余分片,然后生成相应个数的所述第二写请求,然后直接将所述第二写请求分别发送给相应的存储节点,然后所述存储节点分别保存其接收到的第二写请求中携带的数据,这样就可以完成所述第一写请求中携带的数据的保存。在本发明实施例中,所述第一写请求中的数据只需要在所述服务交换机上传输1次就能完成保存,避免了像现有技术那种需要传输2次才能保存,由此减少了交换机的网络资源的浪费,也减少了一次写请求处理的时延,大大提升了所述分布式存储系统的处理效率和性能。进一步的,所述接收器501,还用于接收来自主机的第一读请求,所述第一读请求中携带第三元数据;所述处理器502,还用于解析所述第一读请求以获取所述第三元数据,基于所述第三元数据查询所述转发表以获取k条转发记录,k大于等于2,基于所述k条转发记录中的冗余等级编号及存储节点地址生成k个第二读请求;所述发射器505,还用于分别向k个存储节点发送所述k个第二读请求。所述接收器501,还用于分别接收来自所述k个存储节点中的每一个存储节点的第二读完成消息;所述处理器502,还用于解析所述来自所述k个存储节点中的每一个存储节点的第二读完成消息以获取每一个所述第二读完成消息所携带的数据;所述raid引擎504,还用于对所述k个第二读完成消息中携带的数据进行重组;;所述处理器502,还用于生成第一读完成消息,所述第一读完成消息携带所述重组的数据;所述发射器705,用于向所述主机发送第一读完成消息。所述交换机中各个模块/组件每一个动作的实施细节请参见图4及相应实施例描述,本实施例在此不再赘述。本发明实施例提供的所述交换机接收到来自所述主机的所述第一读请求后,可以基于所述转发表直接将所述第一读请求拆分成多个所述第二读请求,然后分别发送给相应的存储节点读取数据,分别收到来自所述多个存储节点返回的多个第二读完成消息中携带的数据后,基于raid技术将所述多个第二读完成消息中携带的数据进行重组并再通过所述第一读完成消息返回给所述主机,由此实现了快速的读请求处理,这里所述主机需要读取的数据在从多个存储节点经过所述服务交换机到所述主机的方向上只需要经过所述服务交换机1次,避免了像现有技术那种需要传输2次才能完成数据读取,由此减少了交换机的网络资源的浪费,也减少了读请求处理的时延,大大提升了所述分布式存储系统的处理效率和性能。基于与如图1及上述相应实施例描述相同或相类似的发明构思,如图6所示,为本发明实施例提供的一种控制节点的结构示意图,所述控制节点800包括接收器601、处理器602、存储器603、发射器604。所述发射器604,用于向交换机发送交换机能力信息查询报文,向存储节点发送存储节点能力信息查询报文;所述接收器601,用于接收来自所述交换机的交换机能力信息查询响应报文,所述交换机能力信息查询响应报文携带交换机能力信息,所述能力可以包含如下信息:交换机id、交换机地址、交换机是否具备分片及冗余计算能力;还用于接收来自所述存储节点的存储节点能力信息查询响应报文,所述存储节点能力信息查询响应报文携带存储节点能力信息,所述能力可以包含如下信息:包含如下信息:存储节点地址、存储节点容量。所述处理器602,用于解析所述交换机能力信息查询响应报文以获取所述交换机能力信息,还用于解析所述存储节点能力信息查询响应报文以获取所述存储节点能力信息;所述存储器603,用于保存所述交换机能力信息和所述存储节点能力信息。所述接收器601,还用于接收主机存储需求;所述处理器602,还用于基于所述主机存储需求以及所述交换机能力信息和所述存储节点能力信息为所述主机分配服务交换机、分配多个存储节点以及配置转发表。所述发射器604,还用于将所述服务交换机的地址发送给所述主机,将所述转发表发送给所述服务交换机。所述交换机能力信息、存储节点能力信息的呈现方式、保存方式如图1及相应实施例描述;所述处理器602在为所述主机分配服务交换机、分配多个存储节点以及配置转发表的实施细节请参照如图3及相应实施例描述,本发明实施例在此不再赘述。通过本本发明实施例所提供的控制节点,可以实现对所述分布式存储系统的自动化集中配置,避免了现有技术中需要通过人工手动配置且需要分别配置不同交换机、存储节点的问题,极大的提升了分布式存储系统中的配置效率。进一步的,通过所述控制节点来配置转发表,交换机根据所述控制节点配置的转发表进行转发操作,由此实现控制/转发分离,由此可以大大提升所述分布式存储系统的性能。需要说明的是,本发明的所有实施例中所提及的“第一”、“第二”、“第三”、“第四”等仅仅为了区别彼此以描述方便而使用,不能将这些序号解读为对后面所连接的实体范围的限定。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1