向不可用设备发送消息的制作方法

文档序号:13882361阅读:123来源:国知局
向不可用设备发送消息的制作方法

这里公开的主题涉及传输电子消息,并且更具体地涉及向不可用设备传输电子消息。



背景技术:

设备可以向其他设备发送电子消息作为在联网环境中操作的部分。例如数据中心中的设备可以相互发送包括存储信息、用户信息等的消息。发送和接收消息可以消耗处理器周期并且减少设备的性能。例如发送方可以保持等待发送和/或确认接收向不可用接收方发送的电子消息。



技术实现要素:

公开一种用于向不可用设备发送消息的装置。一种方法和计算机程序产品也执行该装置的功能。该装置包括状态模块,其确定用于消息的接收方设备不可用于接收消息。该装置包括消息模块,其响应于确定接收方设备不可用于接收消息,向中间设备发送消息用于存储,直至接收方设备可用于接收消息。该装置包括通知模块,其向接收方设备发送消息可用于从中间设备访问的通知。

在一个实施例中,状态模块响应于向接收方设备发送消息而没有接收到答复,来确定接收方设备不可用。在另一实施例中,状态模块基于接收方设备的一个或者多个特性,确定接收方设备不可用。在另一实施例中,一个或者多个特性包括接收方设备的利用水平满足预定利用阈值、接收方设备的消息缓冲器的已使用容量满足预定缓冲器容量、接收方设备的健康状态满足预定健康阈值和/或接收方设备的网络状态满足预定网络阈值。

在一个实施例中,状态模块响应于确定与网络设备的网络连接比与接收方设备的网络连接更快,来确定接收方设备不可用于接收消息。在另一实施例中,该装置包括设备模块,其响应于确定用于接收、存储和向接收方设备传输消息的服务在中间设备上可用、确定中间设备的一个或者多个特性满足一个或者多个预定义要求和/或确定中间设备在预定中间设备的列表上来选择中间设备。

在一个实施例中,该装置包括存储模块,其在中间设备上的由接收方设备可访问的存储位置中存储接收的消息。在又一实施例中,存储位置包括目录,其基于用于消息从其被发送的设备的唯一标识符和/或在消息的一个或者多个头部中被包括的信息被确定。在另一实施例中,通知模块在消息可用于从中间设备访问时,以预定间隔向接收方设备周期地发送通知。

在一个实施例中,通知包括中间设备的位置、用于中间设备的标识符和/或中间设备上的用于消息的存储位置。在另一实施例中,该装置包括清理模块,其响应于预定义时间量到期、接收清理命令和/或接收方设备访问消息,从中间设备删除消息。

一种方法包括确定用于消息的接收方设备不可用于接收消息。该方法包括响应于确定接收方设备不可用于接收消息,向中间设备发送消息用于存储,直至接收方设备可用于接收消息。该方法包括向接收方设备发送消息可用于从中间设备访问的通知。

在一个实施例中,确定接收方设备不可用包括向接收方设备发送消息而没有接收到答复。在另一实施例中,该方法包括基于接收方设备的一个或者多个特性,确定接收方设备不可用。在某些实施例中,一个或者多个特性包括接收方设备的利用水平满足预定利用阈值、接收方设备的消息缓冲器的已使用容量满足预定缓冲器容量、接收方设备的健康状态满足预定健康阈值和/或接收方设备的网络状态满足预定网络阈值。

在一个实施例中,该方法包括响应于确定与中间设备的网络连接比与接收方设备的网络连接更快,来确定接收方设备不可用。在另一实施例中,该方法包括响应于确定用于接收、存储和向接收方设备传输消息的服务在中间设备上可用、确定中间设备的一个或者多个特性满足一个或者多个预定义要求和/或确定中间设备在预定中间设备的列表上来选择中间设备。

在另一实施例中,该方法包括在中间设备上的由接收方设备可访问的存储位置中存储接收的消息。在另一实施例中,存储位置包括目录,其基于用于消息从其被发送的设备的唯一标识符和/或在消息的一个或者多个头部中被包括的信息被确定。

在一个实施例中,该方法包括在消息可用于从中间设备访问时,以预定间隔向接收方设备周期地发送通知。在另一实施例中,通知包括中间设备的位置、用于中间设备的标识符和/或中间设备上的用于消息的存储位置。在另一实施例中,该方法包括响应于预定义时间量到期、接收清理命令和/或接收方设备访问消息,从中间设备删除消息。

