一种数据交互的方法及服务器与流程

文档序号:21983369发布日期:2020-08-25 19:20阅读:134来源:国知局
一种数据交互的方法及服务器与流程

本申请属于数据交互领域,尤其涉及一种数据交互的方法及服务器。



背景技术:

在语音合成服务中,需要在语音接入系统(客户端)和语音合成系统(服务器的服务端)之间创建连接以实现数据交互,语音合成系统在接收到语音接入系统发送的语音数据时需要进行语音合成操作,再返回语音合成的结果给客户端。目前普遍的做法是基于websocket协议建立长连接,随用随建,用完即弃。这种情况下,如果短时间内客户端并发建立连接的需求量过大,服务器因为资源不足以在短时间内创建大量新的连接,会造成客户端部分连接建立失败。进一步的,服务器需要分配资源对正常使用的长连接传输的交互数据进行语音合成服务,若在该情况下划分部分资源进行长连接创建,则容易造成服务器宕机,从而进一步提高了长连接建立的耗时以及降低了创建的成功率,影响客户端服务调用。

因此,需要寻找一种数据交互方法,在响应建立连接的请求时,合理分配服务器资源,兼顾建立连接与语音合成的效率,提高整个语音合成服务的性能。



技术实现要素:

本申请实施例提供了一种数据交互的方法及服务器,通过复用连接池内的连接来建立websocket长连接以进行数据交互,在响应建立连接的请求时减少需要创建的长连接以节省创建长连接所占用的资源,既能满足建立连接实现数据交互的需求,又能节省服务器资源以保证语音合成的效率,提高整个语音合成服务的性能。

第一方面,本申请实施例提供了一种方法,包括:预配置连接池的属性参数,基于所述属性参数建立所述连接池;所述属性参数包括最小连接数以及最大连接数;所述连接池用于提供可复用的websocket长连接;所述websocket长连接用于接收通信对端反馈的交互数据,以基于交互数据进行语音合成;实时监测所述连接池内websocket长连接的连接总数;若检测到关于所述websocket长连接的创建指令且所述连接总数小于所述最大连接数,则创建新的websocket长连接,以响应所述创建指令;若检测到关于所述websocket长连接的释放指令且所述连接总数大于所述最小连接数,则释放所述释放指令对应的所述websocket长连接,以响应所述释放指令。

在第一方面的一种可能的实现方式中,在所述连接池中建立与所述最小连接数对应数量的多个状态标识为空闲的长连接,并将所述多个状态标识为空闲的长连接存储于空闲队列内;所述状态标识为空闲的长连接为处于待激活状态的所述websocket长连接;在所述连接池中建立使用队列用于存储状态标识为使用的长连接;所述状态标识为使用的长连接为处于使用状态的所述websocket长连接。

示例性的,所述连接池内的空闲队列是先进先出的队列,以保证所述连接池内的状态标识为空闲的websocket长连接的选取使用概率均等。

应理解,所述连接池内存储有可复用的websocket长连接;在建立连接池时,在进行数据交互之前,预先创建多个状态标识为空闲的长连接,在接收到数据交互请求时,复用所述状态标识为空闲的长连接进行数据交互,使得服务器的配置信息无需重复设置,只需设置数据交互对端的信息即可,节省了服务器在创建长连接时所需的资源消耗。

第二方面,本申请实施例提供了一种服务器,包括:连接池装置,用于存储已创建的websocket长连接;所述连接池装置预配置的属性参数包括最大连接数以及最小连接数;监听计数装置,用于实时监测所述连接池装置内的所述websocket长连接的连接总数;所述websocket长连接用于接收通信对端反馈的交互数据,以基于交互数据进行语音合成;数据交互请求响应装置,用于接收数据交互请求指令,从所述连接池装置中选取状态标识为空闲的目标长连接,通过所述状态标识为空闲的目标长连接进行数据交互,同时将所述目标长连接的状态标识调整为使用;所述状态标识为空闲的目标长连接为处于待激活状态的所述websocket长连接;所述状态标识为使用的目标长连接为处于使用状态的所述websocket长连接;创建连接装置,用于接收创建指令,当所述连接总数小于所述最大连接数时,创建一个新的所述状态标识为空闲的长连接;释放连接装置,用于接收释放指令,当所述连接总数大于所述最小连接数时,释放所述释放连接指令对应的所述websocket长连接。

