一种消息处理方法、装置及系统
技术邻域
本申请属于计算机通信信息处理领域,尤其涉及一种消息处理方法、装置及系统。
背景技术
伴随着互联网在快速发展,许多领域中互联网应用的服务器访问量呈明显上升趋势。服务器上的业务系统需要具有一定的业务处理能力,对访问服务器的调用方的消息进行快速、准确处理。
一般的,在服务器业务系统被调用时,系统的处理能力总是有限的,而调用方需要在被调用方系统中处理的业务消息的数量和所述业务消息的产生时间不是固定的。如一个或多个调用方在短时间内几乎同时输出多个业务消息访问被调用方,会对被调用方产生短暂的冲击。如果访问量过大、经常性的突发性业务甚至还会导致被调用方业务系统的消息阻塞、系统崩溃等严重后果。为保障被调用方业务系统的稳定运行,现有技术中通常采用并发控制机制控制被调用方的业务处理流量。
所述的并发控制机制通常是指在系统间调用时,设置调用方与被调用方可保持的最大并发链接数,当出现新的链接请求时发现当前链接数已经超过设置的最大并发链接数时则拒绝创建新的链接。但在一些应用场景如集群模式下多个调用方访问被调用方时,虽然采用了并发机制控制所述调用方与被调用方可保持的最大并发链接数,但调用方为了争夺单位时间内的业务消息发送机会很容易造成请求失败而需要不停的重复请求发送,而调用方有新的业务消息产生时又会去业务节点申请发送。现有的并发控制机制主要是根据被调用方的业务处理能力在计数控制节点控制被调用方处理的业务流量,对调用方的业务消息输出没有限制。而调用方尤其是所述集群模式下高并发情况下可以以不同的频率输出业务消息,这些业务消息产生后都需要统一去所述计数控制节点进行消息发送处理,这样无疑对计数控制节点造成较大负担,造成单节点业务消息的处理的性能瓶颈问题,降低整个消息的处理效率。
所述集群模式下,如果所述调用方的业务系统是一个批次里的每笔流水都需要访问被调用方系统的应用场景,那么往往就会存在多笔流水(例如等于并发数100)几乎同时访问被调用方系统,而后处理后又几乎同时释放。实际的应用场景中不同的调用方可以在不同的时间段产生高并发业务消息,有的时候会多个调用方在相同或者临近时间段并发,有的时候也会全部空闲。这样会导致系统运行性能呈现波浪式或者尖刺,不利于调用方系统的稳定运行。
现有技术中采用的在调用方和被调用方之间设置的并发控制机制不能对调用方系统的消息输出进行控制,降低了被调用系统的稳定运行性能。在一些应用场景中如集群模式下还降低了计数控制节点的业务消息处理性能。
发明内容
本申请目的在于提供一种消息处理方法、装置及系统,可以使调用方平稳、均匀的输出业务消息,提高被调用方系统运行的稳定性,提升被调用方或者链接控制节点的业务消息处理性能和效率。本申请所述的消息处理方法和装置可以在不超过被调用方系统最大业务处理能力的情况下,最大化的利用被调用方的业务处理能力,提高资源使用效率。
本申请提供的一种消息处理方法、装置及系统是这样实现的:
一种消息处理方法,所述方法包括:
调用方计算发送业务消息的发送时长,根据所述发送时长向控制节点申请占用时间段;
所述控制节点在收到调用方的所述占用时间段的申请消息后,根据预定规则确定所述调用方占用时间段的申请结果,并将所述申请结果反馈给相应的调用方;
所述调用方在接收到的所述占用时间段的申请结果为成功时,计算所述业务消息的发送时间;
所述调用方在监测到超过所述业务消息的发送时间时,向所述控制节点申请所述业务消息的发送令牌;
所述控制节点在收到调用方的所述发送令牌的申请消息后,根据是否达到被调用方的最大业务处理能力确定所述调用方发送令牌的申请结果,并将所述申请结果反馈给相应的调用方;
所述调用方在接收到的所述业务消息的发送令牌申请结果为成功时,发送所述发送令牌申请成功的业务消息。
一种消息处理方法,所述方法包括:
计算发送业务消息的发送时长,根据所述发送时长发送申请占用时间段的第一申请消息;
在接收到的所述占用时间段的申请结果为成功时,计算所述业务消息的发送时间;
监测当前时间是否超过所述业务消息的发送时间;在监测到超过所述发送时间时,发送申请所述业务消息的发送令牌的第二申请消息;
在接收到的所述发送令牌的申请结果为成功时,发送所述发送令牌申请成功的业务消息。
一种消息处理方法,所述方法包括:
接收申请占用时间段和发送令牌的申请消息;
根据预定规则确定占用时间段的申请结果,发送所述占用时间段的申请结果;
根据是否达到被调用方的最大业务处理能力确定所述发送令牌的申请结果,发送所述发送令牌的申请结果。
一种消息处理装置,所述装置包括:
计算模块,用于计算发送业务消息的发送时长,并基于所述发送时长计算发送业务消息的占用时间段;
时间段申请模块,用于发送申请所述占用时间段的第一申请消息;
接收模块,用于接收占用时间段和发送令牌的申请结果的消息;
发送时间计算模块,用于基于接收到的所述占用时间段的申请结果为成功的消息计算业务消息的发送时间;
令牌申请模块,用于监测当前时间是否超过所述业务消息的发送时间;在监测到超过所述发送时间时,发送申请所述业务消息的发送令牌的第二申请消息;
发送模块,用于基于接收到的所述发送令牌的申请结果为成功的消息发送所述发送令牌申请成功的业务消息。
一种消息处理装置,所述装置包括:
申请消息接收模块,用于接收包括占用时间段的申请消息;还用于接收发送令牌的申请消息;
占用时间分配模块,用于根据预定规则为所述申请消息中的占用时间段分配业务消息的占用时间段;
令牌分配模块,用于根据被调用方当前的业务流量和最大业务处理能力分配发送令牌;
申请结果发送模块,用于发送所述占用时间段申请结果的消息;还用于发送所述发送令牌申请结果的消息。
一种消息处理系统,所述系统包括:
消息客户端,用于向控制端发送基于包括发送时长设置的占用时间段的第一申请消息;还用于基于接收到的所述占用时间段的申请结果为成功的消息计算业务消息的发送时间;还用于监测当前时间是否超过所述业务消息的发送时间,并在监测到超过所述发送时间时向所述控制端发送申请所述业务消息的发送令牌的第二申请消息;还用于基于接收到的所述发送令牌的申请结果为成功的消息发送所述发送令牌申请成功的业务消息。
控制端,用于接收消息客户端发送的所述第一申请消息和所述第二申请消息;还用于根据预定规则为所述第一申请消息中的占用时间段分配业务消息的占用时间段;还用于根据被调用方当前的业务流量和最大业务处理能力为所述第二申请消息中的业务消息分配发送令牌;还用于将所述第一申请消息和第二申请消息的申请结果发送给所述消息客户端。
本申请提供的一种消息处理方法、装置及系统,可以通过为业务消息申请占用时间段,并对每条业务消息设置相应的发送时间,在申请到发送令牌后才可以发送业务消息。这样,可以对调用方业务消息的进行输出控制,实现均匀平稳的输出业务消息,可以提高被调用方系统运行的稳定性。在本申请中可以在不超过被调用方最大业务处理能力的情况下,调用方可以最大化的输出业务消息,充分利用被调用方系统的最大处理能力,提高系统资源利用率。同时由于对所述调用方的输出控制,可以避免集群模式下性能单点和瓶颈问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本邻域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一种消息处理方法一种实施例的流程示意图;
图2是本申请一种消息处理方法一种实施例的流程示意图;
图3是本申请一种消息处理方法另一种实施例的流程示意图;
图4是本申请一种消息处理方法另一种实施例的流程示意图;
图5是本申请一种消息处理方法一种实施例的流程示意图;
图6是本申请一种消息处理方法另一种实施例的流程示意图;
图7是本申请一种消息处理方法另一种实施例的流程示意图;
图8是本申请一种消息处理装置一种实施例的模块结构示意图;
图9是本申请所述消息处理装置中计算模块一种实施例的模块结构示意图;
图10是本申请所述消息处理装置另一种实施例的模块结构示意图;
图11是本申请所述消息处理装置另一种实施例的模块结构示意图;
图12是本申请所述消息处理装置一种实施例的模块结构示意图;
图13是本申请所述消息处理装置另一种实施例的模块结构示意图;
图14是本申请所述消息处理装置另一种实施例的模块结构示意图;
图15是本申请一种消息处理系统的模块结构示意图。
具体实施方式
为了使本技术邻域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本邻域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请可以以集群模式下调用方和被调用方之间的消息传递为应用场景进行说明。当然,本申请所述的消息处理方法不局限于所述集群模式下的调用方与被调用方的消息交互,其他的多个终端或者同一终端上的不同应用之间的消息交互的应用场景仍然可以适用本申请所述的消息处理方法。所述的集群通常可以指一组相互独立的、通过网络互联的计算机。这些计算机构成了一个组,可以为分布式的网络工作组。所述的集群中的一个或者多个或者全部计算机可以作为服务器对外开放业务,向所述集群外的计算机进行信息交互。在一些应用场景中,所述集群中的多个计算机可以作为调用方向所述集群中的其他计算机发送业务消息进行处理,此时,所述接收业务消息的集群中的其他计算机可以作为被调用方进行相应的响应。
需要说明的是,本申请方法中所述的调用方、被调用方等可以为所述集群模式下的计算机终端,也可以为终端上的应用,或者也可以为终端上的功能模块。下面结合附图以集群模式下的多个服务器终端为例对本申请所述的消息处理方法进行详细的说明。图1是本申请所述一种消息处理方法一种实施例的方法流程图。如图1所示,所述方法可以包括:
S1:调用方计算发送业务消息的发送时长,根据所述发送时长向控制节点申请占用时间段。
所述调用方在产生流水业务需要发送业务消息时,可以计算发送完所述业务消息所需要的发送时间。一般的,所述调用方产生业务消息通常可以包括产生属于同一批次或者同一业务流水(如周期采集汇总的订单消息)的多个业务消息,这些业务消息通常需要在相对集中的时间段内访问被调用方。所述调用方可以根据单个业务消息的发送间隔计算发送完所述调用方某个批次下所有业务消息所述需要的发送时长。当然,所述调用方也可以不按照所述批次或者业务流水发送业务消息,在一些应用场景中也可以发送当前调用方中所有的待发送业务消息,或者周期性的扫描后发送当前所有的待发送业务消息。
如上所述,所述发送时长可以根据单个业务消息的发送间隔进行计算,如调用方需要发送100条业务消息,每个间隔10毫秒发送一条业务消息。那么,计算得到的所述发送时长可以为990毫秒。在计算完所述发送时长后,可以根据所述发送时长向控制节点申请发送所述业务消息需要的占用时间段。具体的,所述根据所述发送时长向控制节点申请占用时间段可以包括:
S101:获取控制节点的最新占用时刻,向所述控制节点发送以所述获取的最新占用时刻加上所述发送时长作为所述占用时间段的第一申请消息。
所述的控制节点通常可以包括为保障与被调用方建立的并发链接数不超过设置的最大并发链接数而设置的数据处理功能模块,可以包括数据库或者控制单元。本申请中所述的控制节点可以包括分布式计数节点,具体的例如可以采用Tair或者memcache等。所述的控制节点可以设置在被调用方的业务消息接入接口中,也可以设置在调用方统一的消息输出接口或者作为单独的服务单元控制调用方的消息发送。本实施例中可以采用将所述控制节点作为单独的服务单元,所述调用方需要发送业务消息时可以先向所述控制节点进行申请发送资源,由控制节点根据网络资源、调用方或者被调用方的业务状态等为调用方分配资源。
所述的控制节点中通常需要设置占用时刻的信息。所述的占用时刻可以表示为所述控制节点在所述占用时刻之前的时间已经分配占用,所在占用时刻后面的时间可以申请占用。每次占用时间段分配后可以更新占用时刻,以保障提供的为正确、及时的最新占用时刻。例如当前时刻为0秒,所述占用时刻为100秒,可以表示为在当前时刻0秒至所述占用时刻100秒的时间内不能申请发送业务消息,所述调用方可以在所述占用时刻100秒后申请发送业务消息的占用时间段。因此,本实施例中可以获取所述控制节点的最新占用时刻T0,以所述最新占用时刻加上所述计算得到的发送时长TL作为该调用方发送所述业务消息需要占用时间段。然后可以向所述控制节点发送第一申请消息,所述第一申请消息中可以包括上述T0+TL的占用时间段请求信息。
当然,所述调用方在申请所述占用时间段失败时,例如申请的占用时间段为100秒至110秒(获取的占用时刻100秒+发送时长10秒)的时间段被其他调用方先申请占用了到了105秒的时刻,此时所述调用方可以获取最新的占用时刻105秒,然后根据所述最新的占用时刻105秒继续向控制节点发送占用时间段为105秒至115秒(获取的最新占用时刻105秒+发送时长10秒)的第一申请消息。
调用方可以计算发送业务消息的发送时长,并可以根据所述发送时长向控制节点申请占用时间段。
S2:所述控制节点在收到调用方的所述占用时间段的申请消息后,根据预定规则确定所述调用方占用时间段的申请结果,并将所述申请结果反馈给相应的调用方。
所述控制节点例如TAIR计数节点可以为发送时间资源分配的处理单元。所述控制节点收到一个或者多个调用方发送来的申请占用时间段的一个或者多个申请消息,可以根据设置的预定规则进行处理,确定一个或者多个调用方占用时间段的申请结果。一般的,所述控制节点的最新占用时刻可以为对所有调用方公开的信息,多个调用方可以根据公开的所述最新占用时刻申请占用时间段。所述控制节点在接收到多个根据最新的占用时刻发送的占用时间段申请消息时,可以采取优先处理最先接收到的申请消息的预定规则,将所述最新的占用时刻后面的发送时间分配给最新接收到的申请消息的调用方。相应的,在所述最新接收到的申请消息的调用方申请占用时间段成功后,其他同样根据上述申请成功的最新占用时刻发送的申请消息则申请失败。所述控制节点可以将所述调用方的申请结果反馈给相应的调用方。
具体的应用场景中,例如三个调用方C1、C2、C3获取的最新占用时刻为100秒,分别向所述控制节点申请占用时间段为(100至110)秒、(100至130)秒、(100至115)秒。所述控制节点先接收到调用方C1的占用时间段申请消息,然后将100至110秒的时间资源分配给调用方C1使用,那么所述调用方C占用时间段的申请结果为申请成功。此时,所述控制节点可以根据最近C1申请消息的数量将最新占用时刻100秒更新为110秒。与此同时,所述控制节点接收到调用方C2、C3的申请消息后,发现根据获取的占用时刻为100秒申请的占用时间段已经被占用,则申请结果为申请失败。所述调用方C2、C3可以获取最新的占用时刻为110秒,然后可以根据最新的占用时刻110秒重新向所述控制节点申请占用时间段。
上述实施例为集群模式下控制节点对申请消息处理的应用场景。当然,所述的处理调用方占用时间段申请的预定规则也可以根据其他应用场景或者需求进行设置。例如,可以根据占用时间段申请消息的优先级优先处理优先级别高的申请消息,或者处理先接收到的申请消息等,在处理的申请消息中的占用时间段没有被占用时为其分配时间段。
所述控制节点在收到调用方的所述占用时间段的申请消息后,根据预定规则确定所述调用方占用时间段的申请结果;所述控制节点将所述申请结果反馈给相应的调用方。
S3:所述调用方在接收到的所述占用时间段的申请结果为成功时,计算所述业务消息的发送时间。
所述调用方如果接收到的所述控制节点反馈的申请结果为所述占用时间段的占用时间申请成功,则可以调用方当前要发送批次中每条业务消息的发送时间。如申请的占用时间段为100秒至110秒,在所述占用时间段内需要发送100条业务消息,每条消息发送时间为100毫秒,则可以计算第一条业务消息的发送时间为100秒、第二条业务消息的发送时间为100.1秒、…、第100条业务消息的发送时间为109.9秒。
所述调用方计算完每条业务消息的发送时间,然后可以存放入本地的消息发送队列中。一般的,所述发送队列可以为采用根据存入先后顺序设定发送优先级的栈或进程等数据存储、处理单元。
如前所述,如果所述调用方接收的所述占用时间段的申请结果为失败时,可以根据获取的控制节点的最新占用时刻重新申请占用时间段。当然,也可以设置间隔一段时间后重新申请,或者申请失败达到阀值次数后发出提示信息,进行相应的处理。
所述调用方在接收到的所述占用时间段的申请结果为成功时,可以计算每条业务消息的发送时间,并可以将所述业务消息置于在发送队列中。本实施例中,也可以将所述发送队列中的业务消息的状态设置为待发送状态。本申请实施例中为调用方的业务消息通过申请占用时间段和为业务消息设置发送时间,可以有效的使调用方的业务消息固定频率输出。
S4:所述调用方在监测到超过所述业务消息的发送时间时,向所述控制节点申请所述业务消息的发送令牌。
所述调用方可以对所述占用时间段申请成功的业务消息进行周期性的监测,当监测到到达所述业务消息的发生时间时可以向控制节点申请发送令牌,以获取业务消息发送指令。例如上述集群模式实施例中,可以设置一个进程每间隔1秒对所述发送队列中待发送状态的业务消息的发送时间进行扫描,在扫描到所述待发送业务消息的发送时间超过当前时刻时,可以向TAIR计数节点申请并发令牌。
需要说明的,本实施例中所述的超过或者到达所述业务消息的发送时间可以包括当前时间与所述发送时间相同,或者可以为所述当前时间大于所述发送时间。例如间隔1秒扫描所述发送时间时,扫描到当前时间99秒到达了业务消息MSG_A的发送时间99秒,但还没有到达业务消息MSG_B的发送时间为99.9秒。此时,调用方可以先申请业务消息MSG_A的并发令牌。经过1秒后当前时间为100秒,扫描到已经超过所述业务消息MSG_B的发送时间为99.9秒,此时可以申请业务消息MSG_B的并发令牌。当然,也可以设置所述当前时间大于所述发送时间的过期时间,可以对超过所述过期时间的业务消息不再申请发送令牌。例如设置所述为30秒时,可以表示为扫描到当前时间超过业务消息的发送时间30秒时,则可以不再为所述超过发送时间30秒的业务消息申请发送令牌。对于上述此次不再申请发送令牌的业务消息,也可以由其他指定方式进行处理。
所述调用方可以周期性的监测扫描业务消息的发送时间,在监测到当前时间超过所述业务消息的发送时间时,向所述控制节点申请发送令牌。
S5:所述控制节点在收到调用方的所述发送令牌的申请消息后,根据是否达到被调用方的最大业务处理能力确定所述调用方发送令牌的申请结果,并将所述申请结果反馈给相应的调用方。
所述控制节点可以根据当前被调用方的业务情况是否达到设定的最大业务处理能判断是否为申请发送令牌的业务消息分配令牌,实现调用方业务处理流量的控制。例如所述控制节点根据当前的并发链接数和设置的调用方与被调用方法可以保持的最大并发链接确定所述并发令牌的申请结果,如果当前并发连接数没有达到所述最大并发链接数,则可以根据接收到的申请并发令牌的时间先后顺序为业务消息发送并发令牌。然后可以将所述申请结果发送至所述调用方。通过控制节点对并发链接数据的控制,可以在未达到被调用方的最大业务处理能力时为业务消息分配发送令牌,最大化的调用被调用方的业务处理能力,提高消息处理效率。
如果当前业务流量已经达到被调用方的最大业务处理能力,如达到最大并发链接数,则可以设置所述业务消息的发送令牌申请失败,可以将申请失败的结果返回给相应的调用方。此时,所述发送令牌申请失败的业务消息可以在休眠预定时间后重新申请发送令牌。所述调用方休眠的时间可以根据消息处理需求进行设定。
S6:所述调用方在接收到的所述业务消息的发送令牌申请结果为成功时,发送所述发送令牌申请成功的业务消息。
所述调用方的业务消息在申请发送令牌成功后,可以将业务消息发送至被调用方。如上所述,所述发送令牌申请失败的业务消息可以休眠预定时间后重新申请发送令牌。
本申请所述的一种消息处理方法,调用方可以通过为业务消息设置发送时间,可以有效的使调用方的业务消息以均匀的频率输出。同时,设置的控制节点对业务消息的发送时机进行控制。这样,本申请通过调用方固定频率输出和对被调用的业务流量控制可以将在控制节点的集中消息处理分散到各个调用方,大大减少控制节点的消息处理负担,可以有效的避免消息处理的单点性能瓶颈问题,提高发送消息的处理能力。控制节点可以在不超过被调用方业务系统处理能力的情况下,以均匀平稳的方式使被调用方业务系统处理能最大化,提高系统处理性能和系统的稳定运行。
本申请所述的消息处理方法,可以适用于包括但不限于集群模式下的调用方的消息处理。具体的本申请还提供一种消息处理方法,图2是本申请所述一种消息处理方法一种实施例的方法流程示意图,如图2所示,所述方法可以包括:
S11:计算发送业务消息的发送时长,根据所述发送时长发送申请占用时间段的对第一申请消息;
S12:在接收到的所述占用时间段的申请结果为成功时,计算所述业务消息的发送时间;
S13:监测当前时间是否超过所述业务消息的发送时间;在监测到超过发送时间时,发送申请所述业务消息的发送令牌的第二申请消息;
S14:在接收到的所述发送令牌的申请结果为成功时,发送所述发送令牌申请成功的业务消息。
所述发送的第一申请消息或者第二申请消息,可以由调用方发送、例如TAIR的计数控制节点接收、处理。本申请不排除其他的消息处理装置或者功能模块等来接收、处理所述第一或者第二申请消息。具体的,本实施例中占用时间段消息处理、发送时刻的监测、发送令牌消息的处理等可以参照本申请中的其他实施例,在此不做赘述。
如前述所述,本申请可以提供一种所述占用时间段的计算方式。具体的本申请所述一种消息处理方法的另一种实施例中,所述根据所述发送时长发送申请占用时间段的申请消息可以包括:
S111:获取控制节点的最新占用时刻,向所述控制节点发送以所述获取的最新占用时刻加上所述发送时长作为所述占用时间段的第一申请消息。
本实施例中所述的根据获取的控制节点的最新占用时刻和发送时长计算得到的时间段具体的实施过程可以参照本申请中S101的实施方式和相关叙述。
本申请所述一种消息处理方法的另一种实施例中,如果申请所述占用时间段失败,调用方接收到所述占用时间段的申请结果为失败时,可以尝试重新发送申请。图3是本申请所述一种消息处理方法另一种实施例的方法流程示意图,具体的如图3所示,所述一种消息处理方法的另一种实施例中,所述方法还可以包括:
S15:在接收到所述占用时间段的申请结果为失败时,根据获取的更新的最新占用时刻和所述发送时长计算新的占用时间段;发送包括所述新的占用时间段的第一申请消息。
所述占用时间段的占用时间段申请失败,通常的可以包括根据当前获取的最新占用时刻申请的占用时间段已经被其他调用方抢先申请使用。一般的,例如控制节点中新的占用时间段被申请使用成功后,可以更新最新占用时间,以便后续的调用方可以再次申请发送时间资源。本实施例中在所述占用时间段申请失败时,可以获取更新后的最新占用时刻,结合所述发送时长重新计算出新的占用时间段。然后可以继续发送包括所述新的占用时间段的第一申请消息,继续申请占用时间段。当然,也可以设置申请失败次数的阀值,如果调用方的占用时间段多次申请失败,次数达到所述阀值时可以采取停止申请,或者发出警告、提示、统计等信息,按照其他设定的方法进行处理。
本申请所述的一种消息处理方法,所述调用方在收到所述发送令牌申请结果为失败时,可以重新进行发送令牌的申请,也可以在休眠固定时间后再次申请。一般的,所述发送令牌申请失败通常可以包括当前业务流量达到了被调用方的最大业务处理能力,例如当前并发链接数达到调用方与被调用方可以保持的最大并发连接数。在这种情况下,需要被调用方处理完一条或者多条业务消息后,有空闲的业务处理能力才可以允许接入进行的业务。在现有的处理机制中,调用方通常是根据自身的业务消息产生情况向被调用方或者控制节点发送业务消息或者发送消息的令牌。在上述达到被调用方最大处理能力的情况下,被调用方不可以再接入业务,业务消息或者发送令牌申请失败,往往会导致盲目的发送新的申请,造成不必要的数据处理负担。本申请提供的另一种消息处理方法中,例如所述调用方在所述发送令牌申请失败,可以根据控制节点确定的发送令牌最近的可用时间指示所述调用方的休眠时间,让所述调用方在到达所述发送令牌的有效申请时间时再申请发送令牌。这样既可以提高发送令牌的申请成功率,同时又可以避免为争抢发送令牌在发送令牌不可申请的情况下仍然多次重复发送申请,增加额外开销。
图4是本申请所述一种消息处理方法另一种实施例的方法流程示意图,如图4所示,本申请所述的一种消息处理方法的另一种实施例中,所述方法还可以包括:
S16:在接收到的所述发送令牌的申请结果为失败时,获取令牌申请有效时间;在达到所述令牌申请有效时间时,重新发送所述发送令牌申请结果为失败的业务消息的第二申请消息。
当然,除了上述被调用方达到最大处理能力的情况,其他的发送令牌暂时不可申请的应用场景,例如被其他调用方使用中未释放,或者设置的其他发送令牌申请限制的应用场景仍然可以采取上述实施例的所述的方法。
本申请所述一种消息处理方法中所述的控制节点可以对调用方发送的消息进行处理,例如分配所述业务消息占用时间段的占用时间或者根据调用方的最大业务处理能力分配发送令牌等资源。具体的,本申请可以提供一种消息处理方法,所述方法可以包括:
S21:接收申请占用时间段和发送令牌的申请消息;
S22:根据预定规则确定占用时间段的申请结果,发送所述占用时间段的申请结果;
S23:根据是否达到被调用方的最大业务处理能力确定所述发送令牌的申请结果,发送所述发送令牌的申请结果。
图5是本申请上述所述一种消息处理方法一种实施例的方法流程示意图。在本实施例中,可以由控制节点接收调用方发送的占用时间段和发送令牌的申请消息,然后进行相应的数据处理,将处理结果返回给调用方。上述实施例中所述控制节点确定所述占用时间段的申请结果的预定规则可以根据消息处理需求进行设置。例如可以根据所述控制节点的最新占用时刻和在所述最新占用时刻最先接收到的占用时间段申请消息分配占用时间段的资源,也可以根据申请消息中设置的占用时间段的申请优先级进行分配。具体的可以根据实际消息处理需求设置,本实施例可以对此不做具体某一方式的限定。
图6是本申请上述所述一种消息处理方法另一种实施例的方法流程示意图。如图6所示,在本申请提供的一种消息处理方法的另一种实施例中,所述方法可以包括:
S24:所述占用时间段的申请结果为成功时,更新所述控制节点的最新占用时刻。
所述控制节点为调用方的业务消息分配占用时间段后,可以更新最新占用时刻,以便其它发送占用时间段申请失败的调用方可以根据更新的最新占用时刻重新申请发送时间资源。
图7是本申请上述所述一种消息处理方法另一种实施例的方法流程示意图。如图7所示,在本申请提供的一种消息处理方法的另一种实施例中,所述方法可以包括:
S25:在达到被调用方的最大业务处理能力时,获取所述被调用方最近的业务接入可用时间,将所述最近的业务接入可用时间作为令牌申请有效时间。
所述的设置的令牌申请有效时间可以包括为所述被调用方最近的业务接入可用时间,也可以包括设置的其他令牌申请的有效时间。所述的将所述令牌有效时间提供给调用方可以包括提供查询接口,或者发送所述令牌申请有效时间至调用方。
本申请上述实施例中所述的消息处理方法,通过对调用方业务消息均匀平稳输出和对被调用的业务流量控制可以将在控制节点的集中消息处理分散到各个调用方,大大减少控制节点的消息处理负担,可以有效的避免消息处理的单点性能瓶颈问题,提高发送消息的处理能力。并且申请所述方法可以在不超过被调用方业务系统处理能力的情况下,以均匀平稳的方式使被调用方业务系统处理能最大化,提高被调用方系统处理性能和系统运行的稳定性。
基于本申请上述实施例所述的消息处理方法,本申请提供一种消息处理装置。图8是本申请所述消息处理装置一种实施例的模块结构示意图。所述消息处理终端可以包括PC终端、移动电子设备、服务器、分布式网络终端以及包括存储于实体介质上可执行程序的装置、模块、应用等。具体的,如图8所示,所述消息处理装置可以包括:
计算模块101,可以用于计算发送业务消息的发送时长,并基于所述发送时长计算发送业务消息的占用时间段;
时间段申请模块102,可以用于发送申请所述占用时间段的第一申请消息;
接收模块103,可以用于接收占用时间段和发送令牌的申请结果的消息;
发送时间计算模块104,可以用于基于接收到的所述占用时间段的申请结果为成功的消息计算业务消息的发送时间;
令牌申请模块105,可以用于监测当前时间是否超过所述业务消息的发送时间;在监测到超过所述发送时间时,发送申请所述业务消息的发送令牌的第二申请消息;
发送模块106,可以用于基于接收到的所述发送令牌的申请结果为成功的消息发送所述发送令牌申请成功的业务消息。
本申请提供的所述消息处理装置可以以申请的占用时间段计算出的业务消息的发送时间均匀、平稳的输出业务消息,并可以通过发送令牌实现最大业务的输出。本申请的消息处理装置可以有效提高业务消息被调用方系统运行的稳定性,同时可以降低控制节点的负担,避免控制节点业务消息处理的单点性能瓶颈问题。
图9是本申请所述消息处理装置中计算模块101一种实施例的模块结构示意图。如图9所示,所述计算模块101可以包括:
占用时刻模块1011,可以用于获取控制节点的最新占用时刻;
占用时间段模块1012,可以用于以所述获取的最新占用时刻加上所述发送时长计算出的时间段作为所述占用时间段。
图10是本申请所述一种消息处理装置另一种实施例的模块结构示意图。如图10所示,所述装置还可以包括:
第一申请失败处理模块107,可以用于在接收到所述占用时间段的申请结果为失败时,根据所述计算模块获取的最新占用时刻计算业务消息的新的占用时间段;将包括所述新的占用时间段的第一申请消息发送至所述时间段申请模块102。
本实施例中在所述占用时间段申请失败时,可以获取更新后的最新占用时刻,结合所述发送时长重新计算出新的占用时间段。然后可以继续发送包括所述新的占用时间段的第一申请消息,继续申请占用时间段。当然,也可以设置申请失败次数的阀值,如果调用方的占用时间段多次申请失败,次数达到所述阀值时可以采取停止申请,或者发出警告、提示、统计等信息,按照其他设定的方法进行处理。
图11是本申请所述一种消息处理装置另一种实施例的模块结构示意图。如图11所示,所述装置还可以包括:
第二申请失败处理模块108,可以用于在接收到的所述发送令牌的申请结果为失败时,获取令牌申请有效时间;在达到所述令牌申请有效时间时,向所述发送模块106下达重新发送所述发送令牌申请结果为失败的业务消息的第二申请消息的指令。
上述实施例的一种消息处理装置中,例如所述调用方在所述发送令牌申请失败,可以根据控制节点确定的发送令牌最近的可用时间指示所述调用方的休眠时间,让所述调用方在到达所述发送令牌的有效性申请时间时再申请发送令牌。这样既可以提高发送令牌的申请成功率,同时又可以避免为争抢发送令牌在发送令牌不可申请的情况下仍然多次重复发送申请,增加额外开销。
在所述第一申请消息或第二申请消息的处理方,例如控制节点,可以根据预先设置的消息处理方法对消息输出端进行消息资源的分配和链接数的控制等处理,实现消息输出端业务消息的均匀输出和在不超过被调用方业务最大处理能力的情况下最大化的利用被调用方的业务处理能力。本申请还可以提供一种消息处理装置,具体的实施例中如集群模式下的控制节点,所述装置的一种实施方法如图12所示,具体的所述装置可以包括:
申请消息接收模块201,可以用于接收包括占用时间段的申请消息;还可以用于接收发送令牌的申请消息;
占用时间分配模块202,可以用于根据预定规则为所述申请消息中的占用时间段分配业务消息的占用时间段;
令牌分配模块203,可以用于根据被调用方当前的业务流量和最大业务处理能力分配发送令牌;
申请结果发送模块204,可以用于发送所述占用时间段申请结果的消息;还可以用于发送所述发送令牌申请结果的消息。
图12是本申请所述一种消息处理装置一种实施例的模块结构示意图。本实施例中所述的消息处理装置例如可以为控制节点,可以接收调用方发送的占用时间段和发送令牌的申请消息,然后进行相应的数据处理,将处理结果返回给调用方。上述实施例中所述控制节点确定所述占用时间段的申请结果的预定规则可以根据消息处理需求进行设置。例如可以根据所述控制节点的最新占用时刻和在所述最新占用时刻最先接收到的占用时间段申请消息分配占用时间段的资源,也可以根据申请消息中设置的占用时间段的申请优先级进行分配。具体的可以根据实际消息处理需求设置,本实施例可以对此不做具体某一方式的限定。
图13是本申请所述一种消息处理装置另一种实施例的模块结构示意图。如图13所示,所述装置还可以包括:
占用时刻更新模块205,可以用于在为所述业务消息分配占用时间段后,更新所述占用时间分配模块202最新占用时刻。
所述占用时刻更新模块205可以在所述消息处理装置为的业务消息分配占用时间段后,更新最新占用时刻,以便其它发送占用时间段申请失败的调用方可以根据更新的最新占用时刻重新申请发送时间资源。所述的最新占用时刻可以表示在所述消息处理中装置中,在所述占用时刻之前的时间已经分配占用,所在占用时刻后面的时间可以申请占用。实现该数据处理的单元可以设置在所述占用时间分配模块202中,当然,其他的实施例中也可以设置在其他或者专用的模块中。
图14是本申请所述一种消息处理装置另一种实施例的模块结构示意图。如图14所示,所述装置还可以包括:
令牌申请时间模块206,可以用于在达到所述被调用方的最大业务处理能力时,获取所述被调用方最近的业务接入可用时间,将所述最近的业务接入可用时间作为令牌申请有效时间。
本实施例中设置令牌申请时间模块206,可以有效的提高调用方业务消息发送令牌的申请成功率,减少发送令牌申请的次数,提高系统处理性能。
本申请所述的消息处理装置,可以用于所述集群模式下重发利用被调用方系统最大处理能力的并发控制。当然,本申请并不限于所述集群模式下的消息处理,也可以适用于其他应用场景消息发送控制的业务处理系统。基于上述实施例,本申请提供一种消息处理系统,图15是本申请所述一种消息处理系统的模块结构示意图,如图15所示,所述系统可以包括:
消息客户端1,可以用于向控制端2发送基于包括发送时长设置的占用时间段的第一申请消息;还可以用于基于接收到的所述占用时间段的申请结果为成功的消息计算业务消息的发送时间;还可以用于监测当前时间是否超过所述业务消息的发送时间,并在监测到超过所述发送时间时向所述控制端2发送申请所述业务消息的发送令牌的第二申请消息;还可以用于基于接收到的所述发送令牌的申请结果为成功的消息发送所述发送令牌申请成功的业务消息。
控制端2,可以用于接收消息客户端发送的所述第一申请消息和所述第二申请消息;还可以用于根据预定规则为所述第一申请消息中的占用时间段分配业务消息的占用时间段;还可以用于根据被调用方当前的业务流量和最大业务处理能力为所述第二申请消息中的业务消息分配发送令牌;还可以用于将所述第一申请消息和第二申请消息的申请结果发送给所述消息客户端。
本申请中所述的消息处理方法、装置及系统,可以通过控制调用方业务消息均匀平稳输出和对被调用的业务流量控制可以将在控制节点的集中消息处理分散到各个调用方,大大减少控制节点的消息处理负担,可以有效的避免消息处理的单点性能瓶颈问题,提高业务消息发送的处理能力。并且申请所述方法可以在不超过被调用方业务系统处理能力的情况下,以均匀平稳的方式使被调用方业务系统处理能最大化,提高被调用方系统处理性能和系统运行的稳定性。
尽管本申请内容中提到集群模式下的消息交互、计数控制节点Tair、令牌等之类的数据交互、处理描述,但是,本申请并不局限于必须是完全标准或者所提及的方法的数据交互、处理的情况。本申请中各个实施例所涉及的上述描述仅是本申请中的一些实施例中的应用,在某些标准、方法的基础上略加修改后的处理方法也可以实行上述本申请各实施例的方案。当然,在符合本申请上述各实施例的中所述的处理方法步骤的其他无创造性的变形,仍然可以实现相同的申请,在此不再赘述。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的单元或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现,例如将发送时间模块合并到计算模块中计算发送时间,也可以将实现同一功能的模块由多个子模块或子单元的组合实现。
本邻域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本邻域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本邻域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。