一种程序产品包括存储由处理器可执行的代码的计算机可读存储介质。可执行代码包括用于执行确定用于消息的接收方设备不可用于接收消息的代码。可执行代码包括用于执行响应于确定接收方设备不可用于接收消息,向中间设备发送消息用于存储,直至接收方设备可用于接收消息的代码。可执行代码包括用于执行向接收方设备发送消息可用于从中间设备访问的通知的代码。

附图说明

将通过参照在附图中图示的具体实施例来给予对以上简要地描述的实施例的更具体描述。理解这些附图仅描绘一些实施例,因此不会被视为限制范围,将通过使用附图用附加特点和细节来描述和说明实施例,在附图中:

图1是图示用于向不可用设备发送消息的系统的一个实施例的示意框图;

图2是图示用于向不可用设备发送消息的装置的一个实施例的示意框图;

图3是图示用于向不可用设备发送消息的另一装置的一个实施例的示意框图;

图4是图示用于向不可用设备发送消息的系统的一个实施例的示意框图;

图5是图示用于向不可用设备发送消息的方法的一个实施例的示意流程图;以及

图6是图示用于向不可用设备发送消息的另一方法的一个实施例的示意流程图。

具体实施方式

如本领域技术人员将认识的那样,可以体现实施例的方面作为一种系统、方法或者程序产品。因而,实施例可以采用全硬件实施例、全软件实施例(包括固件、常驻软件、微代码等)或者组合软件和硬件方面的实施例的形式,这些软件和硬件方面可以都一般地在这里被称为“电路”、“模块”或者“系统”。另外,实施例可以采用在一个或者多个计算机可读存储设备中体现的程序产品的形式,该一个或者多个计算机可读存储设备存储在下文中被称为代码的机器可读代码、计算机可读代码和/或程序代码。存储设备可以是有形、非瞬态和/或非传输。存储设备可以不体现信号。在某个实施例中,存储设备仅体现用于访问代码的信号。

在本说明书中描述的功能单元中的许多功能单元已经被标注为模块,以便更具体地强调它们的实施独立性。例如模块可以被实施为包括定制vlsi电路或者门阵列、现用(off-the-shelf)半导体、诸如逻辑芯片、晶体管或者其他分立部件的硬件电路。也可以在可编程硬件设备、诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等中实施模块。

模块也可以在代码和/或软件中被实施用于由各种类型的处理器执行。标识的代码模块可以例如包括可以例如被组织为对象、过程或者函数的一个或者多个物理或者逻辑可执行代码块。然而,标识的模块的可执行文件无需物理地位于一起,但是可以包括在不同位置中被存储的相异指令,这些位置在逻辑地接合在一起时包括模块并且实现用于模块的陈述的用途。

实际上,代码模块可以是单个指令或者许多指令并且可以甚至被分布在若干不同代码段之上、不同程序之中和跨若干存储器设备。相似地,操作数据在这里可以在模块内被标识和图示,并且可以图任何适当形式体现和在任何适当类型的数据结构内被组织。操作数据可以被收集为单个数据集,或者可以被分布在不同位置之上、包括在不同计算机可读存储设备之上。模块或者模块的部分在软件中被实施时,软件部分可以在一个或者多个计算机可读存储设备上被存储。

一个或者多个计算机可读介质的任何组合可以被利用。计算机可读介质可以是计算机可读存储介质。计算机可读存储介质可以是存储代码的存储设备。存储设备可以例如是但不限于电子、磁、光、电磁、红外、全息、微机械或者半导体系统、装置或者设备或者前述示例的任何适当组合。

存储设备的更多具体示例(非穷举列表)将包括以下:具有一个或者多个接线的电连接、便携计算机盘、硬盘、随机存取存储器(ram)、可擦除可编程只读存储器(eprom或闪存)、便携紧致盘只读存储器(cd-rom)、光存储设备、磁存储设备或者前述示例的任何适当组合。在本文的上下文中,计算机可读存储介质可以是可以包含或者存储用于由或者结合指令执行系统、装置或者设备使用的程序的任何有形介质。

