一种分布式文件系统、网络通信方法、平台及其创建方法与流程

文档序号:13010690阅读:180来源:国知局
一种分布式文件系统、网络通信方法、平台及其创建方法与流程

本发明涉及分布式文件系统,特别涉及一种分布式文件系统、网络通信方法、平台及其创建方法。



背景技术:

计算机通过文件系统进行数据的管理、存储,而信息爆炸时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量的方式,在容量大小、容量增长速度、数据备份、数据安全等方面的表现都差强人意。分布式文件系统可以有效解决数据的存储和管理难题:将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统,众多的节点组成一个文件系统网络。每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输。人们在使用分布式文件系统时,无需关心数据是存储在哪个节点上、或者是从哪个节点从获取的,只需要像使用本地文件系统一样管理和存储文件系统中的数据。

分布式文件系统采用的网络模型为多线程并发模型,即每创建一个网络连接,就会新启动一组线程对该连接的网络消息进行处理。本系统中每个网络连接对应一个reader线程和一个writer线程,分别处理消息的读取和发送。

分布式文件系统采用的网络模块是publish/subscribe(发布/订阅)的设计模式。messenger作为信差,是消息发布者;dispatcher作为消息订阅者。osd(object-basedstoragedevice,对象存储设备)是dispatcher的一种。每个osd进程都有自己独立的信差。

现有技术通过基于独立信差的网络通信平台进行网络通信,参见图1所示,对应上文提到的多线程并发模型,每个osd都有一个独立信差,每个网络连接都有一组独立线程,在使用分布式文件系统时,本地osd通过独立信差向外发出消息或接收外部消息,因此不同的osd之间,都要通过各自的独立信差建立连接。当系统规模较大时,osd的连接数过多,同时运行的线程数过多,导致系统资源耗尽,集群规模无法扩大,存在扩容瓶颈。



技术实现要素:

有鉴于此,本发明的目的在于提供一种分布式文件系统、网络通信方法、平台及其创建方法,用于解决网络连接过多、存在扩容瓶颈的问题。其具体方案如下:

一种基于共享信差的网络通信平台,应用于分布式文件系统,包括多个节点,每个节点均包括信差、虚拟信差和osd;其中,

目标节点中的本地虚拟信差,用于对本地osd发出的消息进行封装,得到封装后消息,通过本地信差将所述封装后消息发送至相应节点上的信差,以及对所述本地信差接收的消息进行解析,得到解析后消息,并将所述解析后消息转发至相应的本地osd;

其中,所述目标节点为所述网络通信平台中的任一节点。

优选的,每个所述节点均包括一个信差、一个虚拟信差、一个或多个osd。

优选的,当所述目标节点中的osd数量为多个时,所述目标节点中还包括:

本地通讯单元,用于判断任一本地osd发出的消息的接收地址对应的信差是否为所述本地信差;如果是,则通过所述本地虚拟信差,直接将该消息发送给相应的本地osd。

相应的,本发明公布了一种基于共享信差的网络通信平台创建方法,用于创建如上所述的网络通信平台;其中,所述网络通信平台上目标节点的创建过程包括:

创建所述目标节点的本地虚拟信差,然后初始化本地osd;

将所述本地虚拟信差作为订阅者注册到本地信差中,将所述目标节点的本地osd作为订阅者注册到所述本地虚拟信差中;

其中,所述目标节点为所述网络通信平台的任一节点。

优选的,每个所述节点均包括一个信差、一个虚拟信差、一个或多个osd。

优选的,所述将所述本地虚拟信差作为订阅者注册到本地信差中,将所述目标节点的本地osd作为订阅者注册到所述本地虚拟信差中的过程包括:

将第一个本地osd作为订阅者注册到所述本地虚拟信差中后,将所述本地虚拟信差作为订阅者注册到所述本地信差中;

将其余的本地osd作为订阅者注册到所述本地虚拟信差中。

相应的,本发明公开了一种基于共享信差的网络通信方法,应用于上文所述的网络通信平台,所述方法包括:

目标节点中的本地虚拟信差,对本地osd发出的消息进行封装,得到封装后消息,通过本地信差将所述封装后消息发送至相应节点上的信差;

所述本地虚拟信差对所述本地信差接收的消息进行解析,得到解析后消息,并将所述解析后消息转发至相应的本地osd;

其中,所述目标节点为所述网络通信平台中的任一节点。

优选的,每个所述节点均包括一个信差、一个虚拟节点、一个或多个osd。

优选的,当所述目标节点中的osd数量为多个时,所述网络通信方法还包括:

判断任一本地osd发出的消息的接收地址对应的信差是否为所述本地信差;如果是,则通过所述本地虚拟信差,直接将该消息发送给相应的本地osd。

相应的,本发明还公布了一种分布式文件系统,包括如上所述的基于共享信差的网络通信平台。

优选的,所述分布式文件系统还包括:

基于独立信差的网络通信平台;

第一切换模块,用于将网络通信平台由所述基于独立信差的网络通信平台切换为所述基于共享信差的网络通信平台;

第二切换模块,用于将网络通信平台由所述基于共享信差的网络通信平台切换为所述基于独立信差的网络通信平台。

本发明中,osd通过虚拟信差进行通信,同一个虚拟信差下的本地osd只与本地虚拟信差相连,本地虚拟信差与本地信差相连,不同信差之间相连。相比现有技术,本发明的网络通信平台基于共享信差,虚拟信差统一管理本地osd,本地osd共享一个虚拟信差,大幅度减小了网络连接数,使得线程个数减少,因此系统资源消耗较少,消除了大集群扩容的瓶颈问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为一种基于独立信差的网络通信平台的结构示意图;

图2为一种基于共享信差的网络通信平台的结构示意图;

图3为另一种基于共享信差的网络通信平台的结构示意图;

图4为一种基于共享信差的网络通信平台的创建方法的步骤流程图;

图5为一种分布式文件系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种基于共享信差的网络通信平台,应用于分布式文件系统,包括多个节点,每个节点均包括信差、虚拟信差和osd;

其中,目标节点中的本地虚拟信差,用于对本地osd发出的消息进行封装,得到封装后消息,通过本地信差将所述封装后消息发送至相应节点上的信差,以及对所述本地信差接收的消息进行解析,得到解析后消息,并将所述解析后消息转发至相应的本地osd;其中,所述目标节点为所述网络通信平台中的任一节点。

本实施例中,每个节点可以包括一个信差,一个虚拟信差,以及一个或多个本地osd,参见图2所示。当然,每个节点也可以包括多个信差,多个虚拟信差,信差和虚拟信差必须是一一对应的,每个虚拟信差管理本地的一个或多个osd,参见图3所示。图3中节点a中包括n个通信单元,节点b中包括m个通信单元,上述的每个通信单元包括一个信差、一个虚拟信差、一个或多个本地信差,通信单元之间通过各自的信差建立网络连接。

进一步的,在图2的基础上,对本实施例公布的网络通信平台进行详细说明。例如节点a的osd1向节点b的osd3发送消息,osd1将待发送的消息交给虚拟信差a进行消息头的封装,得到封装后消息,然后通过信差a将封装后消息发送给信差b;信差b收到封装后消息,交由虚拟信差b进行预处理,也即从消息头中识别出消息是发送给osd3的,接着虚拟信差b进行解析从自己的订阅者中找到osd3,调用osd3的预处理函数,然后调用虚拟信差b的消息处理函数ms_dispatch找到osd3,调用osd3的处理函数ms_dispatch对消息进行处理,可以看出,虚拟信差的消息处理函数ms_dispatch与osd的处理函数ms_dispatch的工作任务并不相同。可以理解的是,osd3在处理结束后还可以向osd1发送返回消息,其中包含原发送的消息的处理结果,发送步骤与上述过程类似。

