一种物联网通信方法、服务器及系统与流程

文档序号:15049766发布日期:2018-07-27 23:59阅读:142来源:国知局

本发明涉及物联网通信技术领域,特别涉及一种物联网通信方法、服务器及系统。



背景技术:

当前的物联网通信系统中,若服务器中线程过多,切换线程的开销大,占用服务器资源,降低服务器性能;若服务器中线程过少,一旦终端连接请求增多,服务器无法发挥其应有的性能,将会增加连接请求的队列时间。



技术实现要素:

本发明实施例提供了一种物联网通信方法、服务器及系统。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。

根据本发明实施例的第一方面,提供了一种物联网通信方法,应用于服务器,包括:获取以当前线程工作模式处理终端发送的连接请求所需要的第一时间t1;判断所述第一时间t1是否达到第一时间阈值,若所述第一时间t1达到所述第一时间阈值,则切换所述当前线程工作模式。

本方法中的服务器可根据物联网终端的通信负载量在单线程工作模式与多线程工作模式之间灵活切换,提高服务器处理连接请求的能力,使服务器与终端的通信更高效。

一种可选的实施例中,所述第一时间t1达到所述第一时间阈值后,所述切换所述当前线程工作模式前,还包括:判断所述当前线程工作模式的持续时间是否到达第二时间阈值;若所述当前线程工作模式的持续时间已达到所述第二时间阈值,则切换所述当前线程工作模式。

一种可选的实施例中,所述获取以当前线程工作模式处理终端发送的连接请求所需要的第一时间t1前,还包括初始化线程工作模式,所述初始化线程工作模式中包括设置线程数量、所述第一时间阈值和所述第二时间阈值。

一种可选的实施例中,获取以当前线程工作模式处理终端发送的连接请求所需要的第一时间t1,具体为:记录终端发送的所述连接请求到达服务器的时间点t1;选择器读取所述连接请求并分配处理所述连接请求的线程;线程读取并处理所述连接请求;记录所述线程处理所述连接请求完毕的时间t1’;所述第一时间t1,t1=t1’-t1。

一种可选的实施例中,在终端接入时,所述线程读取并处理所述连接请求,具体为:终端发送的所述连接请求具体为接入请求;所述线程读取所述接入请求;所述线程为所述接入请求设置配置文件;所述线程接受所述接入请求;

在接收终端数据时,所述线程读取并处理所述连接请求,具体为:所述线程读取所述连接请求;所述线程允许终端在服务器中进行读写操作;所述线程接收终端发送的数据。

根据本发明实施例的第二方面,提供一种物联网通信服务器,包括:第一时间获取模块、判断模块、切换模块;所述第一时间获取模块,用于获取服务器以当前工作模式处理终端发送的连接请求所需要的第一时间;所述判断模块,用于判断所述第一时间是否达到第一时间阈值,若所述第一时间达到所述第一时间阈值,则启动所述切换模块;所述切换模块,用于切换服务器的所述当前线程工作模式。

一种可选的实施例中,所述判断模块,还用于判断所述当前线程工作模式的持续时间是否达到第二时间阈值;若所述第一时间达到所述第一时间阈值,且所述当前线程工作模式的持续时间达到所述第二时间阈值,则启动切换模块。

一种可选的实施例中,还包括初始化模块,所述初始化模块,用于设置线程数量、所述第一时间阈值和所述第二时间阈值。

一种可选的实施例中,还包括终端接入模块和数据接收模块;所述终端接入模块,用于接受终端的接入请求;所述数据接收模块,用于接收终端发送的数据;所述第一时间获取模块,当所述终端接入模块运行时,用于获取服务器以当前工作模式运行一次所述终端接入模块所需要的第一时间;当所述数据接收模块运行时,用于获取服务器以当前工作模式运行一次所述数据接收模块所需要的第一时间。

根据本发明实施例的第三方面,提供一种物联网通信系统,包括服务器,所述服务器为本发明第二方面所提供的服务器。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种物联网通信方法的流程示意图;

图2是根据一示例性实施例示出的一种反映服务器的线程数与服务器的通信效率的关系的示意图;

图3是根据一示例性实施例示出的一种反映服务器的线程数与服务器的通信效率的关系的示意图;

图4是根据一示例性实施例示出的一种反映服务器的线程数与服务器的通信效率的关系的示意图;

图5是根据一示例性实施例示出的一种获取服务器处理终端发送的连接请求所需要的第一时间t1的流程示意图;

图6是根据一示例性实施例示出的一种获取服务器处理终端发送的连接请求所需要的第一时间t1的流程示意图;

图7是根据一示例性实施例示出的一种切换当前线程工作模式的流程示意图;

图8是根据一示例性实施例示出的一种切换当前线程工作模式示意图;

图9是根据一示例性实施例示出的一种线程工作模式的初始化的流程示意图;

图10是根据一示例性实施例示出的一种终端接入流程的示意图;

图11是根据一示例性实施例示出的一种终端接入流程的示意图;

图12是根据一示例性实施例示出的一种接收终端数据的流程示意图;

图13是根据一示例性实施例示出的一种接收终端数据的流程示意图;

具体实施方式

以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本发明的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,各实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。本文中,诸如第一和第二等之类的关系术语仅仅用于将一个实体或者操作与另一个实体或操作区分开来,而不要求或者暗示这些实体或操作之间存在任何实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素。本文中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的结构、产品等而言,由于其与实施例公开的部分相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

根据图1至图13,说明本发明实施例的第一方面,一种物联网通信方法,如图1所示,应用于服务器,包括:

s101、获取以当前线程工作模式处理终端发送的连接请求所需要的第一时间t1;

s102、判断第一时间t1是否达到第一时间阈值,若第一时间t1达到第一时间阈值,则执行步骤s103;

s103、切换当前线程工作模式。

本实施例中,当前线程工作模式即为获取第一时间t1时,服务器所处的线程工作模式;线程工作模式包括:单线程工作模式和多线程工作模式。若当前线程工作模式为单线程工作模式,切换当前线程工作模式即为由单线程工作模式切换至多线程工作模式;若当前线程工作模式为多线程工作模式,切换当前线程工作模式即为由多线程工作模式切换至单线程工作模式。

本方法中的服务器可根据物联网终端(以下简称“终端”)的通信负载量在单线程工作模式与多线程工作模式之间灵活切换,提高服务器处理连接请求的能力,使服务器与终端的通信更高效。

第一时间t1反映了终端与服务器之间发包耗时,即反映了通信系统的通信效率,第一时间t1越大,表示终端与服务器之间的通信越不顺畅,通信系统的效率越低;导致第一时间t1增大的因素主要有以下两个方面:1)终端与服务器间的通信负载大;例如在某一时间段内有300个终端向服务器发送了大量连接请求,而服务器处理连接请求的线程数有限,例如60个线程,一次只能处理60个连接请求,其他240个连接请求便排队等待,如此一来,对于排队等待的其他240个连接请求来讲,排队等待的时间计入发包耗时内,所以发包耗时变大,即第一时间t1增大;例如终端与服务器间的通信量变大,则处理一个连接请求的时间变长,正在排队的连接请求的队列时间也相应的变长,导致发包耗时变大,即第一时间t1增大;2)服务器的性能内耗大;例如虽然待处理的终端的连接请求较少,但是服务器仍调度大量的线程来处理较少的连接请求,服务器的处理器需要对这些的线程进行调度,处理器在一个时间片内只能执行一个线程,以由线程a切换至线程b为例,处理器需要“保存线程a的执行现场”,然后“载入线程b的执行现场”,这个过程会消耗大量的处理器的资源,服务器的处理器调度的线程的数量越大,消耗的处理器的资源越多;切换线程的消耗还有:内存的同步开销、线程创建和消亡的开销以及调度的开销等;从而线程的切换过程消耗了服务器的资源,服务器处理连接请求的效率变低,发包耗时增加,第一时间t1增大。总之,终端发送的连接请求的负载量和服务器的处理进程数不匹配,增加了第一时间t1。当服务器处理线程较少时,以当前线程工作模式为单线程工作模式为例,第一时间t1增大,达到第一时间阈值时,说明服务器工作的线程太少,不足以应对过高的通信负载,此时需要增加服务器中工作的线程数,切换当前线程工作模式,即由单线程工作模式切换至多线程工作模式;当服务器中工作的线程过多时,以当前线程工作模式为多线程工作模式为例,第一时间t1增大,达到第一时间阈值时,说明服务器工作的线程太多,线程切换开销太大,此时需要降低服务器中工作的线程数,切换当前线程工作状态,即由多线程工作模式切换至单线程工作模式。通过改变服务器中工作的线程数,可以保证服务器的通信负载和工作的线程数相匹配,使的服务器高效的处理终端发送的连接请求,进而使物联网的终端与服务器之间的通信更加高效。