可以用包括面向对象编程语言、诸如python、ruby、java、smalltalk、c++等、以及常规过程编程语言、诸如“c”编程语言等和/或机器语言、诸如汇编语言的一个或者多个编程语言的任何组合编写用于实现用于实施例的操作的代码。代码可以完全地在用户的计算机上、部分地在用户的计算机上、作为单独软件包、部分地在用户的计算机上而部分地在远程计算机上或者完全地在远程计算机或者服务器上执行。在后一种场景中,远程计算机可以通过包括局域网(lan)或者广域网(wan)的任何类型的网络连接到用户的计算机,或者可以与外部计算机产生连接(例如通过使用因特网服务提供商的因特网)。

贯穿本说明书引用“一个实施例”、“实施例”或者相似言语意味着结合该实施例被描述的特定特征、结构或者特性被包括在至少一个实施例中。因此,贯穿本说明书出现短语“在一个实施例中”、“在实施例中”和相似言语可以但是未必地都是指相同实施例、但是除非明确地另有指定则意味着“一个或者多个、但是并非所有实施例”。术语“包括”、“包含”、“具有”及其变化除非明确地另有指定则意味着“包括但不限于”。枚举的项目列表除非明确地另有指定则并不暗示项目中的任何或者所有项目互斥。术语“一”、“一个”和“该”除非明确地另有指定则也是指“一个或者多个”。

另外,实施例的描述的特征、结构或者特性可以用任何适当方式被组合。在以下描述中,提供许多具体细节、诸如编程、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等的示例以提供对实施例的透彻理解。然而相关领域技术人员将认识到实施例可以在没有具体细节中的一个或者多个具体细节的情况下被实现或者可以用其他方法、部件、材料等等被实现。在其他实例中,未具体示出或者描述公知的结构、材料或者操作以避免使实施例的方面模糊。

以下参照根据实施例的方法、装置、系统和程序产品的示意流程图和/或示意框图描述实施例的方面。将理解示意流程图和/或示意框图的每个块以及示意流程图和/或示意框图中的块组合可以由代码实施。可以向通用计算机、专用计算机或者其他可编程数据处理装置的处理器提供这些代码以产生机器,使得经由计算机或者其他可编程数据处理装置的处理器执行的指令创建用于实施在示意流程图和/或示意框图的一个或者多个块中指定的功能/动作的部件。

代码也可以被存储在存储设备中,该存储设备可以指引计算机、其他可编程数据处理装置或者其他设备以特定方式工作,使得在存储设备中存储的指令产生包括指令的制造品,这些指令实施在示意流程图和/或示意框图的一个或者多个块中指定的功能/动作。

代码也可以被加载到计算机、其他可编程数据处理装置或者其他设备上以使一系列操作步骤在计算机、其他可编程装置或者其他设备上被执行以产生计算机实施的过程,使得在计算机或者其他可编程装置上执行的代码提供用于实施在流程图和/或框图的一个或者多个块中指定的功能/动作的过程。

各图中的示意流程图和/或示意框图图示根据各种实施例的装置、系统、方法和程序产品的可能实现方式的架构、功能和操作。就这一点而言,示意流程图和/或示意框图中的每个块可以代表代码的模块、段或者部分,其包括用于实施指定的逻辑功能的代码的一个或者多个可执行指令。

也应当注意在一些备选实现方式中,在块中指出的功能可以不按照各图中指出的顺序出现。例如根据涉及到的功能,事实上可以基本上并行地执行接连示出的两个块,或者有时可以按照相反顺序执行块。可以设想功能、逻辑或者效果与所示各图的一个或者多个块或者其部分等效的其他步骤和方法。

虽然可以在流程图和/或框图中采用各种箭头类型和线条类型,但是理解它们并不限制对应实施例的范围。实际上,一些箭头或者其他连接符可以用来仅指示描绘的实施例的逻辑流程。例如箭头可以指示在描绘的实施例的枚举的步骤之间的未指定的持续时间的等待或者监视时段。也将注意框图和/或流程图的每个块以及框图和/或流程图中的块组合可以由执行指定的功能或者动作的基于专用硬件的系统或者专用硬件和代码的组合实施。

对各图中的元素的描述可以引用正在进行的图的元素。相似编号指代所有图中的相似元素、包括相似元素的备选实施例。

