分布式存储系统、控制装置、客户终端、负载平衡方法以及程序的制作方法

文档序号:7792363阅读:148来源:国知局
分布式存储系统、控制装置、客户终端、负载平衡方法以及程序的制作方法
【专利摘要】一种分布式存储系统,包括:多个服务器,用于分别存储与键信息相关联的数据;分组转发装置,用于在接收到包含键信息并且寻址到多个服务器中的一个的新分组时请求控制装置以从多个服务器当中决定转发目的地;以及控制装置。控制装置包括:转发目的地选择部,用于根据分组中的键信息来决定分组的转发目的地;以及条目设置部,用于在通向转发目的地的路径上的分组转发装置中设置用于将具有相同键信息的随后分组转发到转发目的地的流条目。分组转发装置利用所设置的流条目将具有相同键信息的分组转发到转发目的地。本发明的目的在于提供一种用于对键值配置数据进行监督的分布式存储系统,其中唯一的选择节点用于选择转发目的地的服务器,因为不会危害请求处理中的处理延迟的降低。
【专利说明】分布式存储系统、控制装置、客户终端、负载平衡方法以及程序

【技术领域】
[0001]本申请要求日本专利申请N0.2012— 079952(于2012年3月30日提交)的优先权,因此通过引用将其内容整个合并到本公开之中。
[0002]本发明涉及一种分布式存储系统、控制装置、客户终端、负载平衡方法、以及程序,并且进一步尤其是,涉及一种对键值型数据进行监督的分布式存储系统、控制装置、客户终端、负载平衡方法、以及程序。

【背景技术】
[0003]在专利文献I中,公开了一种网络系统,在该网络系统中通过负载平衡器来减轻施加于站点之内的Web服务器上的负载以即使在到达负载平衡器的路径上出现了故障时也能够进行高速路径交换。根据专利文献1,当配备在客户终端与服务器的中途的路由器已接收到来自客户终端的分组时,路由器根据目的地L4端口号以及包含在分组报头中的源地址的散列值来决定转发目的地服务器。通过这样做,可将对于在和层4 (L4)上的可识别的一个服务不同的服务器的处理分配给另一个服务器。
[0004]在专利文献2中,公开了一种负载平衡器,该负载平衡器由于积极地维护唯一性而将防止对客户终端的响应特性劣化。在该专利文献中,布置在负载平衡器与服务器之间的中继装置参考从服务器至客户终端的响应以将路径标识符(从一个中继装置分配给另一个的标识符)缓写或添加到L7数据中。当客户终端重新发送请求时,将上次接收到的路径标识符嵌入到该请求中。已接收到分组的负载平衡器将它传输到中继装置中的适当一个。
[0005]在专利文献3中,公开了一种计算机系统,在该计算机系统中由多个装置分割地负责决定转发目的地的处理以便降低URL (统一资源定位符)交换机的存储容量或计算量。
[0006]在非专利文献I和2中,公开了采用下述集中控制配置网络体系结构的被称作OpenFlow的集中控制型网络,在所述集中控制配置网络体系结构中称为OpenFlow控制器的控制装置对称为OpenFlow交换机的交换机的特性进行控制。可按照整个网络的状态来灵活地修改构成了虚拟网络的多个这些交换机的行为。因而,借助于OpenFlow,可更容易地构造高度灵活的虚拟网络。
[0007]引用列表
[0008]专利文献
[0009]专利文献1:
[0010]JP 专利 KOKAI 公开 N0.JP2003— 131961A
[0011]专利文献2:
[0012]JP 专利 KOKAI 公开 N0.JP2011—041006A
[0013]专利文献3:
[0014]JP 专利 KOKAI 公开 N0.JP2006—309383A
[0015]非专利文献
[0016]非专利文献1:
[0017]Nick McKeown 和其他七人:“0penFlow:Enabling Innovat1n in CampusNetworks”,[在线],[2012 年 2 月 14 日搜索],因特网〈URL:http://www.0penflow.0rg/documents/openflow-wp-latest.pdf>
[0018]非专利文献2:
[0019]"OpenFlow switch Specificat1n, Vers1nl.1.0, Implemented (WireProtocol0x02) ”,[在线],[2012 年 2 月 14 日搜索],因特网〈URL://www.0penf low.0rg/documents/openflow-spec-vl.1.0.pdf>


【发明内容】

[0020]技术问题
[0021]本发明给出以下分析。在用于对键值配置数据进行监督的分布式存储系统中,很难实现通过单个选择装置来选择转发目的地服务器并且与之相结合地降低请求处理中的延迟。通过单个选择装置来选择转发目的地服务器是指在单个节点执行选择来自客户终端的所有请求将要传输到哪个服务器的处理。如果由多个节点执行该处理并且添加或除去服务器,那么必须使用用于保持服务器信息从一个节点至另一个的唯一性的合适方案,因而处理变复杂了。
[0022]另一方面,如果由单个节点进行对转发目的地服务器的选择,那么单个选择节点必须接收来自所有客户终端的所有请求并且选择转发目的地服务器以执行转发处理。这可能导致单个节点上的负载增大以加剧了请求处理中的延迟。
[0023]在专利文献I的网络系统中,如果频繁地进行从指定客户终端请求相同服务,那么将该请求转发到相同服务器,以致负载平衡可能不足够。
[0024]在专利文献2中,中继装置又必须参考从服务器至客户终端的所有响应,因而处理延迟可能增大了。
[0025]在专利文献3中,利用下述转发目的地选择表格来决定转发目的地,所述转发目的地选择表格用于对下述固定长度的散列值与转发目的地进行组配,所述固定长度的散列值是由客户终端所请求的内容的标识符所计算的。如果请求集中于指定内容,那么必须选择相同服务器,因此同样地不会保持负载平衡。
[0026]因此本发明的目的是提供一种有助于实现通过单个选择装置来选择转发目的地服务器并且与之相结合地降低请求处理中的延迟的分布式存储系统、控制装置、客户终端、负载分配方法、以及程序。
[0027]解决技术问题的手段
[0028]根据本发明的第一方面,提供了一种分布式存储系统。该分布式存储系统包括:多个服务器,用于分别存储与键信息相关联的数据;分组转发装置,用于在接收到包含键信息并且寻址到多个服务器中的一个的新分组时请求控制装置以从多个服务器当中决定转发目的地;以及控制装置。该控制装置包括:转发目的地选择部,用于根据分组中的键信息来决定分组的转发目的地;以及条目设置部,用于在通向转发目的地的路径上的分组转发装置中设置用于将具有相同键信息的随后分组转发到转发目的地的流条目。该分组转发装置利用所设置的流条目将具有相同键信息的分组转发到转发目的地。
[0029]根据本发明的第二方面,提供了一种与多个服务器和分组转发装置相连接的控制装置。多个服务器分别存储与键信息相关联的数据。在接收到包含键信息并且寻址到多个服务器中的一个的新分组时,分组转发装置请求控制装置以从多个服务器当中决定转发目的地。该控制装置包括:转发目的地选择部,用于根据分组中的键信息来决定分组的转发目的地;以及条目设置部,用于在通向转发目的地的路径上的分组转发装置中设置用于将具有相同键信息的随后分组转发到转发目的地的流条目。
[0030]根据本发明的第三方面,提供了一种客户终端。该客户终端包括地址设置部,该地址设置部用于以利用键信息的散列值所生成的目的地地址来生成请求分组。客户终端利用该请求分组请求服务器。
[0031]根据本发明的第四方面,提供了一种负载平衡方法。该负载平衡方法包括:通过控制装置,接收来自分组转发装置的用于决定具有与值配对的键信息的新分组的转发目的地的请求;基于分组中的键信息来从多个服务器当中决定分组的转发目的地;以及在通向转发目的地的路径上的分组转发装置中设置用于将具有相同键信息的随后分组转发到转发目的地的流条目。本发明与作为计算机的指定机器密切相关,所述计算机用于向用户呈现项并且接受来自用户的对项的选择的计算机。
[0032]根据本发明的第五方面,提供了一种加载于与多个服务器和分组转发装置相连接的控制装置上的计算机的程序。多个服务器分别存储与键信息相关联的数据。分组转发装置在接收到包含键信息并且寻址到多个服务器中的一个的新分组时请求控制装置以从多个服务器当中决定转发目的地。该程序可使计算机执行:基于分组中的键信息来从多个服务器当中决定分组的转发目的地;以及在通向转发目的地的路径上的分组转发装置中设置用于将具有相同键信息的随后分组转发到转发目的地的流条目。应该注意的是可在计算机可读的即非瞬态的记录介质上对该程序进行重新编码。也就是说,本发明可以是作为计算机程序产品实现的。
[0033]发明的有益效果
[0034]根据本发明,在用于对键值型数据进行监督的分布式存储系统中,可有助于实现通过单个选择节点来选择转发目的地服务器并且同时降低请求处理中的延迟。

【专利附图】