第三方面,本申请实施例提供了一种服务器,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,包括:所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一项所述的方法。

第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在服务器上运行时,使得服务器执行上述第一方面中任一项所述的识别方法。

可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

本申请实施例与现有技术相比存在的有益效果是:

相对于现有技术,本申请实施例提供的方法通过复用连接池内已建立的连接来建立websocket长连接以进行数据交互,在响应部分建立连接的请求时无须花费额外资源来进行websocket长连接的创建,既能满足建立连接实现数据交互的需求,又能节省服务器资源以保证语音合成的效率,提高整个语音合成服务的性能。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请第一实施例提供的方法的实现流程图;

图2是本申请第一实施例提供的方法的连接池建立流程图;

图3是本申请第二实施例提供的方法的实现流程图;

图4是本申请一实施例提供的方法的应用场景示意图;

图5是本申请第三实施例提供的方法的实现流程图;

图6是本申请第四实施例提供的方法的实现流程图;

图7是本申请第五实施例提供的方法的实现流程图;

图8是本申请实施例一实施例提供的服务器的结构示意图;

图9是本申请一实施例提供的监听计数装置的结构示意图;

图10是本申请实施例另一实施例提供的服务器的结构示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于识别到”。类似地,短语“如果确定”或“如果识别到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦识别到[所描述条件或事件]”或“响应于识别到[所描述条件或事件]”。

另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。

在本申请实施例中,流程的执行主体为服务器。该服务器包括但不限于:云端服务器以及计算机等能够执行本申请提供的数据交互的方法的设备。优选地,该服务器为云端服务器,该云端服务器提供语音合成服务。图1示出了本申请第一实施例提供的方法的实现流程图,详述如下:

在s101中,预配置连接池的属性参数,基于所述属性参数建立所述连接池。

在本实施例中,所述属性参数包括最小连接数以及最大连接数;所述连接池用于提供可复用的websocket长连接;所述websocket长连接用于接收通信对端反馈的交互数据,以基于交互数据进行语音合成。在语音合成服务中,通信对端可以安装有与服务器相关的客户端程序,通信对端可以通过客户端向服务器多次发送多个语音片段数据,服务器可以对接收到的语音片段数据进行语音合成服务,并将合成结果反馈给通信对端,即通信对端与服务器之间的数据交互过程是双向的,通信对端可以通过上行链路向服务器发送数据,服务器也可以通过下行链路向通信对端发送数据,因此需要建立websocket长连接,通过上述建立的websocket长连接,让该通信对端与该服务器进行数据交互。

在本实施例中,示例性地,根据上述服务器的性能来预配置上述连接池的属性参数,所述服务器的性能包括服务器的内存资源、处理器资源等。具体地,设置上述最小连接数,以便于后续初次响应数据交互的请求时,保持上述连接池内有与最小连接数相同数量的可复用的websocket长连接用于进行数据交互;设置上述最大连接数,是为了防止维持过多的连接数,导致上述服务器资源不足甚至宕机。上述可复用的websocket长连接在上述连接池内保持待激活的状态,该待激活的状态具体指的是:该websocket长连接已预先设置了服务器的配置信息,在进行数据交互前的建立通信通道时,只需配置通信对端的配置信息后即可使用,减少了对于服务器侧参数的配置操作,从而节省了服务器创建长连接占用的资源,加快响应数据交互请求的速度。

在s102中,实时监测所述连接池内websocket长连接的连接总数。

在本实施例中,示例性地,通过设置一个系统计数器,实时对所述连接池内websocket长连接的连接总数进行计数,具体地,每当该连接总数发生变化时,系统计数器中关于连接总数的部分的计数值会相应地进行调整,例如当连接总数增加时,增加系统计数器的计数值;当连接总数减少时,减少系统计数器的计数值,通过该系统计数器,可以及时确定上述连接池内websocket长连接的连接总数。

在s103中,若检测到关于所述websocket长连接的创建指令且所述连接总数小于所述最大连接数,则创建新的websocket长连接,以响应所述创建指令。

