提高应用软件吞吐量的方法、存储介质
专利摘要:本发明提供一种提高应用软件吞吐量的方法、存储介质,方法包括:客户端接收到对应一服务器上一节点的消息后,对应所述一节点缓存所述消息至本地;当对应一节点的消息达到预设数量时,或者对应一节点到达预设时间周期时,则打包本地对应所述一节点的消息为一数据包,并将其发送至所述一服务器的所述一节点。本发明能有效减少IO以及网络交互,从而实现各种软件交互数据的吞吐量的提升;进一步地,还能有效地提高分布式消息中的交互效率,且具备灵活性。
专利说明:
提高应用软件吞吐量的方法、存储介质
[0001] 技术领域
[0002] 本发明涉及应用软件的数据传输领域,具体涉及提高应用软件吞吐量的方法、存储介质。
[0003] 背景技术
[0004] 在很多项目中,都会使用到MQ消息中间件,如各种缓存软件、各种的数据库,以及多种的软件。其中,又因为现在的应用种类繁多,各种用户数据,行为数据等也是各种各样的,从而导致数据交换频繁。因此,为了满足大量的数据交互行为的需求,同时提高安全性,各种软件都会提供分布式部署的功能。简单来说,就是一种软件可能存在多个节点的情况,各个节点都负担起一定的功能与服务,通过增加节点来实现服务性能的扩容。
[0005] 与此对应的,每一种软件的使用一般都会提供驱动软件来实现这样的简单使用的功能。比如java版本的数据库驱动、MQ的驱动,以及各种缓存使用的驱动包。在正常情况下,我们使用这些驱动来完成消息以及数据的发送都没问题,不过,如果用户数据量继续增大呢?可以通过增加其中的连接池数量来实现大量的数据交互;可是如果数据量继续增大呢,是否有其他的方式来实现交互数据的吞吐量提升。
[0006] 本申请正是针对上述情况,提供一种高应用软件吞吐量的方法、存储介质,实现应用软件交互数据吞吐量的提升。
[0007] 发明内容
[0008] 本发明所要解决的技术问题是:提供一种提高应用软件吞吐量的方法、存储介质,有效提高分布式中消息的交互效率。
[0009] 为了解决上述技术问题,本发明采用的技术方案为:
[0010] 一种提高应用软件吞吐量的方法,包括:
[0011] 客户端接收到对应一服务器上一节点的消息后,对应所述一节点缓存所述消息至本地;
[0012] 当对应一节点的消息达到预设数量时,或者对应一节点到达预设时间周期时,则打包本地对应所述一节点的消息为一数据包,并将其发送至所述一服务器的所述一节点。
[0013] 本发明提供的另一个技术方案为:
[0014] 一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述一种提高应用软件吞吐量的方法所包含的步骤。
[0015] 本发明的有益效果在于:本发明通过对应节点进行消息缓存并分批打包发送的方式,将多条消息进行打包发送,有效减少IO以及网络交互,从而实现了各种软件交互数据的吞吐量的提升。
[0016] 附图说明
[0017] 图1为本发明实施例一种提高应用软件吞吐量的方法的流程示意图;
[0018] 图2为本发明实施例一的提高应用软件吞吐量的系统构造图。
[0019] 具体实施方式
[0020] 为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
[0021] 本发明最关键的构思在于:通过对应节点进行消息缓存并分批打包发送的方式,有效减少IO以及网络交互。
[0022] 请参照图1以及图2,本发明提供一种提高应用软件吞吐量的方法,包括:
[0023] 客户端接收到对应一服务器上一节点的消息后,对应所述一节点缓存所述消息至本地;
[0024] 当对应一节点的消息达到预设数量时,或者对应一节点到达预设时间周期时,则打包本地对应所述一节点的消息为一数据包,并将其发送至所述一服务器的所述一节点。
[0025] 进一步的,所述并将其发送至所述一服务器的所述一节点,具体为:
[0026] 判断本地中是否存在所述一服务器上其他节点对应的待发送的数据包,若是,则打包所述一数据包和所述待发送的数据包为一新的数据包,且所述一新的数据包中存储有其内各个数据包的节点标识;
[0027] 客户端发送所述一新的数据包至所述一服务器。
[0028] 由上述描述可知,作为进一步的优化方案,针对同一服务器上的不同节点之间的消息,采用捆绑打包发送并附上节点标识的方式,再一次减少IO以及网络交互,有效地提高了分布式消息中的交互效率。
[0029] 进一步的,所述客户端发送所述一新的数据包至所述一服务器,具体为:
[0030] 客户端通过其与所述一服务器上任一节点的通信链路,发送所述一新的数据包至所述一服务器。
[0031] 由上述描述可知,由于附带有节点标识,因此对应同一服务器,可选择任一节点路径进行发送,因而更具灵活性和选择空间,还能尽可能的做到负载均衡。
[0032] 进一步的,所述发送所述一新的数据包至所述一服务器,之后,还包括:
[0033] 接收到所述一新的数据包的节点解析所述一新的数据包,得到其内的各个数据包及其节点标识;
[0034] 所述接收到所述一新的数据包的节点依据所述各个数据包的节点标识,通过内网将所述各个数据包发送至对应的节点。
[0035] 由上述描述可知,对应同一服务器上的各个节点,均可依据节点标识,依靠内网来高效而准确地传送消息数据包,不仅节省了外网资源,而且充分利用了内网传送速度高的优势,从而提高了消息数据包的接收速度。
[0036] 进一步的,所述任一节点由所述一数据包和所述待发送的数据包对应的节点中随机选取。
[0037] 由上述描述可知,在一具体实例中,从待接收消息的多个节点中随机选取一个节点路径进行发送,相较于选取不用接收消息的节点再进行分发,能够减少内网分发的次数,从而提高交互效率。
[0038] 本发明提供的另一个技术方案为:
[0039] 一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现:
[0040] 一种提高应用软件吞吐量的方法,包括:
[0041] 客户端接收到对应一服务器上一节点的消息后,对应所述一节点缓存所述消息至本地;
[0042] 当对应一节点的消息达到预设数量时,或者对应一节点到达预设时间周期时,则打包本地对应所述一节点的消息为一数据包,并将其发送至所述一服务器的所述一节点。
[0043] 进一步地,所述并将其发送至所述一服务器的所述一节点,具体为:
[0044] 判断本地中是否存在所述一服务器上其他节点对应的待发送的数据包,若是,则打包所述一数据包和所述待发送的数据包为一新的数据包,且所述一新的数据包中存储有其内各个数据包的节点标识;
[0045] 客户端发送所述一新的数据包至所述一服务器。
[0046] 进一步地,所述客户端发送所述一新的数据包至所述一服务器,具体为:
[0047] 客户端通过其与所述一服务器上任一节点的通信链路,发送所述一新的数据包至所述一服务器。
[0048] 进一步地,所述发送所述一新的数据包至所述一服务器,之后,还包括:
[0049] 接收到所述一新的数据包的节点解析所述一新的数据包,得到其内的各个数据包及其节点标识;
[0050] 所述接收到所述一新的数据包的节点依据所述各个数据包的节点标识,通过内网将所述各个数据包发送至对应的节点。
[0051] 进一步地,所述任一节点由所述一数据包和所述待发送的数据包对应的节点中随机选取。
[0052] 请参照图2,本发明的实施例一为:
[0053] 如图2所示,存在2台服务器,分别为服务器A和服务器B,二者均部署一个分布式应用软件,即rabbitmq集群的多个节点实例。比如MQ消息中间件这样的软件,其中有4个节点,服务器A部署节点1和节点2;服务器B部署节点3和节点4。同时,节点1、2、3和4为同一个数据库集群下的多个实例节点,即所有节点服务状态以及功能等均一致,只是部署在不同的服务器上而已。
[0054] 在各个节点部署完毕,均能正常启动后。针对客户端驱动包进行改造。首先,在客户端包驱动包中,需要提供本地内存的缓存功能。具体实现方式为:当客户端驱动包(接口)接收完请求消息,需要向服务端(MQ集群)发送消息时,预先存储该条消息至本地内存中。第一种方式:对应各个节点预设消息阈值,当对应一节点的消息达到阈值时,比如内存中向集群的节点1中发送的消息达到10条,则将本地缓存中对应该节点的所有消息打包,即打包该10条消息,作为一个数据包,然后发送至节点1中。第二种方式:对应各个节点预设消息发送时间周期,当到达预设的时间周期时,则将本地对应节点的所有消息打包,发送数据包至该节点。例如,每隔5秒钟,如果向节点1中发送的消息不到10条,也需要打包消息,作为一个数据包发送至节点1中。
[0055] 实施例二
[0056] 本实施例在实施例一的基础上做进一步优化限定,具体限定如下:
[0057] 当服务端启动完毕,客户端启动后会与服务端建立连接。旧有方式为客户端会与每一个的服务端节点建立一个连接,当需要发送消息时,通过该连接发送消息。比如,此时有一个包a发送至节点1,一个包b发送至节点2,都是在一个服务器上的两个节点,但是需要发送两次。
[0058] 而在本实施例中,客户端在与服务器节点建立连接后,会对连接进行分组,同一个服务器上的连接进行一组标识。例如,对应图2,节点1和节点2一组,对应服务器A;节点3和节点4一组,对应服务器B。
[0059] 在实施例一执行将数据包发送至一服务器的对应节点时,还将判断内存中是否存在需要发送到同一服务器上其他节点的数据包,在此称为待发送的数据包;若有,则将对应同一个服务器的所有待发送的数据包一起打包成一个新的数据包,且该新的数据包中还同时附带有其内各个数据包对应节点的标识,以标识数据包与节点的对应关系;然后将新的数据包发送至服务器。
[0060] 可选地,客户端将通过其与上述服务器上任一节点的通信链路,发送所述新的数据包至对应的服务器。假设该服务器为A,通过客户端与服务器A上的节点1来发送数据包,则服务器A的节点1接收到所述新的数据包后,将解析该数据包,获取其中的各个数据包及其对应的节点标识;然后,依据各个数据包对应的节点标识,将数据包发送至对应的节点。
[0061] 优选地,所述任一节点从所述新的数据包中的各个数据包对应的各个节点中随机选取,这样能直接减少一次内网转发。
[0062] 例如,内存中存在两个包,一个包a发送至节点1,一个包b发送至节点2,不过,都是发送至同一台服务器A上的,因为它们的IP一致。则客户端一次性把这两个包,再次捆绑打包成一个更大的包,(这个包中有一个标识进行标识,包a是发送给节点1的,包b是发送给节点2的。),把这个更大的包通过连接节点1和节点2中的两条链路中,随机取一条出来,进行这个更大的数据包的发送。
[0063] 当节点1或者节点2收到这种捆绑类型的包时,需要进行解析,根据其中的类型,如果是自身接收的,则直接处理;如果是本台机器上(同一服务器)的其他节点的,则通过内网IP发送至其他节点,由其他节点进行处理。
[0064] 通过此种方式,多条消息只进行一次打包发送,减少IO以及网络交互,同时,针对分布式情况下多节点部署在同一机器上的,进行再次优化,针对同一机器上的不同节点之间的消息,进行捆绑打包发送,再一次减少IO以及网络交互,有效的提高的了分布式消息中的交互效率。
[0065] 本发明的实施例三为:
[0066] 本实施例对应实施例一和实施例二,提供一具体运用场景:
[0067] 在每个MQ应用部署上,配置文件中带上每个机房的标志。比如说wx-idc、bj-idc、sh-idc,分别表示MQ集群部署在无锡、北京和上海三个IDC机房中,其中每个机房部署两台服务器,每台服务器上部署至少一个MQ实例,这种是很常见的多机房集群部署方式。
[0068] 当客户端连接上来后会获取到相关服务器节点的信息,可以根据实施例一的流程,统一时间间隔打包发送;另外,还可以根据IP地址进行区分发送,另外,可以在此基础之上进行改造,不根据IP进行发送,而是根据服务端配置好的机房进行区分发送。比如,已经打包好了两个批量包,分别需要发送至IP1与IP2中,而客户端建立连接后,可以获取到这两个节点的IP以及它们所对应的机房信息;然后,判断出来是需要向同一个机房的两个节点上发送消息,此时,客户端会统一把这两个包合并打包,并带上唯一标识,表示其中一个包是发送IP1的机器,另一个是发送IP2的;之后随机挑一个IP进行发送。这边我暂定为IP1。
[0069] 当IP1对应的节点N1收到这个包时,预先进行解析,发现里面是有两个小包的,一个是自身可以解析的,另一个需要发送到N2,而N2又是在自身机房中的另一个节点上,则N1可以通过自身机房的内网IP,把另一个小包发送到N2节点上。这样通过机房标志进行再次打包发送,并最后通过内网IP的方式进行包转发,可以进一步提高软件的吞吐。
[0070] 实施例四
[0071] 本实施例对应实施例一至实施例三,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述实施例一至实施例三任意一个实施例所述的一种提高应用软件吞吐量的方法所包含的步骤。具体的步骤内容在此不进行复述,详情请参阅实施例一至实施例三的记载。
[0072] 综上所述,本发明提供的一种提高应用软件吞吐量的方法、存储介质,有效减少IO以及网络交互,从而实现各种软件交互数据的吞吐量的提升;进一步地,还能有效地提高分布式消息中的交互效率,且具备灵活性。
[0073] 以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求:1.一种提高应用软件吞吐量的方法,其特征在于,包括:
客户端接收到对应一服务器上一节点的消息后,对应所述一节点缓存所述消息至本地;
当对应一节点的消息达到预设数量时,或者对应一节点到达预设时间周期时,则打包本地对应所述一节点的消息为一数据包,并将其发送至所述一服务器的所述一节点。
2.如权利要求1所述的一种提高应用软件吞吐量的方法,其特征在于,所述并将其发送至所述一服务器的所述一节点,具体为:
判断本地中是否存在所述一服务器上其他节点对应的待发送的数据包,若是,则打包所述一数据包和所述待发送的数据包为一新的数据包,且所述一新的数据包中存储有其内各个数据包的节点标识;
客户端发送所述一新的数据包至所述一服务器。
3.如权利要求2所述的一种提高应用软件吞吐量的方法,其特征在于,所述客户端发送所述一新的数据包至所述一服务器,具体为:
客户端通过其与所述一服务器上任一节点的通信链路,发送所述一新的数据包至所述一服务器。
4.如权利要求2或3所述的一种提高应用软件吞吐量的方法,其特征在于,所述发送所述一新的数据包至所述一服务器,之后,还包括:
接收到所述一新的数据包的节点解析所述一新的数据包,得到其内的各个数据包及其节点标识;
所述接收到所述一新的数据包的节点依据所述各个数据包的节点标识,通过内网将所述各个数据包发送至对应的节点。
5.如权利要求3所述的一种提高应用软件吞吐量的方法,其特征在于,所述任一节点由所述一数据包和所述待发送的数据包对应的节点中随机选取。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序在被处理器执行时,能够实现上述权利要求1-5任意一项所述的一种提高应用软件吞吐量的方法所包含的步骤。
公开号:CN110602245
申请号:CN201910915214.4A
发明人:刘德建 林伟 郭玉湖
申请人:福建天泉教育科技有限公司
申请日:2019-09-26
公开日:2019-12-20