图1是图示用于向不可用设备发送消息的系统100的一个实施例的示意框图。在一个实施例中,系统100包括一个或者多个信息处置设备102、一个或者多个消息管理装置104、一个或者多个数据网络106和一个或者多个服务器108。即使在图1中描绘具体数目的信息处置设备102、消息管理装置104、数据网络106和服务器108,但是根据本公开本领域技术人员将认识到可以在用于向不可用设备发送消息的系统100中包括任何数目的信息处置设备102、消息管理装置104、数据网络106和服务器108。

系统100包括一个或者多个信息处置设备102。信息处置设备102可以包括桌面型计算机、膝上型计算机、平板计算机、智能电话、机顶盒、游戏控制台、智能tv、智能手表、健身带或者其他可穿戴的活动跟踪设备、光学头戴式显示器(例如虚拟现实头戴式耳机、智能眼镜等)、高清晰度多媒体接口(“hdmi”)或者其他电子显示安全装置、个人数字助理或者另一计算设备,该计算设备包括处理器(例如中央处理单元(“cpu”)、处理器核、现场可编程门阵列(“fpga”)或者其他可编程逻辑、专用集成电路(“asic”)、控制器、微控制器和/或另一半导体集成电路器件)、易失性存储器和/或非易失性存储介质。

在某些实施例中,信息处置设备104通过以下描述的数据网络106通信地耦合到一个或者多个其他信息处置设备102和/或一个或者多个服务器108。信息处置设备102在又一实施例中被配置为执行可以访问、存储、下载、上传等位于一个或者多个服务器108上的数据的各种程序、程序代码、应用、指令、功能等。信息处置设备102可以电耦合到显示器(例如启用触摸的显示器)以呈现内容、诸如电视内容、电影内容、游戏内容、因特网内容等。

在一个实施例中,消息管理装置104被配置为防止通过尝试向不可用或者无响应的接收方设备发送消息而引起的系统中的死锁。在常规系统中,发送方设备可以发送消息,并且等待直至从接收方设备接收到确认响应,或者发送方设备可以反复地发送消息,直至发送方设备从接收方设备接收到确收消息。这两种情形可以使发送方设备死锁、挂起、等待等,这可能减少发送方设备和/或整个计算系统的性能、可用性、可靠性等。

在一个实施例中,消息管理装置104通过防止通过尝试向不可用或者无响应的接收方设备发送消息而引起的系统中的死锁来提高计算机、计算技术、计算环境等的功能和/或可用性。例如消息管理装置104在一个实施例中被配置为确定用于消息的接收方设备不可用于接收消息。接收方设备可以包括信息处置设备102、诸如智能电话或者膝上型计算机、服务器108等。在一个实施例中,可以从可以体现为信息处置设备102、诸如智能电话或者膝上型计算机、服务器108等的发送方设备发送消息。在某些实施例中,消息管理装置104被配置为响应于确定接收方设备不可用于接收消息,向中间设备发送消息用于存储,直至接收方设备可用于接收消息。

中间设备可以包括被配置为接收、存储和/或传输电子消息的服务器108、诸如远程或者云服务器或者另一信息处置设备102。在又一实施例中,消息管理装置104被配置为向接收方设备发送消息可用于从中间设备访问的通知。消息管理装置104、包括它的各种子模块可以位于系统100中的一个或者多个信息处置设备102、一个或者多个服务器108、一个或者多个网络设备等上。以下参照图2-4更具体描述消息管理装置104。

在各种实施例中,消息管理装置104可以被体现为可以在信息处置设备102上、在服务器108上或者在数据网络106上的别处被安装或者部署的硬件装置。在某些实施例中,消息管理装置104可以包括硬件设备、诸如安全硬件安全装置或者其他硬件装置设备(例如机顶盒、网络装置等),其通过有线连接(例如通用串行总线(“usb”)连接)或者无线连接(例如wi-fi、近场通信(“nfc”)等)附接到设备、诸如膝上型计算机、服务器108、平板计算机、智能电话等;附接到电子显示设备(例如使用高清晰度多媒体接口(“hdmi”)端口、displayport(显示端口)端口、minidisplayport(微型显示端口)端口、视频图形阵列(“vga”)端口、数字可视接口(“dvi”)端口等的电视或者监视器)等。消息管理装置104的硬件装置可以包括被配置为执行这里关于消息管理装置104描述的功能的功率接口、有线和/或无线网络接口、附接到显示器的图形接口和/或如以下描述的半导体集成电路器件。