在本实施例中,在服务器检测到关于所述websocket长连接的创建指令时,即意味着上述连接总数将要增加一个,为了保证该连接总数始终不超过上述最大连接数,有必要在创建一个新的所述websocket长连接之前,判断该连接总数和该最大连接数之间的数量关系,只有当该连接总数小于该最大连接数,才创建一个新的所述websocket长连接能保证该连接总数始终不超过该最大连接数。应理解,若该连接总数大于或等于该最大连接数,则不执行创建一个新的所述websocket长连接的操作。

可选的,若该连接总数大于或等于该最大连接数,则服务器返回服务繁忙的信息至通信对端。

可选的,若该连接总数大于或等于该最大连接数,则在经过一段预设的等待时间后,再次判断该连接总数和该最大连接数之间的数量关系。若此次该连接总数小于该最大连接数,则创建一个新的所述websocket长连接能保证该连接总数始终不超过该最大连接数;若此次该连接总数仍大于或等于该最大连接数,则服务器返回服务繁忙的信息至通信对端。

在s104中,若检测到关于所述websocket长连接的释放指令且所述连接总数大于所述最小连接数,则释放所述释放指令对应的所述websocket长连接,以响应所述释放指令。

在本实施例中,在服务器检测到关于所述websocket长连接的释放指令时,即意味着上述连接总数将要减少一个,为了保证该连接总数始终不小于上述最小连接数,有必要在释放所述websocket长连接之前,判断该连接总数和该最小连接数之间的数量关系,只有当该连接总数大于该最小连接数,释放所述websocket长连接能保证该连接总数始终不小于该最小连接数。应理解,若该连接总数小于或等于该最小连接数,则不执行所述释放所述websocket长连接的操作。

可选的,上述释放指令可以是通信对端发送至服务器的。通信对端可以主动要求服务器释放用于该通信对端与该服务器进行数据交互的websocket长连接。

可选的,在服务器重启或通信对端发送重启指令至服务器时,检测到重启指令,则生成关于所述连接池内所有websocket长连接的释放指令,以便服务器不执行上述判断该连接总数与该最小连接数的数量关系的操作,直接释放所有所述长连接,释放占用的服务器资源。

在本实施例中,上述连接总数如果过小,则在响应多个数据交互请求时,上述连接池可能没有足够多的长连接以响应上述多个数据交互请求,导致需要创建新的长连接,而创建新的长连接就会消耗服务器的资源;该连接总数如果过大,则导致服务器需要消耗资源维持大量的长连接,甚至引起服务器宕机。因此需要设置上述最小连接数以及上述最大连接数,通过实时监测该连接总数并对该连接总数发生变化时执行相应的步骤,将该连接总数维持在该最小连接数至该最大连接数的范围内,保持在维持该连接池内长连接时的资源消耗与在进行语音合成时的资源消耗之间的平衡,使得服务器及时响应数据交互请求的同时,尽可能节省消耗的资源,以供服务器进行语音合成服务,提高整个语音合成服务的性能。

图2示出了本申请第一实施例提供的方法的连接池建立流程图,详述如下:

在s201中,在所述连接池中建立与所述最小连接数对应数量的多个状态标识为空闲的长连接,并将所述多个状态标识为空闲的长连接存储于空闲队列内。

在本实施例中,所述状态标识为空闲的长连接为处于待激活状态的所述websocket长连接。所述空闲队列用于存储连接池内状态标识为空闲的长连接。优选的,该空闲队列是先进先出的队列。在响应数据交互的请求前,预创建与所述最小连接数对应数量的多个状态标识为空闲的长连接,以便在服务器后续响应通信对端发起的数据交互的请求时,无需创建新的长连接,复用所述状态标识为空闲的长连接,即可与不同的通信对端进行数据交互。

在s202中,在所述连接池中建立使用队列用于存储状态标识为使用的长连接。

在本实施例中,所述状态标识为使用的长连接为处于使用状态的所述websocket长连接。

在本实施例中,预创建上述状态标识为空闲的长连接,以便后续响应通信对端发起的数据交互的请求时,无需进行长连接的创建操作,从而节省服务器资源,快速实现与通信对端的数据交互;优选的,上述空闲队列为先进先出的队列,因此在需要响应数据交互的请求时,可以从上述空闲队列中的选取队列序号最小的一个状态标识为空闲的长连接(即处于待激活状态时间最长的长连接)作为目标长连接,并将该目标长连接的状态标识由空闲调整为使用,并将该目标长连接移出上述空闲队列,并重新调整空闲队列中各个长连接的队列序号。由于目标长连接从该空闲队列移除,并添加到该使用队列时,均是选取该空闲队列中队列序号最小的一个长连接,因此该空闲队列中的各个长连接的选取使用概率一致,保证上述连接池内每条状态标识为空闲的长连接的使用概率均等,从而提高了服务器资源的利用率;通过建立上述两个队列存储上述连接池内不同状态标识的长连接,以便于后续对不同状态标识的长连接进行实时监测。

