一种通讯信息的发送方法和装置
技术领域
本申请涉及通信技术领域,特别是涉及一种通讯信息的发送方法和一种通讯信息的发送装置。
背景技术
随着通信技术的发展,尤其是随着移动互联网的推广,众多服务平台通向用户发送信息,以提供多样化的服务。例如,服务平台向用户的手机发送登录验证短信、天气预报短信、节假日问候彩信等等。
如图1所示,在服务平台中,网关(即smsgw)通常和服务器绑定,每台服务器需要启动所有通道,每个通道需要建立一个与运营商连接的连接,在接收到业务系统的请求时,与运营商进行通讯。
要下行通讯信息,在传统的方法中,服务器和运营商之间需要建立连接,这样推广到集群后,每台服务器都需要和运营商之间建立一个连接,这样就要求服务器和运营商的连接的数量保持一致。
在实际中,运营商的通道资源有限,不会提供足够冗余的连接。并且各运营商市场份额不一样,并且每个运营商能够提供的服务能力也不一样,导致多家运营商能够提供的连接数也不一样。
如果服务器数和连接数一样,则服务平台受限于运营商中最小的连接数,无法充分的利用所有的资源。
而且由于不同运营商给的连接数不一样,每次需要新增连接时都要向运营商申请,严重影响了网关的扩容和运营商接入的成本。
虽然可以通过接入多家运营商来解决容量问题,但是连接数的问题随着对容量的需求增加而需要解决。
若机器数和连接数一样,应用扩容则要求连接数也要扩容,多数运营商无法做到。
在服务器上线和下线时可能无法获取或者及时释放连接,使得运维成本很高。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:如何提出一种通讯信息的发布机制,用以最大程度利用所有的连接数,方便扩容和运维。
发明内容
本申请实施例所要解决的技术问题是提供一种通信信息的发送方法,用以提高扩容和维护的简便性。
相应的,本申请实施例还提供了一种通信信息的发送装置,用以提高扩容和维护的简便性。
为了解决上述问题,本申请实施例公开了一种通讯信息的发送方法,包括:
接收通讯信息的下行请求;
根据所述下行请求查找与所述通讯信息匹配的通讯通道;所述通讯通道具有关联的通讯连接和已用连接数量;
当所述已用连接数量在本地非零时,通过所述通讯连接将所述通讯信息发送至相连的通讯平台,所述通讯平台用于将所述通讯信息发送至对应的通讯对象。
优选地,还包括:
当所述已用连接数量在本地为零时,查找与所述通讯通道关联的已用连接数量非零的服务器;
将所述通讯信息发送至所述服务器,所述服务器用于通过所述通讯连接将所述通讯信息发送至所述通讯平台。
优选地,在所述根据所述下行请求查找所述通讯信息对应的通讯平台的步骤之前,还包括:
对所述通讯信息进行预处理。
优选地,所述通讯信息包括通讯对象标识和通讯内容;所述根据所述下行请求查找与所述通讯信息匹配的通讯通道的步骤包括:
查找与所述通讯信息的通讯对象标识所属的通讯通道;
从所述通讯对象标识所属的通讯通道中按照查找与所述通讯内容匹配的通讯通道。
优选地,所述通讯通道包括默认通讯通道和备份通讯通道;所述根据所述下行请求查找与所述通讯信息匹配的通讯通道的步骤包括:
根据所述下行请求查找与所述通讯信息匹配的默认通讯通道;
当所述默认通讯通道不可用时,查找可用的备份通讯通道。
优选地,所述通讯连接中具有消息队列;所述通过所述通讯连接将所述通讯信息发送至相连的通讯平台的步骤包括:
将通讯信息分别写入对应的线程池;每个线程池具有对应的优先级;
将线程池的通讯信息写入所述消息队列;
将所述消息队列中的通讯信息按照所属线程池的优先级,通过所述通讯连接发送至相连的通讯平台。
优选地,在所述接收通讯信息的下行请求的步骤之前,还包括:
在冷启动时,读取各个通讯通道关联的,在本地的已用连接数量;
分别对各个通讯通道创建数量与所述已用连接数量相同的通讯连接;
对应修改各个通讯通道关联的已用连接数量和未用连接数量;
为所述通讯通道注册通讯服务。
优选地,还包括:
当接收到通讯连接的修改指令时,判断是否开启所述通讯连接关联的通讯通道;
当未开启所述通讯连接关联的通讯通道时,为所述通讯通道卸载通讯服务;
关闭所述通讯通道关联的通讯连接;
对应修改所述通讯通道关联的已用连接数量和未用连接数量。
优选地,还包括:
当已开启所述通讯连接关联的通讯通道时,判断所述通讯通道关联的已用连接数量在本地是否为零;
当所述已用连接数量在本地为零时,从内存中读取所述通讯通道关联的,在本地的已用连接数量;
为所述通讯通道创建数量与从内存中读取的已用连接数量相同的通讯连接;
对应修改所述通讯通道关联的已用连接数量和未用连接数量;
为所述通讯通道注册通讯服务。
优选地,还包括:
当所述已用连接数量在本地非零时,根据所述修改指令修改所述通讯通道关联的通讯连接;
对应修改所述通讯通道关联的已用连接数量和未用连接数量。
优选地,所述根据所述修改指令修改所述通讯通道关联的通讯连接的步骤包括:
当所述修改指令为增加连接指令时,为所述通讯通道创建通讯连接。
优选地,所述根据所述修改指令修改所述通讯通道关联的通讯连接的步骤包括:
当所述修改指令为减少连接指令时,关闭所述通讯通道关联的通讯连接。
优选地,还包括:
判断修改后的已用连接数量是否为零;若是,则为所述通讯通道卸载通讯服务。
优选地,还包括:
当触发上线操作时,读取所述上线操作对应的通讯通道关联的未用连接数量;
当所述未用连接数量非零时,为所述通讯通道创建通讯连接;
对应修改所述通讯通道关联的已用连接数量和未用连接数量;
为所述通讯通道注册通讯服务。
优选地,还包括:
当触发下线操作时,关闭当前所有通讯通道关联的通讯连接;
对应修改所述通讯通道关联的已用连接数量和未用连接数量;
为所述通讯通道卸载通讯服务。
本申请实施例还公开了一种通讯信息的发送装置,包括:
下行请求接收模块,用于接收通讯信息的下行请求;
通讯通道查找模块,用于根据所述下行请求查找与所述通讯信息匹配的通讯通道;所述通讯通道具有关联的通讯连接和已用连接数量;
第一通讯信息发送模块,用于在所述已用连接数量在本地非零时,通过所述通讯连接将所述通讯信息发送至相连的通讯平台;所述通讯平台用于将所述通讯信息发送至对应的通讯对象。
优选地,还包括:
服务器查找模块,用于在所述已用连接数量在本地为零时,查找与所述通讯通道关联的已用连接数量非零的服务器;
第二通讯信息发送模块,用于将所述通讯信息发送至所述服务器;所述服务器用于通过所述通讯连接将所述通讯信息发送至所述通讯平台。
优选地,还包括:
预处理模块,用于对所述通讯信息进行预处理。
优选地,所述通讯信息包括通讯对象标识和通讯内容;所述通讯通道查找模块包括:
标识归属查找子模块,用于查找与所述通讯信息的通讯对象标识所属的通讯通道;
内容匹配子模块,用于从所述通讯对象标识所属的通讯通道中按照查找与所述通讯内容匹配的通讯通道。
优选地,所述通讯通道包括默认通讯通道和备份通讯通道;所述通讯通道查找模块包括:
默认通讯通道查找子模块,用于根据所述下行请求查找与所述通讯信息匹配的默认通讯通道;
备份通讯通道查找子模块,用于在所述默认通讯通道不可用时,查找可用的备份通讯通道。
优选地,所述通讯连接中具有消息队列;所述第一通讯信息发送模块包括:
线程池写入子模块,用于将通讯信息分别写入对应的线程池;每个线程池具有对应的优先级;
消息队列写入子模块,用于将线程池的通讯信息写入所述消息队列;
优先级发送子模块,用于将所述消息队列中的通讯信息按照所属线程池的优先级,通过所述通讯连接发送至相连的通讯平台。
优选地,还包括:
第一读取模块,用于在冷启动时,读取各个通讯通道关联的,在本地的已用连接数量;
第一创建模块,用于分别对各个通讯通道创建数量与所述已用连接数量相同的通讯连接;
第一修改模块,用于对应修改各个通讯通道关联的已用连接数量和未用连接数量;
第一注册模块,用于为所述通讯通道注册通讯服务。
优选地,还包括:
开启判断模块,用于在接收到通讯连接的修改指令时,判断是否开启所述通讯连接关联的通讯通道;
第一卸载模块,用于在未开启所述通讯连接关联的通讯通道时,为所述通讯通道卸载通讯服务;
第一关闭模块,用于关闭所述通讯通道关联的通讯连接;
第二修改模块,用于对应修改所述通讯通道关联的已用连接数量和未用连接数量。
优选地,还包括:
第一判断模块,用于在已开启所述通讯连接关联的通讯通道时,判断所述通讯通道关联的已用连接数量在本地是否为零;
第二读取模块,用于在所述已用连接数量在本地为零时,从内存中读取所述通讯通道关联的,在本地的已用连接数量;
第二创建模块,用于为所述通讯通道创建数量与从内存中读取的已用连接数量相同的通讯连接;
第三修改模块,用于对应修改所述通讯通道关联的已用连接数量和未用连接数量;
第二注册模块,用于为所述通讯通道注册通讯服务。
优选地,还包括:
第四修改模块,用于在所述已用连接数量在本地非零时,根据所述修改指令修改所述通讯通道关联的通讯连接;
第五修改模块,用于对应修改所述通讯通道关联的已用连接数量和未用连接数量。
优选地,所述第四修改模块包括:
第三创建子模块,用于在所述修改指令为增加连接指令时,为所述通讯通道创建通讯连接。
优选地,所述第四修改模块包括:
第二关闭子模块,用于在所述修改指令为减少连接指令时,关闭所述通讯通道关联的通讯连接。
优选地,还包括:
第二判断模块,用于判断修改后的已用连接数量是否为零;若是,则调用第二卸载模块;
第二卸载模块,用于为所述通讯通道卸载通讯服务。
优选地,还包括:
第三读取模块,用于在触发上线操作时,读取所述上线操作对应的通讯通道关联的未用连接数量;
第四创建模块,用于在所述未用连接数量非零时,为所述通讯通道创建通讯连接;
第六修改模块,用于对应修改所述通讯通道关联的已用连接数量和未用连接数量;
第三注册模块,用于为所述通讯通道注册通讯服务。
优选地,还包括:
第三关闭模块,用于在触发下线操作时,关闭当前所有通讯通道关联的通讯连接;
第七修改模块,用于对应修改所述通讯通道关联的已用连接数量和未用连接数量;
第三卸载模块,用于为所述通讯通道卸载通讯服务。
与背景技术相比,本申请实施例包括以下优点:
本申请实施例根据通讯信息的下行请求,查找与通讯信息匹配的通讯通道;当已用连接数量在本地非零时,通过通讯连接将通讯信息发送至相连的通讯平台,通讯平台将通讯信息发送至对应的通讯对象。通过对通讯连接的使用数量进行配置管理,为通讯信息查找通讯通道,实现了各服务器的通讯通道的差异化部署,无需服务器的数量与通讯连接的数量一致,在通讯平台提供的通讯连接不等且受限的情况下,可以充分利用通讯连接,提高通讯连接的利用率,避免了资源的空闲,不需要强依赖通讯平台的连接资源,提高了扩容的简便性,满足不断提升的容量需求。
本申请实施例在冷启动时,按照各个通讯通道关联的,在本地的未用连接数量创建对应的通讯连接,通过配置通讯连接的数量,充分利用了当前的连接资源,减少了运维的成本。
本申请实施例在热启动时,若服务器没有开启通讯连接关联的通讯通道,则该通讯通道无效,需要卸载该通讯通道的通讯服务、关闭其关联的通讯连接和对应修改已用连接数量和未用连接数量,以防止其他服务器将需要该通讯通道服务的通讯信息发送至当前服务器,浪费资源;同时,释放占用的连接资源,减少了运维的成本。
本申请实施例在热启动时,若已用连接数量在本地为零,则按照通讯通道关联的,本地的已用连接数量创建对应的通讯连接,以防止通讯通道已经开启,但是初始化的时候还没启动通讯连接的问题出现,充分利用了当前的连接资源,减少了运维的成本。
本申请实施例根据修改指令修改通讯通道关联的通讯连接并对应修改关联的已用连接数量和未用连接数量,以充分利用连接资源,避免连接资源的空闲,减少了运维的成本。
本申请实施例在关闭通讯连接使得已用连接数量为零时,卸载通讯服务,以防止其他服务器将需要该通讯通道服务的通讯信息发送至当前服务器,造成通讯信息无法发送的问题,避免浪费资源。
本申请实施例中在上线操作时可以根据未用连接数量动态绑定通讯连接,以获取连接资源,避免造成空启动,无法发送任何通讯信息的问题。
本申请实施例中在下线操作时可以根据已用连接数量动态释放通讯连接,避免造成连接资源浪费。
附图说明
图1是传统的业务系统的连接示例图;
图2是本申请的一种通讯信息的发送方法实施例的步骤流程图;
图3是本申请的一种业务系统的连接示例图;
图4是本申请的一种消息队列的示例图;
图5是本申请的一种查找服务器的示例图;
图6是本申请的一种通讯信息的发送示例图;
图7是本申请的另一种通讯信息的发送方法实施例的步骤流程图;
图8是本申请的另一种通讯信息的发送方法实施例的步骤流程图;
图9是本申请的另一种通讯信息的发送方法实施例的步骤流程图;
图10是本申请的一种通讯信息的发送装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
在一般的服务平台中,通讯信息可以根据业务(即通讯容)不同,选择不同的通讯平台进行发送。
例如,校验码类的短信(通讯信息之一),可以选择移动运营商A、电信运营商B、联通运营商C的通讯通道;信用卡还款提醒短信,可以选择移动运营商D、电信运营商E、联通运营商F。
网关集群会对发送的通讯信息进行负载均衡,负载均衡可以是随机的。每台服务器上可能发送任何一个业务的通讯信息,这样每台服务器都要和任何一个通讯平台建立连接。
如果服务器的数量大于通讯连接的数量,那么存在某台机器上没有建立某个通讯平台的通讯连接,分发到这台服务器的这个业务的通讯信息就无法发送。如果服务器的数量小于通讯连接的数量,那么没有充分利用通讯连接,空闲了资源。
因此,这样就要求服务器的数量和通讯平台的通讯连接的数量保持一致。
例如,在图1中,smsgw1有3个通讯通道,每个通讯通道中都有两个通讯连接,分别与移动运营商1、移动运营商2、联通运营商1、联通运营商2、电信运营商1、电信运营商2都建立连接。
在实际应用中,服务器可以横向扩容的,即添加相应的硬件,即增加发送通讯信息的服务器的数量。
例如,服务器单机的发送能力是100tps(1秒钟发送100条通讯信息),而当前需要10000tps的服务能力,那么就需要100台服务器来同时服务。
由于一个通讯平台的容量有限,为了满足所有通讯信息的业务需求,虽然可以通过接入多个通讯平台的方式来解决容量问题。
例如,可以接入浙江移动运营商的通讯平台、上海移动运营商的通讯平台、广州移动运营商的通讯平台、辽宁移动运营商的通讯平台等等。
但是,由于通讯连接,尤其是长连接非常耗资源,通讯平台能够提供的通讯连接非常有限。
例如,浙江移动运营商的通讯平台能够提供20个通讯连接,上海移动运营商的通讯平台能够提供10个通讯连接。
按照所有通讯信息的业务需求,假设需要100台服务器发送通讯信息,那么每个通讯平台都需要100个通讯连接来保证所有业务的通讯信息都能发送。
如果服务器的数量和通讯连接的数量一样,若服务器的数量和通讯连接的数量一样,服务器扩容则要求通讯连接也要扩容,多数通讯平台无法做到,扩容的瓶颈就是通讯平台中最小的通讯连接的数量,使得无法充分利用所有的资源。
此外,由于发送通讯信息需要建立通讯连接,没有通讯连接的管理,运维成本很高。在上线操作时,就不知道有多少通讯连接,用了多少通讯连接,使得可能无法获取连接资源,做不到容量突增时的紧急扩容。在下线操作时,不知道通讯连接的数量多了,可能无法及时释放连接资源,使得还有连接资源没有利用上。
因此,提出了本申请实施例的核心构思之一,建立通讯平台的通讯连接管理机制,包括总连接数量、已用连接数量、未用连接数量,通过配置信息的方式管理各服务器的通讯连接信息;服务器启动时按照配置信息启动连接;服务器运行时动态调整通讯连接的分配,服务器不用重启可以实时生效;当触发上线操作或下线操作时,可以不依赖配置信息,根据通讯连接的实际使用情况,来抢占或释放连接资源。
参照图2,示出了本申请的一种通讯信息的发送方法实施例的步骤流程图,具体可以包括如下步骤:
步骤201,接收通讯信息的下行请求;
需要说明的是,本申请实施例可以应用于具有长连接(通讯连接之一)的业务系统。
参见图3,在业务系统中的通讯网关集群(即smsgw集群)需要启动通讯通道,该通讯通道需要与通讯平台(如移动运营商、联通运营商、电信运营商等等)建立长连接,以便进行通讯。
其中,通讯通道可以为通讯平台提供的一个账号,可以用于接收/发送通讯信息。一个通讯通道可以创建一个或多个通讯连接。
长连接可以指一个基于通讯通道的、可连续发送多个数据包的通讯链路。在连接保持期间,如果没有数据包发送,需要连接双方发链路检测包。
长连接可以用于操作频繁、点对点的通讯,具体可以包括TCP(TransmissionControl Protocol,传输控制协议)连接。
在具体实现中,应用于长连接的通讯信息可以包括短信、彩信、即时通讯工具消息、邮件、P2P(Peer to Peer,对等网络)信息等等。
通讯信息的下行请求可以是指业务系统发出的下行某个通讯信息的指示。
业务系统由于业务需求,例如,在用户注册账号时发送验证短信、在账号出现异常登录情况时发送提示短信、发送信用卡还款提示短信等等,需要下行通讯信息,即由业务系统发起的通讯信息发送行为,经过业务系统和通讯平台处理将通讯信息发送到通讯对象上。
在本申请的一种优选实施例中,可以对通讯信息进行预处理。
在具体实现中,如图3所示的通讯信息中心(smscenter)可以负责对业务系统请求发送的通讯信息本身进行预处理,具体可以包括校验、拆分、分组等等。
进一步而言,根据业务情景不同,可以进行多种校验,例如:
长度校验,校验通讯信息是否超过单条通讯信息的字数限制;
敏感字校验,校验通讯信息中是否含有非法字符串;
重复校验,校验是否短时间内对同一个通讯对象发送通讯信息。
再者,拆分可以指对单条长通讯信息(如超过了预设的长度阈值)拆分成多条短通讯信息。
例如,一条短信为100字,超过90字的字数限制(长度阈值),则可以拆分成两条短息进行发送,一条短息为90字,另一条短息为10字。
此外,分组可以指对通讯信息按照分组策略进行分组。
例如,按照业务的重要性可以将通讯信息划分三个分组,优先级分别为高级、中级、低级。
当然,上述预处理只是作为示例,在实施本申请实施例时,可以根据实际情况设置其他预处理,以符合业务系统的发送要求,本申请实施例对此不加以限制。另外,除了上述预处理外,本领域技术人员还可以根据实际需要采用其它预处理,本申请实施例对此也不加以限制。
步骤202,根据所述下行请求查找与所述通讯信息匹配的通讯通道;
在具体实现中,如图3所示的通讯信息中心(smscenter)可以对业务系统请求发送的通讯信息进行预处理,并可以将预处理之后的通讯信息(如进行了短信拆分则是短信列表)投递给通讯信息路由(smsrouter),由通讯信息路由(smsrouter)提供路由服务。
在本申请的一种优选实施例中,所述通讯信息可以包括通讯对象标识和通讯内容,则在本申请实施例中,步骤202可以包括如下子步骤:
子步骤S11,查找与所述通讯信息的通讯对象标识所属的候选通讯通道;
在具体实现中,通讯对象标识可以是能够代表一个唯一确定的通讯对象的信息。例如,若该通讯对象为手机,则该通讯对象标识可以为手机号码。
业务系统可以接入移动运营商、联通运营商、电信运营商等不同的通讯平台,每家通讯平台一般具有其所属的与通讯对象进行通讯的方式,因此,本申请实施例中需要选择合适的通讯平台,通过该通讯平台对应的通讯通道发送通讯信息。
例如,若手机号码是移动号码,则可以查找移动运营商的通讯平台的通讯通道;若手机号码是联通号码,则可以查找联通运营商的通讯平台的通讯通道;若手机号码是电信号码,则可以查找电信运营商的通讯平台的通讯通道。
子步骤S12,从所述通讯对象标识所属的通讯通道中按照查找与所述通讯内容匹配的通讯通道。
在具体实现中,通讯内容可以为需要发送至通讯对象的信息。
业务系统可以接入移动、联通、电信等多家运营商,每家运营商属下的通讯平台(如移动运营商属下的北京移动运营商、天津移动运营商、内蒙古移动运营商等)的服务质量也有所不同,本申请实施例可以预先设定下行策略,以查找匹配的该通讯内容匹配的通讯通道。
在本申请实施例的一个示例中,可以按照通讯信息的类型设置对应的通讯通道。
例如,校验码类的短信,可以选择移动运营商A、电信运营商B、联通运营商C的通讯通道;信用卡还款提醒短信,可以选择移动运营商D、电信运营商E、联通运营商F。
在本申请实施例的另一个示例中,可以按照通讯通道的因素选择不同质量的通讯通道,质量较高的通讯通道可以优先为优先级级较高的通讯信息提供服务。
例如,该选择通讯通道的因素可以包括发送成功率、权限参数、到达耗时、通讯号码长度中的至少一项。
其中,发送成功率可以为发送通讯信息的成功率,发送成功率越高,可以表明通过其所属的通讯通道发送的通讯信息到达通讯对象的成功率越高。则从成功率的角度来看,可以选择发送成功率高的通讯通道发送通讯信息。
权限参数可以为通讯平台相同业务系统发送通讯信息所需的参数,例如通讯信息的价格,即发送通讯信息的成本,每个通讯平台单条通讯信息的权限参数可能是不一样的,从成本的角度来看,可以选择权限参数低的通讯通道发送通讯信息发送通讯信息。
到达耗时可以为通讯信息从发送至到达的时间,到达耗时越小,可以表示通讯越快送达通讯对象上,用户等待时间会越少。从时间的角度来看,可以选择到达耗时较小的通讯通道发送通讯信息。
通讯号码长度可以为通讯通道的接入号码的长度,若通讯通道A的通讯号码为5位,通讯通道B的通讯号码为11位。对于用户来说,5位通讯号码的认知程度远好于11位通讯号码。从通讯号码的角度来看,可以选择通讯号码长度较小的通讯通道发送通讯信息。
当然,上述通讯通道的因素只是作为示例,在实施本申请实施例时,可以根据实际情况设置其他通讯通道的因素,本申请实施例对此不加以限制。另外,除了上述通讯通道的因素外,本领域技术人员还可以根据实际需要采用其它通讯通道的因素,本申请实施例对此也不加以限制。
在本申请的一种优选实施例中,所述通讯通道可以包括默认通讯通道和备份通讯通道,则在本申请实施例中,步骤202可以包括如下子步骤:
子步骤S21,根据所述下行请求查找与所述通讯信息匹配的默认通讯通道;
子步骤S22,当所述默认通讯通道不可用时,查找可用的备份通讯通道。
本申请实施例中,可以根据通讯信息的通讯标识和通讯内容等信息选择后台配置的默认通讯通道,如果该默认通讯通道可用,则使用该默认通讯通道。
在通讯平台不能提供通讯服务等情况下,通讯通道不可用。
如果该默认通讯通道不可用,则可以查找可用的备份通讯通道。
进一步地,每个备份通道可以具有对应的优先级,本申请实施例中可以按优先级遍历该默认通讯通道的所有备份通讯通道,使用优先级最高的可用的备份通讯通道。
需要说明的是,所查找到的与通讯信息匹配的通讯通道,可以以通讯通道标识进行标识。
其中,通讯通道标识可以是能够代表一个唯一确定的通讯通道的信息,例如,通讯通道ID(Identity,身份标识号码)。
此外,所述通讯通道可以具有关联的通讯连接,该通讯连接为通讯网关(smsgateway)与通讯平台进行连接。
应用本申请实施例,可以为每条通道配置通讯连接管理机制,通讯通道可以具有关联已用连接数量、未用连接数量和总连接数量。
其中,总连接数量,可以为通讯平台提供的所有通讯连接的数量;
已用连接数量,可以为已经建立连接的通讯连接的数量;
未用连接数量,可以为未建立连接的通讯连接的数量;
一般而言,总连接数量为已用连接数量和未用连接数量之和,但是,在通讯平台提供的通讯连接的数量增加或减少时,总连接数量也可以随之增加或减少。
记录各个通讯通道的已用连接数量、未用连接数量和总连接数量的总控制表可以在如图3所示的,名称为“连接管理”的连接管理模块进行管理,其该总控制表的示例可以如下表所示:
表1
通讯平台 |
总连接数量 |
已用连接数量 |
未用连接数量 |
浙江移动运营商 |
20 |
10 |
10 |
浙江联通运营商 |
10 |
10 |
0 |
浙江电信运营商 |
5 |
4 |
1 |
上海移动运营商 |
30 |
30 |
0 |
此外,通讯连接的配置信息(sms_server)通过连接管理模块进行配置和维护。
该配置信息(sms_server)的格式示例可以如下表所示:
表2
字段名称 |
类型 |
描述 |
Id |
Int primary key auto_increment |
流水ID |
Channel_id |
Int not null |
通讯通道ID |
Link_count |
Int not null |
连接实例数量 |
Server_name |
Varchar(32)not null |
服务器名称 |
Room |
Varchar(32) |
机房名称,如ZUE,ZTG |
Operator |
Varchar(32) |
操作员 |
Gmt_create |
Datetime not null |
记录创建时间 |
Gmt_modified |
Datetime not null |
记录最后修改时间 |
该配置信息(sms_server)的核心数据示例可以如下表所示:
表3
Id |
通讯通道ID |
连接实例数量 |
服务器名称 |
1 |
浙江移动 |
2 |
smsserver-1-1 |
2 |
浙江移动 |
3 |
smsserver-1-2 |
3 |
浙江移动 |
3 |
smsserver-1-3 |
4 |
上海移动 |
1 |
smsserver-1-1 |
其中,连接实例数量可以为通讯通道在各服务器的已用连接数量,各服务器可以在配置信息中查询连接实例数获知该通讯通道在本地的已用连接数。
此外,通讯通道在总控制表中的已用连接数可以为在配置信息中各服务器中的实例连接数之和。
步骤203,当所述已用连接数量在本地非零时,通过所述通讯连接将所述通讯信息发送至相连的通讯平台;
若查找到与通讯信息匹配的通讯通道,则如图3所示的通讯信息路由(smsrouter)可以检查服务器本地是否部署有该通讯通道的通讯连接。
具体而言,通讯信息路由(smsrouter)可以从连接管理模块中查询配置信息(sms_server),以获知本地是否部署有该通讯通道的通讯连接。
若查询已用连接数量在本地非零,则可以表示服务器本地部署有该通讯通道的通讯连接,可以直接使用本地的通讯通道发送通讯信息。
具体而言,可以将通讯信息的通讯标识(如手机号)和通讯内容,按照通讯连接的协议规范,发送至通讯平台。
例如,本地服务器的名名称为“smsserver-1-1”,需求通讯通道ID为“浙江移动”的通讯通道,在表3中可以查询到本地服务器的连接实例数量为2,则表示本地服务器已经部署了两条“浙江移动”的通讯通道的通讯连接,可以直接使用本地的通讯通道发送通讯信息。
在本申请的一种优选实施例中,所述通讯连接中可以具有消息队列,则在本申请实施例中,步骤203可以包括如下子步骤:
子步骤S31,将通讯信息分别写入对应的线程池;每个线程池可以具有对应的优先级;
子步骤S32,将线程池的通讯信息写入所述消息队列;
子步骤S33,将所述消息队列中的通讯信息按照所属线程池的优先级,通过所述通讯连接发送至相连的通讯平台。
本申请实施例中,如图3所示的通讯信息网关(smsgateway)一般以连接单实例的方式运行。
如图4所示,该通讯连接具有一个消息队列404,用来临时存储需要从该通讯通道进行发送的通讯信息。
本申请实施例中可以同时配置有一个或多个线程池,每个线程池可以具有对应的优先级,例如图4的高级线程池401、中级线程池402和低级线程池403,分别对应优先级的高级、中级、低级。
在如图3所示的通讯信息中心(smscenter)在预处理时可以将分通讯信息进行分组,例如,将通讯信息划分三个分组,优先级分别为高级、中级、低级,则可以直接写入如图4所示的高级线程池401、中级线程池402和低级线程池403中。
高级线程池401、中级线程池402和低级线程池403分别将对应优先级的通讯信息添加到消息队列404末端。
消息队列404内部会有不同的排队策略,按照通讯信息所属线程池的优先级,即优先级较高的优先发送,通过通讯连接405或通讯连接406发送至通讯平台407。
在本申请的一种优选实施例中,所述的方法还可以包括如下步骤:
步骤204,当所述已用连接数量为零时,查找与所述通讯通道关联的已用连接数量非零的服务器;
步骤205,将所述通讯信息发送至所述服务器;所述服务器用于通过所述通讯连接将所述通讯信息发送至所述通讯平台。
若已用连接数量在本地为零时,则可以表示服务器本地没有部署该通讯通道的通讯连接,如图3所示的通讯信息路由(smsrouter)可以将该通讯信息发送到部署有该通讯通道的通讯连接的服务器中进行发送。
在本申请实施例中,可以通过如图3所示的配置中心查找与通讯通道关联的已用连接数量非零的服务器。
配置中心与各服务器可以是一个基于经典的“发布/订阅”模型的通讯框架,配置中心的用户(即服务器)分为两个关键角色:发布者和订阅者。它们彼此看不到对方的存在,维系它们的是其共同关注的数据,通过“数据标识(Data ID)”指示。
本申请实施例中,可以通过使用配置中心的注册通讯服务和卸载通讯服务来实现通讯通道在指定服务器上的部署。
在具体实现中,当前服务器可以以订阅者的角色发送一个消息至配置中心,该消息中包括当前服务器的服务器标识(如服务器ID)、通讯通道的通讯标识(如通讯ID),表示当前服务器需要该通讯通道的服务。
配置中心在已注册通讯服务的其他服务器中,查找部署有该通道标识(如通讯ID)的通讯通道的服务器。若查找到,则可以向当前服务器发送一条消息,该消息中包括其他服务器的服务器标识(如服务器ID)、通讯通道的通讯标识(如通讯ID),表示该其他服务器可以提供该通讯通道的服务。
当前服务器可以将通讯信息发送至该服务器标识(如服务器ID)对应其他服务器,由该服务器将通讯信息发送至通讯平台。
例如,如图5所示,ID为“smsserver-1-1”的服务器501在配置中心500注册了ID为“浙江移动”的通讯通道的通讯服务;ID为“smsserver-1-2”的服务器502在配置中心500注册了ID为“上海联通”的通讯通道的服务。
若ID为“smsserver-1-3”的服务器503需要ID为“浙江移动”的通讯通道的服务,则可以向配置中心500发送包括“smsserver-1-3”和“浙江移动”的消息,配置中心500在查找到服务器501注册了该通讯通道的服务,则可以向服务器503发送包括“smsserver-1-1”和“浙江移动”的消息,服务器503可以将需要发送的通讯信息发送至ID为“smsserver-1-1”的服务器501。
若ID为“smsserver-1-4”的服务器504需要ID为“上海联通”的通讯通道的服务,则可以向配置中心500发送包括“smsserver-1-4”和“上海联通”的消息,配置中心500在查找到服务器502注册了该通讯通道的服务,则可以向服务器504发送包括“smsserver-1-2”和“上海联通”的消息,服务器504可以将需要发送的通讯信息发送至ID为“smsserver-1-2”的服务器502。
在具体实现中,通讯平台接收到通讯信息,可以用于将所述通讯信息发送至对应的通讯对象。
该通讯平台可以包括不同运营商(如移动、联通、电信、虚拟运营商等等)的通讯平台,可以支持不同的移动网络,例如第二代移动通讯技术2G网络、集成数字增强网络(即2.5G网络)、第三代移动通讯技术3G网络、第四代移动通讯技术4G网络、虚拟运营商(Virtual Network Operator,VNO)网络等等。
该通讯信息可以包括通讯对象标识(如手机号码)和通讯内容,则通讯平台可以将通讯内容按照通讯对象标识发送至通讯对象(如手机)。
为使本领域技术人员更好地理解本申请实施例,以下通过具体的示例来说明本申请实施例中通讯信息的发送方法。
如图6所示,业务系统601在步骤605中请求发送通讯信息,本服务器的网关集群smsgw602在步骤606中接收通讯信息,在步骤607中查找与该通讯信息匹配的通讯通道。
在查找到通讯通道时,在步骤608中判断本地是否部署有该通讯通道的通讯连接,如果本地有该通讯通道的通讯连接,则可以在步骤609中直接通过该通讯连接发送至与该通讯通道连接的通讯平台。如果本地没有部署该通讯通道的通讯连接,则可以在步骤610中,通过配置中心603查找到部署有该通讯通道的通讯连接的服务器。
在查找到服务器时,在步骤611中路由该通讯信息到该服务器中,在该服务器的网关集群smsgw604在步骤612中接收通讯信息,在步骤613通过该通讯连接发送至与该通讯通道连接的通讯平台。
本申请实施例根据通讯信息的下行请求,查找与通讯信息匹配的通讯通道;当已用连接数量在本地非零时,通过通讯连接将通讯信息发送至相连的通讯平台,通讯平台将通讯信息发送至对应的通讯对象。通过对通讯连接的使用数量进行配置管理,为通讯信息查找通讯通道,实现了各服务器的通讯通道的差异化部署,无需服务器的数量与通讯连接的数量一致,在通讯平台提供的通讯连接不等且受限的情况下,可以充分利用通讯连接,提高通讯连接的利用率,避免了资源的空闲,不需要强依赖通讯平台的连接资源,提高了扩容的简便性,满足不断提升的容量需求。
参照图7,示出了本申请的另一种通讯信息的发送方法实施例的步骤流程图,具体可以包括如下步骤:
步骤701,在冷启动时,读取各个通讯通道关联的,在本地的已用连接数量;
步骤702,分别对各个通讯通道创建数量与所述已用连接数量相同的通讯连接;
步骤703,对应修改各个通讯通道关联的已用连接数量和未用连接数量。
需要说明的是,冷启动可以是相对于热启动而言的,冷启动可以指在关机状态下启动服务器,热启动可以为服务器在先已启动,由于调整配置等原因,需要重新启动。
在具体实现中,在服务器在冷启动时,可以从如图3所示的连接管理模块中读取各个通讯通道关联的,在本地的已用连接数量(即实例连接数),由于连接实例数是分配好了,写在配置信息中通讯连接的数量,可以按照分配的数量在该服务器中为各个通讯通道创建对应数量的通讯连接。
例如,读取配置信息的核心数据如下表所示:
Id |
通讯通道ID |
连接实例数量 |
服务器名称 |
1 |
浙江移动 |
2 |
smsserver-1-1 |
2 |
浙江移动 |
3 |
smsserver-1-2 |
3 |
浙江移动 |
3 |
smsserver-1-3 |
4 |
上海移动 |
1 |
smsserver-1-1 |
5 |
浙江电信 |
1 |
smsserver-1-3 |
若本地服务器的名称为“smsserver-1-1”,则可以在冷启动时,为ID为“浙江移动”的通讯通道创建2个通讯连接,与浙江移动运营商进行连接,可以为ID为“上海移动”的通讯通道创建1个通讯连接,与上海移动运营商进行连接。
以下以TCP连接作为通讯连接的示例对通讯通道的创建过程进行说明。
TCP协议是传输层一种面向连接的通信协议,提供可靠的数据传输,其特点是完成流量控制和差错检验的任务,保证可靠的数据传输。但是TCP协议在传输数据之前要求通讯网关和通讯平台进行三次信息交互以保证数据的准确可靠的传输,其过程为:
1、通讯网关通过向通讯平台发送一个含有同步序列号的标志位的数据段给通讯平台,向通讯平台请求建立连接;
2、通讯平台收到服务器的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应通讯网关;
3、通讯网关收到这个数据段后,再发送一个确认应答,确认已收到通讯平台的数据段,开始传输实际数据了。
按照TCP协议进行连接需要进行三次信息交互以保证数据可以准确、可靠地传输,因此需要消耗一定的资源,如果每次通讯操作都是先进行连接再进行通讯操作,则会降低处理速度。所以每次通讯操作完成后,可以不断开连接,待下次进行通讯操作时直接发送数据包,而不用重新建立连接。
在创建通讯连接之后,可以对应修改各个通讯通道关联的已用连接数量和未用连接数量。
具体而言,可以在总控制表中,对各个通讯通道的已用连接数量增加创建的通讯连接的数量,可以对各个通讯通道的未用连接数量减少增加创建的通讯连接的数量。
步骤704,为所述通讯通道注册通讯服务。
本申请实施例中,可以动态向如图3所示的配置中心为所述通讯通道注册通讯服务,表示当前服务器启动了哪个通讯平台的通讯通道,可以提供该通讯通道的通讯服务。
在具体实现中,服务器可以以发布者的角色,向配置中心发送一条包含“uniqId=通讯通道ID”(配置中心的唯一标示符)、服务器标识和注册服务的消息,以完成通讯服务的注册。
本申请实施例在冷启动时,按照各个通讯通道关联的,在本地的已用连接数量创建对应的通讯连接,通过配置通讯连接的数量,充分利用了当前的连接资源,减少了运维的成本。
步骤705,接收通讯信息的下行请求;
步骤706,根据所述下行请求查找与所述通讯信息匹配的通讯通道;所述通讯通道具有关联的通讯连接和已用连接数量;
步骤707,当所述已用连接数量在本地非零时,通过所述通讯连接将所述通讯信息发送至相连的通讯平台;所述通讯平台用于将所述通讯信息发送至对应的通讯对象。
参照图8,示出了本申请的另一种通讯信息的发送方法实施例的步骤流程图,具体可以包括如下步骤:
步骤801,接收通讯信息的下行请求;
步骤802,根据所述下行请求查找与所述通讯信息匹配的通讯通道;所述通讯通道具有关联的通讯连接和已用连接数量;
步骤803,当所述已用连接数量在本地非零时,通过所述通讯连接将所述通讯信息发送至相连的通讯平台;所述通讯平台用于将所述通讯信息发送至对应的通讯对象。
步骤804,当接收到通讯连接的修改指令时,判断是否开启所述通讯连接关联的通讯通道;
在具体实现中,可以通过一个状态表格来维护的通讯通道的状态。
例如,该状态表格的示例可以如下表所示:
通讯通道ID |
状态 |
浙江移动 |
开启 |
浙江联通 |
关闭 |
本申请实施例中,可以通过查询该状态表格判断是否开启改了该通讯连接关联的通讯通道。若是通讯通道是“开启”状态,则可以表示已经开启了该的通讯通道,若是通讯通道是“关闭”状态,则可以表示未开启该的通讯通道。
步骤805,当未开启所述通讯连接关联的通讯通道时,为所述通讯通道卸载通讯服务;
本申请实施例中,可以动态向如图3所示的配置中心为通讯通道卸载通讯服务。卸载后,在配置中心无此服务器提供的该通讯通道的通讯服务。
在具体实现中,服务器可以以发布者的角色,向配置中心发送一条包含“uniqId=通讯通道ID”(配置中心的唯一标示符)、服务器标识和卸载服务的消息,以完成通讯服务的注册。
步骤806,关闭所述通讯通道关联的通讯连接。
步骤807,对应修改所述通讯通道关联的已用连接数量和未用连接数量。
在本申请实施例中,通讯连接部署运行时维护可以以定时任务的方式后台运行,也可以手动触发单次执行,本申请实施例对此不加以限制。
在通讯平台提供的通讯连接的数量增加/减少、单台服务器通过某个通讯平台发送通讯信息的需求增加等情况下,会对通讯连接进行修改。
在热启动的情形下,若服务器没有开启通讯连接关联的通讯通道,则可以表明没法通过该通讯通道发送通讯信息,该通讯通道无效,已创建的通讯连接也无效,需要向配置中心为通讯通道卸载通讯服务,表示该服务器不提供该通讯通道的通讯服务,并关闭通讯通道关联的通讯连接,以释放该服务器占用的连接资源。
若关闭通讯连接,则可以对应修改该通讯通道关联的已用连接数量和未用连接数量。
具体而言,可以对卸载通讯服务的通讯通道,在配置信息、总控制表的已用连接数量减少关闭的通讯连接的数量,可以对卸载通讯服务的通讯通道的未用连接数量增加关闭的通讯连接的数量。
本申请实施例在热启动时,若服务器没有开启通讯连接关联的通讯通道,则该通讯通道无效,需要卸载该通讯通道的通讯服务、关闭其关联的通讯连接和对应修改已用连接数量和未用连接数量,以防止其他服务器将需要该通讯通道服务的通讯信息发送至当前服务器,浪费资源;同时,释放占用的连接资源,减少了运维的成本。
步骤808,当已开启所述通讯连接关联的通讯通道时,判断所述通讯通道关联的已用连接数量在本地是否为零;
若服务器已开启通讯连接关联的通讯通道,则表明可以通过通讯通道发送通讯信息,该通讯通道有效,可以继续判断是否部署有该通讯通道。
步骤809,当所述已用连接数量在本地为零时,从内存中读取所述通讯通道关联的在本地的已用连接数量;
步骤810,为所述通讯通道创建数量与从内存读取的已用连接数量相同的通讯连接;
步骤811,对应修改所述通讯通道关联的已用连接数量和未用连接数量;
步骤812,为所述通讯通道注册通讯服务。
本申请实施例中,服务器在冷启动时,最初的状态一般是没有启动通讯连接的。若在通讯通道已经开启,但是初始化的时候还没启动通讯连接的情况下,就进行配置启动,就会造成通讯通道已经启动,但是没有创建通讯连接的问题。
若已用连接数量在本地为零,则可以表示在当前服务器中没有部署该通讯通道,没有相应的通讯连接发送通讯信息。
虽然实际中没有创建通讯连接,但是分配给该服务器的通讯连接的数量已经存储在内存中,因此可以从内存中读取该通讯通道关联的,在本地的已用连接数量,以创建相应数量的通讯连接,并向配置中心为该通讯通道注册通讯服务。
若创建通讯连接,则可以对应修改该通讯通道关联的已用连接数量和未用连接数量。
具体而言,可以对该通讯通道在配置信息、总控制表的已用连接数量增加创建的通讯连接的数量,可以对该通讯通道的未用连接数量减少创建的通讯连接的数量。
本申请实施例在热启动时,若已用连接数量在本地为零,则按照通讯通道关联的,本地的已用连接数量创建对应的通讯连接,以防止通讯通道已经开启,但是初始化的时候还没启动通讯连接的问题出现,充分利用了当前的连接资源,减少了运维的成本。
步骤813,当所述已用连接数量在本地非零时,根据所述修改指令修改所述通讯通道关联的通讯连接。
步骤814,对应修改所述通讯通道关联的已用连接数量和未用连接数量。
若已用连接数量在本地非零,当所述已用连接数量在本地为零时则可以表示在当前服务器中已部署该通讯通道,可以按照修改指令对通讯连接进行相应的修改。
本申请实施例根据修改指令修改通讯通道关联的通讯连接并对应修改关联的已用连接数量和未用连接数量,以充分利用连接资源,避免连接资源的空闲,减少了运维的成本。
在本申请的一种优选实施例中,步骤813可以包括如下子步骤:
子步骤S41,当所述修改指令为增加连接指令时,为所述通讯通道创建通讯连接;
本申请实施例中,该增加连接指令可以为增加通讯连接的指令。
若创建通讯连接,则可以对应修改该通讯通道关联的已用连接数量和未用连接数量。
具体而言,可以对该通讯通道在配置信息、总控制表已用连接数量增加与创建的通讯连接的数量,可以对该通讯通道的未用连接数量减少创建的通讯连接的数量。
在本申请的一种优选实施例中,步骤813可以包括如下子步骤:
子步骤S42,当所述修改指令为减少连接指令时,关闭所述通讯通道关联的通讯连接。
本申请实施例中,该减少连接指令可以为减少通讯连接的指令。
若关闭通讯连接,则可以对应修改该通讯通道关联的已用连接数量和未用连接数量。
具体而言,可以对该通讯通道在配置信息、总控制表的已用连接数量减少关闭的通讯连接的数量,可以对该通讯通道的未用连接数量增加关闭的通讯连接的数量。
在本申请的一种优选实施例中,还可以包括如下子步骤:
步骤S43,判断修改后的已用连接数量是否为零;若是,则执行步骤S46;
步骤S44,为所述通讯通道卸载通讯服务。
若服务器中该通讯通道的已用连接数量为零,则可以表明当前服务器没有可用的通讯连接发送通讯信息,该通讯通道无效,需要向如图3所示的配置中心为通讯通道卸载通讯服务,表示该服务器不提供该通讯通道的通讯服务,以防止其他服务器将需要该通讯通道服务的通讯信息发送至当前服务器,造成通讯信息无法发送的问题,避免浪费资源。
本申请实施例在关闭通讯连接使得已用连接数量为零时,卸载通讯服务,以防止其他服务器将需要该通讯通道服务的通讯信息发送至当前服务器,造成通讯信息无法发送的问题,避免浪费资源。
参照图9,示出了本申请的另一种通讯信息的发送方法实施例的步骤流程图,具体可以包括如下步骤:
步骤901,接收通讯信息的下行请求;
步骤902,根据所述下行请求查找与所述通讯信息匹配的通讯通道;所述通讯通道具有关联的通讯连接和已用连接数量;
步骤903,当所述已用连接数量在本地非零时,通过所述通讯连接将所述通讯信息发送至相连的通讯平台;所述通讯平台用于将所述通讯信息发送至对应的通讯对象。
步骤904,当触发上线操作时,读取所述上线操作对应的通讯通道关联的未用连接数量;
步骤905,当所述未用连接数量非零时,为所述通讯通道创建通讯连接;
步骤906,对应修改所述通讯通道关联的已用连接数量和未用连接数量;
步骤907,为所述通讯通道注册通讯服务。
需要说明的是,上线操作,可以指增加服务器的操作。
在业务增长等情况下,容量增加,原来的服务器已经不能满足服务要求,需要增加新的服务器来满足容量需求。
上线操作可能是突发事件,来不及初始化配置信息,容易造成新的服务器空启动,没有通讯连接可用,无法发送任何通讯信息的问题。
本申请实施例中在上线操作时可以根据未用连接数量动态绑定通讯连接,以获取连接资源,避免造成空启动,无法发送任何通讯信息的问题。
若创建通讯连接,则可以对应修改该通讯通道关联的已用连接数量和未用连接数量。
具体而言,可以对该通讯通道在配置信息、总控制表的已用连接数量增加创建的通讯连接的数量,可以对该通讯通道的未用连接数量减少创建的通讯连接的数量。
步骤908,当触发下线操作时,关闭当前所有通讯通道关联的通讯连接;
步骤909,对应修改所述通讯通道关联的已用连接数量和未用连接数量;
步骤910,为所述通讯通道卸载通讯服务。
需要说明的是,下线操作,可以指原来的服务器不再使用,可能是临时下线,也可能是机房调整。
下线操作可能是突发事件,容易造成不知道通讯连接已经释放,浪费连接资源。
本申请实施例中在下线操作时可以根据已用连接数量动态释放通讯连接,避免造成连接资源浪费。
若关闭通讯连接,则可以对应修改该通讯通道关联的已用连接数量和未用连接数量。
具体而言,可以对关闭的通讯通道在配置信息、总控制表的已用连接数量减少关闭的通讯连接的数量,可以对关闭的通讯通道的未用连接数量增加关闭的通讯连接的数量。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图10,示出了本申请的一种通讯信息的发送装置实施例的结构框图,具体可以包括如下模块:
下行请求接收模块1001,用于接收通讯信息的下行请求;
通讯通道查找模块1002,用于根据所述下行请求查找与所述通讯信息匹配的通讯通道;所述通讯通道具有关联的通讯连接和已用连接数量;
第一通讯信息发送模块1003,用于在所述已用连接数量在本地非零时,通过所述通讯连接将所述通讯信息发送至相连的通讯平台;所述通讯平台用于将所述通讯信息发送至对应的通讯对象。
在本申请的一种优选实施例中,所述的装置还可以包括如下模块:
服务器查找模块,用于在所述已用连接数量在本地为零时,查找与所述通讯通道关联的已用连接数量非零的服务器;
第二通讯信息发送模块,用于将所述通讯信息发送至所述服务器;所述服务器用于通过所述通讯连接将所述通讯信息发送至所述通讯平台。
在本申请的一种优选实施例中,所述的装置还可以包括如下模块:
预处理模块,用于对所述通讯信息进行预处理。
在本申请的一种优选实施例中,所述通讯信息可以包括通讯对象标识和通讯内容;所述通讯通道查找模块1002可以包括如下子模块:
标识归属查找子模块,用于查找与所述通讯信息的通讯对象标识所属的通讯通道;
内容匹配子模块,用于从所述通讯对象标识所属的通讯通道中按照查找与所述通讯内容匹配的通讯通道。
在本申请的一种优选实施例中,所述通讯通道可以包括默认通讯通道和备份通讯通道;所述通讯通道查找模块1002可以包括如下子模块:
默认通讯通道查找子模块,用于根据所述下行请求查找与所述通讯信息匹配的默认通讯通道;
备份通讯通道查找子模块,用于在所述默认通讯通道不可用时,查找可用的备份通讯通道。
在本申请的一种优选实施例中,所述通讯连接中可以具有消息队列;所述第一通讯信息发送模块1003可以包括如下子模块:
线程池写入子模块,用于将通讯信息分别写入对应的线程池;每个线程池具有对应的优先级;
消息队列写入子模块,用于将线程池的通讯信息写入所述消息队列;
优先级发送子模块,用于将所述消息队列中的通讯信息按照所属线程池的优先级,通过所述通讯连接发送至相连的通讯平台。
在本申请的一种优选实施例中,所述的装置还可以包括如下模块:
第一读取模块,用于在冷启动时,读取各个通讯通道关联的,在本地的已用连接数量;
第一创建模块,用于分别对各个通讯通道创建数量与所述已用连接数量相同的通讯连接;
第一修改模块,用于对应修改各个通讯通道关联的已用连接数量和未用连接数量;
第一注册模块,用于为所述通讯通道注册通讯服务。
在本申请的一种优选实施例中,所述的装置还可以包括如下模块:
开启判断模块,用于在接收到通讯连接的修改指令时,判断是否开启所述通讯连接关联的通讯通道;
第一卸载模块,用于在未开启所述通讯连接关联的通讯通道时,为所述通讯通道卸载通讯服务;
第一关闭模块,用于关闭所述通讯通道关联的通讯连接;
第二修改模块,用于对应修改所述通讯通道关联的已用连接数量和未用连接数量。
在本申请的一种优选实施例中,所述的装置还可以包括如下模块:
第一判断模块,用于在已开启所述通讯连接关联的通讯通道时,判断所述通讯通道关联的已用连接数量在本地是否为零;
第二读取模块,用于在所述已用连接数量在本地为零时,从内存中读取所述通讯通道关联的,在本地的已用连接数量;
第二创建模块,用于为所述通讯通道创建数量与从内存中读取的已用连接数量相同的通讯连接;
第三修改模块,用于对应修改所述通讯通道关联的已用连接数量和未用连接数量;
第二注册模块,用于为所述通讯通道注册通讯服务。
在本申请的一种优选实施例中,所述的装置还可以包括如下模块:
第四修改模块,用于在所述已用连接数量在本地非零时,根据所述修改指令修改所述通讯通道关联的通讯连接;
第五修改模块,用于对应修改所述通讯通道关联的已用连接数量和未用连接数量。
在本申请的一种优选实施例中,所述第四修改模块可以包括如下子模块:
第三创建子模块,用于在所述修改指令为增加连接指令时,为所述通讯通道创建通讯连接。
在本申请的一种优选实施例中,所述第四修改模块可以包括如下子模块:
第二关闭子模块,用于在所述修改指令为减少连接指令时,关闭所述通讯通道关联的通讯连接。
在本申请的一种优选实施例中,所述的装置还可以包括如下模块:
第二判断模块,用于判断修改后的已用连接数量是否为零;若是,则调用第二卸载模块;
第二卸载模块,用于为所述通讯通道卸载通讯服务。
在本申请的一种优选实施例中,所述的装置还可以包括如下模块:
第三读取模块,用于在触发上线操作时,读取所述上线操作对应的通讯通道关联的未用连接数量;
第四创建模块,用于在所述未用连接数量非零时,为所述通讯通道创建通讯连接;
第六修改模块,用于对应修改所述通讯通道关联的已用连接数量和未用连接数量;
第三注册模块,用于为所述通讯通道注册通讯服务。
在本申请的一种优选实施例中,所述的装置还可以包括如下模块:
第三关闭模块,用于在触发下线操作时,关闭当前所有通讯通道关联的通讯连接;
第七修改模块,用于对应修改所述通讯通道关联的已用连接数量和未用连接数量;
第三卸载模块,用于为所述通讯通道卸载通讯服务。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种通讯信息的发送方法和一种通讯信息的发送装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。