消息管理装置104在这样的实施例中可以包括半导体集成电路器件(例如一个或者多个芯片、晶粒或者其他分立逻辑硬件)等、诸如现场可编程门阵列(“fgpa”)或者其他可编程逻辑、用于fpga或者其他可编程逻辑的固件、用于在微处理器上执行的微代码、专用集成电路(“asic”)、处理器、处理器核等。在一个实施例中,消息管理装置104可以用一个或者多个电线或者连接被装配在印刷电路板上)(例如被装配到易失性存储器、非易失性存储介质、网络接口、外围设备、图形/显示接口等)。硬件装置可以包括被配置为发送和接收数据的一个或者多个管脚、焊盘或者其他电连接(例如与印刷电路板的一个或者多个电线等通信)和被配置为执行消息管理装置104的各种功能的一个或者多个硬件电路和/或其他电路。

消息管理装置104的半导体集成电路器件或者其他硬件装置在某些实施例中包括和/或通信地耦合到一个或者多个易失性存储器介质,该一个或者多个易失性存储器介质可以包括但不限于随机存取存储器(“ram”)、动态ram(“dram”)、高速缓存等。在一个实施例中,消息管理装置104的半导体集成电路器件或者其他硬件装置包括和/或通信地耦合到一个或者多个非易失性存储器介质,该一个或者多个非易失性存储器介质可以包括但不限于:nand闪存、nor闪存、纳米随机存取存储器(纳米ram或者nram)、基于纳米晶体线的存储器、基于氧化硅的亚10纳米工艺存储器、石墨烯存储器、氧化硅-氮氧化硅(“sonos”)、电阻性ram(“rram”)、可编程金属化单元(“pmc”)、传导桥接ram(“cbram”)、磁阻ram(“mram”)、动态ram(“dram”)、相变ram(“pram”或者“pcm”)、磁存储介质(例如硬盘、磁带)、光存储介质等。

数据网络106在一个实施例中包括传输数字通信的数字通信网络。数据网络106可以包括无线网络、诸如无线蜂窝网络、本地无线网络、诸如wi-fi网络、网络、近场通信(“nfc”)网络、自组织网络等。数据网络106可以包括广域网(“wan”)、存储区域网络(“san”)、局域网(“lan”)、光纤网络、因特网或者其他数字通信网络。数据网络106可以包括两个或者更多网络。数据网络106可以包括一个或者多个服务器、路由器、交换机和/或其他联网装备。数据网络106也可以包括一个或者多个计算机可读存储介质、诸如硬盘驱动、光驱动、非易失性存储器、ram等。

一个或者多个服务器108在一个实施例中可以被体现为刀片服务器、大型机服务器、塔式服务器、机架式服务器等。一个或者多个服务器108可以被配置为邮件服务器、web服务器、应用服务器、ftp服务器、媒体服务器、数据服务器、web服务器、文件服务器、虚拟服务器等。一个或者多个服务器108可以通过数据网络106通信地耦合(例如联网)到一个或者多个信息处置设备102。一个或者多个服务器108可以存储与信息处置设备102、与用户、与一个或者多个应用等关联的数据、诸如在发送方设备与接收方设备之间发送的消息和消息有关数据。

图2描绘用于向不可用设备发送消息的装置200的一个实施例。装置200包括有以下更具体描述的状态模块202、消息模块204和通知模块206的消息管理装置104的实施例。

状态模块202在一个实施例中确定用于消息的接收方设备不可用于接收消息。在一个实施例中,从发送方设备向可以被体现为以上描述的信息处置设备102的一个或者多个接收方设备发送消息。消息可以包括电子消息、诸如电子邮件、文本消息、即时消息等。消息也可以包括在设备之间发送的消息、诸如网络状态消息(例如握手消息、确收消息等)、设备状态消息、设备健康状态消息、进程间通信、应用状态消息等。

在某些实施例中,状态模块202响应于以下描述的消息模块204向接收方设备发送消息而没有从接收方设备接收到答复,来确定接收方设备不可用。例如发送方设备可以向接收方设备发送消息,并且可以预计返回确收消息、确认消息、读取接收消息等。如果消息模块204没有从接收方设备接收到答复消息,则状态模块202可以确定接收方设备不可用并且不会接收消息。因而,状态模块202可以触发或者通知消息模块204以取消向接收方设备发送消息。