可以理解的是,如果同一个节点中两个osd进行消息传送,例如图2节点a中osd1向osd2传送消息,常规方法是由osd1发送消息给虚拟信差a,虚拟信差a封装消息后发送给信差a,信差a既是发送信差又是接收信差,直接将封装后消息返回虚拟信差a,虚拟信差a解析消息后发送给osd2,产生反复多余的路径,消耗资源。因此,为了避免上述情况,所述目标节点中还可以包括:本地通讯单元,用于判断任一本地osd发出的消息的接收地址对应的信差是否为所述本地信差;如果是,则通过所述本地虚拟信差,直接将该消息发送给相应的本地osd,不用经过本地信差,通信路径短,不需对该消息封装和解析,资源消耗降低。在上文的例子中,本地通讯单元a判断到osd1发出的消息接收方为本地信差a,所以直接通过虚拟信差a,将所要发送的消息由osd1发送给osd2。

相比现有技术,本实施例没有改变原有的osd的网络架构,而且支持现有技术中的命令执行。

本实施例中,osd通过虚拟信差进行通信,同一个虚拟信差下的本地osd只与本地虚拟信差相连,本地虚拟信差与本地信差相连,不同信差之间相连。相比现有技术中基于独立信差的网络通信平台,osd之间两两连接,每个连接均需要一个独立信差,存在众多繁杂的网络连接和独立线程;本发明的网络通信平台基于共享信差,虚拟信差统一管理本地osd,本地osd共享一个虚拟信差,大幅度减小了网络连接数,使得线程个数减少,因此系统资源消耗较少,消除了大集群扩容的瓶颈问题。

相应的,本实施例公布了一种基于共享信差的网络通信平台创建方法,用于创建如上所述的网络通信平台;参考图4所示,所述网络通信平台上目标节点的创建过程包括:

s11:创建所述目标节点的本地虚拟信差,然后初始化本地osd;

其中,所述目标节点为所述网络通信平台的任一节点。

s12:将所述本地虚拟信差作为订阅者注册到本地信差中,将所述目标节点的本地osd作为订阅者注册到所述本地虚拟信差中;

进一步的,步骤s12可以包括步骤s121和s122:

s121:将第一个本地osd作为订阅者注册到所述本地虚拟信差中后,将所述本地虚拟信差作为订阅者注册到所述本地信差中;

可以理解的是,这里的第一个本地osd并不是对osd的一种预设的固定排序,而是指订阅过程中,第一个完成本地虚拟信差注册的本地osd,该osd可以是任一本地osd。

s122:将其余的本地osd作为订阅者注册到所述本地虚拟信差中。

相应的,本实施例还公开了一种基于共享信差的网络通信方法,应用于上文所述的网络通信平台,所述方法包括:

目标节点中的本地虚拟信差,对本地osd发出的消息进行封装,得到封装后消息,通过本地信差将所述封装后消息发送至相应节点上的信差;

其中,所述目标节点为所述网络通信平台中的任一节点。

所述本地虚拟信差对所述本地信差接收的消息进行解析,得到解析后消息,并将所述解析后消息转发至相应的本地osd;

可以理解的是,本实施例存在一种优选情况,即每个所述节点均包括一个信差、一个虚拟节点、一个或多个osd。

进一步的,当所述目标节点中的osd数量为多个时,所述网络通信方法还可以包括:

判断任一本地osd发出的消息的接收地址对应的信差是否为所述本地信差;如果是,则通过所述本地虚拟信差,直接将该消息发送给相应的本地osd。

通过该步骤避免本地osd通信时的冗余路径和非必要的封装、解析动作。

相应的,本实施例还公布了一种分布式文件系统,参见图5所示,包括如上所述的基于共享信差的网络通信平台01。

进一步的,所述分布式文件系统还可以包括:

基于独立信差的网络通信平台02;

第一切换模块03,用于将网络通信平台由所述基于独立信差的网络通信平台切换为所述基于共享信差的网络通信平台;

第二切换模块04,用于将网络通信平台由所述基于共享信差的网络通信平台切换为所述基于独立信差的网络通信平台。

可以理解的是,第一切换模块03、第二切换模块04互相联系制约,使得网络通信平台能够在上述两种之间切换。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种分布式文件系统、网络通信方法、平台及其创建方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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