【附图说明】
[0035]图1是示出了本发明的示意性实施例的配置的方框图。
[0036]图2是示出了根据本发明的第一示意性实施例的分布式存储系统的配置的方框图。
[0037]图3示出了由根据本发明的第一示意性实施例的控制装置所保持的服务器表格的示例。
[0038]图4是用于对本发明的第一示意性实施例(在写请求时)的操作进行说明的流程图。
[0039]图5是用于对本发明的第一示意性实施例在来自服务器的响应时)的操作(进行说明的流程图。
[0040]图6是示出了根据本发明的第二示意性实施例的分布式存储系统的配置的方框图。
[0041]图7是用于对根据本发明的第二示意性实施例的生成伪地址的方法进行说明的示意图。
[0042]图8示出了由本发明的第二示意性实施例的控制装置所保持的服务器表格的示例。
[0043]图9是用于对本发明的第二示意性实施例(在写请求时)的操作进行说明的流程图。
[0044]图10是用于对本发明的第二示意性实施例(在选择转发目的地服务器时)的操作进行说明的流程图。
[0045]图11是用于对本发明的第二示意性实施例(在来自服务器的响应时)的操作进行说明的流程图。
[0046]图12是示出了根据本发明的第三示意性实施例的分布式存储系统的配置的方框图。
[0047]图13是用于对本发明的第三示意性实施例(在写请求时)的操作进行说明的流程图。
[0048]图14是用于对本发明的第三示意性实施例(在来自服务器的响应时)的操作进行说明的流程图。

【具体实施方式】
[0049]首先,参考附图对本发明的示意性实施例的概要进行描述。应该注意的是在用于参考附图的概要中所使用的符号仅仅用于帮助理解并且不是为了将本发明限制在所说明的方式。
[0050]参考图1,根据示意性实施例的本发明可以是由下述配置实现的,所述配置包括:多个服务器1,用于分别存储与键信息相关联的数据;分组转发装置2A,用于在接收到包含键信息并且寻址到多个服务器中的一个的新分组时请求控制装置3A以从多个服务器当中决定转发目的地;以及控制装置3A。
[0051]更具体地说,控制装置3A包括:转发目的地选择部33A,用于根据分组中的键信息来决定分组的转发目的地;以及条目设置部34A,用于在通向转发目的地的路径上的分组转发装置中设置用于将具有相同键信息的随后分组转发到转发目的地的流条目。分组转发装置2A利用所设置的流条目将具有相同键信息的分组转发到转发目的地。
[0052]如上所述,可通过单个选择节点(上述控制装置3A)来选择转发目的地服务器并且相结合地降低在(通过上述流条目实现的)请求处理中的延迟。
[0053][第一示意性实施例]
[0054]现在参考附图对根据本发明的第一示意性实施例进行详述。图2描述了示出了包括根据本发明的第一示意性实施例的分布式存储系统的配置的方框图。参考图2,示出了下述配置,该配置包括用于存储数据的服务器1、用于转发分组的交换机2 (与上述分组转发装置相等效)、用于控制交换机2的控制器3、以及用于将请求发送到服务器的客户终端4。应该注意的是,在实际中,一个或多个服务器以及一个或多个客户终端4与交换机2相连并且一个或多个交换机2与控制器3相连。
[0055]交换机2包括流表21、分组转发部22、以及控制器连接部23。
[0056]流表21由用于规定分组转发规则的条目组成。每个条目由用于存储匹配条件的规则部分以及用于存储应用于与匹配条件相匹配的分组上的处理内容的处理部分构成。在规则部分中,可以将所接收到的交换机端口号、目的地地址、源地址、V-LAN-1D、L4源端口号、L4目标端口号、或者其它方面规定为匹配条件。在处理部分中,可以规定有转发交换机端口号、多播等等。
[0057]分组转发部22从流表21搜索具有与所接收到的分组相匹配的匹配条件的条目,对分组进行转发,或者其它情况。具体地说,分组转发部22对照每个条目的规则部分对分组的报头部分进行核对,并且在匹配的情况下,执行存储在处理部分中的处理内容。通过流表21和分组转发部22进行的流表搜索以及处理的执行可以通过利用采用ASIC(专用集成电路)的配置以高速执行。在分组与条目都不匹配的情况下,利用用于设置条目的请求,分组转发部22经由控制器连接部分23将分组发送到控制器3。简而言之,与没有出现匹配的情况相比,在出现匹配的情况下,可以更高的速度来转发分组。
[0058]控制器连接部分23将所接收到的分组当中的与条目都不匹配的分组转发到控制器3。
[0059]控制器3包括服务器表格31、服务器表格管理部32、转发目的地服务器选择部33、以及条目设置部34。
[0060]服务器表格管理部32对用于监督类别与负责该类别的服务器之间的对应性的服务器表格31进行管理。在服务器表格31中的每个类别中,登记有与负责该类别的服务器I有关的消息。服务器信息的示例包括服务器的地址以及与服务器相连接的交换机2的端口号。在每个类别中,登记有与至少一个服务器有关的消息。图3示出了示例性服务器表格。
[0061]在接收到来自交换机2的分组时,转发目的地服务器选择部33根据所接收到的分组以及服务器表格31来选择转发目的地服务器。在主体示意性实施例中,将分组的转发目的地地址的较高阶位映射到服务器表格31中的类别IDs以选择登记在相关类别ID中的服务器I以作为转发目的地服务器。
[0062]条目设置部34生成流表21的条目以便将所接收到的分组转发到转发目的地服务器选择部33所选择的服务器I。条目设置部将如此生成的条目设置在交换机2中。此外,当服务器I将处理的结果的响应发送到客户终端4时,条目设置部生成流表21的条目以便将分组转发到客户终端4,并且将如此生成的条目设置在交换机2中。
[0063]应该注意的是条目设置部34能够彼此区分从客户终端4至服务器I的请求分组与从服务器I至客户终端4的响应分组。也就是说,当从交换机2所接收到的分组的源地址与服务器表格31所管理的服务器I的地址中的一个相符时,可决定所接收到的分组是从服务器I至客户终端4的响应分组。如果源地址与服务器表格31所管理的地址都不符,那么决定所接收到的分组是从客户终端4到服务器I的请求分组。
[0064]如上所述的交换机2以及控制器3可以是由作为相应基本配置的在非专利文献I中所公开的OpenFlow交换机以及在非专利文献2中所公开的OpenFlow控制器实现的。
[0065]客户终端4可以是其每一个包括请求部41、地址设置部42、以及分组发送/接收部43的各种终端中的任何一个。
[0066]请求部41生成诸如服务器I的键值型数据写/读出请求这样的请求分组。
[0067]地址设置部42设置请求分组的目的地地址和源地址。将与包含在请求中的键信息相一致的或者与请求分类相一致的伪地址设置为目的地地址。在这里,将包含在请求中的键作为字母串输入到预定的散列函数之中,并且计算诸如32位这样的预定位数目的散列值。由此计算的散列值用作伪地址。将客户终端4的正确地址设置为源地址。
[0068]分组发送/接收部43将请求分组从请求部41发送到交换机2,同时向请求部41通知从交换机2所接收到的响应分组。
[0069]图2所示的交换机2、控制器3、以及客户终端4的相应部分(处理装置)可以是由下述计算机程序实现的,所述计算机程序可使构成了这些装置的计算机利用计算机的硬件来执行上述相应处理操作。
[0070]现在参考附图对本示意性实施例的操作进行更详细地说明。在下面的说明中,假定将来自客户终端4的用于写入(键1,值I)的数据的请求转发到四个服务器I中的此后对该请求进行处理的最佳一个。还可以假定控制器3已检测到四个服务器I并且其服务器表格管理部32形成了诸如图3所不的一个这样的服务器表格。
[0071]首先,对将写请求从客户终端4发送到服务器I的操作进行说明。图4描述了用于对本发明的第一示意性实施例的操作(在写请求时)进行说明的流程图。
[0072]参考图4,客户终端4的请求部41生成(键1,值I)写请求(步骤Al)。随着地址设置部将键I作为字母串,地址设置部42计算诸如32位这样的预定位数目的散列值(步骤A2)。现在假定所计算的散列值的较高两位是‘10’。地址设置部将以上散列值设置为分组的目的地地址,同时将客户终端的正确地址设置为源地址(步骤A3)。此后分组发送/接收部43将请求发送到交换机2 (步骤A4)。
[0073]当交换机2已接收到分组时(步骤A5),分组转发部22参考流表21以确认是否存在与所接收到的分组相匹配的条目(步骤A6)。如果未发现条目(步骤A6为否),那么控制器连接部分23将上述分组发送到控制器3 (步骤A7)。
[0074]当控制器3接收到分组时(步骤AS),转发目的地服务器选择部33根据所接收到的分组的转发目的地地址以及服务器表格31来选择转发目的地服务器(步骤A9)。具体地说,转发目的地服务器选择部33从服务器表格31选择已分配了与目的地地址的较高位相对应的类别ID的转发目的地服务器。因为在这里散列值的较高两位是‘10’( = 2),因此转发目的地服务器选择部33选择类别ID = 2的服务器S2以作为转发目的地服务器。
[0075]此后条目设置部34生成条目,以便将分组转发到转发目的地服务器选择部33所选的转发目的地服务器,并且将如此生成的条目设置在客户终端4与所选的服务器I之间的路径上的交换机2上(步骤A10)。例如,如果已选择了服务器S2,那么条目设置部生成这样的条目,其中,流条目条件部分是“目的地地址:较高两位是‘ 10’ ”,并且处理部分是“转发目的地交换机端口号:P2”,其中P2是与服务器S2相连接的交换机端口号。条目设置部将如此生成的条目设置在交换机S2中。此后分组转发部22再次确认是否存在与分组相匹配的条目(步骤A6)。因为现在已在步骤AlO中设置了条目,因此这时找出了匹配的条目。
[0076]应该注意的是如果在步骤A6中已找到匹配的条目(步骤A6为是),那么交换机2根据其处理部分的内容来转发分组(步骤All)。例如,如果已在步骤AlO中设置了上述条目,并且分组与该条目相匹配,那么将分组从端口号P2发送到服务器S2。在接收到该请求,服务器I执行与该请求相一致的处理(步骤A12)。
[0077]如果其后交换机2接收到与“源地址:较高两位是‘10’ ”相对应的分组,那么交换机从其端口号P2发送出该分组,而不考虑源客户终端4的地址,无需向控制器3查询该分组。
[0078]现在对将响应从已接收到请求分组的服务器I发送到客户终端4的操作进行说明。图5描述了用于对在来自服务器的响应时本发明的第一示意性实施例的操作进行说明的流程图。
[0079]参考图5,首先服务器I发送响应分组(步骤BI)。当交换机2接收到分组时(步骤B2),分组转发部22参考流表21以确认是否存在与所接收到的分组相匹配的条目(步骤B3)。如果未找到这种条目(步骤B3为否),那么控制器连接部分23将上述响应分组发送到控制器3(步骤B4)。
[0080]控制器3的条目设置部34生成流表21的条目以便将分组转发到客户终端4,并且将如此生成的条目设置在服务器I与目标客户终端4之间的路径上的交换机2上(步骤B5)。此后分组转发部22再次确认是否存在与分组相匹配的条目(步骤B3)。
[0081 ] 如果在步骤B3中已找到匹配的条目(步骤B3为是),那么交换机2根据条目的处理部分的内容来转发分组(步骤B6)。在接收到响应,客户终端4执行与该响应相一致的处理(步骤B7)。
[0082]如上所述,在本发明的第一示意性实施例中,根据流表21以高速来转发与分组转发部22所设置的条目相匹配的分组。另一方面,控制器3是用于选择转发目的地服务器的唯一选择节点。因此,通过单个选择节点来选择转发目的地服务器而不会危害请求处理中的延迟的降低。
[0083]在本发明的第一示意性实施例中,条目设置部34不是根据整个目的地地址一即整个散列值——而是根据其较高位生成条目。因此,在转发分组时命中流表21的条目的概率变高,从而进一步降低了分组转发过程中的延迟。
[0084]此外,在本发明的第一示意性实施例中,地址设置部42将伪地址设置为目的地地址,而不必设置服务器I的实际地址。因此,在添加新的客户终端4的过程中,不必在安装时设置服务器信息,以便可以更容易地引入新的客户终端。
[0085][第二示意性实施例]
[0086]现在参考附图对在写时间进行复制的本发明的第二示意性实施例进行详述。图6描述了本发明的第二示意性实施例的分布式存储系统的配置。
[0087]参考图6,示出了如本发明的第一示意性实施例的包括服务器1、交换机2、控制器
3、以及客户终端4A的配置。应该注意的是客户终端4A与本发明的第一示意性实施例的相应部件的不同之处在于进一步包括同步控制部44。
[0088]当请求部41发送写请求时,同步控制部44将请求ID缓写到写请求中。当分组发送/接收部43接收到对写请求的响应时,同步控制部参考包含在该响应中的请求ID。同步控制部监督从一个请求ID至另一个的至此返回的响应数目。仅当至此返回的响应数目已达到预定的复制数目时,同步控制部将该响应返回到请求部41。在返回响应的过程中,如果即使在该响应中包含一个或多个错误,同步控制部也返回混有错误的响应。在不存在错误的情况下,同步控制部返回正常响应。当请求部41发送读出请求或者接收到对其读出请求的响应时,同步控制部44不执行操作。
[0089]地址设置部42设置请求分组的目的地地址和源地址。作为目的地地址,设置与包含在该请求中的键信息相一致的或者与请求种类相一致的伪地址。本示意性实施例与示意性实施例相似,只要与刚刚阐述的点有关。然而,在本示意性实施例中,从包含在请求中的键来计算诸如32位这样的预定位数目的散列值,并且通过下述请求种类来复写散列值的最低位以得到伪地址,其中对于写请求而言所述请求种类是I并且对于读出请求而言所述请求种类是O。
[0090]图7说明了本发明的第二示意性实施例中的用于生成伪地址的方法。本示意性实施例与第一示意性实施例的相似之处在于利用键I的散列值,然而利用请求种类复写散列值的追踪位以得到伪地址。
[0091]在接收到来自交换机2的分组时,控制器3的转发目的地服务器选择部33根据所接收到的分组和服务器表格31来选择转发目的地服务器。具体地说,如本发明的第一示意性实施例,从服务器表格31中选择分配给与分组的目的地地址的较高位相对应的类别ID的服务器。另外,在主体示意性实施例中,如果最低位的请求种类是用于表示写请求的1,那么转发目的地服务器选择部33选择与预定的复制数目相等的多个转发目的地服务器。如果最低位的请求种类是用于表示读出请求的0,那么转发目的地服务器选择部选择单个转发目的地服务器。
[0092]另外,本发明的第二示意性实施例的配置与上述第一示意性实施例相似并且由此省略其描述。
[0093]参考附图对本示意性实施例的操作进行详细说明。在下面的说明中,假定将来自客户终端4的对数据(键1,值I)的写请求转发到12个服务器I中的此后对该请求进行处理的适当一个。还假定已设置了复制数目为3,并且已通过服务器表格管理部32制定了图8所示的服务器表格。
[0094]首先,对将写请求从客户终端4发送到服务器I的操作进行说明。图9描述了用于对在写请求时的本发明的第二示意性实施例的操作进行说明的流程图。
[0095]参考图9,在步骤Cl中客户终端4的请求部41生成(键1,值I)的写请求。此后同步控制部44将请求ID缓写到写请求中(步骤C2)。此后,随着地址设置部将键I作为字母串,地址设置部42此后计算例如32位这样的预定位数目的散列值(步骤C3)。在这里假定上述散列值的较高两位是‘10’。地址设置部将上述散列值和请求种类(=I)设置为分组的目的地地址(参见图7),同时将客户终端的正确地址设置为源地址(步骤C4)。此后分组发送/接收部43将该请求发送到交换机2 (步骤C5)。
[0096]在接收到分组时(步骤C6),交换机2参考流表21以察看是否存在与所接收到的分组相匹配的条目(步骤C7)。如果未找到这种条目(步骤C7为否),那么控制器连接部分23将该分组发送到控制器3 (步骤CS)。
[0097]当控制器3接收到分组时(步骤C9),转发目的地服务器选择部33根据所接收到的分组的转发目的地地址以及服务器表格31来选择转发目的地服务器(步骤C10)。
[0098]图10描述了示出了上述步骤ClO的详情的流表。参考图10,转发目的地服务器选择部通过将分组的转发目的地地址的较高位映射到服务器表格31的类别IDs来选择类别ID (图10的步骤Dl)。此后转发目的地服务器选择部参考最低位所表示的请求种类(步骤D2)。如果请求种类是用于表示写请求的I (步骤D2为是),那么选择与预定的复制次数相等的多个转发目的地服务器(步骤D3)。另一方面,如果请求种类是用于表示读出请求的O (步骤D2为否),那么在步骤D4中选择唯一的转发目的地服务器。例如,如果散列值的较高两位是‘10’ ( = 2)并且最低位是‘1’,那么选择登记在类别ID2中的服务器S6,S7,S8以作为转发目的地服务器。
[0099]再次参考图9,条目设置部34生成条目以便将分组转发到转发目的地服务器选择部33所选的转发目的地服务器,并且将如此生成的条目设置在交换机2中(步骤Cll)。例如,如果所选的服务器是S6,S7,S8,那么生成条件部分是“转发目的地地址:较高两位是‘10’,最低位是‘ I’”,并且处理部分是“转发目的地交换机端口号:P6,P7,P8”(分别表示与服务器S6,S7,S8相连接的交换机端口号)的条目并且将其设置在交换机2中。
[0100]此后分组转发部22再次确认是否存在与分组相匹配的条目(步骤C7)。因为已在步骤Cll中设置了条目,因此这时找到了匹配的条目。
[0101]如果已在步骤C7中找到了匹配的条目(步骤C7中为是),那么交换机2根据由此找到的条目的处理部分的内容来转发分组(步骤C12)。例如,如果已在步骤Cll中设置了上述条目并且分组与该条目相匹配,那么通过多播将分组分别从端口号P6,P7,P8发送到服务器S6,S7,S8。
[0102]在接收到请求时,服务器I执行与该请求相一致的处理(步骤C13)。
[0103]如果其后交换机2接收到与“目的地地址:较高两位是‘10’并且最低位是‘I’”相对应的分组,那么交换机从其端口号P6,P7,P8发送出该分组,而不考虑源客户终端4的地址,无需向控制器3查询该分组。
[0104]现在对将响应从已接收到请求分组的服务器I发送到客户终端4的操作进行说明。图11描述了用于对在来自服务器的响应时本发明的第二示意性实施例的操作进行说明的流程图。
[0105]参考图11,首先服务器I发送包括有包含在请求中的请求ID的响应(图11的步骤 El)。
[0106]当交换机2接收到分组时(步骤E2),分组转发部22参考流表21以察看是否存在与所接收到的分组相匹配的任何条目(步骤E3)。如果未找到条目(步骤E3为否),那么控制器连接部分23将分组发送到控制器3 (步骤E4)。
[0107]控制器3的条目设置部34生成流表21的条目以便将分组转发到客户终端4,并且将如此生成的条目设置交换机2中(步骤E5)。此后分组转发部22再次察看是否存在与分组相匹配的任何条目(步骤E3)。
[0108]如果在步骤E3中已找到匹配的条目(步骤E7为是),那么交换机2根据由此找到的条目的处理部分的内容来转发分组(步骤E6)。
[0109]在接收到响应时(步骤E7),客户终端4的同步控制部44参考请求ID以确认返回请求ID的响应数目是否已达到复制数目(步骤ES)。在返回的响应数目已达到复制数目的情况下(步骤E8为是),同步控制部44将响应返回到请求部41 (步骤E9)。请求部41执行与该响应相一致的处理(步骤E10)。如果反之返回的响应数目未达到复制数目(步骤ES为否),那么同步控制部44不执行处理。
[0110]现在对读出请求时的操作进行说明。在这里假定将用于读出与键I相对应的数据的请求转发到12个服务器I中的将对该请求进行处理的适当一个。
[0111]首先,对将请求从客户终端4发送到服务器I的处理进行说明。发送读出请求的操作与根据图4所示的第一示意性实施例的发送请求的操作相同。
[0112]然而,在步骤A3中,控制器3根据在步骤A2中找到的上述散列值以及请求种类(=O)来设置分组的转发目的地地址,同时将客户终端的正确地址设置为源地址。
[0113]此外,在步骤A9中,转发目的地服务器选择部33根据所接收到的分组的目的地地址以及服务器表格31来选择转发目的地服务器。现在参考图10对此进行详述。例如,如果散列值的较高三位和最低位分别是‘100’和‘0’,那么转发目的地服务器选择部从类别IDS2当中选择服务器S6以作为转发目的地服务器。如果散列值的较高三位和最低位分别是’ 101’和’ O’,那么转发目的地服务器选择部选择服务器S7以作为转发目的地服务器。按照这种方式,选择对相同类别ID的读出请求以便确保负载平衡,因为数据一定已经被复制在相同ID类别之内。
[0114]除了如上所述之外的操作与本发明的第一示意性实施例的响应发送相似并且由此省去相应说明。
[0115]将对读出请求的响应从服务器I发送到客户终端4的操作与本发明的第一示意性实施例中的发送响应的操作相同并且由此省去相应说明。
[0116]在本发明的上述第二示意性实施例中,在进行数据复制的过程中,不是通过多播将数据从客户终端4发送到服务器而是通过多播将数据从交换机2发送到服务器。因而可抑制在整个网络中流动的分组的总量以便不容易生成溢出。
[0117]另外,在通过读出请求的负载分布在存储相同复制的服务器当中这样的本发明的第二示意性实施例中,可抑制另外的施加于服务器上的负载。
[0118][第三示意性实施例]
[0119]现在参考附图对本发明的第三示意性实施例进行详述,在该第三示意性实施例中中继节点(如端6)排列在客户终端4与交换机2之间并且在该中继节点中生成了伪地址。图12描述了示出了本发明的第三示意性实施例的分布式存储系统的配置的方框图。
[0120]参考图12,示出了除了第一示意性实施例中所示的服务器1、交换机2、控制器3、以及客户终端4B之外还包括负载平衡器5和前端6的布置。
[0121]负载平衡器5是具有分组转发部51的负载分配装置。分组转发部51将从客户终端4B所接收到的请求转发到与此相连接的前端6中的一个。在转发分组的过程中,分组的目的地地址变为转发目的地的前端6的地址。分组转发部51还将从前端6所接收到的响应转发到客户终端4B。
[0122]前端6是用于对请求处理执行预处理的装置并且包括地址设置部61和分组发送/接收部62。
[0123]地址设置部61设置从负载平衡器5所接收到的请求的目的地地址。将与包含在请求中的键信息以及请求种类相一致的伪地址设置为目的地地址。在这里,假定从包含在请求中的键计算诸如32位这样的预定位数目的散列值,并且该散列值将是伪地址。源地址保持与在分组中所固有设置的客户终端4B的地址相同。
[0124]分组发送/接收部62接收来自负载平衡器5的请求并且将地址设置部61所处理的请求发送到交换机2,同时将从交换机2所接收到的响应发送到负载平衡器5。
[0125]客户终端4B的地址设置部42将负载平衡器5的地址设置为目的地地址,同时将客户终端4B的正确地址设置为源地址。
[0126]本示意性实施例的配置与本发明的第一示意性实施例在其它方面相同,并且因此省去相应说明。
[0127]现在参考附图对本示意性实施例的操作进行详述。在下面的说明中,假定将来自客户终端4的对数据(键1,值I)的写请求发送到四个服务器I中的对该请求进行处理的适当一个。还假定控制器3已检测到四个服务器I并且服务器表格管理部32已制定了图3所示的服务器表格。
[0128]首先,对将写请求从客户终端4发送到服务器I的操作进行说明。图13描述了用于对根据本发明的第三示意性实施例的在写请求时的操作进行说明的流表。
[0129]参考图13,首先在步骤Fl中客户终端4的请求部41生成对(键1,值I)的写请求。此后地址设置部42将负载平衡器5的地址设置为分组的目的地地址,同时将客户终端的正确地址设置为源地址(步骤F2)。此后分组发送/接收部43将请求发送到负载平衡器5 (步骤F3)。
[0130]在接收到该请求时(步骤F4),负载平衡器5将该请求转发到与此相连接的前端6中的一个(步骤F5)。
[0131]当前端6接收到该请求时(步骤F6),地址设置部61从包含在请求中的键I计算诸如32位这样的预定位数目的散列值(步骤F7)。在这里假定散列值的较高两位是‘10’。前端将上述散列值设置为分组的目的地地址,同时将在分组中所固有设置的客户终端4的正确地址设置为源地址(步骤F8)。前端6将请求发送到交换机2 (步骤F9)。
[0132]当交换机2接收到分组时(步骤F10),分组转发部22参考流表21以察看是否存在与所接收到的分组相匹配的条目(步骤Fll)。如果未找到这种条目(步骤Fll为否),那么控制器连接部分23将分组发送到控制器3 (步骤F12)。
[0133]当控制器3接收到分组时(步骤F13),转发目的地服务器选择部33根据所接收到的分组的转发目的地地址以及服务器表格31来选择转发目的地服务器。在这里,将分组的目的地地址的较高位映射到服务器表格31的类别IDs以选择与目的地地址的较高位相符的转发目的地服务器(步骤F14)。因为散列值的较高两位是‘10’( = 2),那么转发目的地服务器选择部33选择登记在类别ID2中的服务器S2以作为转发目的地服务器
[0134]条目设置部34生成条目以便将分组转发到转发目的地服务器选择部33所选的转发目的地服务器,并且将最终条目设置在交换机2中(步骤F15)。例如,如果已选择了服务器S2,那么条目设置部生成这样的条目,其条件部分是“目的地地址:较高两位是‘ 10’ ”,并且其处理部分是“转发目的地交换机端口号:P2”,这表示与服务器S2相连接的交换机端口号,并且将最终条目设置在交换机2中。
[0135]此后分组转发部22再次察看是否存在与分组相匹配的条目(步骤Fll)。因为现在在步骤F15中已设置了条目,那么这时找到匹配的条目。
[0136]如果在步骤Fll中已找到匹配的条目(在步骤Fll中为是),那么交换机2根据由此找到的条目的处理部分的内容来转发分组(步骤F16)。例如,如果在步骤F15中已设置了上述条目并且分组与条目相匹配,那么将分组从端口号P2转发到服务器S2。
[0137]在接收到请求时,服务器I执行与请求相符的处理(步骤F17)。
[0138]如果其后交换机2接收到与“源地址:较高两位是‘10’ ”相对应的分组,那么交换机从其端口号P2发送出分组,而不考虑源客户终端4的地址,无需向控制器3查询该分组。
[0139]现在对将响应从已接收到请求分组的服务器I发送到客户终端4的操作进行说明。图14描述了用于对在来自服务器的响应时本发明的第三示意性实施例的操作进行说明的流程图。
[0140]参考图14,首先服务器I发送对请求的响应(图14的步骤Gl)。
[0141]当交换机2接收到分组时(步骤G2),分组转发部22参考流表21以察看是否存在与所接收到的分组相匹配的条目(步骤G3)。如果未找到这种条目(步骤G3为否),那么控制器连接部分23将分组发送到控制器3 (步骤G4)。
[0142]控制器3的条目设置部34生成流表21的条目以便将分组转发到客户终端4,并且将最终条目设置在交换机2中(步骤G5)。
[0143]此后交换机2的分组转发部22再次察看是否存在与分组相匹配的条目(步骤G3)。
[0144]如果在步骤G3中已找到匹配的条目(步骤G3为是),那么交换机2根据由此找到的条目的处理部分的内容来转发分组(步骤G6)。
[0145]在接收到响应时,前端6将它转发到负载平衡器5 (步骤G7)。在接收到响应时,负载平衡器将该响应转发到客户终端4 (步骤G8)。
[0146]在接收到响应时,客户终端4执行与该响应相符的处理(G9)。
[0147]如上所述,在本发明的第三示意性实施例中,目的地地址的伪地址是由配备在比负载平衡器5更靠近服务器I的前端6形成的。因此,客户终端4可以在负载平衡器5前面的位置上与不受到控制器3控制的类型的交换机相连。
[0148]应该主要的是虽然上面描述了本发明的优选示意性实施例,但是本发明并不局限于这些特定模式,因此在不脱离本发明的基本技术概念的情况下进一步的变化、替换、或者调节可以在范围之内。例如,在上述示意性实施例中,已指明利用散列计算来形成要对照流条目的规则部分核对的地址。然而还可使用通过除上面所示的那些之外的其它技术来从键形成流标识符或者其它的方法。
[0149]此外,在上述示意性实施例中,已指明在客户终端4或在前端6上提供了地址设置部并且在客户终端4上或者在前端6上生成了散列值。或者,可以发送键信息而无需用于生成散列值的客户终端4或前端6。在这种情况下,可以是控制器3来从键信息生成散列值或者生成可从键信息唯一找到的流标识符。类似控制可以由下述控制器3实现,所述控制器3使路径上的交换机2执行将散列值或流标识符嵌入在有关分组的报头部分或其他中这样的处理或者追加另一报头的处理。
[0150]上述流标识符可以是各种不同的配置。例如,可以根据ASCII码将键译成数值图,并且此后可以将这些数字应用于取模计算,例如以232计算的模,以找到余数,该余数此后可以用作目的地的地址。
[0151 ] 通过参考将上述专利文献和非专利文献的整个公开引入到在这里。示意性实施例的修改和调节在本发明的整个公开(包括权利要求)的范围之内并且基于本发明的基本技术概念。对各种公开要素(包括每个权利要求的每个要素、每个示意性实施例的每个要素、每个图的每个要素等等)的各种组合和选择可以在本发明的权利要求的范围之内。也就是说,本发明当然包括本领域普通技术人员根据包括权利要求及其技术概念的整个公开所做出的各种变化和修改。
[0152]附图标记列表
[0153]I服务器
[0154]2交换机
[0155]2A分组转发装置
[0156]3控制器
[0157]3A控制装置
[0158]4,4A,4B 客户终端
[0159]5负载平衡器
[0160]6 前端
[0161]21 流表
[0162]22,51分组转发部
[0163]23控制器连接部
[0164]31服务器表格
[0165]32服务器表格管理部
[0166]33转发目的地服务器选择部
[0167]33A转发目的地选择部
[0168]34条目设置部
[0169]34A条目设置部
[0170]41请求部分
[0171]42,61地址设置部
[0172]43,62分组发送/接收部
[0173]44同步控制部
【权利要求】
1.一种分布式存储系统,包括: 多个服务器,所述多个服务器分别用于存储与键信息相关联的数据; 分组转发装置,所述分组转发装置用于在接收到包含所述键信息的并且寻址到所述多个服务器中的一个服务器的新分组时,请求控制装置以从所述多个服务器当中决定转发目的地;以及 控制装置,所述控制装置包括: 转发目的地选择部,所述转发目的地选择部基于所述分组中的键信息来决定所述分组的转发目的地;以及 条目设置部,在通向所述转发目的地的路径上的分组转发装置中,所述条目设置部设置用于将具有相同键信息的随后分组转发到所述转发目的地的流条目,其中, 所述分组转发装置利用所设置的流条目将具有相同键信息的分组转发到所述转发目的地。
2.根据权利要求1所述的分布式存储系统,其中, 在所述分组中设置目的地地址,所述目的地地址是利用所述键信息的散列值来被生成的,并且 将所述散列值的预定位用作所述流条目中的匹配条件。
3.根据权利要求1所述的分布式存储系统,其中, 所述转发目的地选择部从所述键信息来生成散列值,并且利用所生成的散列值的预定位来决定所述分组的转发目的地。
4.根据权利要求1至3中的任何一项所述的分布式存储系统,其中, 在所述分组是写请求的情况下,所述转发目的地选择部选择预定数目的转发目的地,并且 生成与所述预定数目相等的多个复制。
5.根据权利要求4所述的分布式存储系统,其中, 客户终端包括同步控制器,该同步控制器用于检查所述预定数目的复制的生成是否完成。
6.根据权利要求1,2,4以及5中的任何一项所述的分布式存储系统,包括: 中继节点,该中继节点被设置在所述分组的源与所述分组转发装置之间,其中, 所述中继节点将从分组的源所接收到的所述分组转换成寻址到所述服务器的并且具有利用所述键信息的散列值而生成的目的地地址的分组。
7.一种与多个服务器和分组转发装置相连接的控制装置,所述多个服务器分别存储与键信息相关联的数据,所述分组转发装置在接收到包含所述键信息的并且寻址到所述多个服务器中的一个服务器的新分组时请求所述控制装置以从所述多个服务器当中决定转发目的地,所述控制装置包括: 转发目的地选择部,所述转发目的地选择部基于所述分组中的键信息来决定所述分组的转发目的地;以及 条目设置部,在通向所述转发目的地的路径上的分组转发装置中,所述条目设置部设置用于将具有相同键信息的随后分组转发到所述转发目的地的流条目。
8.—种客户终端,包括: 地址设置部,其以利用键信息的散列值而生成的目的地地址来生成请求分组,其中 所述客户终端利用所述请求分组来请求服务器。
9.一种负载平衡方法,包括: 通过控制装置,从分组转发装置接收用于决定具有与值配对的键信息的新分组的转发目的地的请求; 基于所述分组中的所述键信息,来从多个服务器当中决定所述分组的转发目的地;以及 在通向所述转发目的地的路径上的分组转发装置中,设置用于将具有相同键信息的随后分组转发到所述转发目的地的流条目。
10.一种加载于与多个服务器和分组转发装置相连接的控制装置上的用于计算机的程序,所述多个服务器分别存储与键信息相关联的数据,所述分组转发装置在接收到包含所述键信息的并且寻址到所述多个服务器中的一个服务器的新分组时请求所述控制装置以从所述多个服务器当中决定转发目的地,所述程序使计算机执行: 基于所述分组中的所述键信息,来从多个服务器当中决定所述分组的转发目的地;以及 在通向所述转发目的地的路径上的分组转发装置中,设置用于将具有相同键信息的随后分组转发到所述转发目的地的流条目。
【文档编号】H04L12/717GK104205752SQ201380018629
【公开日】2014年12月10日 申请日期:2013年3月29日 优先权日:2012年3月30日
【发明者】稗田谕士 申请人:日本电气株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1