在一个实施例中,状态模块202基于接收方设备的一个或者多个特性,确定接收方设备不可用。例如在一些实施例中,状态模块202可以确定用于接收方设备的利用水平是否满足预定利用阈值。如这里所用,用于接收方设备的利用水平可以是接收方设备对系统资源、诸如一个或者多个处理器、存储器、网络、存储装置等的使用的测量。预定利用水平可以是代表接收方设备被断定不可用的点的阈值、百分比等。

在一个实施例中,状态模块202向接收方设备查询一个或者多个资源利用测量、诸如计算机资源的当前使用作为资源的总容量的百分比。例如状态模块202可以直接地查询接收方设备、在接收方设备上执行的服务或者管理应用等,以确定接收方设备的一个或者多个资源的利用水平。如果状态模块202确定利用水平满足预定利用阈值,这意味着利用水平等于和/或超过预定利用阈值,则状态模块202可以确定接收方设备为不可用或者无响应。

在又一实施例中,状态模块202响应于确定接收方设备的消息缓冲器的已使用容量满足预定缓冲器容量,来确定接收方设备不可用。如这里所用,消息缓冲器可以是用于存储等待被处理的消息的数据结构。例如如果用于接收方设备的消息缓冲器的总容量是100mb,并且状态模块202确定消息缓冲器当前正在使用90mb的消息数据或者处于90%容量,则状态模块202在已使用容量等于或者超过预定缓冲器容量阈值的情况下,可以确定接收方设备不可用。

在一个实施例中,状态模块202响应于确定接收方设备的健康状态满足预定健康阈值,来确定接收方设备不可用。健康状态如这里所用可以是接收方设备的测量、质量、特性等,该健康状态指示资源是否出故障或者将出故障、接收方设备的温度、接收方设备的功率状态等。例如如果接收方设备的温度在预定阈值温度以上,则状态模块202可以确定接收方设备不可用。在另一示例中,如果接收方设备具有不可靠电源(例如如果用于接收方设备的电池电源的剩余寿命在预定电池电平以下),则状态模块202可以确定接收方设备不可用。

在一些实施例中,状态模块202基于接收方设备的网络状态满足预定网络阈值,来确定接收方设备不可用。接收方设备的网络状态可以包括在发送方与接收方之间的网络连接速度、在发送方与接收方之间的连接带宽等。例如如果状态模块202确定在发送方设备与接收方设备之间的连接速度在阈值速度以下,则状态模块202可以推断接收方设备不可用。

状态模块202在一个实施例中通过“ping”接收方设备以确定接收方设备是否响应、确定用于从发送方发送的消息的往返时间等,来确定与接收方设备关联的一个或者多个网络特性。在又一实施例中,状态模块202可以查询接收方设备、在接收方设备上运行的服务、网络设备(例如路由器、交换机等)等以确定与接收方设备关联的网络特性。

在某些实施例中,基于状态模块202接收的网络信息,状态模块202在存在与接收方设备的更快、更高效路径或者路由的情况下,可以确定接收方设备不可用于与发送方通信。例如如果状态模块202确定在发送方与接收方之间的直接路径的连接速度是10gbps,而通过中间设备的路径的连接速度是100gbps,则状态模块202可以认为接收方设备不可用于发送方设备直接地向接收方设备发送消息,发送方设备可以代替地经由中间设备向接收方设备发送消息。

在一个实施例中,消息模块204向中间设备发送消息用于存储,直至接收方设备可用于接收消息。中间设备可以是发送方设备和接收方设备二者可访问的设备。例如中间设备可以是发送方设备和接收方设备二者可访问的位于云中、因特网上、位于不同远程位置等的服务器108。

消息模块204在一个实施例中响应于状态模块202确定接收方设备不可用或者无响应,来向中间设备发送消息。在这样的实施例中,消息可以被存储在中间设备上,直至接收方设备变成可用于从中间设备接收消息。以这一方式,取代等待接收方设备变成可用或者响应于接收从发送方设备向接收方设备发送的消息,发送方设备可以向接收方设备可以在以后时间点访问的中间设备卸载消息并且继续处理工作量。

通知模块206在一个实施例中向接收方设备发送消息可用于从中间设备访问的通知。通知在一个实施例中可以包括接收方设备用来访问中间设备上的消息的信息、诸如消息被存储在中间设备上的存储位置(例如文件夹、目录、文件路径等)、中间设备的标识(例如名称、因特网协议(“ip”)地址、媒体访问控制(“mac”)地址等)、消息将在中间设备上可用/存储多久、中间设备的位置等。

通知模块206发送的通知可以具有比向中间设备卸载的消息更小的分组大小。另外,在一些实施例中,通知模块206可以不等待来自接收方设备的、响应于通知的响应,使得发送方设备可以继续处理工作量而不等待来自接收方设备的答复。在一些实施例中,通知模块206可以使用与在发送方设备上的主执行线程分离的执行线程向接收方设备发送通知,以防止发送方设备在它等待对通知的响应时变成挂起。

在一个实施例中,通知模块206以周期间隔向接收方设备发送通知。通知模块206可以每秒、每五秒等发送通知以通知接收方设备消息正在中间设备上等待接收方设备。在一些实施例中,通知模块206向接收方设备周期地发送通知,直至接收方设备从中间设备下载或者接收消息;直至通知模块206从接收方设备接收消息已经被接收的确认消息;和/或直至消息在中间设备上可用的时间段到期。

在接收到通知之后,位于接收方设备上的消息模块204可以使用通知中的提供的存储位置来访问中间设备,以从发送方设备下载消息。在一些实施例中,消息模块204周期地检查中间设备、例如在中间设备上执行的服务,以确定是否有存储的意图用于接收方设备的任何消息。例如接收方设备可以基于接收方设备的标识符等查询在中间设备上执行的服务,以确定是否有来自发送方设备的要下载的任何消息。以这一方式,接收方设备可以取代从发送方设备接收通知或者除了从发送方设备接收通知之外,主动检查意图用于接收方设备的消息。

图3描绘用于向不可用设备发送消息的装置300的一个实施例。装置300包括消息管理装置104的一个实施例,该消息管理装置有与以上参照图2描述的状态模块202、消息模块204和通知模块206基本上相似的状态模块202、消息模块204和通知模块206。在更多实施例中,消息管理装置104包括以下更具体描述的设备模块302、存储模块304和/或清理模块306。

设备模块302在一个实施例中选择存储用于接收方设备的从发送方设备发送的消息的中间设备。在一个实施例中,设备模块302从每个由发送方设备和接收方设备二者可访问的预定中间设备的列表选择中间设备。例如设备模块302可以维护可以用来存储用于接收方设备的消息的潜在中间设备的列表、表、数据库等。

列表上的中间设备可以由用户、诸如it或者网络管理员选择。列表上的中间设备可以由发送方设备发现。例如发送方设备上的设备模块302可以映射发送方设备连接到的网络,以确定一个或者独个中间设备,该一个或者多个中间设备具有满足用于作为中间设备的预定义要求的特性、诸如在发送方设备与中间设备之间的跳数、中间设备的硬件规范(例如存储容量、网络带宽/速度等)等。

在又一实施例中,中间设备可以在网络上广播它可用于作为中间设备。例如位于中间设备上的设备模块302可以周期地发送广播消息以向网络上的其他设备通知该中间设备可用于充当在发送方设备与接收方设备之间的中间消息存储设备。在某些实施例中,设备模块302确定潜在中间设备是否被配置为作为中间设备工作。例如设备模块302可以确定潜在中间设备是否具有服务,该服务被安装和/或运行用于接收、存储和向接收方设备传输消息。

存储模块302在一个实施例中在中间设备上的由接收方设备可访问的存储位置存储接收的消息。在一个实施例中,存储位置是在中间设备上使用的文件系统的目录。存储模块304可以基于用于发送方设备或者接收方设备的标识符、诸如ip地址、mac地址、设备名称等生成或者确定目录、文件夹、文件路径等。例如存储模块304可以基于发送方设备或者接收方设备的mac地址创建条目。由存储模块304生成的示例文件路径可以如下:“/home/offload_aa:bb:cc:dd:ee:ff/”。

在又一实施例中,存储模块304使用在消息的一个或者多个头部中包括的信息。头部信息例如可以包括接收方设备和/或发送方设备的标识符(例如mac地址、ip地址等)。基于头部信息,存储模块304可以生成目录或者使用先前创建的目录用于在消息被接收和头部信息被解析以标识存储位置信息时存储消息。

在一些实施例中,在存储模块304在中间设备上的生成或者确定的存储位置中存储消息之后,存储模块304可以向通知模块206发送存储位置/地址,使得通知模块206可以在向接收方设备发送的通知中包括存储位置。例如通知可以包括用于中间设备的标识符和用于中间设备上的目录的文件路径,其中消息被存储于该目录,使得接收方设备可以在它可用时从中间设备下载或者访问消息。

清理模块306在一个实施例中响应于一个或者多个清理条件从中间设备删除消息和/或目录/文件夹/文件路径。清理模块306例如可以响应于接收方设备访问和/或下载消息,来从中间设备删除消息。在另一示例中,清理模块306可以响应于预定义时间量到期,来从中间设备删除消息(例如消息可以具有与它关联的存活时间定时器,使得它在时间段、诸如一小时、一天、一周等之后“到期”)。在又一示例中,清理模块306可以响应于从发送方设备上、接收方设备上的消息模块204等接收到清理命令、信号、通知等,来从中间设备删除消息。

图4描绘用于向不可用设备发送消息的系统400的一个实施例。在一个实施例中,系统400包括发送方设备402、中间设备404和接收方设备406。在一个实施例中,位于发送方设备402上的消息模块204尝试向接收方设备406发送消息(线408)。在一些实施例中,如果位于发送方设备402上的状态模块202确定接收方设备406没有返回确认或者确收消息(线410),则状态模块202确定接收方设备406不可用或者无响应。由于发送方设备402可以具有附加工作量要处理,所以在一些实施例中,消息模块204向中间设备404发送消息(线412),该中间设备存储消息直至接收方设备406变成可用于从中间设备访问和/或下载消息。

在一个实施例中,在确定中间设备404上的用于消息的存储位置之后,存储模块304向通知模块206发送存储位置。通知模块206在又一实施例中例如以周期间隔向接收方设备406发送通知(线414),以向接收方设备406通知意图用于接收方设备406的消息在提供的存储位置处被存储在中间设备上。位于接收方设备406上的消息模块204从中间设备404取回消息(线416),并且向发送方设备402发送指示消息被成功地取回的确认消息(线418)。

图5是描绘用于向不可用设备发送消息的方法500的一个实施例的示意流程图。方法500开始并且确定502用于消息的接收方设备不可用于接收消息。方法500响应于确定接收方设备不可用于接收消息,来向中间设备发送504消息用于存储,直至接收方设备可用于接收消息。方法500向接收方设备发送506消息可用于从中间设备访问的通知,并且方法500结束。在一个实施例中,状态模块202、消息模块204和/或通知模块206执行方法500的各种步骤。

图6是描绘用于向不可用设备发送消息的方法600的一个实施例的示意流程图。方法600开始并且在一个实施例中选择602用于存储意图用于接收方设备的消息的中间设备。方法600向接收方设备发送604消息。方法600确定606接收方设备是否可用于接收消息或者对接收消息进行响应。如果是,则方法600结束。

否则,如果接收方设备不可用,则方法600向中间设备发送608消息。方法600在又一实施例中在中间设备上的由接收方设备可访问的存储位置、诸如目录或者文件夹中存储610消息。方法600向接收方设备发送612通知以指示意图用于接收方设备的消息在确定的存储位置处被存储在中间设备上。

方法600在某些实施例中响应于来自接收方设备的请求,来从中间设备向接收方设备发送614中间设备上的存储的消息。在一个实施例中,方法600从接收方设备接收616已经从中间设备成功地取回消息的确认。方法600在各种实施例中从中间设备删除618消息,并且方法600结束。在一些实施例中,状态模块202、消息模块204、通知模块206、设备模块302、存储模块304和清理模块306执行方法600的各种步骤。

可以用其他具体形式实现实施例。描述的实施例将在所有方面仅被视为示例而非限制。本发明的范围因此由所附权利要求而不是由前文描述来指示。落入权利要求的等价物的含义和等效范围内的所有改变将被涵盖在它们的范围内。

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