图3示出了本申请第二实施例提供的方法的实现流程图。参见图3,相对于图2所述实施例,本实施例提供的方法还包括s301~s302,具体详述如下:

在s301中,若接收数据交互请求指令,则判断所述空闲队列是否为空;若所述连接池内的空闲队列为空,则生成关于所述websocket长连接的创建指令。

在本实施例中,接收数据交互请求指令,即需要响应所述数据交互的请求。具体地,由于需要建立服务器与通信对端之间的通信通道以进行数据交互,且连接池内创建有可复用的长连接,因此可以从上述连接池内的空闲队列中选取的长连接,以建立上述通信通道,实现服务器与通信对端的数据交互操作。此时,若检测到所述连接池内的空闲队列为空,即没有状态标识为空闲的websocket长连接用于响应所述数据交互请求指令,则需要创建一个新的websocket长连接,因此需要生成关于所述websocket长连接的创建指令,从而执行所述websocket长连接的创建操作。

在s302中,通过所述创建指令创建新的所述状态标识为空闲的目标长连接,并调用所述目标长连接响应所述数据交互请求指令。

在本实施例中,若服务器检测到所述创建指令,则根据该创建指令创建一个新的状态标识为空闲的目标长连接,以响应上述数据交互请求指令,通过该目标长连接建立与通信对端之间的通信通道,以进行数据交互的操作。

应理解,当上述空闲队列不为空,即存在状态标识为空闲的websocket长连接用于响应所述数据交互请求指令,则选取一条状态标识为空闲的websocket长连接作为用于响应数据交互请求指令的目标长连接(选取的具体方式可以参照队列的出队方式,即选取队头对应的空闲的websocket长连接作为目标长连接),以响应上述数据交互请求指令,通过该目标长连接建立与通信对端之间的通信通道,以进行数据交互的操作。

进一步地,s302还包括s3021~s3022。

在s3021中,将用于响应数据交互请求指令的所述目标长连接的状态标识从空闲调整为使用,并将所述目标长连接添加到所述连接池的使用队列中。

在本实施例中,当服务器调用该目标长连接进行与通信对端之间的数据交互时,可以将该目标长连接由待激活状态转换为使用状态,此时可以将该目标长连接的状态标识从空闲调整为使用,将该目标长连接从上述空闲队列中移除,并添加到到上述使用队列中。

优选的,在响应数据交互请求指令时,判断使用该目标长连接建立通信通道是否成功,示例性地,判断是否接收到了通信对端发来的建立成功信息;若在一段预设的时间段内没有接收到了通信对端发来的建立成功信息,则识别上述目标长连接建立通信通道失败,并生成新的websocket长连接的创建指令,根据该新的websocket长连接的创建指令创建新的websocket长连接,以代替该目标长连接进行后续的操作,同时生成关于该目标长连接的释放指令。

在s3022中,检测到数据交互完成指令,将所述目标长连接的状态标识从使用调整为空闲,并将所述目标长连接添加到所述连接池内的空闲队列中。

在本实施例中,检测到数据交互完成指令,意味着所述数据交互已完成,因此需要将所述目标长连接的状态标识从使用调整为空闲,并将所述目标长连接添加到所述连接池内的空闲队列中,以便在后续接收到其他通信对端发起的数据交互请求时,可以继续调用该长连接进行响应。

可选的,在响应数据交互请求指令时,使用该目标长连接建立通信通道,以使通信对端与服务器通过该目标长连接进行数据交互。在语音合成服务里,通信对端可以通过内置的客户端多次发送语音片段至服务器,服务器也会多次返回根据该语音片段进行语音合成的数据至通信对端,其中,通信对端可以通过内置的客户端接收上述的语音合成后的数据,在此数据交互过程中,需要通信对端或服务器提出停止该数据交互。

