CN107851105A - 具有副本位置选择的分布式存储系统 - Google Patents
具有副本位置选择的分布式存储系统 Download PDFInfo
- Publication number
- CN107851105A CN107851105A CN201680025200.XA CN201680025200A CN107851105A CN 107851105 A CN107851105 A CN 107851105A CN 201680025200 A CN201680025200 A CN 201680025200A CN 107851105 A CN107851105 A CN 107851105A
- Authority
- CN
- China
- Prior art keywords
- computing cluster
- cluster
- data base
- distributed data
- role
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1025—Dynamic adaptation of the criteria on which the server selection is based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/52—Network services specially adapted for the location of the user terminal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
- Eye Examination Apparatus (AREA)
Abstract
在大型分布式网络中选择副本,并且识别这些副本的角色。在一个示例中,指示某个数目N的集群将被指派给副本角色并且被指派副本角色的集群中的第二数目M的集群将被指派给投票角色。使用工作量数据选择N个计算集群,并且将所述集群中的M个指派给投票角色。
Description
技术领域
本文献涉及分布式计算机数据库的配置。
背景技术
计算机网络是通过允许共享资源和信息的通信信道互连的计算机和其它硬件的集合。通信协议定义用于在计算机网络中交换信息的规则和数据格式。
分布式数据库是跨多个计算机保持数据的计算实体。这些计算机可使用计算机联网链路相互链接,从而允许计算机彼此通信并且协调与数据库相关联的任务。在一些分布式数据库中,构成计算机可被组织成多个计算集群并且被指派给分布式数据库中的相应角色。例如,这些角色可描述所述集群在分布式数据库中的一些权限和活动。
发明内容
本文所描述的系统和过程可用于可选地提供多个潜在优点。通过监视计算环境和客户端的活动,可有效地指派分布式数据库的角色。这个效率可大于仅使用系统的特定节点本地的信息的诸如用户选择和探试法(heuristics)等替选方法。通过首先选择领导者并且然后基于领导者选择来选择其它角色,可与不首先选择领导者的其它过程相比显著减少角色指派组合的数目。这导致分布式数据库的技术领域的改善。
一般而言,本说明书中所描述的主题的一个创新性方面可在系统中体现,所述系统包括多个计算集群,所述多个计算集群均包括计算机存储器和计算机处理器;分布式数据库,其在所述多个计算集群的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,所述分布式数据库被配置为:将分布式数据库的数据存储在分布于分布式数据库的计算集群当中的碎片中;并且根据标识计算集群的功能的指派给计算集群的相应角色来使用分布式数据库的计算集群中的每个计算集群;以及活动监视服务,其被配置为:监视客户端应用与分布式数据库之间的交互;根据客户端应用与分布式数据库之间的交互的监视来生成描述客户端应用与分布式数据库之间的交互的工作量数据;以及任务指派服务,其被配置为:接收对计算集群中的第一数目(N)个计算集群将被指派给分布式数据库的副本角色的指示;接收被指派副本角色的计算集群中的数目(M)个计算集群将被指派给分布式数据库的投票角色的指示;使用工作量数据选择N个计算集群以包括在分布式数据库中;将所选择的N个计算集群指派给分布式数据库内的副本角色;并且将所选择的计算集群中的M个计算集群指派给分布式数据库内的投票角色。这个方面的其它实施例包括对应的方法、设备、和计算机程序,所述计算机程序被配置为执行所述方法的动作并且在计算机存储装置上编码。
这些和其它实施例均可可选地包括以下特征中的一个或多个。任务指派服务被配置为重复:使用工作量数据选择N个计算集群以包括在分布式数据库中;将所选择的N个计算集群指派给分布式数据库内的副本角色;以及将所选择的计算集群中的M个计算集群指派给分布式数据库内的投票角色。
所述重复是按照基于计算集群的使用的循环改变的时程表。
为了接收N个计算集群将被指派给分布式数据库的副本角色的指示,任务指派服务被配置为确定投票者仲裁集(quorum)所需要的投票者的计数。
为了将所选择的N个计算集群指派给分布式数据库内的副本角色,任务指派服务被配置为基于被指派给分布式数据库中的领导者角色的计算集群的位置来选择N个计算集群。
一般而言,本说明书中所描述的主题的一个创新性方面可在系统中体现,所述系统包括多个计算集群,所述多个计算集群均包括计算机存储器和计算机处理器;分布式数据库,其在所述多个计算集群的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,所述分布式数据库被配置为:将分布式数据库的数据存储在分布于分布式数据库的计算集群当中的碎片中;并且根据标识计算集群的功能的指派给计算集群的相应角色来使用分布式数据库的计算集群中的每个计算集群;以及活动监视服务,其被配置为:监视客户端应用与分布式数据库之间的交互;根据客户端应用与分布式数据库之间的交互的监视来生成描述客户端应用与分布式数据库之间的交互的工作量数据;以及任务指派服务,其被配置为:接收计算集群中的一定数目(M)的计算集群将被指派给分布式数据库的投票角色的指示;针对计算机集群中的至少一些计算机集群中的每个特定计算机集群:考虑所述特定计算集群作为候选领导者;使用工作量数据来识别与所述特定计算集群具有(M+1)/2个最低时延的(M+1)/2个计算机集群作为与候选领导者相对应的投票者;识别M-(M+1)/2个未识别的计算集群作为与候选领导者相对应的投票者;识别数目(N)个未识别的计算集群作为与候选领导者相对应的副本(replica);选择在度量上具有最佳得分的候选领导者计算集群、对应的投票者、和对应的副本;向所选择的候选计算机集群指派分布式数据库内的领导者角色;向所选择的M个计算机集群指派分布式数据库内的投票角色;以及向所选择的N个计算机集群指派分布式数据库内的副本角色。这个方面的其它实施例包括对应方法、设备和计算机程序,所述计算机程序被配置为执行所述方法的动作并且在计算机存储装置上编码。
这些和其它实施例均可可选地包括以下特征中的一个或多个。任务指派服务被配置为重复:考虑特定计算集群作为候选领导者、使用工作量数据来识别与特定计算集群具有(M+1)/2个最低时延的(M+1)/2个计算机集群作为与候选领导者相对应的投票者、识别M-(M+1)/2个未识别的计算集群作为对应于候选领导者的投票者、识别数目(N)个的未识别的计算集群作为与候选领导者相对应的副本、选择在度量上具有最佳得分的候选领导者计算集群、对应投票者、和对应副本、向所选择的候选计算机集群指派分布式数据库内的领导者角色、向所选择的M个计算机集群指派分布式数据库内的投票角色、以及向所选择的N个计算机集群指派分布式数据库内的副本角色。
所述重复是按照基于计算集群的使用的循环改变的时程表。
为了识别未识别的计算集群中的一定数目(N)的计算集群作为与候选领导者相对应的副本,任务指派服务被配置为确定投票者仲裁集所需要的投票者的计数。
为了识别未识别的计算集群中的一定数目(N)的计算集群作为与候选领导者相对应的副本,任务指派服务被配置为基于指派给分布式数据库中的领导者角色的计算集群的位置来选择N个计算集群。
一般而言,本说明书中所描述的主题的一个创新性方面可在系统中体现,所述系统包括多个计算集群,所述多个计算集群均包括计算机存储器和计算机处理器;分布式数据库,其在所述多个计算集群的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,所述分布式数据库被配置为将分布式数据库的数据存储在分布于分布式数据库的计算集群当中的碎片中;并且根据标识计算集群的功能的指派给计算集群的相应角色来使用分布式数据库的计算集群中的每个计算集群;以及任务指派服务,其被配置为:接收计算集群中的一定数目(M)的计算集群将被指派给分布式数据库的投票角色的指示;针对计算机集群中的至少一些计算机集群中的每个特定计算机集群,考虑所述特定计算集群作为候选领导者并且识别与特定候选领导者计算集群具有M个最低时延的M个计算机集群;识别候选计算集群和在度量上具有最佳得分的相关联的M个计算集群;并且向所识别的M个计算机集群指派投票角色。这个方面的其它实施例包括对应方法、设备和计算机程序,所述计算机程序被配置为执行所述方法的动作并且在计算机存储装置上编码。
这些和其它实施例可各自可选地包括以下特征中的一个或多个。任务指派服务被进一步配置为接收计算集群中的一定数目(M)的计算集群应被指派给分布式数据库的副本角色的指示;识别未被指派给分布式数据库的角色的N个计算机集群;以及向所述N个计算机集群指派副本角色。
任务指派服务被配置为重复所述考虑、所述识别、和所述指派。
任务指派服务被配置为按照基于计算集群的使用的循环改变的时程表来重复所述指派。
为了考虑特定计算集群作为候选领导者并且为了识别与所述特定候选领导者计算集群具有M个最低时延的M个计算机集群,任务指派服务被配置为考虑仅计算集群能够执行以运行分布式数据库的操作子集的时延。
最低时延是至少阈值百分比的随机往返时间所落下的尾时延。
一般而言,本说明书中所描述的主题的一个创新性方面可在系统中体现,所述系统包括多个计算集群,所述多个计算集群均包括计算机存储器和计算机处理器;分布式数据库,其在所述多个计算集群的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,所述分布式数据库被配置为:将分布式数据库的数据存储在分布于分布式数据库的计算集群当中的碎片中;并且根据标识计算集群的功能的指派给计算集群的相应角色来使用分布式数据库的计算集群中的每个计算集群;活动监视服务,其被配置为:监视客户端应用与分布式数据库之间的交互;并且根据客户端应用与分布式数据库之间的交互的监视来生成描述客户端应用与分布式数据库之间的交互的工作量数据;以及任务指派服务,其被配置为:基于工作量数据来将特定计算集群指派给分布式数据库中的领导者角色。这个方面的其它实施例包括对应方法、设备和计算机程序,所述计算机程序被配置为执行所述方法的动作并且在计算机存储装置上编码。
这些和其它实施例均可可选地包括以下特征中的一个或多个。为了基于工作量数据来向特定计算集群指派分布式数据库中的领导者角色,任务指派服务被配置为:找出具有用于完成工作量数据中所识别的过程的最低时延的集群。
为了找出具有用于完成工作量数据中所识别的过程的最低时延的集群,任务指派服务被配置为:识别每个过程的频率;识别每个计算集群的每个过程的时延值;并且针对每个计算集群找出并入所述集群的时延值的聚合的加权时延值,其中已经根据对应过程的频率对时延值的聚合中的时延值进行加权。
活动监视器被配置为重复所述监视和所述生成,并且其中任务指派服务被配置为重复所述指派。
为了重复所述指派,任务指派服务被配置为基于工作量数据来将不同的特定计算集群指派给分布式数据库中的领导者角色。
活动监视器被配置为重复所述监视和所述生成,并且其中任务指派服务被配置为按照基于计算集群的使用的循环改变的时程表重复所述指派。
活动监视服务和任务指派服务正在所述计算集群中的一个或多个上运行。
客户端计算机是所述计算集群中的一个。
其它特征、方面和潜在优点根据附随说明书和附图将变得显而易见。
附图说明
图1是可用于支持分布式数据库的示例分布式计算环境的框图。
图2是用于确定通信延迟的示例计算的电子表格。
图3是用于针对分布式数据库选择领导者的示例流程的流程图。
图4是示例分布式计算环境的框图,其中一些计算集群是分布式数据库内的副本角色和投票角色的候选者。
图5A是用于针对分布式数据库内的副本角色和投票角色选择计算集群的示例流程的流程图。
图5B示出可用于针对分布式数据库内的副本角色和投票角色选择计算集群的等式。
图6是示例分布式计算环境的框图,其中一些计算集群被选择用于分布式数据库内的副本角色和投票角色。
图7是用于针对分布式数据库中的角色周期性地选择计算集群的示例流程的流程图。
图8A是可用于识别副本位置和角色的示例流程的流程图。
图8B是可用于实现图8A所示的操作的伪码的示例。
图9是图8B所示的过程中的示例方程。
图10A是可用于识别副本位置和角色的示例流程的流程图。
图10B是可用于实现图10A所示的操作的伪码的示例。
图11A是可用于识别副本位置和角色的示例流程的流程图。
图11B是可用于实现图11A所示的操作的伪码的示例。
图12是示出计算系统的示例的示意图。
各附图中的相似附图标记指示相似元素。
具体实施方式
分布式存储系统在云中广泛使用,既在数据中心内使用也用于跨数据中心复制。许多分布式数据库向构成该数据库的计算机指派角色。一个这样的示例是Paxos协议,其中分布式数据库使用系统中的节点作为复制部分或全部分布式数据库的“副本”。另外,分布式数据库可根据识别节点的功能的由Paxos协议所定义的相应角色来使用部分或全部节点。这些角色包括“客户端”、“提议者”、“投票者”、“学习者”、和“领导者”角色。客户端可通过向分布式数据库的提议者发布请求来与分布式数据库交互。提议者可提议分布式数据库中的动作,例如对存储数据的更新或查询。投票者(有时称为接受者)可接受或拒绝来自提议者的提议动作。如果仲裁集的投票者接受提议,则分布式数据库应当完成所述提议动作。仲裁集可简单为过半数投票者或可取决于分布式数据库的配置而需要不同数目的投票者。学习者对已经由仲裁集的投票者批准的动作采取行动。领导者是提议者,并且在许多情况下,是能够成功提议将被仲裁集的投票者接受的动作的仅有提议者。
本文献论述在大型分布式网络中选择副本以及选择这些副本的角色。在一个示例中,领导者是从候选计算集群(或服务器、数据中心等)当中选择的。为了做出这个选择,活动监视器预测或监视一个或多个客户端的工作量。工作量的不同活动被给予对应权重。找出以这些权重修改的执行所请求的活动的延迟,并且将具有最低加权延迟的候选领导者选择作为领导者。在另一个示例中,检查每个候选领导者,并且在网络中识别候选副本列表。为了从候选者中选择领导者和副本,识别具有与领导者最低通信延迟的副本的候选领导者。在那些副本中,M个副本可被指派作为投票副本。在又一个示例中,使用两种利用关于计算环境的全局信息的探试法,并且选择来自所述探试法的最佳结果。
在一些配置中,这些过程可使用能够收集分布式计算系统的测量值的活动监视器,并且提供用于配置和执行在该系统上运行的应用的度量。例如,为了如上所述识别领导者,活动监视器可监视和/或预测客户端应用的活动。基于这个活动测量,可使用准确或很可能的加权来正确选择领导者。例如,这样的活动监视器的使用可提供比局部探试法测试、网络管理员的人类直觉、或随机机会更准确的结果。在一些情况下,管理员可调整工作量的权重以便实现所需的性质或配置。例如,管理员可知道提交时延具有特定重要性,例如,可调整加权以更看重提交。
图1是可用于支持分布式数据库的示例分布式计算环境100的框图。一般而言,分布式数据库可将数据存储在分布于分布式计算环境100的计算集群当中的、包括在分布式数据库中的碎片中。分布式计算环境100被示意性地示出为具有表示计算集群102至120的节点以及表示计算集群102至120之间的通信链路的边。活动监视器122可监视分布式计算环境100(例如,客户端与分布式数据库之间的交互、分布式计算环境的元素之间的通信延迟),并且提供用于配置和执行在分布式计算环境100上运行的应用的度量。任务指派服务124能够有可能使用来自活动监视器122的信息来向在分布式计算环境100上运行的分布式数据库内的各个角色指派计算集群。在一些配置中,活动监视器122和/或任务指派服务124是在计算机集群102至120中的一个或多个上运行的软件服务。
计算机集群102至120表示能够一起工件以生成分布式计算环境100并且执行诸如运行软件应用、创建虚拟机等计算任务的计算集群、网络服务器、数据中心、一个或多个计算机、或其它适当计算系统。计算集群102至120可由包括计算机可读存储器、处理器、和用以促进集群内和集群102至120之间的通信的网络基础架构的异构或同构计算硬件组成。
分布式计算环境100还可包括任何数目的客户端和/或与之交互,其中此处示出客户端126和128。客户端126和128可为可通信地耦合到分布式计算环境100的计算系统,和/或可为分布式计算环境100的计算集群。在任何情况下,客户端126和128可与分布式计算环境100交互以执行分布式计算操作。在这个示例中,客户端126和128是与在分布式计算系统100上进行操作的相同分布式数据库相关联的两个客户端。更多或更少的客户端可与分布式数据库相关联,包括用于特定数据库的单个客户端。另外,客户端的数目和位置可随时间改变,其中添加、移动、或移除客户端。
客户端126和/或128可为其它计算系统或应用的元素,并且在那些情况中的一些情况下,客户端126和/或128可执行其它非客户端相关活动。例如,web服务器(未示出)可经由互联网向多个浏览器(未示出)派发网页。为了管理这个网页的内容,web服务器可使用在计算环境100上运行的分布式数据库。为了访问分布式数据库,web服务器可与例如客户端126通信或充当例如客户端126。
客户端126和128执行向其相关联分布式数据库请求的工作量。这个工作量包括用于与分布式数据库交互的任何技术上适当的过程,包括但不限于读取、写入和删除数据;解释查询;等。活动监视器122可被配置为监视客户端126和128以便生成工作量数据130和132,其分别描述客户端126和128与分布式数据库的交互。例如,工作量数据130和132可采取与分布式数据库的交互的日志、诸如交互类型的计数的概要信息、根据所定义工作量类型集合的工作量分类等的形式。
对于分布式数据库的客户端中的每一个(例如,一个分布式数据库用于客户端126和128,并且未示出其它分布式数据库),任务指派服务可将计算集群102至120中的一些计算集群指派为副本、投票者、或领导者。这些分布式数据库不需要包括所有计算集群102至120,并且在一些配置中,可与任何技术上适当数目的客户端相关联。为了清楚起见,接下来,本文献将论述与客户端126和128相关联的一个分布式数据库的选择和指派。然而,应当理解,可有可能同时地针对许多分布式数据库进行这些种类的选择和指派。
如下文将描述,领导者角色一个计算机集群102被选择至120并指派领导者角色。在此之后,N个其它计算机集群102至120被选择并指派为副本,并且那N个指派为副本的计算机集群中的M个计算机集群被选择并指派为投票者。
为了选择领导者,活动监视器122可访问和/或生成工作量130和132。然后,活动监视器122可确定或预测客户端126和128调用的每个过程的频率。任务指派服务124然后可使用这些频率来加权每个计算机集群102至120执行用于客户端126和128的操作的延迟并且选择具有最低加权延迟的计算机集群102至120作为领导者。
除了下文所论述的计算之外,可向副本和角色分配施加额外约束。例如,可设置定义中央处理单元(CPU)资源的最少值的约束,使得领导者能够处置领导要求。在一些情况下,可能需要考虑仅操作的子集(例如,仅仅写入)的时延。为此,可不考虑一些操作;可针对不同操作或操作类型使用额外加权,等等。
图2是用于确定通信延迟的示例计算的电子表格200。例如,电子表格200可由任务指派服务124在其选择计算机集群102至120作为分布式数据库的领导者时计算,或者可表示由任务指派服务124在其选择计算机集群102至120作为分布式数据库的领导者时执行的内部计算。为了清楚起见,针对分布式数据库的单个客户端126示出所述数据,但这个数据可延伸到更多客户端,包括分布式数据库的所有客户端。
单元202示出与客户端126和128可向计算机集群102至120调用的过程相关联的延迟(为了清楚起见排除一些行)。过程1至4可表示诸如数据读取、写入、复制等任何适当过程。在这个示例中,如果客户端126向计算机集群106调用过程1,则相关联延迟被示出为28毫秒(ms)。这个28ms延迟可为当客户端126调用所述过程时与当完成所述过程时之间的延迟、客户端126调用与接收确认之间的延迟、或任何其它技术上适当的测量。即,所述延迟可包括用于处理所述过程的时间、网络延迟(包括在其它计算机集群间路由)的时间和其它延迟。
单元204示出客户端126将要调用或已经调用的过程的所测量或预测的频率。在这个示例中,该数字表示针对一分钟样本窗口测量或预测的调用过程的每秒次数。例如,在样本2中,客户端126每秒0.4次调用过程2。然而,可以使用用于示出相对频率的任何技术上适当的方案。例如,频率可被标准化以求和为特定值(例如,1或100)。在这个示例中,样本1被作为可在例如对客户端126一无所知时使用的无经验默认值。在样本1中,每个过程被给予相同值1,从而表示默认假设每个过程将被调用相同次数。在一些配置中,可使用不同默认值。例如,可检查具有与客户端126相似类别的客户端,并且可使用基于那些相似客户端的记录的活动的概率分布。在这个示例中,样本2和样本3表示客户端126做出的所测量的过程调用。
单元206示出所有过程的总延迟,其根据样本进行加权。为了找出这个总数,针对每个计算集群102至120,根据样本中的对应权重对每个过程的延迟进行加权,并且找出加权延迟的聚合。下文将以举例方式示出用于在样本2的加权下计算集群110的计算:
总延迟=(过程1延迟×样本2过程1频率)+(过程2延迟×样本2过程2频率)+(过程3延迟×样本2过程3频率)+(过程4延迟×样本2过程4频率)
总延迟=(66×0.5)+(11×0.4)+(76×1.3)+(59×1.6)
总延迟=230.6
其它类型的聚合也是可能的。其它示例包括针对操作子集运算的中值、最大值、或任何类型的聚合。例如,这样的子集可为仅状态更改操作或仅读取。
如先前所述,电子表格200中所示的计算可用于识别针对给定工作量130将导致最小总延迟的计算集群102至120。因而,在单元206中以粗体示出权重1、2和3下的最小总延迟。如图所示,对于权重1、2和3具有最小总延迟的计算机集群102至120分别是计算机集群114、112和108。出于清楚起见,将关于样本3描述随后的领导者选择,其中计算机集群108具有最低加权延迟。
图3是用于针对分布式数据库选择领导者的示例流程300的流程图。为了清楚起见,将关于分布式计算环境100和电子表格200中的与样本3相关的数据来描述流程300。然而,其它系统和其它数据可用于执行流程300或相似过程。
流程300可由例如活动监视器122和任务指派服务124执行以便选择计算集群102至120作为客户端126所使用的分布式数据库的领导者角色。一般而言,这个领导者可基于执行工作量130中所识别的交互所需要的预期延迟来选择。通过访问关于分布式计算环境110的数据,活动监视器能够准确地识别工作量130中的过程的种类,并且比例如以不完整且偏差的信息为基础的选择更准确地执行领导者选择。
访问工作量数据(302)。例如,活动监视器122可生成描述客户端126与分布式数据库之间的历史交互的工作量数据130。可对这个工作量数据130进行分析以例如基于客户端126的最近或过去行为来理解客户端126很可能与分布式数据库具有的交互的种类。在一些情况下,活动监视器122可观察并记录客户端126对分布式数据库做出的过程调用。在如日志的历史记录不可用(例如,新客户端加入或创建新分布式数据库)的情况下,活动监视器可创建预测工作量数据。例如,如果客户端应用已经在历史上用于特定目的,并且客户端126出于相同目的实例化相同客户端的新复本(copy),则活动监视器122可使用来自另一个客户端的旧工作量数据并且出于这个目的将其应用于客户端126。
生成过程频率(304)。例如,活动监视器122可解析工作量130的历史数据以识别客户端126调用分布式数据库的过程的实例,连同相关联的时间戳、所使用的参数等等。然后,活动监视器122可生成表示客户端126调用每个过程的频率的数据。这种类型的示例数据在电子表格200的单元204中示出。
访问过程延迟(306)。例如,活动监视器122可生成或从另一个服务访问关于计算集群102至120完成分布式数据库的过程所需要的延迟的信息。这个延迟可包括例如客户端126与集群102至120之间的通信所致使的网络延迟以及集群执行请求的过程所需要的处理延迟。在许多情况下,不规则的网路拓扑、计算资源、和负荷差异可导致每个集群102至120具有与其它集群的延迟值不同的延迟值。这种类型的示例数据在电子表格200的单元202中示出。
找出最小总加权延迟(308)。例如,活动监视器122可针对分布式计算环境100的计算集群102至120中的每一个找出总加权延迟。为了找出这个延迟,活动监视器122可将每个过程的延迟乘以所述过程的频率,并且对这些加权延迟求和。这种类型的示例数据在电子表格200的单元206中示出。
将计算集群指派给领导者角色(310)。例如,活动监视器122可找出最低总加权延迟,并且任务指派服务124可将相关联计算机集群102至120指派给分布式数据库的领导者角色。在电子表格200的样本3的示例中,这个最小总加权延迟是63.3ms,与计算集群108相关联。因而,任务指派服务124可将计算集群108指派给领导者角色。
图4是示例分布式计算环境100的框图,其中一些计算集群是分布式数据库内的副本和投票角色的候选者。如图所示,计算集群108已经被指派给在分布式计算环境100上运行的分布式数据库的领导者角色。在这个示例中,已经根据找出对给定工作量的最小总加权延迟的过程来选择领导者角色。然而,可使用其它用于找出并指派领导者的过程。例如,人类管理员可选择领导者,可创建不同度量以找出领导者,等等。一旦选择一些或全部角色,分布式数据库便可开始将分布式数据库的数据存储在分布于计算集群102至120当中的碎片中。
除了具有领导者角色之外,任务指派服务124还可将其它计算集群102至106、110至120指派给分布式数据库中的其它角色。在这个示例中,分布式数据库将包括总共五个副本,其中三个副本具有投票角色。在这个示例中,领导者计为投票副本。在一些情况下,一些计算集群可托管其它分布式数据库的其它客户端(例如,客户端128),这个分布式数据库的客户端可正在所述计算集群中的一个上运行,和/或活动监视器122和/或任务指派服务124可正在分布式计算环境100的计算集群中的一个或多个上运行。
在选择领导者并且已经指定分布式数据库应当具有五个副本——其中三个在投票——的情况下,活动监视器122和任务指派服务124可确定其它计算集群102至106、110至120中的哪些计算集群将被指派给副本和投票角色。在这个示例中,活动监视器122可找出领导者计算集群108与其它计算集群102至106、110至120之间的通信往返时间(RTT)。基于所述RTT,任务指派服务可向具有最低RTT的两个计算集群102至106、110至120指派分布式数据库中的投票角色。任务指派服务可向具有接下来两个最低RTT的两个计算集群102至106、110至120指派分布式数据库内的副本角色。通过做这两项,任务指派服务124可因此指派总共五个副本(两个副本角色、两个投票角色、一个领导者角色),其中具有三个投票副本(两个投票角色、一个领导者角色)。
图5A是用于针对分布式数据库内的副本角色和投票角色选择计算集群的示例流程500的流程图。为了清楚起见,将关于分布式计算环境100描述流程500。然而,其它系统可用于执行流程500或相似过程。
流程500可由例如活动监视器122和任务指派服务124执行以便选择计算集群102至120作为副本并且指派客户端126和128所使用的分布式数据库的领导者角色和投票角色。一般而言,每个计算集群102至120可被考虑作为候选领导者。然后,可基于与候选领导者通信的预期RTT来选择副本角色和投票角色。然后,可将表现出最佳性能(例如,领导者与每个副本之间的最小总RTT)的候选领导者选择作为实际领导者,其中指派对应副本角色和投票角色。通过访问关于分布式计算环境110的数据,活动监视器能够准确地识别分布式计算环境100中的延迟并且比例如以不完整且偏差的信息为基础的选择更准确地执行角色选择。
识别投票者数目(M)和副本数目(N)(502)。例如,客户端126可请求分布式计算环境100生成分布式数据库。这个请求可包括对具有五个副本的请求来提供冗余性,以在一个副本停用以进行维护并且另一个副本出故障的情况下或者在两个副本出故障的情况下三个副本仍将可用。所述请求可进一步请求具有三个投票副本。
在指定M和N的情况下,任务指派服务124可将候选领导者角色临时指派给分布式计算环境100的计算机集群102至120(504)。为了清楚起见,这个示例将考虑计算集群108作为候选领导者。这个临时指派可基于例如随机或有序选择、与完成工作量130中的过程相关联的延迟;基于探索法察看客户端126和/或分布式计算环境100;用户选择;或任何其它技术适当过程。
识别M个集群(506)。例如,活动监视器122可跟踪分布式计算环境100内的活动,包括但不限于跟踪计算集群102至120之间的RTT和其它度量。例如,活动监视器可使用图5B的等式550识别最小化与其它副本的操作时延的领导者。在等式550中,λ(i) db是候选领导者,score(i)(l)等于等式551。使用这些计算,活动监视器122可然后使用等式550来识别与最佳得分相关联的M个计算集群102至106、110至120。在这个示例中,M是2,并且识别作为M的计算集群102和110。
确定候选领导者的得分(508)。例如,活动监视器可与其它候选领导者相比根据用于识别候选领导者的质量的度量来给领导者打分。一个示例计算可为候选领导者与M个集群中的每一个之间的总RTT。另一个示例计算可为找出候选领导者与其它副本之间的第k个最小RTT,其中k=[(num_voters+1)/2]。
然后,针对每个可能候选领导者重复步骤504至508。这个候选领导者池可包括所有计算集群102至120,或者可排除计算集群102至120中的一些计算集群。例如,如果计算集群102至120中的一些计算集群没有足够计算资源、位于不合需要的地理位置中等等,则可排除这些计算集群。一旦针对每个候选领导者完成所述过程,便选择与最可取的整体配置相关联的候选领导者。例如,最可取的候选者可为根据先前论述的用于识别候选领导者的质量的度量具有最低得分的候选者。
将N个集群指派给副本角色512。活动监视器122和/或指派服务124可根据任何技术上适当的过程来选择N个计算集群以指派给副本角色。例如,任务指派服务124可将客户端附近的副本角色指派给具有低操作成本的计算集群102至120、处于优选管辖区域中的计算集群102至120、或基于地理考虑来指派。在这个示例中,任务指派服务124可向N个计算集群106和112指派客户端126所请求的分布式数据库的副本角色。
将M个集群指派给投票角色514。在识别出M个计算集群102和110的情况下,任务指派服务124可向M个计算集群102和110指派客户端126所请求的分布式数据库的投票角色。
流程500已被描述为选择预期时延的最佳结果。在另一个示例中,所选择的配置可为减少尾时延的配置。
当考虑尾时延时,线性性质可能不提供有用度量。相反,在图5B的等式552中示出替选的得分计算。作为输入,代替平均往返时间时延,使用每对位置a和b之间的往返时间时延分布Ha,b。换言之,Ha,b是基于每个计算集群之间的每个通信链路之间的往返时间。为了清楚起见,将假设这些分布是独立的并且所述时延被离散化为1ms的倍数。
当计算每个操作类型的时延时,代替对平均值求和,计算随机变量的总和的分布。作为一个示例,考虑从客户端c行进到最近副本nearest(c,R)、然后从nearest(c,R)行进到领导者l并且一直回到客户端的有界读取的简单情况。为了找出这个操作的时延分布,执行离散卷积Hc,nearest(c,r)*Hnearest(c,R),l,如等式552所示。在等式552中,m表示t(i) boundedread,c(l)的最小可能值,并且rtt是与时延(而非平均时延)相对应的随机变量。一旦已经计算出总和的分布,便可从该分布取得所需百分位。这个所需百分位可为用户选择的输入,或从不同来源接收。例如,数据库管理员可对使99%时延最小化感兴趣,并且将因此供应99%作为所需百分位。
在这个实施方式中,仲裁集时延被确定为变量。仲裁集时延是投票者仲裁集在向仲裁集提交投票之后批准投票的时延。一个计算仲裁集时延的过程是计算仲裁集时延的分布。这涉及从群组选择多个不同仲裁集并且计算每个选择的仲裁集的时延。实现此的一个数值方法是执行蒙特卡洛(Monte Carlo)模拟,对v∈V的分布Hl,v进行重复取样,并且计算每次的中值时延。对于分析解,注意到领导者需要从其它服务器收集majority-1个响应,其中majority←[(|V|+1)/2]并且假设领导者自己的响应比任何其它响应更快到达。用于任何组读取-写入副本集的最大响应时间的累积分布函数(CDF)简单是各个副本的响应时间的CDF的乘积。例如,对于3个读取-写入副本l、v和w,其中l是候选领导者,见等式554。换言之,最大值的CDF是针对x的不同值而言最大值均小于x的概率。当a和b两者均小于x时,事件a和b的最大值小于x。如果事件a和b是独立的,则a和b两者均小于x的概率等于a小于x的概率乘以b小于x的概率。
因此,可针对可构建的每个读取-写入副本子集计算最大响应时间的CDF。根据这些,使用容斥原理(inclusion-exclusion principal),可针对每个x计算基数majority-1的读取-写入副本的至少一个子集具有小于x的最大响应时延的事件的概率。这个事件等效于仲裁集的响应时间小于x的事件,因此其给出仲裁集响应时间的CDF。继续3个读取-写入副本的示例,提供等式556。换言之,等式556应用两个集合A和B的并集是A+B-其交集的原理。可移除该交集,例如,以避免双重计数该交集的成员。
图6是分布式计算环境100的框图,其中针对分布式数据库内的副本角色和投票角色选择一些计算集群102至120。在这个示例中,活动监视器122和任务指派服务124已经使用流程500来将计算集群108指派给分布式数据库中的领导者角色,将计算机集群102和110指派给分布式数据库中的投票角色,并且将计算机集群106和112指派给分布式数据库中的副本角色。
在将这些角色指派给集群102至112的情况下,客户端126可与分布式数据库交互,例如,以存储、操纵、并且访问数据。另外,客户端128和其它客户端可使用分布式计算环境100来运行其它分布式数据库并且运行其它软件和服务。在许多情况下,分布式计算环境100的整体使用可随时间改变。这个改变可为周期性的或循环的。
例如,分布式计算环境100可在物理上跨全。随着全球的不同人口中心日夜转变,其对分布式计算环境100的使用可改变。例如,多个客户端在工作日期间最活跃而在晚上和周末较不活跃。其它循环变化可在不同时间框架上发生。例如,电子商务和记帐系统可在年底具有较多使用,年底在多个国家中有大量假日购物和结算时间。类似地,可对分布式计算环境100做出系统改变。新客户端可上线,移除旧客户端,可将资源添加到现有计算集群102至120或从现有计算集群102至120移除资源,可添加和移除计算集群,改变网络通信链路,等等。
所有这些改变可导致改变分布式计算环境100的性能。为了解决这些改变,可重复此处所描述的过程,该过程中将分布式数据库的角色指派给分布式计算环境100的计算集群。这可导致部分或全部角色被重新指派给不同计算集群。
图7是用于针对分布式数据库中的角色周期性地选择计算集群的示例流程700的流程图。为了清楚起见,将关于分布式计算环境100描述流程700。然而,其它系统可用于执行流程700或相似过程。
流程700可由例如活动监视器122和任务指派服务124执行以便选择计算集群102至120作为客户端126所使用的分布式数据库的领导者、副本、和投票角色。一旦选择角色且活动监视器122可生成客户端126的准确的工作量数据,并且为了利用对分布式计算环境100的周期性或系统改变,可重复流程700的若干部分以重新指派分布式数据库的角色。
识别新客户端,并且确定新客户端的工作量(702)。例如,客户端126可请求在分布式计算环境100上创建新分布式数据库。活动监视器122可生成数据以预测客户端126将产生的工作量130的类型。在一些情况下,活动监视器可使用探试法。关于客户端126、客户端126的用户的信息、和其它数据可用于公式表达预测工作量。在一些情况下,活动监视器122可识别与客户端126相似的客户端并且使用相似客户端的工作量来代替客户端126的工作量130。例如,如果客户端126是现成的电子商务应用,则活动监视器122可使用来自相同电子商务应用的其它实例的历史工作量数据来预测客户端126的工作量。
识别并且指派领导者(704)。例如,活动监视器122和/或任务指派服务124可使用流程300或任何其它过程来识别并且选择计算集群102至120中的一个作为用于分布式数据库的领导者。
识别并且指派其它角色(706)。例如,活动监视器122和/或任务指派服务124可使用流程500或任何其它过程来识别并且选择计算集群102至120中的一个或多个作为例如分布式数据库的投票者和副本。
观测客户端的操作(708)并且计算客户端的实际工作量(710)。例如,在客户端进行操作时,活动监视器122可跟踪客户端126的活动,或从跟踪客户端126的活动的另一个系统接收数据。根据这点,活动监视器可生成反映实际工作量130的数据。
可重复流程704至710。可根据一个或多个时程表和/或出于一个或多个原因来重复这些流程。
重复流程704至710的一个原因是重新指派原本使用关于工作量130的预测信息而非历史信息所指派的角色。例如,在基于客户端126的预测工作量而指派角色之后,任务指派服务124可稍后基于已经观测到的真实工作量130来重新指派那些角色。
重复流程704至710的另一个原因是在对客户端126和/或分布式计算网络100发生一个或多个系统改变之后重新指派角色。例如,客户端126可为接收大幅增加的用户业务的网页的后端的一部分。这可导致工作量130改变,并且因此,可存在能够增大分布式数据库的效率的角色配置。在另一个示例中,新网络基础架构可改变计算机集群102至120中的一些计算机集群之间的通信延迟,并且因此,可存在能够增大分布式数据库的效率的角色配置。
重复流程704至710的另一个原因是重新指派角色以利用对分布式计算系统100的工作量的周期性改变。例如,在客户端本地的白天期间,一种角色配置可为最有效率的,但在客户端本地的夜晚,不同的角色配置可为较有效率的。通过恰当地为重复安排定时(例如,每12小时、每月、每季度),可利用这些改变。
除了使用前述用于选择副本并且向副本指派角色的过程之外或作为其替选方案,存在用于选择副本并且向副本指派角色的其它过程。如将描述,可一起使用这些过程,或可仅使用所述过程中的一个或一些过程。
现将描述使用两个操作来选择来自可能位置S的最佳副本R集合、投票者集合(即,投票者是所述副本集合的子集或等于所述副本集合)和来自V的最佳领导者的过程。通过使用这些操作,可实现计算时间的大幅节省。例如,一些蛮力搜索方法可需要数小时或数天来计算,而这个过程可在数分钟或数秒内计算。
图8A是可用于识别副本位置和角色的示例流程800的流程图。为了清楚起见,将关于分布式计算环境100描述流程800。然而,其它系统可用于执行流程800或相似过程。
流程800可由例如活动监视器122和任务指派服务124执行以便选择计算集群102至120作为副本。一般而言,一些计算集群102至120被指派作为副本并且被处理为质心。在具有大量使用的客户端附近识别额外质心,并且然后细化所述副本位置。
接收初始副本位置集合作为质心(802)。例如,活动监视器122和任务指派服务124可选择计算集群102至120中的一个、两个、或三个作为质心。
针对剩余质心选择剩余质心的初始位置(804)。例如,活动监视器122可基于工作量数据130和132来识别具有最大工作量的客户端126和128,并且任务指派服务124可指派最近计算集群102至120作为质心。
调整质心的位置以降低成本(806)。例如,活动监视器122和任务指派服务124可改变所选择的质心。
返回所选择的质心(808)。例如,当满足结束条件(例如,每改变缺少足够成本改善)时,任务指派服务124可将质心设置作为副本。
图8B是可用于实现流程800的伪码850的示例。为了清楚起见,将关于分布式环境100描述伪码850。然而,其它系统可用于执行伪码850或相似过程。
伪码850可由例如活动监视器122和任务指派服务124执行以便选择计算集群102至120作为副本。一般而言,迭代地识别在每个客户端周围的计算集群102至120的群组,直到识别最终副本集合为止。然后,基于那些副本的选择,指派投票角色和领导者角色。
流程500使用加权K均值的变型。流程500基于c所执行的操作的总数来向每个客户端c(例如,客户端126和128)指派权重wc。在一些示例中,wc的值可使用图9所示的方程900来计算。作为伪码850的操作的一部分,伪码850可被配置为根据方程902来找出cost(G)的最小值。
伪码850接收从计算集群102至120选择的初始副本位置集合,称为质心Lfixed。另外,伪码850接收指定所需副本位置的数目的值num_replicas。任务指派服务124通过根据wc将剩余质心放置在靠近“工作量最大(heaviest)”客户端处来选择剩余质心的初始位置(行6至10)。每个质心位置g定义g最近质心的客户端集群Cg集合(行15)。伪码850的剩余部分以最小化Cg中的客户端的成本(加权往返时间)的方式调整每个质心g的位置。可设置并且不移动质心Lfixed。所述过程可在一旦总成本没有充分改善时完成返回所述组质心G(即,方程902)。
图10A是可用于识别副本位置和角色的示例流程1000的流程图。为了清楚起见,将关于分布式计算环境100描述流程1000。然而,其它系统可用于执行流程1000或相似过程。
流程1000可由例如活动监视器122和任务指派服务124执行以便选择计算集群102至120作为副本。一般而言,找出副本位置,并且然后指派角色。
接收副本数目和投票者数目(1002)。例如,可在计算环境100中设置新分布式数据库。作为这个设置的一部分,管理员可选择待包括在分布式数据库中的副本数目和投票者数目。
识别计算集群作为副本(1004)。例如,活动监视器122和任务指派服务124可选择适当数目的计算集群102至120作为副本。
向副本指派角色(1006)。例如,活动监视器122和任务指派服务124可向副本指派分布式数据库中的角色。
图10B是可用于实现流程1000的伪码1050的示例。为了清楚起见,将关于分布式环境100描述伪码1050。然而,其它系统可用于执行伪码1050或相似过程。
伪码1050可由例如活动监视器122和任务指派服务124执行以便选择计算集群102至120作为副本并且然后向所选择的计算集群102至120指派角色。一般而言,伪码1050可被称为“KQ”,因为其首先使用加权K均值操作来找出副本位置,然后其找出Q仲裁集。相比较而言,下文所述的伪码1150可被称为“QK”,因为其首先找出Q仲裁集,然后使用K均值来找出副本位置。
伪码1050可接收num_replicas和num_voters(例如,如上所述的N和M)作为分别指定分布式数据库应当具有的副本和投票者的数目的输入值。这些值可经常基于分布式数据库的设计目标或使用来配置。例如,可针对从来没有经历一次3个以上计算集群102至120不可用的计算环境100选择为7的num_voters和为4的仲裁集。
接收到num_replicas和num_voters后,活动监视器122和任务指派服务124可执行伪码850以便识别计算集群102至120中的G个副本。接下来,活动监视器122和任务指派服务124可执行流程500以向G个计算集群102至120指派角色。伪码1050可然后返回领导者、投票者集合和一组副本集合。
图11A是可用于识别副本位置和角色的示例流程的流程图。为了清楚起见,将关于分布式计算环境100描述流程1100。然而,其它系统可用于执行流程1100或相似过程。
流程1100可由例如活动监视器122和任务指派服务124执行以便选择计算集群102至120作为副本。一般而言,针对每个领导者候选者,放置领导者和投票者仲裁集,然后将剩余副本放置在客户端附近。
选择领导者候选者(1102)。例如,可在计算环境100中设置新分布式数据库。为了找出计算集群102至104,任务指派服务124可选择候选计算集群102至120作为候选领导者。
指派至少仲裁集的投票者(1104)。例如,任务指派服务124可选择最靠近领导者的多个计算集群102至120并且指派这些计算集群102至120作为投票者。
指派剩余副本(1106)。例如,任务指派服务124可指派在客户端126和128附近的额外计算集群102至120作为投票者或副本。
针对每个候选领导者重复流程1102至1106,并且针对最佳候选领导者,指派角色(1108)。例如,任务指派服务可找出具有最佳整体配置的候选领导者,并且指派与那个候选领导者相关联的角色。
图11B是可用于实现图11A所示的流程1100的伪码的示例。为了清楚起见,将关于分布式环境1100描述伪码1150。然而,其它系统可用于执行伪码1150或相似过程。
伪码1150可由例如活动监视器122和任务指派服务124执行以便从计算集群102至120中选择领导者、投票者、和副本。如先前识别,所述过程可被称为“QK”,因为其首先找出Q仲裁集,然后使用K均值来找出副本位置。
伪码1150首先设置领导者和投票者仲裁集,并且然后将剩余副本放置在靠近客户端处。更具体而言,考虑S中的每个可能领导者位置以找出这个领导者的最佳仲裁集。然后考虑所述仲裁集作为被“钉住(pinned)”并且不移动的质心。
图12是示出计算系统1200的示例的示意图。计算系统1200可用于先前根据一些实施方式描述的一些或全部操作。计算系统1200包括处理器1210、存储器1220、存储装置1230和输入/输出装置1240。处理器1210、存储器1220、存储装置1230和输入/输出装置1240中的每一个使用系统总线1250互连。处理器1210能够处理用于在计算系统1200内执行的指令。在一些实施方式中,处理器1210是单线程处理器。在一些实施方式中,处理器1210是多线程处理器。处理器1210能够处理存储在存储器1220中或存储在存储装置1230上的指令以在输入/输出装置1240上显示用于用户界面的图形信息。
存储器1220存储计算系统1200内的信息。在一些实施方式中,存储器1220是计算机可读介质。在一些实施方式中,存储器1220是易失性存储器单元。在一些实施方式中,存储器1220是非易失性存储器单元。
存储装置1230能够提供用于计算系统1200的大容量存储。在一些实施方式中,存储装置1230是计算机可读介质。在各个不同实施方式中,存储装置1230可为软盘装置、硬盘装置、光盘装置、或磁带装置。
输入/输出装置1240提供用于计算系统1200的输入/输出操作。在一些实施方式中,输入/输出装置1240包括键盘和/或指示装置。在一些实施方式中,输入/输出装置1240包括用于显示图形用户界面的显示单元。
所描述的一些特征可以数字电子电路或以计算机硬件、固件、软件、或其组合实现。所述设备可在以信息载体——例如以机器可读存储装置——有形体现的计算机程序产品中实现以供可编程处理器执行;并且方法步骤可由执行指令程序以通过对输入数据进行操作并生成输出来执行所描述的实施方式的功能的可编程处理器执行。所描述的特征可有利地在能够在可编程系统上执行的一个或多个计算机程序中实现,所述可编程系统包括耦合至数据存储系统以从数据存储系统接收数据和指令并且向数据存储系统传输数据和指令的至少一个可编程处理器、至少一个输入装置、以及至少一个输出装置。计算机程序是可直接或间接地在计算机中使用以执行某种活动或带来某种结果的指令集。计算机程序可以任何形式的编程语言——包括编译语言或解释语言——来编写,并且其可以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适用于计算环境的其它单元。
举例而言,用于执行指令程序的合适处理器包括通用微处理器和专用微处理器两者,以及单一处理器或任何种类的计算机的多个处理器中的一个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器。通常,计算机还将包括用于存储数据文件的一个或多个大容量存储装置或操作性地耦合以与之通信;这样的装置包括磁盘,诸如内部硬盘和可移动磁盘;磁光盘;以及光盘。适合于有形体现计算机程序指令和数据的存储装置包括所有形式的非易失性存储器,举例而言包括半导体存储器装置——诸如EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)和闪存存储器装置;磁盘,诸如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM(压缩光盘只读存储器)和DVD-ROM(数字通用光盘只读存储器)磁盘。处理器和存储器可由ASIC(专用集成电路)补充或并入在ASIC中。
为了提供与用户的交互,一些特征可在具有用于向用户显示信息的诸如CRT(阴极射线管)或LCD(液晶显示器)监视器等显示装置以及用户可用以向计算机提供输入的键盘和指示装置(诸如鼠标或轨迹球)的计算机上实现。
一些特征可在包括诸如数据服务器的后端组件的计算机系统中实现,或包括诸如应用服务器或互联网服务器等中间件组件的计算机系统中实现,或包括诸如具有图形用户界面或互联网浏览器的客户端计算机等前端组件的计算机系统中实现,或其任何组合。所述系统的组件可通过任何形式或介质的数字数据通信(诸如通信网络)连接。通信网络的示例包括例如LAN(局域网)、WAN(广域网)以及形成互联网的计算机和网络。
计算机系统可包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过网络——诸如所描述的网络——交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。
Claims (30)
1.一种系统,包括:
多个计算集群,所述多个计算集群均包括计算机存储器和计算机处理器;
分布式数据库,所述分布式数据库在所述多个计算集群的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,所述分布式数据库被配置为根据标识所述计算集群的功能的指派给所述计算集群的相应角色来使用所述分布式数据库的所述计算集群中的每个计算集群;以及
活动监视服务,被配置为:
监视所述客户端应用与所述分布式数据库之间的交互;
根据所述客户端应用与所述分布式数据库之间的所述交互的所述监视来生成描述所述客户端应用与所述分布式数据库之间的所述交互的工作量数据;以及
任务指派服务,被配置为:
接收所述计算集群中的第一数目N个计算集群将被指派给所述分布式数据库的副本角色的指示;
接收被指派副本角色的计算集群中的第二数目M个计算集群将被指派所述分布式数据库的投票角色的指示;
使用所述工作量数据选择N个计算集群以包括在所述分布式数据库中;
将所选择的N个计算集群指派给所述分布式数据库内的副本角色;以及
将所选择的N个计算集群中的M个计算集群指派给所述分布式数据库内的投票角色。
2.根据权利要求1所述的系统,其中,所述任务指派服务被配置为使用所述工作量数据重复选择N个计算集群以包括在所述分布式数据库中;将所选择的N个计算集群指派给所述分布式数据库内的副本角色;以及将所选择的计算集群中的M个计算集群指派给所述分布式数据库内的投票角色。
3.根据权利要求2所述的系统,其中,所述重复是按照基于所述计算集群的使用的循环改变的时程表。
4.根据权利要求1至3中的任一项所述的系统,其中,为了接收所述N个计算集群将被指派给所述分布式数据库的副本角色的指示,所述任务指派服务被配置为确定投票者仲裁集所需要的投票者的计数。
5.根据权利要求1至4中的任一项所述的系统,其中,为了将所选择的N个计算集群指派给所述分布式数据库内的副本角色,所述任务指派服务被配置为基于被指派给所述分布式数据库中的领导者角色的计算集群的位置来选择N个计算集群。
6.一种方法,包括:
监视客户端应用与分布式数据库之间的交互;
根据所述客户端应用与所述分布式数据库之间的所述交互的所述监视来生成描述所述客户端应用与所述分布式数据库之间的所述交互的工作量数据;
接收计算集群中的第一数目N的计算集群将被指派给所述分布式数据库的副本角色的指示;
接收被指派副本角色的计算集群中的第二数目M的计算集群将被指派给所述分布式数据库的投票角色的指示;
使用所述工作量数据选择N个计算集群以包括在所述分布式数据库中;
将所选择的N个计算集群指派给所述分布式数据库内的副本角色;以及
将所选择的计算集群中的M个计算集群指派给所述分布式数据库内的投票角色。
7.一种系统,包括:
多个计算集群,所述多个计算集群均包括计算机存储器和计算机处理器;
分布式数据库,所述分布式数据库在所述多个计算集群的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,所述分布式数据库被配置为根据标识所述计算集群的功能的指派给所述计算集群的相应角色来使用所述分布式数据库的所述计算集群中的每个计算集群;以及
活动监视服务,被配置为:
监视所述客户端应用与所述分布式数据库之间的交互;
根据所述客户端应用与所述分布式数据库之间的所述交互的所述监视来生成描述所述客户端应用与所述分布式数据库之间的所述交互的工作量数据;以及
任务指派服务,被配置为:
接收所述计算集群中的数目M个计算集群将被指派给所述分布式数据库的投票角色的指示;
针对所述计算集群中的至少一些计算集群中的每个特定计算集群:
考虑所述特定计算集群作为候选领导者;
使用所述工作量数据来识别与所述特定计算集群具有(M+1)/2个最低时延的(M+1)/2个计算集群作为与所述候选领导者相对应的投票者;
将M-(M+1)/2个未识别的计算集群识别为与所述候选领导者相对应的投票者;
识别数目N个未识别的计算集群作为与所述候选领导者相对应的副本;
选择在度量上具有最佳得分的候选领导者计算集群、对应的投票者、和对应的副本;
向所选择的候选计算集群指派所述分布式数据库内的领导者角色;
向所选择的M个计算集群指派所述分布式数据库内的所述投票角色;以及
向所选择的N个计算集群指派所述分布式数据库内的所述副本角色。
8.根据权利要求7所述的系统,其中,所述任务指派服务被配置为重复:考虑所述特定计算集群作为候选领导者,使用所述工作量数据来识别与所述特定计算集群具有(M+1)/2个最低时延的(M+1)/2个计算集群作为与所述候选领导者相对应的投票者,将M-(M+1)/2个未识别的计算集群识别为与所述候选领导者相对应的投票者,识别数目N个未识别的计算集群作为与所述候选领导者相对应的副本,选择在度量上具有最佳得分的所述候选领导者计算集群、对应的投票者、和对应的副本,向所选择的候选计算集群指派所述分布式数据库内的所述领导者角色、向所选择的M个计算集群指派所述分布式数据库内的所述投票角色,以及向所选择的N个计算集群指派所述分布式数据库内的所述副本角色。
9.根据权利要求8所述的系统,其中,所述重复是按照基于所述计算集群的使用的循环改变的时程表。
10.根据权利要求7至9中的任一项所述的系统,其中,为了识别未识别的计算集群中的数目N个计算集群作为与所述候选领导者相对应的副本,所述任务指派服务被配置为确定投票者仲裁集所需要的投票者的计数。
11.根据权利要求7至9中的任一项所述的系统,其中,为了识别未识别的计算集群中的数目N个计算集群作为与所述候选领导者相对应的副本,所述任务指派服务被配置为基于客户端计算机的位置来选择N个计算集群。
12.一种方法,包括:
监视客户端应用与分布式数据库之间的交互;
根据所述客户端应用与所述分布式数据库之间的所述交互的所述监视来生成描述所述客户端应用与所述分布式数据库之间的所述交互的工作量数据;
接收所述计算集群中的数目M个计算集群将被指派给所述分布式数据库的投票角色的指示;
针对所述计算集群中的至少一些计算集群中的每个特定计算集群:
考虑所述特定计算集群作为候选领导者;
使用所述工作量数据来识别与所述特定计算集群具有(M+1)/2个最低时延的(M+1)/2个计算集群作为与所述候选领导者相对应的投票者;
将M-(M+1)/2个未识别的计算集群识别为与所述候选领导者相对应的投票者;
识别数目N个未识别的计算集群作为与所述候选领导者相对应的副本;
选择在度量上具有最佳得分的候选领导者计算集群、对应的投票者和对应的副本;
向所选择的候选计算集群指派所述分布式数据库内的领导者角色;
向所选择的M个计算集群指派所述分布式数据库内的所述投票角色;以及
向所选择的N个计算集群指派所述分布式数据库内的所述副本角色。
13.一种系统,包括:
多个计算集群,所述多个计算集群均包括计算机存储器和计算机处理器;
分布式数据库,所述分布式数据库在所述多个计算集群的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,所述分布式数据库被配置为根据标识所述计算集群的功能的指派给所述计算集群的相应角色来使用所述分布式数据库的所述计算集群中的每个计算集群;以及
任务指派服务,被配置为:
接收所述计算集群中的数目M个计算集群将被指派给所述分布式数据库的投票角色的指示;
针对所述计算集群中的至少一些计算集群中的每个特定计算集群,考虑所述特定计算集群作为候选领导者并且识别与所述特定候选领导者计算集群具有M个最低时延的M个计算集群;
识别所述候选计算集群以及在度量上具有最佳得分的相关联的M个计算集群;以及
向所识别的M个计算集群指派所述投票角色。
14.根据权利要求13所述的系统,其中,所述任务指派服务被进一步配置为:
接收所述计算集群中的数目N个计算集群应被指派给所述分布式数据库的副本角色的指示;
识别未被指派给所述分布式数据库的角色的N个计算集群;以及
向所述N个计算集群指派副本角色。
15.根据权利要求13或14中的任一项所述的系统,其中,所述任务指派服务被配置为重复所述考虑、所述识别和所述指派。
16.根据权利要求15所述的系统,其中,所述任务指派服务被配置为按照基于所述计算集群的使用的循环改变的时程表来重复所述指派。
17.根据权利要求13至16中的任一项所述的系统,其中,为了考虑所述特定计算集群作为候选领导者并且为了识别与所述特定候选领导者计算集群具有M个最低时延的M个计算集群,所述任务指派服务被配置为仅考虑所述计算集群能够在运行所述分布式数据库中执行的操作子集的时延。
18.根据权利要求13至17中的任一项所述的系统,其中,所述最低时延是至少阈值百分比的随机往返时间所落下的尾时延。
19.一种方法,包括:
接收对多个计算集群中的数目M个计算集群将被指派给分布式数据库的投票角色的指示,其中,所述计算集群均包括计算机存储器和计算机处理器,其中,所述分布式数据库在所述多个计算集群的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,其中所述分布式数据库被配置为根据标识所述计算集群的功能的指派给所述计算集群的相应角色来使用所述分布式数据库的所述计算集群中的每个计算集群;
针对所述计算集群中的至少一些计算集群中的每个特定计算集群,考虑所述特定计算集群作为候选领导者并且识别与所述特定候选领导者计算集群具有M个最低时延的M个计算集群;
识别所述候选计算集群以及在度量上具有最佳得分的相关联的M个计算集群;以及
向所识别的M个计算集群指派所述投票角色。
20.一种存储指令的计算机可读介质,所述指令在由一个或多个数据处理设备执行时致使所述一个或多个数据处理设备执行操作,所述操作包括:
接收对多个计算集群中的数目M个计算集群将被指派给分布式数据库的投票角色的指示,其中所述计算集群均包括计算机存储器和计算机处理器,其中所述分布式数据库在所述多个计算集群的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,其中所述分布式数据库被配置为根据标识所述计算集群的功能的指派给所述计算集群的相应角色来使用所述分布式数据库的所述计算集群中的每个计算集群;
针对所述计算集群中的至少一些计算集群中的每个特定计算集群,考虑所述特定计算集群作为候选领导者并且识别与所述特定候选领导者计算集群具有M个最低时延的M个计算集群;
识别所述候选计算集群以及在度量上具有最佳得分的相关联的M个计算集群;以及
向所识别的M个计算集群指派所述投票角色。
21.一种系统,包括:
多个计算集群,所述多个计算集群均包括计算机存储器和计算机处理器;
分布式数据库,所述分布式数据库在所述多个计算集群的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,所述分布式数据库被配置为根据标识所述计算集群的功能的指派给所述计算集群的相应角色来使用所述分布式数据库的所述计算集群中的每个计算集群;
活动监视服务,被配置为:
监视所述客户端应用与所述分布式数据库之间的交互;以及根据所述客户端应用与所述分布式数据库之间的所述交互的所述监视来生成描述所述客户端应用与所述分布式数据库之间的所述交互的工作量数据;以及
任务指派服务,被配置为:
基于所述工作量数据来将特定计算集群指派给所述分布式数据库中的领导者角色。
22.根据权利要求21所述的系统,其中,为了基于所述工作量数据来将特定计算集群指派给所述分布式数据库中的领导者角色,所述任务指派服务被配置为:
找出具有用于完成所述工作量数据中识别的过程的最低时延的集群。
23.根据权利要求22所述的系统,其中,为了找出具有用于完成所述工作量数据中识别的过程的所述最低时延的集群,所述任务指派服务被配置为:
识别每个过程的频率;
识别每个计算集群的每个过程的时延值;以及
针对每个计算集群,找出并入该集群的时延值的聚合的加权时延值,其中已经根据对应过程的频率来对该时延值的聚合中的时延值进行加权。
24.根据权利要求21至23中的任一项所述的系统,其中,所述活动监视器被配置为重复所述监视和所述生成,并且其中,所述任务指派服务被配置为重复所述指派。
25.根据权利要求24所述的系统,其中,为了重复所述指派,所述任务指派服务被配置为基于所述工作量数据来将不同的特定计算集群指派给所述分布式数据库中的所述领导者角色。
26.根据权利要求24至25中的任一项所述的系统,其中,所述活动监视服务被配置为重复所述监视和所述生成,并且其中,所述任务指派服务被配置为按照基于所述计算集群的使用的循环改变的时程表重复所述指派。
27.根据权利要求21至26中的任一项所述的系统,其中,所述活动监视服务和所述任务指派服务正在所述计算集群中的一个或多个上运行。
28.根据权利要求21至27中的任一项所述的系统,其中,所述客户端计算机是所述计算集群中的一个。
29.一种方法,包括:
监视客户端应用与分布式数据库之间的交互,其中所述分布式数据库在多个计算集群中的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,其中所述计算集群均包括计算机存储器和计算机处理器,其中所述分布式数据库被配置为根据标识所述计算集群的功能的指派给所述计算集群的相应角色来使用所述分布式数据库的所述计算集群中的每个计算集群;
根据所述客户端应用与所述分布式数据库之间的所述交互的所述监视来生成描述所述客户端应用与所述分布式数据库之间的所述交互的工作量数据;以及
基于所述工作量数据来将特定计算集群指派给所述分布式数据库中的领导者角色。
30.一种存储指令的计算机可读介质,所述指令在由一个或多个数据处理设备执行时致使所述一个或多个数据处理设备执行操作,所述操作包括:
监视客户端应用与分布式数据库之间的交互,其中所述分布式数据库在多个计算集群中的至少一个子集上运行并且与在客户端计算机上运行的客户端应用交互,其中所述计算集群均包括计算机存储器和计算机处理器,其中所述分布式数据库被配置为根据标识所述计算集群的功能的指派给所述计算集群的相应角色来使用所述分布式数据库的所述计算集群中的每个计算集群;
根据所述客户端应用与所述分布式数据库之间的所述交互的所述监视来生成描述所述客户端应用与所述分布式数据库之间的所述交互的工作量数据;以及
基于所述工作量数据来将特定计算集群指派给所述分布式数据库中的领导者角色。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562188076P | 2015-07-02 | 2015-07-02 | |
US62/188,076 | 2015-07-02 | ||
PCT/US2016/040741 WO2017004547A1 (en) | 2015-07-02 | 2016-07-01 | Distributed storage system with replica location selection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107851105A true CN107851105A (zh) | 2018-03-27 |
CN107851105B CN107851105B (zh) | 2022-02-22 |
Family
ID=56418625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680025200.XA Active CN107851105B (zh) | 2015-07-02 | 2016-07-01 | 具有副本位置选择的分布式存储系统 |
Country Status (5)
Country | Link |
---|---|
US (6) | US10831777B2 (zh) |
CN (1) | CN107851105B (zh) |
DE (2) | DE202016008045U1 (zh) |
GB (1) | GB2554250B (zh) |
WO (1) | WO2017004547A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109951331A (zh) * | 2019-03-15 | 2019-06-28 | 北京百度网讯科技有限公司 | 用于发送信息的方法、装置和计算集群 |
WO2023246251A1 (en) * | 2022-06-21 | 2023-12-28 | International Business Machines Corporation | Data management |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105515721B (zh) * | 2014-09-25 | 2020-01-07 | 中兴通讯股份有限公司 | 比特位数指示方法及装置 |
DE202016008045U1 (de) | 2015-07-02 | 2017-01-27 | Google Inc. | Verteiltes Speichersystem mit Replika-Standortauswahl |
US11240305B2 (en) * | 2016-07-28 | 2022-02-01 | At&T Intellectual Property I, L.P. | Task allocation among devices in a distributed data storage system |
US10628233B2 (en) * | 2016-12-30 | 2020-04-21 | Samsung Electronics Co., Ltd. | Rack-level scheduling for reducing the long tail latency using high performance SSDS |
US10545664B2 (en) | 2017-04-11 | 2020-01-28 | Samsung Electronics Co., Ltd. | System and method for identifying SSDs with lowest tail latencies |
GB2572135B (en) * | 2018-03-07 | 2023-01-25 | The Maidsafe Found | Data transaction system and method |
CN108712303B (zh) * | 2018-04-25 | 2021-08-20 | 大连理工大学 | 一种云平台的尾延迟测评系统和方法 |
US10983880B2 (en) * | 2018-07-31 | 2021-04-20 | Hewlett Packard Enterprise Development Lp | Role designation in a high availability node |
US11615061B1 (en) * | 2018-08-03 | 2023-03-28 | Amazon Technologies, Inc. | Evaluating workload for database migration recommendations |
US11330401B2 (en) * | 2019-02-06 | 2022-05-10 | At&T Intellectual Property I, L.P. | Centrally assisted associations with a local manager by peers in a peer to peer wireless network |
EP4016299A1 (en) | 2020-12-21 | 2022-06-22 | Amadeus S.A.S. | A method and a system for managing the computing resources in data regions |
US11593210B2 (en) * | 2020-12-29 | 2023-02-28 | Hewlett Packard Enterprise Development Lp | Leader election in a distributed system based on node weight and leadership priority based on network performance |
US20230367608A1 (en) * | 2022-05-12 | 2023-11-16 | International Business Machines Corporation | Scalable applications |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7558883B1 (en) * | 2002-06-28 | 2009-07-07 | Microsoft Corporation | Fast transaction commit |
US20130290249A1 (en) * | 2010-12-23 | 2013-10-31 | Dwight Merriman | Large distributed database clustering systems and methods |
US20140095505A1 (en) * | 2012-10-01 | 2014-04-03 | Longsand Limited | Performance and scalability in an intelligent data operating layer system |
CN104115469A (zh) * | 2011-09-23 | 2014-10-22 | 混合电路逻辑有限公司 | 用于分布式系统中的应用的实时迁移和自动恢复的系统 |
Family Cites Families (70)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5710915A (en) | 1995-12-21 | 1998-01-20 | Electronic Data Systems Corporation | Method for accelerating access to a database clustered partitioning |
US6122264A (en) | 1997-09-29 | 2000-09-19 | Lucent Technologies, Inc. | Method for managing the transmission of competing information packets |
US6324654B1 (en) | 1998-03-30 | 2001-11-27 | Legato Systems, Inc. | Computer network remote data mirroring system |
US6591272B1 (en) * | 1999-02-25 | 2003-07-08 | Tricoron Networks, Inc. | Method and apparatus to make and transmit objects from a database on a server computer to a client computer |
US6401120B1 (en) | 1999-03-26 | 2002-06-04 | Microsoft Corporation | Method and system for consistent cluster operational data in a server cluster using a quorum of replicas |
US6823474B2 (en) | 2000-05-02 | 2004-11-23 | Sun Microsystems, Inc. | Method and system for providing cluster replicated checkpoint services |
US7188145B2 (en) | 2001-01-12 | 2007-03-06 | Epicrealm Licensing Llc | Method and system for dynamic distributed data caching |
US7472178B2 (en) * | 2001-04-02 | 2008-12-30 | Akamai Technologies, Inc. | Scalable, high performance and highly available distributed storage system for Internet content |
US7765329B2 (en) | 2002-06-05 | 2010-07-27 | Silicon Graphics International | Messaging between heterogeneous clients of a storage area network |
US7617292B2 (en) | 2001-06-05 | 2009-11-10 | Silicon Graphics International | Multi-class heterogeneous clients in a clustered filesystem |
US7593968B2 (en) | 2001-06-05 | 2009-09-22 | Silicon Graphics, Inc. | Recovery and relocation of a distributed name service in a cluster filesystem |
US7620680B1 (en) | 2002-08-15 | 2009-11-17 | Microsoft Corporation | Fast byzantine paxos |
US20040254984A1 (en) * | 2003-06-12 | 2004-12-16 | Sun Microsystems, Inc | System and method for coordinating cluster serviceability updates over distributed consensus within a distributed data system cluster |
US20050132154A1 (en) * | 2003-10-03 | 2005-06-16 | International Business Machines Corporation | Reliable leader election in storage area network |
US8005888B2 (en) | 2003-12-30 | 2011-08-23 | Microsoft Corporation | Conflict fast consensus |
US7814064B2 (en) | 2004-05-12 | 2010-10-12 | Oracle International Corporation | Dynamic distributed consensus algorithm |
US7478263B1 (en) * | 2004-06-01 | 2009-01-13 | Network Appliance, Inc. | System and method for establishing bi-directional failover in a two node cluster |
US7555516B2 (en) | 2004-11-23 | 2009-06-30 | Microsoft Corporation | Fast Paxos recovery |
US7698465B2 (en) | 2004-11-23 | 2010-04-13 | Microsoft Corporation | Generalized Paxos |
US7571168B2 (en) | 2005-07-25 | 2009-08-04 | Parascale, Inc. | Asynchronous file replication and migration in a storage network |
US7797457B2 (en) | 2006-03-10 | 2010-09-14 | Microsoft Corporation | Leaderless byzantine consensus |
US7693120B2 (en) * | 2006-06-26 | 2010-04-06 | The Boeing Company | Neural network-based mobility management for self-partition detection and identification of mobile ad hoc radio networks |
US8126848B2 (en) * | 2006-12-07 | 2012-02-28 | Robert Edward Wagner | Automated method for identifying and repairing logical data discrepancies between database replicas in a database cluster |
US20090063356A1 (en) | 2007-08-31 | 2009-03-05 | Torsten Heise | Consensus Determination Framework |
US8041773B2 (en) * | 2007-09-24 | 2011-10-18 | The Research Foundation Of State University Of New York | Automatic clustering for self-organizing grids |
US20090089365A1 (en) * | 2007-09-27 | 2009-04-02 | Alcatel Lucent | Web services replica management |
US7840662B1 (en) | 2008-03-28 | 2010-11-23 | EMC(Benelux) B.V., S.A.R.L. | Dynamically managing a network cluster |
US8392482B1 (en) | 2008-03-31 | 2013-03-05 | Amazon Technologies, Inc. | Versioning of database partition maps |
US8230253B2 (en) | 2008-07-21 | 2012-07-24 | International Business Machines Corporation | Byzantine fault tolerant dynamic quorum using a trusted platform module |
JP5557840B2 (ja) * | 2008-10-03 | 2014-07-23 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | 分散データベースの監視メカニズム |
US7987152B1 (en) | 2008-10-03 | 2011-07-26 | Gadir Omar M A | Federation of clusters for enterprise data management |
US8495021B2 (en) * | 2008-11-26 | 2013-07-23 | Yahoo! Inc. | Distribution data items within geographically distributed databases |
US8645660B2 (en) | 2009-12-10 | 2014-02-04 | Microsoft Corporation | Automatic allocation of data replicas |
US20110178984A1 (en) | 2010-01-18 | 2011-07-21 | Microsoft Corporation | Replication protocol for database systems |
US8856593B2 (en) | 2010-04-12 | 2014-10-07 | Sandisk Enterprise Ip Llc | Failure recovery using consensus replication in a distributed flash memory system |
US9323775B2 (en) | 2010-06-19 | 2016-04-26 | Mapr Technologies, Inc. | Map-reduce ready distributed file system |
GB2484086A (en) * | 2010-09-28 | 2012-04-04 | Metaswitch Networks Ltd | Reliability and performance modes in a distributed storage system |
US8554737B2 (en) | 2010-09-28 | 2013-10-08 | International Business Machines Corporation | Dynamic consistency group formation and systems using the same |
US8572031B2 (en) * | 2010-12-23 | 2013-10-29 | Mongodb, Inc. | Method and apparatus for maintaining replica sets |
US9740762B2 (en) | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
US8694647B2 (en) * | 2011-03-18 | 2014-04-08 | Microsoft Corporation | Read-only operations processing in a paxos replication system |
US9047331B2 (en) | 2011-04-21 | 2015-06-02 | International Business Machines Corporation | Scalable row-store with consensus-based replication |
US9201742B2 (en) * | 2011-04-26 | 2015-12-01 | Brian J. Bulkowski | Method and system of self-managing nodes of a distributed database cluster with a consensus algorithm |
US20130006687A1 (en) | 2011-07-01 | 2013-01-03 | The Go Daddy Group, Inc. | Creating a sub-story for a project story board |
US20130029024A1 (en) * | 2011-07-25 | 2013-01-31 | David Warren | Barbeque stove |
JP5712851B2 (ja) | 2011-07-29 | 2015-05-07 | 富士通株式会社 | データ分割装置、データ分割方法およびデータ分割プログラム |
US20130066875A1 (en) | 2011-09-12 | 2013-03-14 | Jacques Combet | Method for Segmenting Users of Mobile Internet |
US10860563B2 (en) * | 2012-01-06 | 2020-12-08 | Microsoft Technology Licensing, Llc | Distributed database with modular blocks and associated log files |
US9116862B1 (en) | 2012-01-17 | 2015-08-25 | Amazon Technologies, Inc. | System and method for data replication using a single master failover protocol |
US8843441B1 (en) | 2012-01-17 | 2014-09-23 | Amazon Technologies, Inc. | System and method for maintaining a master replica for reads and writes in a data store |
US9230000B1 (en) * | 2012-06-04 | 2016-01-05 | Google Inc. | Pipelining Paxos state machines |
US8838535B2 (en) * | 2012-10-05 | 2014-09-16 | Oracle International Corporation | Providing services across systems that manage distributed replicas |
US9053166B2 (en) | 2012-12-10 | 2015-06-09 | Microsoft Technology Licensing, Llc | Dynamically varying the number of database replicas |
US10212238B2 (en) | 2013-05-15 | 2019-02-19 | Level 3 Communications, Llc | Selecting a content providing server in a content delivery network |
US9830234B2 (en) | 2013-08-26 | 2017-11-28 | Vmware, Inc. | Distributed transaction log |
US9971785B1 (en) | 2013-09-05 | 2018-05-15 | Nutanix, Inc. | System and methods for performing distributed data replication in a networked virtualization environment |
US9569513B1 (en) * | 2013-09-10 | 2017-02-14 | Amazon Technologies, Inc. | Conditional master election in distributed databases |
CN104092719B (zh) | 2013-12-17 | 2015-10-07 | 深圳市腾讯计算机系统有限公司 | 文件传输方法、装置及分布式集群文件系统 |
US20150220584A1 (en) * | 2014-02-03 | 2015-08-06 | Codefutures Corporation | Dynamic modification of a database data structure |
US9607071B2 (en) | 2014-03-07 | 2017-03-28 | Adobe Systems Incorporated | Managing a distributed database across a plurality of clusters |
US9294558B1 (en) | 2014-03-31 | 2016-03-22 | Amazon Technologies, Inc. | Connection re-balancing in distributed storage systems |
US9740472B1 (en) | 2014-05-15 | 2017-08-22 | Nutanix, Inc. | Mechanism for performing rolling upgrades in a networked virtualization environment |
US10133806B2 (en) | 2014-07-31 | 2018-11-20 | Splunk Inc. | Search result replication in a search head cluster |
US10609159B2 (en) * | 2014-08-04 | 2020-03-31 | Microsoft Technology Licensing, Llc | Providing higher workload resiliency in clustered systems based on health heuristics |
US9367410B2 (en) | 2014-09-12 | 2016-06-14 | Facebook, Inc. | Failover mechanism in a distributed computing system |
US9806896B2 (en) | 2014-09-30 | 2017-10-31 | Nicira, Inc. | Optimized message retransmission mechanism for distributed storage virtualization directory system |
US20160100004A1 (en) | 2014-10-06 | 2016-04-07 | International Business Machines Corporation | Data replication across servers |
US10833940B2 (en) | 2015-03-09 | 2020-11-10 | Vapor IO Inc. | Autonomous distributed workload and infrastructure scheduling |
US10623486B2 (en) * | 2015-06-15 | 2020-04-14 | Redis Labs Ltd. | Methods, systems, and media for providing distributed database access during a network split |
DE202016008045U1 (de) | 2015-07-02 | 2017-01-27 | Google Inc. | Verteiltes Speichersystem mit Replika-Standortauswahl |
-
2016
- 2016-07-01 DE DE202016008045.9U patent/DE202016008045U1/de active Active
- 2016-07-01 US US15/200,939 patent/US10831777B2/en active Active
- 2016-07-01 US US15/200,743 patent/US10346425B2/en active Active
- 2016-07-01 US US15/200,791 patent/US10521450B2/en active Active
- 2016-07-01 CN CN201680025200.XA patent/CN107851105B/zh active Active
- 2016-07-01 DE DE112016003013.4T patent/DE112016003013T5/de active Pending
- 2016-07-01 WO PCT/US2016/040741 patent/WO2017004547A1/en active Application Filing
- 2016-07-01 GB GB1717595.1A patent/GB2554250B/en active Active
-
2020
- 2020-10-19 US US17/074,578 patent/US11556561B2/en active Active
-
2022
- 2022-12-28 US US18/090,453 patent/US11907258B2/en active Active
-
2024
- 2024-01-20 US US18/418,257 patent/US20240160641A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7558883B1 (en) * | 2002-06-28 | 2009-07-07 | Microsoft Corporation | Fast transaction commit |
US20130290249A1 (en) * | 2010-12-23 | 2013-10-31 | Dwight Merriman | Large distributed database clustering systems and methods |
CN104115469A (zh) * | 2011-09-23 | 2014-10-22 | 混合电路逻辑有限公司 | 用于分布式系统中的应用的实时迁移和自动恢复的系统 |
US20140095505A1 (en) * | 2012-10-01 | 2014-04-03 | Longsand Limited | Performance and scalability in an intelligent data operating layer system |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109951331A (zh) * | 2019-03-15 | 2019-06-28 | 北京百度网讯科技有限公司 | 用于发送信息的方法、装置和计算集群 |
CN109951331B (zh) * | 2019-03-15 | 2021-08-20 | 北京百度网讯科技有限公司 | 用于发送信息的方法、装置和计算集群 |
WO2023246251A1 (en) * | 2022-06-21 | 2023-12-28 | International Business Machines Corporation | Data management |
Also Published As
Publication number | Publication date |
---|---|
WO2017004547A1 (en) | 2017-01-05 |
US10346425B2 (en) | 2019-07-09 |
US11556561B2 (en) | 2023-01-17 |
US20210034641A1 (en) | 2021-02-04 |
CN107851105B (zh) | 2022-02-22 |
US10521450B2 (en) | 2019-12-31 |
US20230136193A1 (en) | 2023-05-04 |
GB2554250A (en) | 2018-03-28 |
GB2554250B (en) | 2021-09-01 |
GB201717595D0 (en) | 2017-12-13 |
US20170006105A1 (en) | 2017-01-05 |
DE202016008045U1 (de) | 2017-01-27 |
US20170004193A1 (en) | 2017-01-05 |
US11907258B2 (en) | 2024-02-20 |
DE112016003013T5 (de) | 2018-05-30 |
US10831777B2 (en) | 2020-11-10 |
US20240160641A1 (en) | 2024-05-16 |
US20170004219A1 (en) | 2017-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107851105A (zh) | 具有副本位置选择的分布式存储系统 | |
CN105843703B (zh) | 创建工作流以解决至少一个系统问题的方法和系统 | |
US20170300657A1 (en) | Computerized Event Simulation Using Synthetic Populations | |
CN107851106A (zh) | 用于关系数据库即服务的自动需求驱动的资源缩放 | |
CN102834809B (zh) | 用于在网格计算环境中运算的情景状态处理系统和方法 | |
CN104036139B (zh) | 一种移动对象轨迹监测方法 | |
US7698248B2 (en) | Method and system for auditing processes and projects for process improvement | |
US20130339070A1 (en) | Dynamic price-monitor scheduling systems and methods | |
Alsurdeh et al. | Hybrid workflow scheduling on edge cloud computing systems | |
CN110209467A (zh) | 一种基于机器学习的弹性资源扩展方法和系统 | |
CN106471473A (zh) | 用于控制数据中心中的服务器过高分配的机制 | |
WO2018183021A1 (en) | Space optimization solver using team collaboration patterns to guide team-to-floor allocation planning | |
Gupta et al. | Long range dependence in cloud servers: a statistical analysis based on google workload trace | |
Bayliss et al. | Simheuristic and learnheuristic algorithms for the temporary-facility location and queuing problem during population treatment or testing events | |
US20230385820A1 (en) | Methods and Systems for Predicting Cash Flow | |
US20150106143A1 (en) | Optimizing Allocation of Configuration Elements | |
CN109936465A (zh) | 一种云平台资源利用率评估方法及装置 | |
CN110267717B (zh) | 在多租户环境中按不同单独租户自动生成自动缩放呼叫规则的方法及装置 | |
Pour et al. | A blockchain-enabled model to enhance disaster aids network resilience | |
TW202318440A (zh) | 用於動態產生具有相互依賴約束之最佳及可解釋診治性政策之分散式運算 | |
US20220171662A1 (en) | Transitioning of computer-related services based on performance criteria | |
Schneider et al. | The Application of Market-based Multi-Robot Task Allocation to Ambulance Dispatch | |
Schwartz et al. | Modeling crowdsourcing platforms to enable workforce dimensioning | |
CN109408584A (zh) | 报表显示方法、装置、计算机装置及存储介质 | |
US20240153025A1 (en) | Student migration visualization tool |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |