CN108933813B - 防止读取器饥饿的方法、系统和存储介质 - Google Patents
防止读取器饥饿的方法、系统和存储介质 Download PDFInfo
- Publication number
- CN108933813B CN108933813B CN201810503748.1A CN201810503748A CN108933813B CN 108933813 B CN108933813 B CN 108933813B CN 201810503748 A CN201810503748 A CN 201810503748A CN 108933813 B CN108933813 B CN 108933813B
- Authority
- CN
- China
- Prior art keywords
- partition
- level
- shutdown
- writer
- deadline
- 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.)
- Active
Links
Images
Classifications
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- 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/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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
-
- 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/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- 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
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/222—Monitoring or handling of messages using geographical location information, e.g. messages transmitted or received in proximity of a certain spot or area
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及用于防止分布式系统中的读取器饥饿的系统、软件和计算机实现的方法。一个示例方法包括:在管理数据流的节点处从写入器接收对于第一分区的写入意向请求,数据流与包括分区的级别的图相关联,所述分区的级别包括当前级别;识别写入器的第一分区;提供关于第一分区的分区信息以使得写入器能够写入第一分区;确定写入器先前已经写入与当前级别相关联的第二分区;响应于确定写入器先前已经写入第二分区:创建新的当前级别;将第一分区与新的当前级别相关联;识别与当前级别相关联的分区;以及向包括与当前级别相关联的分区的每个本地节点提供关闭级别指令。
Description
技术领域
本公开涉及用于防止分布式消息传送(messaging)系统中的读取器饥饿的计算机实现的方法、软件和系统。
背景技术
现代计算系统通常负责解决大型计算问题,诸如有效处理大量数据。为此,这种系统可以在分布式系统环境中操作。分布式计算环境可以包括可以位于联网计算机上的组件或节点,其可以通过交换消息来相互通信和/或协调,以实现共同目标。分布式计算系统的典型特征是组件的并发性、缺少全局时钟以及组件的独立故障。在分布式系统中,可以将数据写入数据流和从数据流中读取数据,数据流表示消息的有序序列,其中,数据可以分布在许多不同的计算位置中。
发明内容
本公开涉及用于防止分布式消息传送系统中的读取器饥饿的系统、软件和计算机实现的方法。一个示例方法包括:在管理数据流的节点处从写入器接收对于第一分区的写入意向请求,数据流与包括分区的级别的图相关联,所述分区的级别包括当前级别;识别写入器的第一分区;提供第一分区的分区信息以使写入器能够写入到第一分区;确定写入器先前已经写入到与当前级别相关联的第二分区;响应于确定写入器先前已经写入到第二分区:创建新的当前级别;将第一分区与新的当前级别相关联;识别与当前级别相关联的分区;以及向包括与当前级别相关联的分区的每个本地节点提供关闭级别指令。
尽管通常被描述为具体化在处理和变换各个数据的有形介质上的计算机实现的软件,但是这些方面中的一些或全部可以是计算机实现的方法,或者进一步被包括在用于执行所描述的功能的各个系统或其他设备中。在附图和下面的描述中阐述了本公开的这些以及其他方面和实施例的细节。本公开的其他特征,目的和优点将从说明书和附图以及权利要求中显而易见。
附图说明
图1示出示例性分布式消息传送系统。
图2示出具有多个写入器和多个读取器的示例性系统。
图3示出示例性计算系统。
图4示出示例性非循环有向图。
图5示出包括消息的有序序列的示例性分区。
图6示出用于将数据写入数据流的示例性处理。
图7示出用于从数据流中读取数据的示例性处理。
图8是示出用于防止分布式系统中的读取器饥饿的示例环境的框图。
图9是示出数据流的有向图。
图10是示出可能与读取器饥饿相关联的数据流的有向图。
图11是示出使用分区的级别的有向图。
图12是表示数据流中的级别的有向图。
图13是示出使用级别用于防止读取器饥饿的有向图。
图14和图15是用于防止分布式系统中的读取器饥饿的示例方法的流程图。
具体实施方式
分布式系统可用于将数据存储和处理责任分散到一组多个节点。例如,分布式系统可以用于存储和管理数据流。数据流可以是任何类型的数据,例如来自IOT(物联网)网络的传感器数据、数据库数据、事务数据、主题数据、馈送数据等。数据流的数据可以被存储在分区中,其可以驻留在各种节点上。写入器和读取器处理可以分别写入分区和从分区读取。数据流的管理代理可以管理作为数据流一部分的分区。可以动态创建分区,诸如响应于填满当前使用的分区。对于某些数据流,慢速写入器可能会导致某些读取器延迟,诸如当特定读取器在读取其他分区之前正在等待读取特别缓慢填满的分区时。被慢速写入器延迟的读取器可以被称为读取器饥饿。如下面更详细描述的那样,分区到级别的管理和级别关闭(level close)的触发可以解决读取器饥饿的问题,并且消除或减少等待慢速写入器的读取器的延迟。级别是分区的分组,使得写入器的至多一个分区处于同一级别。
级别管理和关闭可以在不需要或不增加分布式系统组件的大量开销或复杂性的情况下实现。级别关闭可以包括灵活的功能,使得给定节点上的本地代理(broker)能够使用本地信息来准确确定给定分区何时关闭。这种灵活性可以避免在没有慢速写入器导致读取器饥饿时的干扰操作。级别管理可以通过在分散设计中的节点之间分配责任来实现,包括为管理代理、本地代理以及读取器和写入器处理分配特定的任务和责任。可以在明确定义的时间点进行级别关闭,诸如当创建新级别时,这可以比定期分析分区以确定关闭哪个分区更高效。
图1示出示例性分布式消息传送系统100。系统100可以包括可以彼此通信地耦合并处理数据流的多个计算节点。在分布式消息传送系统100中,数据可以被写入数据流和/或从数据流中读取,数据流可以表示消息的有序序列。这种数据流也可以被称为馈送、主题和/或交易。数据可以分布在物理位置上,例如,在网络中的不同计算终端、服务器、数据库等上,和/或由单独的处理管理。可以在分布式消息传送系统100中具有特定角色的物理和/或逻辑单元可以被称为分布式消息传送系统的节点。如图1所示,分布式消息传送系统100可以包括包含节点102的多个节点。属于分布式消息传送系统100的实例的节点可以被称为集群。
在分布式消息传送系统100中,被称为写入器或生产者的一个或多个处理可以将数据写入或发布到数据流。被称为读取器或消耗者的一个或多个处理可以从数据流中读取数据(例如,读取器可以被订阅并处理发布的消息的馈送)。读取器和写入器可以被称为客户端。为了执行读取和/或写入操作,客户端可以与分布式消息传送系统100交换消息。
图2示出示例性系统200。系统200可以包括多个写入器(例如,写入器1-3)204和多个读取器(例如读取器1-3)206。写入器204和读取器206可以通信地耦合到分布式消息传送系统202。分布式消息传送系统202可以保证保持其中数据被写入到数据流的顺序,这意味着读取器可以按照与写入器写入到流中相同的顺序接收数据流中的消息。
图3示出示例性计算系统300。系统300可以包括分布式消息传送系统302、多个客户端318和320(例如,读取器、写入器)以及代理304和306。代理304和306可以被表示为多个处理。每个代理304或306可以与客户端318或320通信,并且可以负责管理特定数据流和/或托管特定数据流的一个或多个分区。例如,如图3所示,代理304可以被分配来管理数据流314并且可以与客户端318(例如,两个写入器和一个读取器)通信。代理306可以被分配来管理数据流316并且可以与客户端320(例如,两个读取器和一个写入器)通信。数据流314和316可以使用各种方法、利用不同的策略等被分配给管理代理。如果在系统运行时间所分配的管理代理有缺陷和/或变得有缺陷,则将数据流分配给管理代理可以被改变。如下所述,数据流可以被细分为分区的有根非循环有向图(rooted acyclic directed graph)。
通常,客户端(读取器或写入器)可以向任何代理发送读取/写入意向请求。如果接收代理不管理请求中涉及的数据流,则代理可以使用将客户端重定向到数据流的管理代理的消息进行响应。在接收到重定向响应后,客户端可以使用原始读取/写入意向请求来联系管理代理。管理代理可以使用关于从其读取/写入到的分区的信息进行响应。信息可以包括关于托管分区的代理的位置信息。客户端可以向托管分区的代理发送读取/写入分区请求(例如,促进实际的数据交换)。为了实现读取/写入意向请求和读取/写入分区请求,可以在客户端和代理之间交换多个消息。
图4示出示例性非循环有向图400。非循环有向图可以是没有有向圈(directedcycle)的有限有向图。图400可以包括有限的许多顶点和边。每条边可以从一个顶点指向另一个顶点,以致不可能从一个顶点开始并跟随最终循环再次回到同一个顶点的始终有向的边序列。图400可以包括通过边连接的多个顶点402-418(如箭头所示)。例如,顶点402可以连接到顶点404和顶点408;顶点404可以连接到顶点406和顶点414等。如下面更详细描述的,顶点和/或顶点集合可以表示数据的分区。每个分区可以表示数据流中的有序消息序列。
图5示出包括有序消息序列的示例性分区500,所述有序消息序列包括消息502、504、506以及可能的其他消息。数据流的分区可以分布在分布式消息系统中的代理中。有关现有数据流的信息及其分区图的结构可以通过管理代理维护并被永久存储以允许其他代理在必要时(例如,在发生故障转移事件时)接管管理。
图6示出用于将数据写入数据流的示例性处理600。写入器602可以生成写入意向请求603并将其发送到分布式消息传送系统中的特定代理604。写入意向请求603可以指示写入器602写入特定数据流的意向。可以确定代理604是否是特定数据流的管理代理。在代理604不是数据流的管理代理的情况下,写入器602可以从代理604接收响应消息605,建议写入器602使用写入意向请求联系管理代理606。写入器602可以向管理代理606发送写入意向请求608。管理代理606返回关于写入器602可以写入的分区的分区信息610(例如,位置信息)。
写入器602可以通过将一个或多个消息(例如,写入分区请求611)发送到托管对应于分区信息610的分区的托管代理612来写入到分区信息610涉及的分区。在一些实现方式中,分区信息610涉及的分区具有预定的大小限制,这可以防止一旦已超过大小限制而写入更多的消息。如果超过分区的大小,则托管代理612可以向写入器602发送分区填满消息614,指示对分区的写入可能是不可能的并且将来的消息应该被写入另一分区。写入器602可以联系管理代理606以找出写入器602下一次应该写入哪个分区。
图7示出用于从数据流中读取数据的示例性处理700。读取器702可以生成读取意向请求703并将其发送到分布式消息传送系统中的代理704。读取意向请求703可以指示读取器702从特定数据流中读取的意向。在代理704不是数据流的管理代理的情况下,读取器702可以从代理704接收响应消息705,其指示代理704不是管理代理且建议写入器702联系管理代理706(例如,读取意向请求708)。管理代理706可以返回关于对应于请求的数据流的分区的分区信息710。读取器702可以将读取分区请求712发送到托管代理714以从分区信息710涉及的分区中读取数据。在完整的分区被读取之后,读取器702可以将消息发送到管理代理706以获取下一个要读取的分区。
图8是示出用于防止分布式系统800中的读取器饥饿的示例环境的框图。具体地,所示系统800包括一组节点802、管理客户端设备804、一组读取器806、一组写入器808和网络810,或可通信地与一组节点802、管理客户端设备804、一组读取器806、一组写入器808和网络810耦合。虽然单独示出,但是在一些实现方式中,两个或更多个系统或服务器的功能可以由单个系统或服务器提供。在一些实现方式中,一个所示系统或服务器的功能可以由多个系统或服务器提供。
一组节点802包括管理节点802d,管理节点802d包括管理由分布式系统800提供的特定数据流的管理代理811。读取器806可以从数据流中读取,并且写入器808可以写入数据流。数据流可以被存储在在分布式系统100的节点802中包括的分区(或多个)中。例如,管理节点802d包括包含分区812a的分区812。每个分区812可以包括消息序列。分区812中的一些、没有或全部可以与特定数据流相关联(以及分区812中的一些、没有或全部可以与一个或者多个其他数据流相关联)。管理节点802d可以包括或可以不包括其管理的数据流的主分区(或多个)。数据流的部分或全部分区可以被包括在与管理节点802d不同的本地节点中。
例如,本地节点802c包括包含分区814a的分区814。分区814的一些或全部可以与数据流相关联,并且分区814的一些可以与一个或多个其他数据流相关联。本地节点802c可以包括管理在本地节点802c中包括的分区814的本地代理816。
读取器806和写入器808每个可以是可以在一个或多个节点802上和/或在另一个节点或系统上运行的处理。如下面更详细描述的,在可以被称为读取器饥饿的情况下,读取器806可能在尝试从由慢速写入器808提供的数据流中读取数据的同时阻止其他工作。为了避免和/或管理读取器饥饿,管理诸如节点802c的节点可以使用级别信息818来管理分区的级别。
级别信息818可以包括关于由管理代理811管理的数据流的数据流图。管理代理811可以管理数据流图中的级别,使得每个级别包括对于给定写入器808的至多一个分区。如果与当前级别相关联的特定分区将被关闭(例如,因为特定分区已满或者已经做出一些其他确定来关闭分区),则当前级别可以被关闭。可以将关闭级别指令发送到包括与当前级别关联的分区的所有本地节点。例如,管理代理811可以向本地代理816发送关闭级别指令以用于关闭分区814a。
关闭级别指令可以与关闭最终期限(closing deadline)相关联。例如,关闭级别指令可以包括特定关闭最终期限(例如,“在一分钟内关闭”)。例如,管理代理811可以确定并在关闭级别指令中包括关闭最终期限。关闭最终期限可以是从设置区域820检索的数据流级别设置。又如,关闭最终期限可以是从设置区域820或从另一个节点(例如,与多个数据流相关联的中央节点(未示出))检索的系统级别设置。例如,可以从在管理客户端设备804上运行的客户端应用821接收数据流级别设置和/或系统级别设置。
又如,关闭最终期限可以由每个本地节点确定例如,本地代理816可以从设置区域822确定关闭最终期限。例如,关闭最终期限可以是每分区或每本地节点设置。再如,本地代理816可以诸如根据统计824来动态确定关闭最终期限。统计824可以包括关于最近写入速率、最近读取速率、最近读取器或写入器的数量或关于分区814a使用的其他信息的信息。
一旦分区814a关闭,本地代理816可以拒绝来自请求写入分区814a的写入器808的写入分区请求。接收拒绝的写入器808可以从管理代理811请求新分区。管理代理811可以识别用于写入器808的新分区,将新分区与新级别相关联,并且更新级别信息818。以下将更详细地描述级别的使用。
节点802、读取器和管理客户端设备804中的每一个可以是任何计算机或处理设备,例如刀片服务器、通用个人计算机(PC)、工作站、基于UNIX的工作站或者任何其他合适的设备。换句话说,本公开考虑除了通用计算机之外的计算机以及没有传统操作系统的计算机。此外,节点802和管理客户端设备804可适用于执行任何操作系统,包括Linux、UNIX、Windows、MacJavaTM、AndroidTM、iOS或任何其他合适的操作系统。根据一个实现方式,一个或多个节点802还可以包括电子邮件服务器、Web服务器、高速缓存服务器、流式数据服务器和/或其他合适的服务器,或与其通信地耦合。
由管理节点802d、本地节点802c和管理客户端设备804分别使用接口830、832和834,用于与连接到网络810的分布式环境中——包括系统800内——的其他系统进行通信。通常,接口830、832和834的每个包括以适当的组合在软件和/或硬件中编码并且可操作以与网络810通信的逻辑。更具体地,接口830、832和834的每个可以包括支持与通信相关联的一个或多个通信协议的软件,使得网络810或接口的硬件可操作以在所示系统800内部和外部进行物理信号通信。
管理节点802d和本地节点802s的每个分别包括一个或多个处理器836或838。处理器836和838中的每一个可以是中央处理单元(CPU)、刀片、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他合适的组件。通常,处理器836和838中的每一个执行指令并操纵数据以执行数据库系统802的操作。
不管具体的实现方式如何,“软件”可以包括计算机可读指令、固件、有线和/或编程硬件,或其在有形介质上的任何组合(适当时为临时或非临时的),其在运行时至少执行本文描述的处理和操作。实际上,每个软件组件可以完全或部分地以任何适当的计算机语言来编写或描述,包括C、C++、JavaTM、Visual Basic、汇编程序、任何合适版本的4GL以及其他。虽然图8中所示的软件的一部分被示出为通过各种对象、方法或其他处理实现各种特征和功能的各个模块,但是适当时软件可以替换地包括多个子模块、第三方服务、组件、库等。相反,各种组件的特征和功能可以根据需要被组合为单个组件。
管理节点802d和本地节点802c分别包括存储器840或842。在一些实现方式中,数据库系统802包括多个存储器。存储器840和842的每个可以包括任何类型的存储器或数据库模块,并且可以采取易失性和/或非易失性存储器的形式,包括但不限于磁介质、光学介质、随机存取存储器(RAM)、只读存储器(ROM)、可移动介质或任何其他合适的本地或远程存储器组件。存储器840和842的每个可以存储各种对象或数据,包括缓存、类、框架、应用程序、备份数据、业务对象、作业、网页、网页模板、数据库表、数据库查询、存储商业和/或动态信息的存储库以及包括与分布式系统800的目的相关联的任何参数、变量、算法、指令、规则、约束或对其的引用的任何其他适当信息。
管理客户端设备804通常可以是任何计算设备,其可操作以使用有线或无线连接经由网络810连接到分布式系统800或在分布式系统800内通信。通常,管理客户端设备804包括电子计算机设备,其可操作以接收、发送、处理和存储与图8的系统800相关联的任何适当的数据。管理客户端设备804可以包括一个或多个客户端应用,包括客户端应用821。客户端应用是允许管理客户端设备804请求和查看管理客户端设备804上的内容的任何类型的应用。在一些实现方式中,客户端应用可以使用在启动时接收的参数、元数据和其他信息来访问来自分布式系统800的特定数据集。在一些情况下,客户端应用可以是在企业服务器(未示出)上运行的一个或多个企业应用的代理或客户端侧版本。
客户端设备804还包括一个或多个处理器844。在管理客户端设备804中包括的每个处理器844可以是中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他合适的组件。通常,在管理客户端设备804中包括的每个处理器844执行指令并操纵数据以执行管理客户端设备804的操作。
管理客户端设备804通常旨在包含任何客户端计算设备,诸如膝上型/笔记本计算机、无线数据端口、智能电话、个人数据助理(PDA)、平板计算设备、这些设备内的一个或多个处理器、或者任何其他合适的处理设备。例如,客户端设备804可以包括计算机,该计算机包括输入设备——诸如小键盘、触摸屏或可以接受用户信息的其他设备——以及传送与分布式系统800或管理客户端设备804本身的操作相关联的信息的输出设备,包括数字数据、可视信息或图形用户界面(GUI)846。
为了任何合适的目的,包括生成客户端应用821的视觉表示,管理客户端设备804的GUI 846与系统800的至少一部分接口。具体地,GUI 846可以用于查看和导航各种网页。通常,GUI 846向用户提供由系统提供或在系统内通信的业务数据的有效且用户友好的呈现。GUI 846可以包括具有交互式字段、下拉列表和由用户操作的按钮的多个可定制的框或视图。GUI 846考虑任何合适的图形用户界面,诸如通用web浏览器、智能引擎和命令行界面(CLI)的组合,其处理信息并有效地向用户可视地呈现结果。
包括在管理客户端设备804中的存储器848可以包括任何存储器或数据库模块,并且可以采取易失性或非易失性存储器的形式,包括但不限于磁介质、光学介质、随机存取存储器(RAM)、只读存储器(ROM)、可移动介质或任何其他合适的本地或远程存储器组件。存储器846可以存储各种对象或数据,包括用户选择、高速缓存、类、框架、应用、备份数据、业务对象、作业、网页、网页模板、数据库表、存储商业和/或动态信息的存储库、以及任何其他适当的信息,包括与管理客户端设备804的目的相关联的任何参数、变量、算法、指令、规则、约束或对其的引用。
可以有与系统800相关联或在系统800外部的任何数量的管理客户端设备804。例如,虽然所示系统800包括一个管理客户端设备804,但是系统800的替代实现方式可以包括可通信地耦合到网络810的多个管理客户端设备804,或适合于系统800的任何其他数量的管理客户端设备804。另外,系统800的所示部分外部还可以存在一个或多个附加的管理客户端设备804,其能够通过网络810与系统800交互。此外,在不脱离本公开的范围的情况下,术语“客户端”、“客户端设备”和“用户”可以在适当时互换使用。此外,虽然管理客户端设备804是按照单个用户使用的方式来描述的,但是本公开预期许多用户可以使用一台计算机,或者一个用户可以使用多台计算机。
图9是示出数据流(例如,数据流“X”)的有向图900。写入器“w0”902和写入器“w1”904已将数据写入数据流。已经创建了五个分区“p0”906、“p1”908、“p2”910、“p3”912和“p4”914以保存写入数据流的数据,其中,五个分区驻留在在分布式系统中的相同或不同的节点上。由给定写入器向数据流写入数据可以由有向图900中的单个边路径来表示。每个边与特定写入器相关联并且用时间点指示符(例如,“t0”916)注释,其指示特定写入器开始写入分区的时间点(例如,在时间t0 916,写入器902开始写入到p0分区906)。
给定写入器的边将写入器在数据流中写入的所有分区连接。w0写入器902已经写入到p0分区906、p2分区910和p4分区914。w1写入器904已经写入到p1分区908、p2分区910和p3分区912。
p1分区908和p2分区910之间的虚线边918指示数据流的管理代理决定在p2分区910中结合w0写入器902和w1写入器904的路径(例如,让两个写入器写入到p2分区910)。在稍后的时间点,写入器902和904被指示再次写入单独的分区(例如,分别是分区p4 914和分区p3 912)。
例如,当当前分区已满时,可以指示写入器写入不同的分区。例如,分区可以具有预定义或可配置的最大大小。与任意大的分区相比,例如,可以使用分区大小上限来提高应用的性能。由于其他原因,本地代理可以指示写入器写入不同的分区。例如,本地代理可以确定写入分区请求的当前负载大于阈值负载,并且可以确定拒绝一定数量的后续写入分区请求以将即将到来的负载减小到小于阈值负载。
本地代理可以响应于写入分区请求向写入器提供指示写入器应请求新分区的信息。例如,写入器w0 902可以从p0分区的本地代理接收指示p0分区906已满的响应。写入器w0 902可以将写入意向请求发送到数据流的管理代理以用于新目标分区(例如,要写入的分区)。管理代理可以将关于p2分区910的托管信息提供给写入器w0 902,使得写入器w0902能够向p2分区910发送写入分区请求。
类似地,写入器w1 904可以从本地代理接收对p1分区908的响应,指示不再允许写入p1分区908。w1写入器904可以将写入意向请求发送到数据流的管理代理以用于新目标分区,并且接收关于p2分区910的托管信息。例如,管理代理可以决定w0 902和w1 904写入器两者均可以写入相同的p2分区910。
当p2分区变满时,w0 902和w1 904写入器的每个可以得到指示p2分区不再可用于写入的消息。w0写入器902可以向管理代理发送写入意向请求以用于新的目标分区,并且接收关于p4分区914的托管信息。类似地,w1写入器904可以向管理代理发送写入意向请求以用于新的目标分区,并接收关于p3分区912的托管信息。
数据流的管理代理可以指示读取器以何种顺序读取数据流的分区,以满足顺序保存策略,即每个单独写入器的所有消息可以由读取器按照它们被写入的顺序来读取。由有向图900示出的数据流的管理代理可以指示读取器按以下分区的序列从数据流中读取:p0,p1,p2,p3,p4。另一个有效的读取序列可以是:p1,p0,p2,p4,p3。由于写入器w0 902和写入器w1 904两者已经写入到p2分区910,因此p2分区910可以是同步点。要在p2分区910之前读取分区p0 906和p1 908两者。
图10是示出可以与读取器饥饿相关联的数据流的有向图1000。读取器饥饿是以下情况,即单个慢速写入器(例如,以低于阈值的速率写入)会减慢数据流的一些或全部读取器,即使由其他更快的写入器写入的数据可用并且将允许更高的整体读取速率。例如,如果现实世界事件的频率低(例如,组件的温度在给定时间段内变化不大或完全没有变化),写入器可能是慢速写入器。又如,组件可能出现故障,因此不能在给定时间段内写入数据。哪些写入器可能是慢速写入器可能很难预测,因为写入速率的波动可能是由各种各样的原因造成的。
在有向图1000中,w0写入器1002和w1写入器1004正在写入数据流。w0写入器1002是比w1写入器更快的写入器。w0写入器1002已经写入到p0 1006、p2 1008、p3 1010和p41012分区。w1写入器1004仅写入到p1分区1014。数据流的管理代理可以指示读取器在其他分区之前从p1分区1014读取。在从其他分区读取数据之前,读取器可以从p1分区1014读取(可能在数据仍被写入到p1分区1014的过程中),直到p1分区1014被填满并关闭为止。读取器的读取速率因此可能由于较慢写入器w1 1004的写入速率而受限。如下所述,数据流的管理代理可以创建和管理分区的级别以避免读取器饥饿。分区可以被分组为不同的级别,并且当分区的一个级别关闭时(例如,由于已满),同一级别的所有其他分区也可以关闭,这可以是关闭可能最近没有被写入过或者可能与慢速写入器相关联的“过时”分区的一种方式。
图11是示出使用分区的级别的有向图1100。级别可以被用于关闭慢速写入器的分区的进一步写入操作(即使它们未被填满)以避免读取器饥饿。有向图1100被分成被称为级别的顶点的不相交子集。有向图1100示出先前参照图9讨论的数据流“x”的级别组织。当使用级别组织时,每个级别每个特定写入器最多可能有一个分区。例如,第一级别“L1”1102包括分区p0 906和p1 908。利用级别组织,在级别中包括的所有分区输出边仅指向在更高级别中包括的分区(例如,到根级别具有更大距离)。
当有向图1100增长时(例如,当添加新分区时),可以添加新级别。例如,p0分区906可以在创建时被分配给第一级L1 1102。P1分区908也可以在创建时被分配给第一级L11102,因为第一级L1 1102当前不包括由w1写入器904使用的分区。通常,如果在当前级别中没有用于当前分区的写入器,则可以将新创建的分区添加到当前级别(例如,创建的最新级别)。在一些实现方式中,管理代理使用计数器来识别和调整当前级别。
当为写入器创建新分区时,在先前分区被填满后,可以创建新分区。例如,当w0写入器902开始写入到p2分区910时,p2分区910可以被分配给第二级“L2”1104。P2分区910可以被添加到第二级L2 1104而不是第一级L1 1102,因为第一级L2 1102已经包括由写入器w0 902使用的分区(例如,分区p0 906)。
当创建第二级L2 1104时,可以关闭先前级别(例如,第一级别L1 1102)中的分区。例如,管理代理可以将关闭分区消息发送到托管p0分区906和p1分区908的本地代理(或多个)。如果w0写入器902或w1写入器904是慢速写入器,则关闭第一级别L1 1102可以使得读取器能够读取分区p0 906和/或p1 908并且可能继续读取其他分区,而不用等待p0 906或p1908分区被填满。
第三级别“L3”1106包括p3分区912和p4分区914。例如,可以在为w1写入器904创建p3分区912时创建第三级L3 1106。当w0写入器在时间点t5需要新分区时,可以创建p4分区914并将其添加到第三级别L3 1106。
图12是表示数据流中的级别的有向图1200。有向图1200是在以上关于图11描述的有向图1100中包括的级别的表示。顶点1202表示包括p0和p1分区1204的第一级别L1 1102。顶点1206表示包括p2分区1208的第二级别L2 1104。顶点1210表示包括分区p3和p4 1212的第三级别L3 1106。
图13是示出使用级别用于防止读取器饥饿的有向图1300。有向图1300示出写入到数据流“z”的四个写入器w0 1302、w1 1304、w2 1306和w3 1308。在时间点t0 1310、t1 1312和t2 1314,写入器w0 1302、w1 1304和w2 1306分别开始分别写入到分区p0 1316、p1 1318和p2 1320。在第一级别L1 1321中创建p0 1316、p1318和p2 1320分区。
在时间点t3 1322处,p0分区1316由于被填满而被关闭,并且在新的第二级L21326中创建新分区p3 1324。当创建第二级别L2 1326时,对第一级别L1 1321触发关闭操作。关闭操作可以包括在包含分区p1 1318和p2 1320的节点上向本地代理发送的关闭级别请求,分别指示p1 1318和p2 1320分区将被关闭。
关闭级别请求可以包括最终期限信息,其可以指示级别中的所有分区将被关闭的时间。又如,最终期限信息可以由节点通过系统或流级别配置设置来访问。例如,最终期限信息可以指示分区将在接收到关闭级别请求之后不迟于一分钟关闭。
本地代理可以确定是在接收到关闭级别请求之后立即关闭分区,还是让分区保持开启更长的时间,可能是直到最后最终期限。本地代理可以使用各种因素来确定是否立即关闭分区,包括关于分区过去或预期使用情况的信息。例如,本地代理可以基于关于当前写入速率、当前读取速率、在最近时间窗内从分区读取的读取器的数量、在最近时间窗口内写入分区的写入器的数量等的统计数据来决定何时关闭分区。
可能期望保持一些分区开启更长时间以使用为分区配置的空间并且允许部分写入器——特别是以高于阈值的频率写入的写入器——继续向分区写入更多数据直到最终期限为止。然而,可能不期望在最终期限之前让所有分区保持开启。如果所有分区在最终期限或接近最终期限时关闭,则对那些分区的后续写入分区请求可能会被拒绝,并且作为对拒绝的响应,对相同时间窗的数据流,可能向管理代理发送对新分区的多个写入意向请求,这可能导致管理代理上的不希望的负载。
在一些实现方式中,可以使用随机性使不同分区在不同时间关闭。例如,管理代理可以被配置为在不同的随机时间向不同节点发送关闭级别请求。不同的随机时间可以在已经确定关闭级别之后的特定时间窗内,并且每个随机时间可以在最终期限之前。又如,本地代理可以在确定在最终期限之前何时以及是否关闭分区时包括随机因素。又如,可以对于不同的节点或分区(由管理代理或本地代理)确定不同的随机最终期限。可以设置不同的随机最终期限,使得所有不同的随机最终期限在特定时间窗内。
不同最终期限根据节点变化的程度可以是配置设置,其可以被应用于系统级别或数据流级别。其他配置设置可以是系统级别或数据流级别,诸如当使用恒定的最终期限时间窗时的全局或数据流级别设置(例如,系统或数据流可以被配置为使得一个级别的所有分区将在级别关闭后一分钟内关闭)。例如,配置设置可以指定构成快速写入器或慢速写入器的阈值。系统或数据流级别设置可以通过编程方式和/或由管理员手动配置。因此,一般的系统和特定的数据流可以被自动或手动优化,从而实现期望的行为。
对于由有向图1300表示的数据流,p1分区1318的本地代理可以响应于接收的关闭级别请求而确定到p1分区的写入速率低(例如,低于阈值)并且p1分区1318要立即关闭。“x”1328示出p1分区1318的关闭。又如,基于确定p2分区1320的写入速率和填满百分比,用于p2分区1320的本地代理可以在接收到关闭级别请求之后确定暂时保持p2分区1320开启,以便在关闭最终期限之前尝试更多填满p2分区1320。
关闭请求之后可能发生各种类型的操作。例如,在关闭级别请求之后但在最终期限之前的时间点t4 1330处,w3写入器1308可以请求写入到数据流。可以在第二级别L21326中创建新分区p4 1332并将其分配给w3写入器1308。可以拒绝来自w1写入器1304的写入到关闭的p1分区1318的新写入分区请求,并且w1写入器1304可以在接收到拒绝之后请求新分区写入。管理代理可以决定指示w1写入器1304在时间点t5 1334开始写入现有p3分区1324。w2写入器1306可以在关闭最终期限之前填满p2分区1320,并且可以在p2分区1320被填满之后请求新分区写入。可以在第二级别L2 1326中创建p5分区1336,并且w2写入器1306可以在时间点t6 1338开始写入到p5分区1336。
图14是用于防止分布式系统中的读取器饥饿的示例方法1400的流程图。应该理解,方法1400和相关方法可以适当地例如通过任何合适的系统、环境,软件和硬件,或者系统、环境、软件和硬件的组合来执行。例如,可以使用客户端、服务器或其他计算设备中的一个或多个来执行方法1400和相关方法,并从客户端、服务器或其他计算设备的存储器获得任何数据。在一些实现方式中,方法1400和相关方法由上面关于图8描述的系统800的一个或多个组件执行。例如,方法1400和相关方法可以由图8的管理代理811执行。
在1402,在管理分布式系统中的第一数据流的管理节点处从用于与第一数据流相关联的分区的第一写入器处理接收第一写入意向请求。
在1404,为第一写入器处理识别第一分区。第一分区位于分布式系统中的第一本地节点上。第一本地节点可以是与管理节点相同或不同的节点。
在1406,响应于第一写入意向请求,为第一分区提供分区信息,以使得第一写入器处理能够写入第一分区。分区信息可以是关于第一本地节点的位置信息(例如,托管信息)。
在1408,确定第一写入器处理先前已写入到与当前级别相关联的第二分区。第二分区可以与第二个本地节点相关联。
在1410,响应于确定第一写入器处理先前已经写入与当前级别相关联的第二分区,在数据流图中创建新当前级别。
在1412,第一分区与当前级别相关联。
在1414,识别与第一级别相关联的分区,包括识别第二分区和与位于第三本地节点处的第二写入器处理相关联的第三分区。
在1416,向包括与当前级别相关联的分区的每个本地节点提供关闭级别指令,包括向第二本地节点和第三本地节点提供关闭级别指令。关闭级别指令可以包括关闭最终期限,该关闭最终期限是关闭与级别相关联的分区的时间。例如,关闭最终期限可以是数据流或系统级别设置。又如,并且如下面更详细描述的,相应本地节点可以确定关闭最终期限。如上所述,关闭分区可以使得管理节点能够从将要提供给读取器处理的大量的读取序列中进行选择,这可以避免或减少读取器饥饿。
图15是用于防止分布式系统中的读取器饥饿的示例方法1500的流程图。应该理解,方法1500和相关方法可以适当地例如通过任何合适的系统、环境、软件和硬件,或者系统、环境、软件和硬件的组合来执行。例如,可以使用客户端、服务器或其他计算设备中的一个或多个来执行方法1500和相关方法,并且从客户端、服务器或其他计算设备的存储器获得任何数据。在一些实现方式中,方法1500和相关方法由上面关于图8描述的系统800的一个或多个组件执行。例如,方法1500和相关方法可以由图8的本地代理816执行。
在1502,在第一本地节点从主代理接收关闭级别指令以关闭第一分区。
在1504,确定与关闭级别指令相关联的关闭最终期限。例如,可以识别包括在关闭级别指令中的关闭最终期限。又如,第一本地节点可以确定关闭最终期限。例如,第一本地节点可以识别至少一个关闭最终期限规则,识别与第一分区关联的节点级别状态信息,并且基于关闭最终期限规则(或多个)和节点级别状态信息来计算关闭最终期限。例如,节点级别状态信息可以包括第一分区的当前写入状态、第一分区的统计写入数据或第一分区的活动读取器的数量中的一个或多个。关闭最终期限规则可以是指第一分区的当前写入状态、第一分区的统计写入数据或第一分区的活动读取器的数量中的一个或多个。例如,关闭最终期限规则可以指定如果分区的最近写入速率小于阈值则立即关闭给定分区。又如,关闭最终期限规则可以指定如果最近的写入速率大于阈值,或者如果活动写入器或活动读取器的数量多于其他相应阈值,则给定分区保持开启直到最终期限为止。
在1506,应用关于最终期限,包括接受在接收关闭级别指令之后且关闭最终期限之前接收的对第一分区的写入分区请求。
在1508,通过确定的关闭最终期限关闭第一分区。
在1510,拒绝在关闭最终期限之后接收的来自写入器处理的写入分区请求。每个拒绝可以包括对于各个写入器处理请求新分区的指示。新分区可能与新级别相关联。
前面的附图和伴随的描述示出了示例性处理和计算机可实现的技术。但是系统800(或其软件或其他组件)预期使用,实现或执行用于执行这些和其他任务的任何合适的技术。应该理解,这些处理仅用于说明目的,并且描述的或类似的技术可以在任何适当的时间执行,包括同时地、单独地或组合地执行。另外,这些处理中的许多操作可以同时地,并发地和/或以不同于所示的顺序进行。此外,只要方法保持适当,系统800可以使用具有附加操作,更少操作和/或不同操作的处理。
换句话说,虽然已经根据特定实施例和通常相关联的方法描述了本公开,但是这些实施例和方法的改变和置换对于本领域技术人员而言将是显而易见的。因此,示例实施例的以上描述不限定或限制本公开。在不脱离本公开的精神和范围的情况下,其它改变,替代和改变也是可能的。
Claims (20)
1.一种方法,包括:
在管理分布式系统中的第一数据流的管理节点处从一个或多个写入器处理中的第一写入器处理接收对于与第一数据流相关联的一个或多个分区中的第一分区的第一写入意向请求,所述第一数据流与数据流图相关联,所述数据流图包括包含当前级别的、至少一个级别的分区并且是没有有向圈的有限有向图;
识别用于第一写入器处理的第一分区,所述第一分区位于分布式系统中的第一本地节点处;
响应于第一写入意向请求,提供关于第一分区的分区信息以使得第一写入器处理能够写入第一分区;
确定第一写入器处理先前已经写入与当前级别相关联的所述一个或多个分区中的第二分区,所述第二分区与第二本地节点相关联;以及
响应于确定第一写入器处理先前已经写入与当前级别相关联的第二分区:
在数据流图中创建所述至少一个级别的分区的新的当前级别,其中在数据流图中创建新的当前级别使得对当前级别触发关闭操作;
将第一分区与新的当前级别相关联;
识别与当前级别相关联的分区,包括与所述一个或多个写入器处理中的第二写入器处理相关联的位于第三本地节点处的第二分区和第三分区;和
响应于对当前级别触发关闭操作,向包括与当前级别相关联的分区的每个本地节点提供关闭级别指令,包括第二本地节点和第三本地节点,其中,所述至少一个级别的分区的每个级别、所述一个或多个写入器处理的每个特定写入器处理最多存在所述至少一个分区的级别的单个分区。
2.根据权利要求1所述的方法,还包括:
从第三写入器处理接收对于与第一数据流相关联的第四分区的第二写入意向请求;
识别用于第三写入器处理的第四分区,所述第四分区位于分布式系统中的第四本地节点处;
响应于第二写入意向请求,提供关于第四分区的分区信息以使得第三写入器处理能够写入第四分区;
确定第三写入器处理先前没有写入与新的当前级别相关联的任何分区;以及
将第四分区与新的当前级别相关联。
3.根据权利要求1所述的方法,还包括:
在第二本地节点处接收关闭第二分区的关闭级别指令;
确定与关闭级别指令相关联的关闭最终期限作为确定的关闭最终期限;以及
应用确定的关闭最终期限。
4.根据权利要求3所述的方法,其中,应用确定的关闭最终期限包括:
接受在接收关闭级别指令之后且在确定的关闭最终期限之前接收的对于第二分区的写入分区请求;
在确定的关闭最终期限关闭第二分区;以及
拒绝在关闭最终期限之后接收的对于第二分区的写入分区请求。
5.根据权利要求3所述的方法,其中,确定关闭最终期限包括识别关闭级别指令中的关闭最终期限。
6.根据权利要求3所述的方法,其中,确定关闭最终期限包括:
识别至少一个关闭最终期限规则;
识别与第二分区相关联的状态信息;以及
基于至少一个关闭最终期限规则和与第二分区相关联的状态信息来计算关闭最终期限。
7.根据权利要求6所述的方法,其中,与第二分区相关联的状态信息包括第二分区的当前写入状态、第二分区的统计写入数据或第二分区的活动读取器的数量中的至少一个。
8.根据权利要求3所述的方法,其中,确定关闭最终期限包括确定立即关闭第二分区。
9.根据权利要求3所述的方法,其中,关闭最终期限是与第一数据流相关联的数据流级别设置。
10.根据权利要求3所述的方法,其中,关闭最终期限是与分布式系统相关联的系统级别设置。
11.根据权利要求1所述的方法,其中,第一写入器处理在被通知第二分区已满之后发送第一写入意向请求。
12.一种系统,包括:
一个或多个计算机;以及
计算机可读介质,耦合到其上存储有指令的一个或多个计算机,所述指令在由一个或多个计算机运行时使一个或多个计算机执行以下操作,包括:
在管理分布式系统中的第一数据流的管理节点处从一个或多个写入器处理中的第一写入器处理接收对于与第一数据流相关联的一个或多个分区中的第一分区的第一写入意向请求,所述第一数据流与数据流图相关联,所述数据流图包括包含当前级别的、至少一个级别的分区并且是没有有向圈的有限有向图;
识别用于第一写入器处理的第一分区,所述第一分区位于分布式系统中的第一本地节点处;
响应于第一写入意向请求,提供关于第一分区的分区信息以使得第一写入器处理能够写入第一分区;
确定第一写入器处理先前已经写入与当前级别相关联的所述一个或多个分区中的第二分区,所述第二分区与第二本地节点相关联;以及
响应于确定第一写入器处理先前已经写入与当前级别相关联的第二分区:
在数据流图中创建所述至少一个级别的分区的新的当前级别,其中在数据流图中创建新的当前级别使得对当前级别触发关闭操作;
将第一分区与新的当前级别相关联;
识别与当前级别相关联的分区,包括与所述一个或多个写入器处理中的第二写入器处理相关联的位于第三本地节点处的第二分区和第三分区;和
响应于对当前级别触发关闭操作,向包括与当前级别相关联的分区的每个本地节点提供关闭级别指令,包括第二本地节点和第三本地节点,其中,所述至少一个级别的分区的每个级别、所述一个或多个写入器处理的每个特定写入器处理最多存在所述至少一个分区的级别的单个分区。
13.根据权利要求12所述的系统,所述操作还包括:
从第三写入器处理接收对于与第一数据流相关联的第四分区的第二写入意向请求;
识别用于第三写入器处理的第四分区,所述第四分区位于分布式系统中的第四本地节点处;
响应于第二写入意向请求,提供关于第四分区的分区信息以使得第三写入器处理能够写入第四分区;
确定第三写入器处理先前没有写入与新的当前级别相关联的任何分区;以及
将第四分区与新的当前级别相关联。
14.根据权利要求12所述的系统,所述操作还包括:
在第二本地节点处接收关闭第二分区的关闭级别指令;
确定与关闭级别指令相关联的关闭最终期限作为确定的关闭最终期限;以及
应用确定的关闭最终期限。
15.根据权利要求14所述的系统,其中,应用确定的关闭最终期限包括:
接受在接收关闭级别指令之后且在确定的关闭最终期限之前接收的对于第二分区的写入分区请求;
在确定的关闭最终期限关闭第二分区;以及
拒绝在关闭最终期限之后接收的对于第二分区的写入分区请求。
16.根据权利要求14所述的系统,其中,确定关闭最终期限包括识别关闭级别指令中的关闭最终期限。
17.一种非临时性存储介质,包括用于使一个或多个处理器执行操作的非临时性计算机可读指令,所述操作包括:
在管理分布式系统中的第一数据流的管理节点处从一个或多个写入器处理中的第一写入器处理接收对于与第一数据流相关联的一个或多个分区中的第一分区的第一写入意向请求,所述第一数据流与数据流图相关联,所述数据流图包括包含当前级别的、至少一个级别的分区并且是没有有向圈的有限有向图;
识别用于第一写入器处理的第一分区,所述第一分区位于分布式系统中的第一本地节点处;
响应于第一写入意向请求,提供关于第一分区的分区信息以使得第一写入器处理能够写入第一分区;
确定第一写入器处理先前已经写入与当前级别相关联的所述一个或多个分区中的第二分区,所述第二分区与第二本地节点相关联;以及
响应于确定第一写入器处理先前已经写入与当前级别相关联的第二分区:
在数据流图中创建所述至少一个级别的分区的新的当前级别,其中在数据流图中创建新的当前级别使得对当前级别触发关闭操作;
将第一分区与新的当前级别相关联;
识别与当前级别相关联的分区,包括与所述一个或多个写入器处理中的第二写入器处理相关联的位于第三本地节点处的第二分区和第三分区;和
响应于对当前级别触发关闭操作,向包括与当前级别相关联的分区的每个本地节点提供关闭级别指令,包括第二本地节点和第三本地节点,其中,所述至少一个级别的分区的每个级别、所述一个或多个写入器处理的每个特定写入器处理最多存在所述至少一个分区的级别的单个分区。
18.根据权利要求17所述的非临时性存储介质,所述操作还包括:
从第三写入器处理接收对于与第一数据流相关联的第四分区的第二写入意向请求;
识别用于第三写入器处理的第四分区,所述第四分区位于分布式系统中的第四本地节点处;
响应于第二写入意向请求,提供关于第四分区的分区信息以使得第三写入器处理能够写入第四分区;
确定第三写入器处理先前没有写入与新的当前级别相关联的任何分区;以及
将第四分区与新的当前级别相关联。
19.根据权利要求18所述的非临时性存储介质,所述操作还包括:
在第二本地节点处接收关闭第二分区的关闭级别指令;
确定与关闭级别指令相关联的关闭最终期限作为确定的关闭最终期限;以及
应用确定的关闭最终期限。
20.根据权利要求19所述的非临时性存储介质,其中,应用确定的关闭最终期限包括:
接受在接收关闭级别指令之后且在确定的关闭最终期限之前接收的对于第二分区的写入分区请求;
在确定的关闭最终期限关闭第二分区;以及
拒绝在关闭最终期限之后接收的对于第二分区的写入分区请求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/604,019 US10728186B2 (en) | 2017-05-24 | 2017-05-24 | Preventing reader starvation during order preserving data stream consumption |
US15/604,019 | 2017-05-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108933813A CN108933813A (zh) | 2018-12-04 |
CN108933813B true CN108933813B (zh) | 2022-04-05 |
Family
ID=62562933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810503748.1A Active CN108933813B (zh) | 2017-05-24 | 2018-05-23 | 防止读取器饥饿的方法、系统和存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10728186B2 (zh) |
EP (1) | EP3407196B1 (zh) |
CN (1) | CN108933813B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10541953B2 (en) * | 2017-12-13 | 2020-01-21 | Chicago Mercantile Exchange Inc. | Streaming platform reader |
US11070600B1 (en) * | 2018-07-16 | 2021-07-20 | Amazon Technologies, Inc. | Optimization techniques to support lagging readers at streaming data service |
CN110321172B (zh) * | 2019-06-03 | 2022-04-19 | 平安科技(深圳)有限公司 | 网络块设备的分区识别方法、装置、设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6023720A (en) * | 1998-02-09 | 2000-02-08 | Matsushita Electric Industrial Co., Ltd. | Simultaneous processing of read and write requests using optimized storage partitions for read and write request deadlines |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5408663A (en) | 1993-11-05 | 1995-04-18 | Adrem Technologies, Inc. | Resource allocation methods |
US7334228B2 (en) | 2001-07-27 | 2008-02-19 | International Business Machines Corporation | Runtime-resource management |
GB2426887B (en) * | 2005-06-04 | 2009-01-07 | Ibm | Client responsibilities in messaging systems |
US7752625B2 (en) | 2005-06-17 | 2010-07-06 | International Business Machines Corporation | Caching resources requested by applications |
US7873615B2 (en) | 2005-12-14 | 2011-01-18 | Sap Ag | Control object based report generation using a central class |
US7894602B2 (en) | 2006-03-31 | 2011-02-22 | Sap Ag | System and method for generating pseudo-random numbers |
EP2076874A4 (en) | 2006-05-13 | 2011-03-09 | Sap Ag | DERIVED CONSISTENT SET OF INTERFACES DERIVED FROM A BUSINESS OBJECT MODEL |
US9009058B2 (en) | 2008-01-10 | 2015-04-14 | At&T Intellectual Property I, L.P. | Aiding creation of service offers associated with a service delivery framework |
US8468172B2 (en) | 2010-05-14 | 2013-06-18 | Sap Ag | Integrated application server and data server processes with matching data formats |
WO2012003779A1 (en) | 2010-07-03 | 2012-01-12 | Vitacount Limited | Resource hubs for heterogeneous groups |
US8352427B2 (en) | 2010-07-30 | 2013-01-08 | Sap Ag | System integration architecture |
US20120144501A1 (en) | 2010-12-03 | 2012-06-07 | Salesforce.Com, Inc. | Regulating access to protected data resources using upgraded access tokens |
CA2820128C (en) | 2010-12-09 | 2015-07-21 | Allot Communications Ltd. | Device, system and method of traffic detection |
US9165134B2 (en) | 2011-03-08 | 2015-10-20 | Telefonica, S.A. | Method for providing authorized access to a service application in order to use a protected resource of an end user |
US8261295B1 (en) | 2011-03-16 | 2012-09-04 | Google Inc. | High-level language for specifying configurations of cloud-based deployments |
US9098549B2 (en) | 2011-08-17 | 2015-08-04 | Sap Se | Method for bundled preparation and execution of multiple database statements |
US9348668B2 (en) | 2011-09-15 | 2016-05-24 | Oracle International Corporation | System and method for supporting a server-side event model in a distributed data grid |
US9350718B2 (en) | 2011-09-29 | 2016-05-24 | Oracle International Corporation | Using representational state transfer (REST) for consent management |
EP2575315A1 (en) | 2011-09-30 | 2013-04-03 | British Telecommunications Public Limited Company | Controlled access |
CA2889387C (en) | 2011-11-22 | 2020-03-24 | Solano Labs, Inc. | System of distributed software quality improvement |
US9002813B2 (en) | 2011-12-22 | 2015-04-07 | Sap Se | Execution plan preparation in application server |
US9116906B2 (en) | 2012-06-12 | 2015-08-25 | Sap Se | Centralized read access logging |
CA2779993C (en) | 2012-06-15 | 2019-05-07 | Ibm Canada Limited - Ibm Canada Limitee | Configurable resource policies |
US8739124B2 (en) | 2012-06-27 | 2014-05-27 | Sap Ag | Configuring integration capabilities for system integration |
US9250884B2 (en) | 2012-07-17 | 2016-02-02 | Oracle International Corporation | Automatic deployment of software applications to meet regulatory compliance requirements |
US8762731B2 (en) | 2012-09-14 | 2014-06-24 | Sap Ag | Multi-system security integration |
US9075633B2 (en) | 2012-10-12 | 2015-07-07 | Sap Se | Configuration of life cycle management for configuration files for an application |
US9552232B2 (en) | 2013-03-12 | 2017-01-24 | Xerox Corporation | System and process to recommend cloud service cloud configuration based on service similarity |
US9317311B2 (en) | 2013-06-17 | 2016-04-19 | International Business Machines Corporation | Generating a deployment pattern for reuse in a networked computing environment |
US9104432B2 (en) * | 2013-06-24 | 2015-08-11 | International Business Machines Corporation | Extracting stream graph structure in a computer language by pre-executing a deterministic subset |
US9720989B2 (en) * | 2013-11-11 | 2017-08-01 | Amazon Technologies, Inc. | Dynamic partitioning techniques for data streams |
US9794135B2 (en) * | 2013-11-11 | 2017-10-17 | Amazon Technologies, Inc. | Managed service for acquisition, storage and consumption of large-scale data streams |
US10146824B2 (en) | 2013-11-25 | 2018-12-04 | Sap Se | Database job description and scheduling |
US9639589B1 (en) * | 2013-12-20 | 2017-05-02 | Amazon Technologies, Inc. | Chained replication techniques for large-scale data streams |
US9065819B1 (en) | 2013-12-23 | 2015-06-23 | Cellco Partnership | Single sign on (SSO) authorization and authentication for mobile communication devices |
US10656971B2 (en) | 2014-01-31 | 2020-05-19 | Dell Products L.P. | Agile framework for vertical application development and delivery |
US9781097B2 (en) | 2014-02-18 | 2017-10-03 | Secureauth Corporation | Device fingerprint updating for single sign on authentication |
US20150365275A1 (en) | 2014-06-12 | 2015-12-17 | Hristo Iliev | Cloud environment configuration for cloud applications |
US9817645B2 (en) | 2014-09-17 | 2017-11-14 | Sap Se | Reusable application configuration with dynamic resource determination |
CN106549990A (zh) * | 2015-09-18 | 2017-03-29 | 阿里巴巴集团控股有限公司 | 一种分布式数据的处理方法和系统 |
-
2017
- 2017-05-24 US US15/604,019 patent/US10728186B2/en active Active
-
2018
- 2018-05-22 EP EP18173566.3A patent/EP3407196B1/en active Active
- 2018-05-23 CN CN201810503748.1A patent/CN108933813B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6023720A (en) * | 1998-02-09 | 2000-02-08 | Matsushita Electric Industrial Co., Ltd. | Simultaneous processing of read and write requests using optimized storage partitions for read and write request deadlines |
Non-Patent Citations (3)
Title |
---|
A streaming graph partitioning approach on imbalance cluster;Yang Cao 等;《IEEE》;20160303;全文 * |
Apache Kafka;Anonymous;《URL:http://web.archive.org/web/20150927133454/http:/lkafka.apache.org/documentation.html#introduction》;20150927;全文 * |
基于Spark Streaming流技术的机动车缉查布控系统设计;陈丽等;《顺德职业技术学院学报》;20161030(第04期);第10-14页 * |
Also Published As
Publication number | Publication date |
---|---|
US20180343213A1 (en) | 2018-11-29 |
EP3407196A1 (en) | 2018-11-28 |
EP3407196B1 (en) | 2021-09-08 |
US10728186B2 (en) | 2020-07-28 |
CN108933813A (zh) | 2018-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9971823B2 (en) | Dynamic replica failure detection and healing | |
US9053167B1 (en) | Storage device selection for database partition replicas | |
US9489443B1 (en) | Scheduling of splits and moves of database partitions | |
JP2018531465A (ja) | メッセージデータを格納するためのシステム及び方法 | |
JP2018531465A6 (ja) | メッセージデータを格納するためのシステム及び方法 | |
CN109067841B (zh) | 基于ZooKeeper的服务限流方法、系统、服务器及存储介质 | |
US10409658B2 (en) | Batch processing of messages | |
CN108933813B (zh) | 防止读取器饥饿的方法、系统和存储介质 | |
US10972555B2 (en) | Function based dynamic traffic management for network services | |
US10102230B1 (en) | Rate-limiting secondary index creation for an online table | |
US10747739B1 (en) | Implicit checkpoint for generating a secondary index of a table | |
US20160378703A1 (en) | Management of allocation for alias devices | |
CN109684270A (zh) | 数据库归档方法、装置、系统、设备及可读存储介质 | |
US9898614B1 (en) | Implicit prioritization to rate-limit secondary index creation for an online table | |
US11301306B2 (en) | Apparatus, systems, and methods for remote system batch processing | |
Hegde et al. | Low latency message brokers | |
CN111404828A (zh) | 实现全局流控的方法及装置 | |
US11907551B2 (en) | Performance efficient and resilient creation of network attached storage objects | |
Shen et al. | OPCAM: Optimal algorithms implementing causal memories in shared memory systems | |
EP3267315A1 (en) | Write order preserving data stream consumption | |
US11501014B2 (en) | Secure data replication in distributed data storage environments | |
US11409796B1 (en) | Generational databases for managing time series data | |
US8892607B2 (en) | Graph transformations to correct violations of service level objections in a data center | |
US11768704B2 (en) | Increase assignment effectiveness of kubernetes pods by reducing repetitive pod mis-scheduling | |
US10705761B2 (en) | Method of and system for scheduling transmission of I/O operations |
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 |