优选的,服务器在发送最后一条语音合成的数据至通信对端时,使该最后一条语音合成的数据上携带有数据交互完成标识;在服务器完成该最后一条语音合成的数据的发送后,生成上述数据交互完成指令。

可选的,通信对端在发送最后一条语音片段至服务器时,使该最后一条语音片段携带有数据交互完成标识,在服务器根据该最后一条语音片段进行语音合成,并生成该语音片段对应的合成结果后,可以将该合成结果返回至客户端,此时该服务器可以生成上述数据交互完成指令。

在本实施例中,在响应数据交互请求指令时,通过上述空闲队列中选取状态标识为空闲的目标长连接以进行数据交互,省略了服务器配置信息的设置,节省了服务器创建新的长连接的资源消耗;在数据交互完成后,只要将所述目标长连接的状态标识从使用调整为空闲,将所述目标长连接从上述使用队列转移到上述空闲队列,以响应其他数据交互请求,无须关闭该目标长连接,节省了服务器处理连接关闭的资源消耗。

参见图4,图4示出了本申请一实施例提供的方法的应用场景示意图,详述如下:在图中的应用场景下,通信对端的客户端需要服务器的语音合成单元提供语音合成服务,则需要在建立websocket长连接用于让客户端与服务器的语音合成单元进行数据交互。服务器在提供语音合成服务之前,预配置连接池属性参数,建立连接池,连接池预创建与上述最小连接数相同数量的websocket长连接,预先在该websocket长连接设置服务器配置信息,以便后续建立通信通道时只需配置通信对端的配置信息后即可,从而节省服务器的资源消耗;服务器的准备工作完成之后,则开始接收客户端发来的数据交互请求指令,在连接池选取可复用的websocket长连接,在客户端和服务器的语音合成单元之间建立通信通道,以便后续进行数据交互;在进行数据交互时,客户端多次发送多个语音片段至服务器的语音合成单元,服务器的语音合成单元返回这些语音片段经过语音合成生成的语音合成数据,完成语音合成服务。

图5示出了本申请第三实施例提供的方法的实现流程图。参见图5,相对于图2所述实施例,本实施例提供的方法还包括s501,具体详述如下:

在s501中,实时监测所述连接池内所述状态标识为空闲的长连接的空闲时长;

在本实施例中,示例性地,通过上述系统计数器,实时对所述连接池内所述状态标识为空闲的长连接的空闲时长进行计时,具体地,每个所述状态标识为空闲的长连接在添加进入到所述空闲队列时开始计时,该状态标识为空闲的长连接被移出该空闲队列时结束计时,通过该系统计数器的计时值可以及时确定上述状态标识为空闲的长连接的空闲时长。

在s502中,若所述空闲时长大于预设的标准时长,则生成关于所述状态标识为空闲的长连接的释放指令。

在本实施例中,所述空闲时长即该状态标识为空闲的长连接连续处于待激活状态的时长。示例性地,通过设置一个系统计时器,实时监测该连接池内各个状态标识为空闲的长连接的空闲时长,一旦监测到某个状态标识为空闲的长连接的空闲时长大于预设的标准时长,则生成该长连接的释放指令。

应理解,若某个状态标识为空闲的长连接的空闲时长小于或等于预设的标准时长,则不执行生成该长连接的释放指令的操作。

在本实施例中,由于维持上述连接池内状态标识为空闲的长连接也是需要消耗服务器资源的,为了平衡在维护该连接池内长连接时的资源消耗和在进行语音合成时的资源消耗,需要在正常提供语音合成服务的前提下,尽可能少的减少用于维持状态标识为空闲的长连接的资源消耗,因此可以通过筛选长时间处于待激活状态的长连接,以释放该长时间处于待激活状态的长连接的所占用的资源。为了实现这一点,本实施例实时监测该连接池内状态标识为空闲的长连接的空闲时长;若所述空闲时长大于预设的标准时长,则意味着该长连接达到了需要释放资源的标准,即可生成关于所述状态标识为空闲的长连接的释放指令,以释放该长连接所占用的资源,节省服务器的资源消耗。

图6示出了本申请第四实施例提供的方法的实现流程图。参见图6,相对于图2所述实施例,本实施例提供的方法还包括s601,具体详述如下:

在s601中,实时监测所述连接池内websocket长连接的连接总数,若所述连接总数小于所述最小连接数,则创建新的状态标识为空闲的长连接,直至所述连接总数达到所述最小连接数。

在本实施例中,示例性地,通过上述设置的系统计数器,对所述连接池内websocket长连接的连接总数进行计数;当监测到所述连接总数小于所述最小连接数时,则创建新的状态标识为空闲的长连接,直至所述连接总数达到所述最小连接数。应理解,当监测到所述连接总数大于或等于所述最小连接数时,不执行所述创建新的状态标识为空闲的长连接的操作。

在本实施例中,上述连接总数如果过小,则在响应多个数据交互请求时,上述连接池可能没有足够多的长连接以响应上述多个数据交互请求,因而需要创建新的长连接,但创建新的长连接就会消耗服务器的资源;再者,上述实施例中有可能会有释放多个长连接的操作,因此,为了避免出现由于上述释放多个长连接的操作,使得该连接总数小于该最小连接数的情况,需要实时监测所述连接池内websocket长连接的连接总数,当监测到所述连接总数小于所述最小连接数时,则创建新的状态标识为空闲的长连接,直至所述连接总数达到所述最小连接数,保证该连接总数不小于该最小连接数。

应理解,本实施例提供的“实时监测所述连接池内websocket长连接的连接总数,若所述连接总数小于所述最小连接数,则创建新的状态标识为空闲的长连接,直至所述连接总数达到所述最小连接数”的技术手段,可以代替上述“若检测到关于所述websocket长连接的释放指令且所述连接总数大于所述最小连接数,则释放所述释放指令对应的所述websocket长连接,以响应所述释放指令”的技术手段,两者可以只存其一,也可以两者并存。

图7示出了本申请第五实施例提供的方法的实现流程图。参见图7,相对于上述其他实施例,本实施例提供的方法还包括s701,具体详述如下:

在s701中,实时监测所述连接池内空闲队列的第一连接数以及使用队列的第二连接数。

在本实施例中,通过上述的系统计数器,实时对所述连接池内空闲队列的第一连接数进行计数,所述第一连接数即所述空闲队列存储的状态标识为空闲的长连接的连接数;通过上述的系统计数器,实时对所述连接池内使用队列的第二连接数进行计数,所述第二连接数即所述使用队列存储的状态标识为使用的长连接的连接数。

在s702中,根据所述第一连接数以及所述第二连接数,生成监测信息。

在本实施例中,根据上述第一连接数以及上述第二连接数生成上述监测信息,示例性地,在预设时间间隔内,执行一次上述根据上述第一连接数以及上述第二连接数生成上述监测信息的操作,所述监测信息包括所述第一连接数与时间的函数关系图,以及所述第二连接数与时间的函数关系图,所述监测信息也包括所述第一连接数以及所述第二连接数在所述预设时间间隔内的实时值、最大值、平均值以及总值等等监测信息。

在s703中,基于所述监测信息,调整所述最大连接数和/或所述最小连接数。

在本实施例中,示例性地,所述监测信息包括所述第一连接数以及所述第二连接数在上述预设时间间隔内的实时值、最大值、平均值以及总值等等信息,根据这些信息调整所述最大连接数和/或所述最小连接数。

应理解,所述第一连接数与所述第二连接数的和即为上述连接总数,所述连接总数在最小连接数至最大连接数的范围内。示例性地,在上述预设时间间隔内,若该第一连接数的平均值大于该最小连接数,则调整一次该最小连接数,使该最小连接数的数值减少,和或调整一次该最大连接数,使该最大连接数的数值减少;应理解,所述若该第一连接数的平均值小于或等于该最小连接数,则不执行所述调整所述最大连接数和/或所述最小连接数的操作。

可选的,若该第二连接数的实时值大于该最小连接数的时间段时长占据所述预设时间间隔的50%以上,则调整一次该最小连接数,使该最小连接数的数值增加;应理解,若该第二连接数的实时值大于该最小连接数的时间段时长占据所述预设时间间隔的50%以内,则不执行所述调整所述最大连接数和/或所述最小连接数的操作。

可选的,若该第二连接数的最大值大于该最大连接数的90%,且该第二连接数的平均值大于该最大连接数的60%,则调整一次该最大连接数,使该最大连接数的数值增加。应理解,若该第二连接数的最大值小于或等于该最大连接数的90%,或该第二连接数的平均值小于或等于该最大连接数的60%,则不执行所述调整所述最大连接数和/或所述最小连接数的操作。

可选的,若该第一连接数不为0的时间时长占据该预设时间间隔的预设百分比(示例性地,为60%)以上,则调整图5所示实施例中的所述标准时长,使该标准时长的数值减少,该减少的值根据该第一连接数不为0的时间时长占据该预设时间间隔的百分比值来确定;若该第一连接数不为0的时间时长占据该预设时间间隔的预设百分比(示例性地,为60%)以内,则调整图5所示实施例中的所述标准时长,使该标准时长的数值增加,该增加的值根据该第一连接数不为0的时间时长占据该预设时间间隔的百分比值来确定。

在本实施例中,根据上述监测信息调整最小连接数和/或最大连接数,可以使得所述最小连接数以及最大连接数的数值更合理,使得维持上述连接池内的长连接的资源消耗量更合理,在满足响应数据交互请求的情况下,更加平衡维护该连接池内的长连接的资源消耗和进行语音合成的资源消耗,尽可能节省服务器消耗的资源。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

对应于上文实施例所述的识别方法,图示出了本申请实施例提供的装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。

参照图8,图8示出了本申请一实施例提供的服务器的结构示意图,该服务器包括:连接池装置,用于存储已创建的websocket长连接;所述连接池装置预配置的属性参数包括最大连接数以及最小连接数;监听计数装置,用于实时监测所述连接池装置内的所述websocket长连接的连接总数;所述websocket长连接用于接收通信对端反馈的交互数据,以基于交互数据进行语音合成;数据交互请求响应装置,用于接收数据交互请求指令,从所述连接池装置中选取状态标识为空闲的目标长连接,通过所述目标长连接进行数据交互,同时将所述目标长连接的状态标识调整为使用;所述状态标识为空闲的目标长连接为处于待激活状态的所述websocket长连接;所述状态标识为使用的目标长连接为处于使用状态的所述websocket长连接;创建连接装置,用于接收创建指令,当所述连接总数小于所述最大连接数时,创建一个新的所述状态标识为空闲的长连接;释放连接装置,用于接收释放指令,当所述连接总数大于所述最小连接数时,释放所述释放连接指令对应的所述websocket长连接。

在本实施例中,优选的,参照图9,图9示出了本申请一实施例提供的监听计数装置的结构示意图,详述如下:

在本实施例中,该监听计数装置还包括:所述监听计数装置,还用于实时监测所述空闲队列中所述状态标识为空闲的长连接的空闲时长;若所述空闲时长大于预设的标准时长,则向所述释放连接装置发送关于所述状态标识为空闲的长连接的释放指令;监测信息生成装置,用于根据所述第一连接数以及所述第二连接数,生成监测信息;所述监测信息用于调整所述连接池装置的属性参数。

应理解,上述服务器还包括调整装置,用于根据所述监测信息调整所述连接池装置的属性参数,所述属性参数包括上述最大连接数以及上述最小连接数。

在本实施例中,该监听计数装置还用于监测所述连接池内websocket长连接的连接总数,若所述连接总数小于所述最小连接数,则向所述创建连接装置发送创建指令,直至所述连接总数达到所述最小连接数;实时监测所述连接池内空闲队列的第一连接数以及使用队列的第二连接数。

需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

图10示出了本申请另一实施例提供的服务器的结构示意图,详述如下:

所述服务器10可以是桌上型计算机、笔记本及云端服务器等计算设备。该服务器可包括,但不仅限于,处理器100、存储器101。本领域技术人员可以理解,图10仅仅是服务器10的举例,并不构成对服务器10的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。

所称处理器100可以是中央处理单元(centralprocessingunit,cpu),该处理器100还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器101在一些实施例中可以是所述服务器10的内部存储单元,例如服务器10的硬盘或内存。所述存储器101在另一些实施例中也可以是所述服务器10的外部存储设备,例如所述服务器10上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器101还可以既包括所述服务器10的内部存储单元也包括外部存储设备。所述存储器101用于存储操作系统、应用程序、引导装载程序(bootloader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器101还可以用于暂时地存储已经输出或者将要输出的数据。本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。

本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/服务器的任何实体或装置、记录介质、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的装置/服务器和方法,可以通过其它的方式实现。例如,以上所描述的装置/服务器实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

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