CN102571567B - 用于在计算环境中处理消息的方法和系统 - Google Patents

用于在计算环境中处理消息的方法和系统 Download PDF

Info

Publication number
CN102571567B
CN102571567B CN201110440113.XA CN201110440113A CN102571567B CN 102571567 B CN102571567 B CN 102571567B CN 201110440113 A CN201110440113 A CN 201110440113A CN 102571567 B CN102571567 B CN 102571567B
Authority
CN
China
Prior art keywords
message
instance
instruction
processing
availability
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
Application number
CN201110440113.XA
Other languages
English (en)
Other versions
CN102571567A (zh
Inventor
M·L·楚
D·C·马努
S·H·托布
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102571567A publication Critical patent/CN102571567A/zh
Application granted granted Critical
Publication of CN102571567B publication Critical patent/CN102571567B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/23Reliability checks, e.g. acknowledgments or fault reporting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1104Session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1106Call signalling protocols; H.323 and related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/24Negotiation of communication capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/26Special purpose or proprietary protocols or architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及数据流网络中的执行节点的非贪婪消费。在数据流网络中处理消息。该方法包括,在第一实体处,从第二实体接收将处理第一消息的第一提议。该方法还包括决定并不处理第一消息。作为决定并不处理第一消息的结果,向第二实体作出这样的指示。还是作为决定并不处理第一消息的结果,存储第二实体已提供消息的指示。该指示包括与第二实体相关的指示符。在对第二实体进行指示后,使用该指示该方法包括向第二实体指示处理消息的可用性。

Description

用于在计算环境中处理消息的方法和系统
技术领域
本发明涉及计算机领域,更具体地,涉及数据流网络中的执行节点的非贪婪消费。
背景技术
计算机和计算系统已经影响到了现代生活的几乎每个方面。计算机通常在工作、消遣、保健、运输、娱乐、家政管理等中都有涉猎。
在数据流网络中,数据从一个节点传播至另一个。然而,如果不进行任何节流地传播,那么目标节点可能被其正在处理的传入数据淹没,或另选地,目标节点可能在需要之前就消费了数据,阻止了另一节点可能对其进行消费。可以使用阻塞来实现这样的节流,其中源节点等待目标节点中的可用性。然而这可能占用底层的处理器或线程。这可造成不可缩放的系统。
在此要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的各个实施例。相反,提供该背景仅用以示出在其中可实践在此描述的部分实施例的一个示例性技术领域。
发明内容
此处所述的一个实施例是在计算环境中实施的方法。该方法包括处理消息的动作。该方法包括在第一实体处从第二实体接收将处理的第一消息的第一提议。该方法还包括决定并不处理第一消息。作为决定并不处理第一消息的结果,向第二实体作出这样的指示。还是作为决定并不处理第一消息的结果,存储第二实体提供了消息的指示。该指示包括与第二实体相关的指示符。在使用该指示来指示第二实体后,该方法包括向第二实体指示处理消息的可用性。
提供本发明内容以便以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
另外的特征和优点将在以下的描述中阐述,并且部分可从该描述中显而易见,或者可以从此处的教示实践中习得。本发明的各特征和优点可以通过在所附的权利要求书中特别指出的手段和组合来实现和获得。本发明的特征将从以下描述和所附权利要求书中变得完全显而易见,或者可通过如下所述对本发明的实践而获知。
附图说明
为了描述可获得本主题的上述和其它优点和特征的方式,将通过参考附图中示出的本主题的具体实施方式来呈现以上简要描述的本主题的更具体描述。应该理解,这些附图仅描绘了各典型实施例,因此其不应被认为是对范围的限制,各实施例将通过使用附图用附加特征和细节来描述并解释,在附图中:
图1示出了包括源节点与目标节点之间的通信的框图;
图2示出了包括多个目标节点、具有缓冲区的目标节点和底层处理线程的图示的框图;以及
图3示出了一种处理消息的方法。
具体实施方式
各实施例可以实现数据流网络中的执行节点的非贪婪消费。在目标节点准备好处理数据时,目标执行节点(本文也称为目标节点)可消费数据。在一些实施例中,数据流网络中的执行节点维持输入队列以及先前提供给它们的推迟的消息和/或先前提供消息的节点的指示符集合。如果当前忙于处理足够数量的先前提交的消息,如果输入缓冲区足够满,那么节点需要来自其他实体的一些东西来处理消息,和/或出于其他原因,执行节点可选择推迟新提供的消息直至需要处理更多消息之时。在那时,它可以回调源以要求将要处理的消息。例如,它可以回调可用的最新消息。在一替换实施例中,它可以回调推迟的特定消息。在以下描述中,节点可被具体示为框,如以下更详细解释的。
现在参考图1,示出了一个基本示例。在图1的示例中,可以是计算实体的源节点102-1将提议106发送至目标节点104。提议106可以是源节点102-1已处理的某个数据或消息的提议,并需要由目标节点104或某个其他节点进一 步处理。提议106可以采用多种不同方式中的任何一种来实现。例如在一些实施例中,提议可包括将要处理的实际消息,目标节点104或者可接受并处理该消息,或者可拒绝该消息。如下所述,拒绝可以是多个不同响应中的一个或多个。例如,拒绝可以是推迟或彻底且最终的拒绝。如下将更为详尽地进行描述。在一替换实施例中,提议可以是目标节点104取得将要处理的消息的邀请以及指示目标节点104在哪里可找到将要处理的消息的指示。例如,提议106可包括指示可从哪里取得将要处理的消息的URI。
图1还示出了目标节点104向源节点102-1发送了拒绝108。拒绝108指示了目标节点104正在拒绝该提议并且将不会处理该消息或把该消息添加至目标节点的队列。使用该信息,源节点102-1可进行其他安排来处理该消息或不使得该消息被处理。但是在任何情况下,源节点102-1都知道不要等待目标节点104处理该消息。在一些实施例中,这提供了资源效率,其中底层的线程或处理器将不需要被用于等待目标节点104变得可用。
作为目标节点104拒绝提议106的结果或其中的一部分,目标节点可存储关于该提议或与该提议相关的信息。例如,目标节点104可存储标识源节点102提供的消息的指示符。如稍后将示出的,目标节点104可使用此信息来稍后要求先前在提议106中提供的完全相同的消息。然而,应当注意,在一些实施例中,可以不存储和/或使用此信息,诸如目标节点104稍后仅从源节点要求任何信息。目标节点104可存储的其他信息包括将源节点102-1标识为其提议被拒绝的节点的信息。目标节点104可用此来稍后要求先前提供的消息,或源节点102-1必须提供的其他消息。以下将更详细地示出各实施例。
再次参考图1,图1示出了目标节点104向源节点102-1发送了请求消息。请求消息是从目标节点104至源节点102-1的指示目标节点104现在准备好处理来自源节点102-1的消息的指示符。这可能是由于通过已经处理先前由目标节点104正在处理的消息,目标节点104已释放并且现在具有可用的处理资源。如以下将更详细示出的,可用的处理资源可基于并发容量和/或缓冲区或队列容量。
再次参考图1,从源节点102-1向目标节点104发送消息112。在一些实施例中,消息112可以是提议106中提供的消息。然而,如上所述以及如以下将 更详细示出的,消息112可以是与源节点102-1具有的可用于处理的消息不同的消息。消息112然后可由目标节点104来处理、置于目标节点104处的队列中供稍后处理或可执行的某个其他动作。
现在参考图2,示出了其中目标节点104包括接收多个消息来处理的能力的实施例。这可能是由于目标节点104具有缓冲能力和/或目标节点具有允许多个消息被并发处理的并发能力。
现在示出缓冲,请将注意力转向图2。图2示出了目标节点104包括缓冲区116或具有与其相关联的缓冲区116。缓冲区116可存储消息以供目标节点104处理。在示出的特定示例中,缓冲区106能够存储六个消息供稍后处理。此示例仅是说明性的,可以另选或另外地使用不同大小的和/或动态调整大小的缓冲区。目标节点可接受消息来进行处理或基于缓冲区中可用容量发送诸如请求消息110之类的请求消息。
图2进一步示出了目标节点104的并发性。具体地,目标节点104能够并发地执行多个操作(此处概括地称为118,但是在图2中具体地示为118-1、118-2和118-3)。在示出的示例中,每一操作118都能够处理消息。由此,在图3所示的示例中,目标节点104在任何给定的时间可处理九个消息,三个可以由操作118处理,六个可以存储在缓冲区116中。
在图2示出的示例中,诸如提议106的提议可以是从多个不同的源节点(示为102-1、102-2和102-3)中的一个或多个发送的。尽管示出了三个节点,但是应当理解,可以使用任何数量的源节点。此外,在一些实施例中任何给定的节点都可发送不止一个提议,即使目标节点104先前已拒绝了提议106。
如上所述,目标节点104可拒绝提议106。作为拒绝的一部分或是与其相关联的,目标节点104可存储关于来自其的提议被拒绝的源节点的信息。如上所述,可以实现一些实施例,其中目标节点还可存储关于与提议相关联的具体消息的信息。可以实现各实施例,其中目标节点104可存储关于多个源节点和/或多个消息的信息。
例如,源节点102-1、102-2和102-3中的每一个可以发送类似于提议106的提议至目标节点104。目标节点可以向源节点102-1、102-2和102-3中的每一个发送诸如拒绝108的拒绝。目标节点104还可存储关于源节点102-1、102-2 和102-3的信息。目标节点然后可确定它具有处理多个消息的能力,使用缓冲区116和/或处理多个操作118的并发能力,并由此可以使用关于源节点102-1、102-2和102-3的信息来发送诸如请求消息110(图1所示)之类的请求消息至源节点102-1、102-2和102-3中的每一个。
另外地或另选地,单个源节点102可能已发送多个诸如提议消息106之类的提议消息至目标节点104。当目标节点104已确定它具有处理多个消息的能力时并且使用存储的关于源节点的信息和/或消息,目标节点104可发送一个或多个诸如请求110之类的请求至源节点,请求与先前发送的提议相关联的一些或全部消息。在一些实施例中,目标节点104还可以仅存储来自源的一个消息,覆写关于先前提供的消息的任何信息。
尽管在以上所示的示例中,目标节点104被示作响应于提议106发送拒绝108,但应当理解,在一些实施例中目标节点104具有可发送的其他可任选的消息。例如,尽管未示出,在目标节点104接收提议106时,目标节点可以使用指示提议106已被接收并且目标节点104正在接受目标中所标识的用于处理的消息的消息来响应。另选地,目标节点104可以发送拒绝提议的消息,并指示它将永不处理提议106中所标识的消息。另选地,目标节点104可以发送拒绝提议106的消息,但指示在某个时间目标节点104将发送对于提议106所标识的消息或源节点102可提供的某个其他消息的请求110。
源节点102然后可基于目标节点104提供的响应采取不同的动作。例如,如果源节点102接收到拒绝,其指示目标节点104将永不处理提议106中所标识的消息,那么源节点102就知道它将需要查找其他节点来处理提议106中所标识的消息。另选地,如果目标节点104接收到拒绝,其指示目标节点104可能在某个时间点以请求110返回,那么源节点102可以延迟查找其他节点来处理提议106中所标识的消息。
如所示出的,以上所述的各实施例可展示多种不同功能中的一个或多个。例如,实施例可展示在处理资源变得可用时自动取回消息的功能。实施例可展示通过消费者驱动的负载平衡在数据流网络中的动态划分功能。实施例可展示跟踪被推迟的消息或提供这些消息的源以允许取回特定的消息或取回可用的最新消息的功能。实施例可展示并行处理被推迟的消息的功能。
现在示出编码的示例。具体地,代码可以存储在计算机可读介质上并由一个或多个处理器执行以实现各个数据流节点和其他功能。在当前的示例中,通过提供在数据可用时通知节点的能力的接口来表示目标数据流节点。以下示出了目标数据流块的定义:
用户代码可以使用目标节点的Post(公布)方法以使数据进入节点,而连接到目标的源节点使用目标节点的OfferMessage(提供消息)方法将数据传播至目标。可通知节点它们可通过调用DeclinePermanently()(永久拒绝)停止接受消息。
在示出的示例中,OfferMessage接受三个参数:正在提供的消息(该消息是围绕实际数据的包装,即消息载荷)、提供该消息的源的引用以及指示目标是否需要回调源来消费并承担所提供的消息的所有权的布尔标志。数据流目标节点通常是“贪婪的”,意味着它们试图接受公布和提供给它们的全部数据,而不管哪些其他目标节点也可以是从源链接的并且潜在地对该数据感兴趣。
可以有许多种目标节点,包括存在用于取得输入数据并运行用户代码以处理所提供的消息的节点。例如:
var processor=new ActionBlock<int>(i=>ProcessInteger(i));
processor.Post(1);
processor.Post(2);
这样的节点也可以链接至源节点,使得来自源节点的数据通过使用OfferMessage自动地传播至目标。下面示出了链接节点:
var source=new TransformBlock<string,int>(s=>ParseForInt(s));
var processor=new ActionBlock<int>(i=>ProcessInteger(i));
source.LinkTo(processor);
source.Post(“1”);
source.Post(“2”);
在默认的贪婪模式中,服从于开发人员施加的任何控制约束(例如,用于并发地处理处理消息的线程的最大数量),ActionBlock<TInput>维持输入队列以存储全部的输入数据,并尽可能快地处理来自队列的数据。使用无界限的输入队列,ActionBlock(动作块)将不断地接受提供给它的全部数据,对全部数据进行缓冲。
这可能有一些不利的方面。首先,它限制了对如何缓冲数据的控制。例如,开发人员可能想要ActionBlock按优先级次序来处理消息,使得在它去往缓冲区获取下一个项目时,下一个项目是已经缓冲的项目中优先级最高的项目。不使ActionBlock本身是关于它内部使用的队列可配置的,那将是具有挑战性的。其次,在源被链接至多个目标并且依次向每一目标提供消息的数据流网络中,这样的目标将阻止后续的目标获得任何数据。在以下的示例中,目标processor2将不会获得任何数据。
var source=new TransformBlock<string,int>(s=>ParseForInt(s));
var processor1=new ActionBlock<int>(i=>ProcessInteger(i));
var processor2=new ActionBlock<int>(i=>ProcessInteger(i));
source.LinkTo(processor1);
source.LinkTo(processor2);
为了解决这两个问题,可将ActionBlock(以及类似它的其他目标)配置为非贪婪的。在非贪婪时,它并不盲目地接受提供给它的全部消息。相反,它仅根据可配置的策略来接受消息。在极端情况下,可将节点配置为只有在输入队列为空并且该节点当前并没有在处理任何消息时才接受消息。可能有使用其他策略的替换实施例。例如,策略可以对队列中所允许的可接受新消息的项目数量设置上限。如果检查失败且消息无法被接受,那么它就被推迟,意味着OfferMessage向源返回了DataflowMessageStatus(数据流消息状态),指示并没有被承担消息的所有权而节点将来可能想要该消息。同时,源能够向其他节点提供消息。在目标返回已推迟时,它还将源和提供的消息的配对存储至存储 器内映射中。这允许目标持续跟踪已向它提供已被推迟的消息的源。在目标节点完成处理它当前的消息时,它检查输入队列以查看那里是否有任何可用的数据。如果有,它就从队列中移除下一个项目并对它进行处理。如果它的输入队列中没有元素,那么它就继续检查在它的已推迟的消息映射中是否有任何配对。如果有,它就根据某个策略移除一个并使用该信息回调相关的源。在这个时间点,目标节点具有若干选择。可以使用各种策略来解决推迟。例如,随机、先入先出、后入先出等。通过在源上的ConsumeMessage(消费消息)方法,实施例可以实现向源节点要求它所提供的确切消息:
如果消息仍然是在源中可用的,那么ConsumeMessage将该消息的所有权传递至目标,返回相同的消息对象或仅由目标拥有的新的消息对象。目标然后可以处理那个消费的消息,如同该消息是来自目标的输入队列那样。在它完成处理该消息时,它重复该过程。
取代消费提供给目标的确切消息,目标还可以向源要求下一个可用的消息,其可以是或也可以不是已提供的相同的消息。在以上示出的代码示例中,这是使用TryReceive(尝试接收)方法来完成的。在替换实施例中,这可以通过将空(null)传递为以上所列出的简化的IsourceBlock(I源块)接口中的消息参数。尽管这里没有枚举,可以实现多个不同的实施例来展示此功能。
由于Post旨在由用户代码直接使用,它并不服从管理OfferMessage的同样的贪婪/非贪婪行为。由此,即使OfferMessage正在推迟消息,通过Post提供的消息仍然可以存储在输入队列中,实际上相比通过OfferMessage提供的消息具有优先权。
使用此非贪婪行为,在一些实施例中可实现多种益处。例如,在一些实施例中,节点的输入队列被链接的源有效地替换。这允许源处理以其认为合适的 任何方式来处理消息。例如,源可以选择向全部链接的目标提供消息,然后如果没有目标接受该消息并且新的消息到达就丢弃该消息。如果这样的节点被链接至ActionBlock,那么这允许ActionBlock在它处理的下一个消息总是最新近到达的消息的模式中操作。示出另一示例,源可以是优先级缓冲区,对消息进行排序并根据这些消息的优先级度量来提供它们;非贪婪链接的ActionBlock然后将按照优先级次序消费并处理消息。
作为可实现的益处的另一示例,一些实施例可使用异步的基于拉(pull-based)的模型来实现简单的负载平衡。如果源被连接至多个目标,例如每个核心一个,并且这些节点中的每一个完成相同的处理,每个节点都可被配置为非贪婪的。源将向全部目标提供消息,其中目标将仅在它们准备好处理更多工作时才消费数据。这允许源在变化且动态数量的目标上传递负载平衡。例如,在一组动态目标中,数据流目标可以在任何时间从源链接或断开。
有许多这样的节点可参与这种非贪婪处理,包括对每一消息执行动作的节点(例如,ActionBlock<TInput>)、对每一消息运行函数并对每一消息产生单个输出的节点(例如,TransformBlock<TInput,TOutput>(传输块)),或者对每一消息运行函数并对每一消息产生一组输出的节点(例如,TransformManyBlock<TInput,TOutput>(变换许多块))。
如以上在图2中所示的,这样的节点可被配置为并发地完成它们内部的处理,意味着它们可支持大于1的并行度,使得多个消息可以被并行地处理。节点所采用的每一工作者可以遵循先前概述的相同的算法,首先检查数据的输入队列,然后从源取回推迟的消息。这意味着节点也能够从多个源取回推迟的消息。
以下讨论现涉及可以执行的多种方法以及方法动作。虽然用特定次序讨论或用以特定次序发生的流程图示出了各个方法动作,但除非明确规定否则不需要特定次序,或因为一动作依赖于另一动作在执行该动作之前完成而需要特定次序。
现在参考图3,示出了方法300。方法300示出了可以在计算环境中实施的方法。方法300包括处理消息的动作。方法300包括在第一实体处从第二实体接收将处理的第一消息的第一提议(动作302)。例如在图1中所示的,源 节点102-1可以发送提议106至目标节点104。例如,在一些实施例中,第二实体可以发送消息至第一实体,其中第一实体可以选择进行处理或者可以向第二实体发回消息,指示该消息将不会被处理。另选地,第二实体可发送通知消息至第一实体,指示第一消息可用来处理。
方法300还包括第一实体决定并不处理第一消息(动作304)。具体地,在一些实施例中,第一实体可以并不具有处理能力或开放来接受用于处理的消息的缓冲资源。由此,第一实体可以决定并不处理第一消息。在图1中所示的示例中,目标节点104可以决定并不处理第一消息(例如,消息112)。
作为决定并不处理第一消息的结果,方法300还包括向第二实体这样指示。具体地,第一实体可以向第二实体指示第一实体将并不会处理该消息(动作306)。作为示例,图1示出了从目标节点104向源节点102-1发送拒绝108,指示目标节点104正在拒绝提议106并且将不会处理该消息。
作为决定并不处理第一消息的结果,方法300还包括存储第二实体已提供消息的指示(动作308)。该指示包括与第二实体相关的指示符。例如,在目标节点104向源节点102-1发送拒绝108时,目标节点104可存储指示源节点102-1已向目标节点发送提议106的信息。该信息可附加地包括关于提供的特定消息的信息,但是如以下所示,在一些实施例中并不需要该信息。
方法300还包括,在向第二实体指示后,使用该指示,向第二实体指示处理消息的可用性(动作310)。例如,图2示出了请求消息110正从目标节点104发送至源节点102-1,以指示处理消息的可用性。
可以实施方法300,其中使用该指示,向第二实体指示处理消息的可用性包括向第二实体指示想要处理第一消息。例如,目标节点可以发送具体标识了提议106中所标识的特定消息的请求消息110。
在替换实施例中,可以实施方法300,其中向第二实体指示处理消息的可用性是基于第一节点处的缓冲能力和/或基于并发能力并且第一实体先前并没有处理该消息,而被执行为对先前向第一实体提供消息的多个实体的一组指示符的一部分。例如,如图2中所示,多个源节点102-1、102-2和102-3可能已向目标节点014发送提议。目标节点先前可能已向这些源节点中的每一个发送了拒绝,但是现在缓冲区116中有空间和/或并发处理操作118的可用性。由此, 目标节点104可以发送消息至多个源节点,指示可用性或请求用于处理的消息(诸如图1中所示的消息112)。目标节点104可以接受目标可存储的数据。具体地,目标节点104可以选择推迟处理,因为它已经到达它想要缓冲的极限。类似地,推迟决定可以基于并发能力并基于缓冲。例如,目标104可以选择推迟因为它已经在处理消息,由此它想要将它的最大缓冲区大小设置为0使得它在处理时并不缓冲任何东西。一旦它完成处理,目标节点的最大缓冲区大小就可以是1,使得在目标节点104向上自旋一个任务来完成异步处理时传入的消息可以被缓冲。该任务的第一个动作将是移除临时存储在缓冲区中的消息。
在替换实施例中,可以实施方法300,其中使用该指示,向第二实体指示处理消息的可用性包括向第二实体隐式或显式地指示想要处理第二实体所提供的多个消息中最近一个提供的消息。例如,图1中所示的源节点102-1可能已发送了多个提议106,每一个对应于不同的消息112。在具有接受消息的能力时,目标节点104可以使用请求消息110向源节点102-1指示发送与最新近接收的提议106相关联的消息112。
在替换实施例中,可以实施方法300,其中使用该指示,向第二实体指示处理消息的可用性包括向第二实体指示想要处理第二实体所提供的多个消息中任何提供的消息。例如,在图1中所示的示例中,请求消息110可以是来自源节点102-1的任何消息112都是可接受的显式或隐式的指示。具体地,请求消息110可以包括任何消息都是可接受的指示。在替换实施例中,由于正被发送,请求消息110可以是任何消息都是可接受的指示。
在替换实施例中,可以实施方法300,其中使用该指示,向第二实体指示处理消息的可用性包括基于第一实体的并发能力,向第二实体指示想要处理第二实体所提供的多个消息中提供的给定数量的消息。例如,目标节点104可在单个请求消息110中指示给定数量的消息可被处理。另选地,目标节点104可发送给定数量的目标节点104能够进行处理的请求消息110,每个消息112一个。
此外,该方法可以由包括一个或多个处理器和诸如计算机存储器等计算机可读介质的计算机系统来实施。具体而言,计算机存储器可以存储计算机可执行指令,计算机可执行指令在由一个或多个处理器执行时使得执行各种功能, 如在各实施方式中所述的那些动作。
本发明的各实施例可以包括或利用含有计算机硬件的专用或通用计算机,这将在以下做出进一步讨论。本发明范围内的各实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理介质和其他计算机可读介质。这些计算机可读介质可以是通用或专用计算机系统能够访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同类型的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。
物理计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储(如CD、DVD等)、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。尽管“网络”定义如此,但此定义并不一定是限制的或可应用于如上所述的“数据流网络”。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。以上介质的组合也被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件时,以计算机可执行的指令或数据结构的形式存在的程序代码装置可以自动地从传输计算机可读介质传输到物理计算机可读存储介质(或者反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传送到计算机系统RAM和/或计算机系统处的较不易失性的计算机可读物理存储介质。因此,计算机可读物理存储介质可被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。
计算机可执行指令包括,例如使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进 制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。
本发明可具体化为其他具体形式而不背离其精神或特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。

Claims (15)

1.一种在计算环境中处理消息的方法,所述方法包括:
在第一实体(104)处,从第二实体(102-1)接收将处理(302)第一消息(112)的第一提议(106);
决定不处理所述第一消息(112)(304);
作为决定不处理所述第一消息(112)的结果,向所述第二实体(306)这样指示(108);
所述第二实体根据所述指示来确定是否将所述第一消息发送到与所述第一实体不同的其它实体;
作为决定不处理所述第一消息(112)的结果,存储所述第二实体(102-1)已提供消息的指示,所述指示包括相关于所述第二实体(308)的指示符;
在对所述第二实体(102-1)进行指示后,使用所述指示向所述第二实体(102-1)指示处理消息(310)的可用性;以及
所述第二实体向所述第一实体发送所述第一消息或其它消息。
2.如权利要求1所述的方法,其特征在于,使用所述指示向所述第二实体指示处理消息的可用性包括向所述第二实体指示想要处理所述第一消息。
3.如权利要求1所述的方法,其特征在于,其中向所述第二实体指示处理消息的可用性是基于并发能力以及所述第一实体先前并没有处理消息而被执行为对先前已向所述第一实体提供消息的多个实体的一组指示符的一部分。
4.如权利要求1所述的方法,其特征在于,其中向所述第二实体指示处理消息的可用性是基于输入缓冲区的可用容量而被执行为对先前已向所述第一实体提供消息的多个实体的一组指示符的一部分。
5.如权利要求1所述的方法,其特征在于,其中向所述第二实体指示处理消息的可用性是基于输入缓冲区的可用容量以及所述第一实体的并发能力而被执行为对先前已向所述第一实体提供消息的多个实体的一组指示符的一部分。
6.如权利要求1所述的方法,其特征在于,使用所述指示向所述第二实体指示处理消息的可用性包括向所述第二实体指示想要处理由所述第二实体提供的多个消息中提供的最近一个消息。
7.如权利要求1所述的方法,其特征在于,使用所述指示向所述第二实体指示处理消息的可用性包括向所述第二实体指示想要处理由所述第二实体提供的多个消息中提供的任何消息。
8.如权利要求1所述的方法,其特征在于,使用所述指示向所述第二实体指示处理消息的可用性包括基于所述第一实体的并发能力,向所述第二实体指示想要处理由所述第二实体提供的多个消息中提供的给定数量的消息。
9.如权利要求1所述的方法,其特征在于,其中从第二实体接收第一提议包括接收所述第一消息。
10.如权利要求1所述的方法,其特征在于,其中从第二实体接收第一提议包括接收所述第一消息可用于处理的指示。
11.一种在计算环境中处理消息的系统,所述系统包括:
用于在第一实体(104)处,从第二实体(102-1)接收将处理(302)第一消息(112)的第一提议(106)的装置;
用于决定不处理所述第一消息(112)(304)的装置;
用于作为决定不处理所述第一消息(112)的结果,向所述第二实体(306)这样指示(108)的装置;
用于所述第二实体根据所述指示来确定是否将所述第一消息发送到与所述第一实体不同的其它实体的装置;
用于作为决定不处理所述第一消息(112)的结果,存储所述第二实体(102-1)已提供消息的指示,所述指示包括相关于所述第二实体(308)的指示符的装置;
用于在对所述第二实体(102-1)进行指示后,使用所述指示向所述第二实体(102-1)指示处理消息(310)的可用性的装置;以及
用于所述第二实体向所述第一实体发送所述第一消息或其它消息的装置。
12.如权利要求11所述的系统,其特征在于,使用所述指示向所述第二实体指示处理消息的可用性包括向所述第二实体指示想要处理所述第一消息。
13.如权利要求11所述的系统,其特征在于,向所述第二实体指示处理消息的可用性是基于并发能力以及所述第一实体先前并没有处理消息,而被执行为对先前向所述第一实体提供所述消息的多个实体的一组指示符的一部分。
14.如权利要求11所述的系统,其特征在于,使用所述指示向所述第二实体指示处理消息的可用性包括向所述第二实体指示想要处理由所述第二实体提供的多个消息中提供的最近一个消息。
15.如权利要求11所述的系统,其特征在于,使用所述指示向所述第二实体指示处理消息的可用性包括向所述第二实体指示想要处理由所述第二实体提供的多个消息中提供的任何消息。
CN201110440113.XA 2010-12-17 2011-12-16 用于在计算环境中处理消息的方法和系统 Active CN102571567B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/972,050 2010-12-17
US12/972,050 US8799378B2 (en) 2010-12-17 2010-12-17 Non-greedy consumption by execution blocks in dataflow networks

Publications (2)

Publication Number Publication Date
CN102571567A CN102571567A (zh) 2012-07-11
CN102571567B true CN102571567B (zh) 2015-09-23

Family

ID=46235838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110440113.XA Active CN102571567B (zh) 2010-12-17 2011-12-16 用于在计算环境中处理消息的方法和系统

Country Status (3)

Country Link
US (1) US8799378B2 (zh)
CN (1) CN102571567B (zh)
HK (1) HK1171299A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106919622B (zh) * 2015-12-28 2021-10-15 伊姆西Ip控股有限责任公司 用于分布式数据处理的方法和设备
CN110753040B (zh) * 2019-09-30 2022-02-22 迈普通信技术股份有限公司 一种请求处理的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1933449A (zh) * 2005-09-12 2007-03-21 三星电子株式会社 无线局域网(wlan)中的分组流量控制
CN101371484A (zh) * 2004-02-06 2009-02-18 艾利森电话股份有限公司 用于发送和接收基于nak的窗口协议数据帧的系统和方法
CN101448014A (zh) * 2007-11-05 2009-06-03 阿瓦亚公司 对挂起的会话发起协议可用电信终端的处理

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5553083B1 (en) * 1995-01-19 2000-05-16 Starburst Comm Corp Method for quickly and reliably transmitting frames of data over communications links
US7188080B1 (en) * 2000-05-12 2007-03-06 Walker Digital, Llc Systems and methods wherin a buyer purchases products in a plurality of product categories
US6941326B2 (en) * 2001-01-24 2005-09-06 Microsoft Corporation Accounting for update notifications in synchronizing data that may be represented by different data structures
US7111074B2 (en) 2001-07-24 2006-09-19 Pluris, Inc. Control method for data path load-balancing on a data packet network
GB2379039B (en) * 2001-08-22 2005-03-23 Ibm Transaction processing in a distributed data processing system
US20030055727A1 (en) * 2001-09-18 2003-03-20 Walker Jay S. Method and apparatus for facilitating the provision of a benefit to a customer of a retailer
US7436769B2 (en) 2002-05-23 2008-10-14 Lucent Technologies Inc. Method of throttling data flow through a router
AU2003295416A1 (en) * 2002-11-07 2004-06-03 Flytecomm, Inc. Advanced travel management system
JP4345334B2 (ja) * 2003-03-28 2009-10-14 日本電気株式会社 耐障害計算機システム、プログラム並列実行方法およびプログラム
US7660898B2 (en) * 2003-07-29 2010-02-09 At&T Intellectual Property I, L.P. Presence enhanced telephony service architecture
US20050262205A1 (en) * 2004-04-30 2005-11-24 Nikolov Radoslav I Delivering messages in an enterprise messaging system using message selector hierarchy
US7675916B2 (en) * 2004-07-12 2010-03-09 At&T Intellectual Property I, L.P. Systems and methods for dynamically adjusting QoS parameters
US7817649B2 (en) * 2004-09-20 2010-10-19 Lg Electronics Inc. Session invitation method and system
US8549180B2 (en) * 2004-10-22 2013-10-01 Microsoft Corporation Optimizing access to federation infrastructure-based resources
US7286840B2 (en) * 2005-06-07 2007-10-23 Mahesh Kumar Jain Rule based processing of SMS messages
US8014389B2 (en) * 2005-12-06 2011-09-06 Lippershy Celestial Llc Bidding network
US8194701B2 (en) * 2005-12-06 2012-06-05 Lippershy Celestial Llc System and/or method for downstream bidding
US20070233822A1 (en) * 2006-04-03 2007-10-04 International Business Machines Corporation Decrease recovery time of remote TCP client applications after a server failure
CN101127625B (zh) * 2006-08-18 2013-11-06 华为技术有限公司 一种对访问请求授权的系统及方法
US7519674B2 (en) * 2006-09-01 2009-04-14 Nuxo Technologies, Inc. Method and apparatus for filtering electronic messages
US20080065761A1 (en) * 2006-09-11 2008-03-13 Jeffrey Kenneth Wilson Method and system for responding to rejected messages
US7680877B2 (en) * 2006-12-18 2010-03-16 Ricoh Company, Ltd. Implementing a web service application on a device with multiple threads
US8159961B1 (en) * 2007-03-30 2012-04-17 Amazon Technologies, Inc. Load balancing utilizing adaptive thresholding
US8051145B2 (en) * 2007-03-30 2011-11-01 Hong Kong Applied Science and Technology Research Institute Company Limited Method of simultaneously providing data to two or more devices on the same network
CN101355524B (zh) * 2007-07-24 2013-10-09 华为技术有限公司 一种消息处理方法、系统、服务器和终端
WO2009020789A2 (en) * 2007-08-03 2009-02-12 Interdigital Patent Holdings, Inc. Security procedure and apparatus for handover in a 3gpp long term evolution system
US8347292B2 (en) 2007-08-30 2013-01-01 International Business Machines Corporation Transaction aggregation to increase transaction processing throughout
US20090171853A1 (en) * 2007-12-31 2009-07-02 International Business Machines Corporation Method and System for Hosting an In-Store Electronic Auction
WO2009098561A2 (en) * 2008-02-08 2009-08-13 National University Of Ireland, Galway System and method for auction negotiation
US7747784B2 (en) * 2008-03-04 2010-06-29 Apple Inc. Data synchronization protocol
WO2009120301A2 (en) * 2008-03-25 2009-10-01 Square Products Corporation System and method for simultaneous media presentation
US20090310484A1 (en) * 2008-04-17 2009-12-17 Dorgham Sisalem Methods, systems, and computer readable media for session initiation protocol (sip) overload control
US8200765B2 (en) * 2009-01-12 2012-06-12 International Business Machines Corporation Preserving message order using a message ordering manager
US8977565B2 (en) * 2009-01-23 2015-03-10 Cfph, Llc Interprogram communication using messages related to groups of orders
US20100323667A1 (en) * 2009-06-23 2010-12-23 Nokia Corporation Method and apparatus for in-application notice of independent message
US20100332975A1 (en) * 2009-06-25 2010-12-30 Google Inc. Automatic message moderation for mailing lists
US20100333019A1 (en) * 2009-06-26 2010-12-30 Nokia Corporation Method and apparatus for providing member request and response in a social network
US9172706B2 (en) * 2009-11-23 2015-10-27 At&T Intellectual Property I, L.P. Tailored protection of personally identifiable information
US20120123923A1 (en) * 2010-11-14 2012-05-17 Chris Nicolaidis Stored value exchange method and apparatus
US20120123922A1 (en) * 2010-11-14 2012-05-17 Chris Nicolaidis Stored value exchange method and apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101371484A (zh) * 2004-02-06 2009-02-18 艾利森电话股份有限公司 用于发送和接收基于nak的窗口协议数据帧的系统和方法
CN1933449A (zh) * 2005-09-12 2007-03-21 三星电子株式会社 无线局域网(wlan)中的分组流量控制
CN101448014A (zh) * 2007-11-05 2009-06-03 阿瓦亚公司 对挂起的会话发起协议可用电信终端的处理

Also Published As

Publication number Publication date
US8799378B2 (en) 2014-08-05
CN102571567A (zh) 2012-07-11
US20120158840A1 (en) 2012-06-21
HK1171299A1 (zh) 2013-03-22

Similar Documents

Publication Publication Date Title
CN102193833B (zh) 资源管理器中空闲资源的高效利用
Natesha et al. Adopting elitism-based Genetic Algorithm for minimizing multi-objective problems of IoT service placement in fog computing environment
Deng et al. Composition-driven IoT service provisioning in distributed edges
Lu et al. Join-idle-queue: A novel load balancing algorithm for dynamically scalable web services
Abd Elaziz et al. IoT workflow scheduling using intelligent arithmetic optimization algorithm in fog computing
CN107657531A (zh) 一种业务流程的处理方法及系统
CN101986271B (zh) 调度tcam查询和刷新消息的方法和装置
CN102469033A (zh) 一种消息订阅系统以及消息发送方法
Delavar et al. A new scheduling algorithm for dynamic task and fault tolerant in heterogeneous grid systems using genetic algorithm
CN101616083A (zh) 一种报文转发方法和装置
Mei et al. An adaptive service selection approach to service composition
US7734693B2 (en) Methods and apparatuses for managing resources within a collaboration system
CN102541661B (zh) 实现等待地址同步接口的方法和设备
CN104158758A (zh) Sdn网络基于用户报文时间反馈的负载均衡处理方法及系统
CN105791381A (zh) 访问控制的方法及装置
CN102571567B (zh) 用于在计算环境中处理消息的方法和系统
KR101950050B1 (ko) 이벤트 데이터 획득을 위한 스케일 아웃 시스템
Min-Allah et al. Lowest priority first based feasibility analysis of real-time systems
CN102446100A (zh) 用于数据类型的类型和长度抽象
CN102369691B (zh) 智能路由
CN114257532A (zh) 服务端状态探测方法及装置
JPWO2009034994A1 (ja) 負荷分散システム、サービス処理サーバ、負荷分散方法及び負荷分散プログラム
CN110247808B (zh) 信息发送方法、装置、设备及可读存储介质
US7860938B2 (en) Agent platform, multi agent system, and message transmitting/receiving method thereof
Santos et al. Use of sociology concepts as the basis of a model for improving accessibility in Smart Cities

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1171299

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150720

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150720

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1171299

Country of ref document: HK