本实施例中的多线程工作模式,包括2线程及以上线程的多线程工作模式。进而,一种可选的实施例中,多线程工作模式包括第一多线程工作模式、第二多线程工作模式、第三多线程工作模式和第四多线程工作模式。如果服务器所配置的最大线程数为n,则第一多线程工作模式中调度的线程数为n/4,第二多线程工作模式中调度的线程数为n/2,第三多线程工作模式中调度的线程数为3n/4,第四多线程工作模式中调度的线程数为n。对应的,通信负载极小,或终端的通信请求数极少,甚至只有一个终端在发送通信请求时,服务器切换至单线程工作模式,即服务器的当前线程工作模式为单线程工作模式;随着通信负载的逐渐增加,可将当前线程工作模式切换至第一多线程工作模式,或第二多线程工作模式,或第三多线程工作模式,或第四多线程工作模式。

进一步对多线程工作模式进行细分,一种可选的实施例中,每个不同线程数的工作模式均自成一个多线程工作模式,即多线程工作模式包括2线程工作模式、3线程工作模式、4线程工作模式……n-1线程工作模式和n线程工作模式(服务器的线程总数为n)。针对特定的通信负载,服务器只有在最优线程数的工作模式下工作,才能保证通信系统处于最高效的通信状态。如图2所示,当通信负载极小时,即单线程工作模式即可满足通信需求时,随着服务器中工作的线程数的增加,服务器中线程切换消耗增大,通信系统的工作效率反而逐渐降低;如图3所示,当通信负载处于通信系统所能容纳的最大值时,随着服务器中工作的线程数的增加,排队等待的连接请求越来越少,通信系统的工作效率逐渐增加;如图4所示,当通信负载位于最大通信量与最小通信量之间,随着服务器中工作的线程数的增加,显示排队等待的连接请求越来越少,通信系统的通信效率提高,到临界值后,服务器中的线程切换消耗变得明显,通信系统的通信效率逐渐降低。通过以上规律,服务器根据通信负载切换至对应的多线程工作模式,保证通信系统的通信效率处于最优状态。

第一时间阈值反映了对通信系统的通信效率的期望值,第一时间阈值越小,说明期望该通信系统的通信效率越高;第一时间阈值越大,说明期望该通信系统的通信效率越低。一般情况下,第一时间阈值与一次通信周期成正相关,一次通信周期即终端与服务器完成一次通信所需要的平均时间。需要说明的是,随着通信系统中的通信负载的增加,通信系统的最佳通信效率逐渐降低。也就是说,随着通信系统的通信负载的增加,终端与服务器完成一次通信需要的周期变长,故需要将第一时间阈值相应的调大。

线程切换消耗服务器性能,同样的,切换线程工作模式也会消耗大量的服务器性能:切换线程工作模式意味着线程总数发生改变,其中包含大量的创建线程过程或终止线程过程。为避免服务器的线程工作模式进行不必要的切换,一种可选的实施例中,当第一时间t1达到第一时间阈值后,切换当前线程工作模式之前,还包括:判断当前线程工作模式的持续时间是否达到第二时间阈值;若第一时间t1达到第一时间阈值,且当前线程工作模式的持续时间已达到第二时间阈值,则切换当前线程工作模式。若当前线程工作模式的持续时间不到第二时间阈值,便再次切换线程工作模式,那么上次切换线程工作模式和本次切换当前线程工作模式的间隔时间过短,线程工作模式切换过于频繁,会连续的消耗服务器大量的资源,从而耽误服务器处理终端发送的连接请求,从而降低通信系统的通信效率。所以,在当前线程工作模式的持续时间达到第二时间阈值后,再切换当前线程工作模式,以减少切换当前工作模式对通信效率的影响。本实施例中的切换当前线程工作模式,指的是,若当前线程工作模式为单线程工作模式,则由单线程工作模式切换至多线程工作模式;若当前线程工作模式为多线程工作模式,则由多线程工作模式切换至单线程工作模式。

一种可选的实施例中,第二时间阈值为切换线程工作模式后的通信效率达到稳态所需的时间。切换线程工作模式后,服务器处理通信负载的能力发生改变,即此时通信系统的通信效率发生改变,反应通信效率的是第一时间t1,为了提高准确性,优选的,第一时间t1为服务器处理连接请求所需要的平均值,所以,当切换线程工作模式后,立即获取的第一时间t1是受前线程工作模式的影响的,是不准确的,若此时依据该第一时间t1切换线程工作模式,不仅会影响通信效率,而且还无法切换至准确的线程工作模式,无法保证通信系统的通信处于最高效状态。所以,当线程工作模式的持续时间达到第二时间阈值后,即通信系统的通信效率变得稳定后,再切换线程工作模式,可保证切换至精确的的线程工作模式,保证通信系统的通信效率最高。

一种可选的实施例中,如图5所示,获取服务器处理连接请求所需要的第一时间t1,具体为:

s501、记录终端发送的连接请求到达服务器的时间点t1;

s502、选择器读取连接请求并分配处理连接请求的线程;

s503、线程读取并处理连接请求;

s504、记录线程处理连接请求完毕的时间点t1’;

s505、第一时间t1,t1=t1’-t1。

一种可选的实施例中,以java(面向对象的编程语言)语言实现物联网通信方法,包括:

selector选择器,能够并发处理多个socket(用于描述ip地址和端口,是一个通信链的句柄,可以用来实现服务器与终端之间的通信)连接读写请求的选择器;

eventloop,线程事件处理器;

如图6所示,获取服务器处理连接请求所需要的第一时间t1,具体为:

s601、记录终端发送的连接请求到达服务器的时间点t1;

s602、触发selector读取消息;

s603、eventloop触发读取消息操作;

s604、eventloop执行消息操作完毕并记录时间点t1’;

s605、第一时间t1,t1=t1’-t1。

如图7所示,在考虑第二时间阈值后,切换线程工作模式的流程具体为:

s701、初始化线程工作模式;

s702、记录终端发送的连接请求到达服务器的时间点t1;

s703、选择器读取连接请求并分配处理连接请求的线程;

s704、线程读取并处理连接请求;

s705、记录线程处理连接请求完毕的时间点;

s706、更新总耗时以及处理的连接请求总数;

s707、计算处理一次连接请求所需的平均时间以获取第一时间t1;

为获取准确的第一时间t1,对线程处理连接请求的时间取平均值,以总耗时除以连接请求总数即可获取第一时间t1;

s708、判断第一时间t1是否达到第一时间阈值,若是则执行步骤s709,否则执行步骤s702;

s709、获取当前线程工作模式持续的时间:第二时间t2;

若服务器第一次处理连接请求,还未切换线程工作模式,则当前线程工作模式为服务器预置的线程工作模式,可为单线程工作模式,可为多线程工作模式,此时t2=0;

s710、判断第二时间t2是否达到第二时间阈值,若是则执行步骤s711,否则执行步骤s708;

s711、切换当前线程工作模式;

s712、重置总耗时、连接请求总数以及第二时间t2。

如图8所示,以java语言实现上述流程,具体为:

s801、初始化线程工作模式;

s802、记录终端发送的连接请求到达服务器的时间点;

s803、触发selector读取消息;

s804、eventloop触发读取消息操作;

s805、eventloop执行消息操作完毕并记录时间点;

s806、更新总耗时以及处理的连接请求总数;

s807、计算处理一次连接请求所需的平均时间以获取第一时间t1;

s808、判断第一时间t1是否达到第一时间阈值,若是则执行步骤s809,否则执行步骤s802;

s809、获取当前线程工作模式持续的时间:第二时间t2;

若服务器第一次处理连接请求,尚未切换当前线程工作模式,则当前线程工作模式为服务器预置的线程工作模式,可为单线程工作模式,可为多线程工作模式,此时则t2=0;

s810、判断第二时间t2是否达到第二时间阈值,若是则执行步骤s811,否则执行步骤s808;

s811、切换当前线程工作模式;

s812、重置总耗时、连接请求总数以及第二时间t2。

步骤s701或步骤s801中的初始化线程工作模式,包括设置线程数量、第一时间阈值和第二时间阈值。当线程工作模式只有单线程工作模式和多线程工作模式两种时,设置线程数量即为设置多线程工作模式下调度的线程数;当线程工作模式包括单线程工作模式、第一多线程工作模式、第二多线程工作模式、第三多线程工作模式和第四多线程工作模式时,初始化线程工作模式包括为第一多线程工作模式设置调度的线程数量ⅰ、第一时间阈值ⅰ和第二时间阈值ⅰ,为第二多线程工作模式设置调度的线程数量ⅱ、第一时间阈值ⅱ和第二时间阈值ⅱ,为第三多线程工作模式设置调度的线程数量ⅲ、第一时间阈值ⅲ和第二时间阈值ⅲ,为第四多线程工作模式设置调度的线程数量ⅳ、第一时间阈值ⅳ和第二时间阈值ⅳ;当服务器中每个不同线程数的工作模式均自成一个多线程工作模式时,为每个多线程工作模式设置对应的调度的线程数量、对应的第一时间阈值和对应的第二时间阈值。

如图9所示,一种可选的实施例中,以java实现通信系统的初始化流程,具体为:

s901、服务器eventloop主线程启动accept初始化器,初始化工作开始执行;

s902、新建selector接收器;

s903、向selector接收器注册accept事件;

s904、设置相关的连接参数;

s905、初始化eventloop线程相关参数完成初始化操作;

本步骤中初始化的相关参数包括:调度的线程数量、第一时间阈值和第二时间阈值等;

s906、eventloop线程接收selector的accept的时间触发。

步骤s901和步骤s906中eventloop为单独为accept设置的事件处理器,该处理器一开始单线程运行,只负责接收终端的连接请求。

初始化之后的服务器可完成终端接入流程与接收终端数据流程,在终端接入时,终端发送的连接请求具体为接入请求,线程读取并处理接入请求,具体为依次执行以下步骤:线程读取接入请求,线程为接入请求设置配置文件,线程接受接入请求。

如图10所示,终端接入流程具体为:

s1001、初始化线程工作模式;

s1002、终端发起接入请求;

步骤s1001与步骤s1002的顺序并不仅限与此,可选的,终端先发起连接请求,服务器再初始化线程工作模式;即先执行步骤s1002,再执行步骤s1001;

s1003、记录终端发送的接入请求到达服务器的时间点;

本步骤中的接收接入请求,仅表示服务器接收到终端的接入请求,至于服务器是否允许该终端接入,并没有限定;若服务器允许该终端接入,则进行以下步骤;

s1004、选择器读取接入请求并分配处理接入请求的线程;

s1005、线程读取接入请求;

s1006、线程为接入请求设置配置文件;

本步骤中,服务器为终端接入做好了准备;

s1007、线程接受接入请求;

s1008、记录线程处理接入请求完毕的时间;

s1009、更新总耗时以及处理的接入请求总数;

s1010、计算处理一次接入请求所需的平均时间以获取第一时间t1;

s1011、判断第一时间t1是否达到第一时间阈值,若是则执行步骤s1012,否则执行步骤s1002;

s1012、获取当前线程工作模式持续的时间:第二时间t2;

s1013、判断第二时间t2是否达到第二时间阈值,若是则执行步骤s1014,否则执行步骤s1011;

s1014、切换当前线程工作模式;

s1015、重置总耗时、接入请求总数以及第二时间t2,执行步骤s1001。

如图11所示,一种可选的实施例中,通过java实现终端接入流程,具体为:

s1101、初始化线程工作模式;

s1102、终端发起接入请求;

步骤s1101与步骤s1102的顺序并不仅限与此,可选的,终端先发起连接请求,服务器再初始化线程工作模式;即先执行步骤s1102,再执行步骤s1101;

s1103、记录终端发送的接入请求到达服务器的时间点;

本步骤中的接收接入请求,仅表示服务器接收到终端的接入请求,至于服务器是否允许该终端进行接入,并没有限定;若允许该终端接入,则执行以下步骤;

s1104、eventloop执行selector;

s1105、selector的accept事件触发;

本步骤中,服务器为终端接入做好了备;

s1106、服务器接受接入请求;

s1107、记录服务器接受接入请求后的时间点;

s1108、更新总耗时以及处理的接入请求总数;

s1109、计算处理一次接入请求所需的平均时间以获取第一时间t1;

s1110、判断第一时间t1是否达到第一时间阈值,若是则执行步骤s1111,否则执行步骤s1102;

s1111、获取当前线程工作模式的持续时间:第二时间t2;

s1112、判断第二时间t2是否达到第二时间阈值,若是则执行步骤s1113,否则执行步骤s1110;

s1113、切换当前线程工作模式;

本步骤中,若切换当前线程工作模式,则以新线程工作模式处理被替换的线程工作模式所未完成的操作;若未切换当前线程工作模式,则继续用当前线程工作模式完成后续操作;

s1114、重置总耗时、接入请求总数以及第二时间t2,执行步骤s1101。

服务器接收终端数据时,线程读取并处理连接请求,具体为依次执行以下步骤:线程读取连接请求,线程允许终端在服务器中进行读写操作,线程接收终端发送的数据。

如图12所示,服务器接收数据的流程具体如下:

s1201、初始化线程工作模式;

s1202、记录终端发送的连接请求到达服务器的时间点;

s1203、选择器读取连接请求并分配处理连接请求的线程;

s1204、线程读取连接请求;

s1205、线程允许终端在服务器中进行读写操作;

s1206、线程接收终端发送的数据;

s1207、记录线程接收数据完毕的时间;

s1208、更新总耗时以及处理的连接请求总数;

s1209、计算处理一次连接请求所需的平均时间以获取第一时间t1;

s1210、判断第一时间t1是否达到第一时间阈值,若是则执行步骤s1211,否则执行步骤s1202;

s1211、获取当前线程工作模式的持续时间:第二时间t2;

s1212、判断第二时间t2是否达到第二时间阈值,若是则执行步骤s1213,否则执行步骤s1210;

s1213、切换当前线程工作模式;

s1214、重置总耗时、连接请求总数以及第二时间t2;

在以上流程中,主要是服务器进行的操作,其中,部分操作对应着终端的操作,例如:服务器接收连接请求前,终端发起连接请求;接收终端发送的数据时,终端同时发送数据。

如图13所示,一种可选的实施例中,通过java实现接收终端数据流程,具体为:

s1301、初始化线程工作模式;

s1302、记录终端发送的连接请求到达服务器的时间点;

s1303、selector为终端进行注册读写事件;

s1304、eventloop执行selector读写操作;

s1305、接收终端发送的数据;

s1306、记录接收终端发送的数据完毕后的时间点;

s1307、更新总耗时以及处理的连接请求总数;

s1308、计算处理一次连接请求所需的平均时间以获取第一时间t1;

s1309、判断第一时间t1是否达到第一时间阈值,若是则执行步骤s1310,否则执行步骤s1302;

s1310、获取当前线程工作模式的持续时间:第二时间t2;

s1311、判断第二时间t2是否达到第二时间阈值,若是则执行步骤s1312,否则执行步骤s1309;

s1312、切换当前线程工作模式;

s1313、重置总耗时、连接请求总数以及第二时间t2;

在以上流程中,主要是服务器进行的操作,其中,部分操作对应着终端的操作,例如:服务器接收连接请求前,需要终端发起连接请求;接收终端发送的数据时,需要终端同时发送数据。切换当前线程工作模式则开启新的eventloop执行后续处理操作,否则用当前线程工作模式下的eventloop执行后续处理操作。

本发明实施例的第二方面,提供一种物联网通信服务器,包括:第一时间获取模块、判断模块、切换模块;第一时间获取模块,用于获取服务器以当前工作模式处理终端发送的连接请求所需要的第一时间;判断模块,用于判断第一时间是否达到第一时间阈值,若第一时间达到第一时间阈值,则启动切换模块;切换模块,用于切换服务器的当前线程工作模式。

其中,第一时间反映服务器与终端通信效率的高低,即反映通信系统的通信效率的高低:若第一时间较大,则通信效率较底;若第一时间较小,则通信效率较高。若服务器的当前线程工作模式为单线程工作模式,启动切换模块,则服务器由单线程工作模式切换至多线程工作模式;若服务器的当前线程工作模式为多线程工作模式,启动切换模块,则服务器由多线程工作模式切换至单线程工作模式。

本通信服务器可以根据终端的通信负载量在单线程工作模式与多线程工作模式之间灵活切换,提高服务器处理连接请求的能力,使服务器与终端的通信更高效。

一种可选的实施例中,判断模块,还用于判断当前线程工作模式的持续时间是否达到第二时间阈值;若第一时间达到第一时间阈值,且当前线程工作模式的持续时间达到第二时间阈值,则启动切换模块。

一种可选的实施例中,还包括初始化模块,初始化模块,用于设置线程数量、第一时间阈值和第二时间阈值。

一种可选的实施例中,还包括终端接入模块和数据接收模块;终端接入模块,用于接受终端的接入请求;数据接收模块,用于接收终端发送的数据;服务器中的第一时间获取模块,当终端接入模块运行时,用于获取服务器以当前工作模式运行一次终端接入模块所需要的第一时间;当数据接收模块运行时,用于获取服务器以当前工作模式运行一次数据接收模块所需要的第一时间。

本发明实施例的第三方面,提供一种物联网通信系统,包括服务器,服务器为本发明第二方面所提供的服务器。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的流程及结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

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