一种长连接地址处理方法和装置与流程

文档序号:23175761发布日期:2020-12-04 14:06阅读:136来源:国知局
一种长连接地址处理方法和装置与流程

本申请涉及长连接地址处理领域,尤其涉及一种长连接地址处理方法和装置。



背景技术:

近年来,随着互联网技术的快速扩展,新增了移动终端应用的功能,例如消息推送功能。消息推送功能的实现是基于消息推送系统。在消息推送系统中,客户端会与服务端建立长连接,消息由该长连接从服务端自动传送给客户端,实现消息的实时送达。现有的消息推送有两种类型:私信和广播。私信是指给某一应用的某一位用户推送消息,广播是指给某一应用的所有用户推送消息,其中,用户(user)和应用(client)都有唯一的编号。

在实际应用中,消息推送系统是基于谷歌开发的编程语言go语言中的集合(map)实现的。map是一种无序的键(key)值(value)对的集合,可以根据key快速寻找value。在消息推送系统中建立一个map,将key定义为应用#用户标识,即clientid#userid,例如123#89avc,将value定义为长连接地址,即长连接在内存中的地址。在长连接建立或断开时,需要对map进行确定(所谓“确定”可以是一种互斥锁,即同一时间内只有一个线程可以对当前map进行读或写的操作,只有解除对当前map的确定后其他线程才可以继续进行操作),之后才能在map中增加或删除相应的key-value对,最后解除对map的确定。基于此,在推送消息时,确定该map,利用key为clientid#userid的标识在map中寻找长连接地址value,寻找到之后解除对map的确定,最后利用该长连接地址推送消息。也就是说,所有对于长连接的操作比如建立、断开和查询均在同一个map中进行,但是在高并发量的消息推送业务中,频繁的确定会拖慢消息推送的时间,同时建立或者断开长连接时系统的响应速度也因为map的确定受到影响。并且,该map达到一定容量之后会自动扩展,当长连接快速增加时,该map需要频繁扩展,更加增大了消息推送上时间的开销。

简而言之,目前的消息推送系统往往由于高并发量导致消息推送的实时性降低,并且影响长连接状态变化例如建立或断开时的响应速度。也就是说现有的系统存在无法兼顾并发量和实时性这一问题。



技术实现要素:

本申请实施例提供了一种长连接地址处理方法和装置,能够兼顾并发量和实时性,提升消息推送的实时性和长连接状态变化时的响应速度,缩短了查询长连接所耗费的时间。

本申请提供一种长连接地址处理方法,所述方法包括:

服务器获取第一标识,所述第一标识包括目标应用标识和目标用户标识中的其中一项或多项;

所述服务器将所述第一标识进行哈希,得到所述第一标识的哈希值;

所述服务器根据所述第一标识的哈希值和对应关系,确定所述第一标识对应的存储位置,所述对应关系为所述第一标识的哈希值和所述存储位置的对应关系;

所述服务器在所述存储位置对应的存储空间中处理与所述第一标识对应的长连接地址。

可选的,所述存储空间中存储有所述第一标识和所述长连接地址的对应关系;

所述方法还包括:

所述服务器在所述存储位置对应的存储空间中处理与所述第一标识对应的长连接地址包括:

所述服务器存储或删除所述第一标识和所述长连接地址对应关系。

可选的,所述存储空间中存储有所述第一标识和所述长连接地址的对应关系;

所述方法还包括:

所述服务器在所述存储位置对应的存储空间中处理与所述第一标识对应的长连接地址包括:

所述服务器在所述存储空间中查询与所述第一标识对应的长连接地址。

可选的,所述存储空间中存储第一键值对,所述第一键值对的键为所述第一标识,所述第一键值对的值为所述长连接地址。

可选的,所述服务器获取第一标识包括:

所述服务器接收来自终端设备的长连接连接请求或长连接断开请求,所述长连接连接请求或长连接断开请求中携带所述第一标识。

本申请提供一种消息发送方法,所述方法包括:

服务器获取目标应用标识;

所述服务器根据所述目标应用标识和对应关系确定存储位置,所述对应关系为所述目标应用标识和存储位置的对应关系,所述存储位置对应的存储空间中存储有与所述目标应用标识对应的至少一个长连接地址;

所述服务器向与所述至少一个长连接地址对应的终端设备发送消息。

可选的,所述至少一个长连接地址包括第一长连接地址,所述方法还包括:

所述服务器获取所述目标用户标识和所述第一长连接地址的对应关系;

所述服务器在所述存储空间中存储所述对应关系。

可选的,所述方法还包括:

所述服务器在所述存储空间中删除所述对应关系。

本申请提供一种长连接地址处理装置,所述装置包括:

获取单元,用于获取第一标识,所述第一标识包括目标应用标识和目标用户标识中的其中一项或多项;

哈希单元,用于将所述第一标识进行哈希,得到所述第一标识的哈希值;

确定单元,用于根据所述第一标识的哈希值和对应关系,确定所述第一标识对应的存储位置,所述对应关系为所述第一标识的哈希值和所述存储位置的对应关系;

处理单元,用于在所述存储位置对应的存储空间中处理与所述第一标识对应的长连接地址。

本申请提供一种消息发送装置,所述装置包括:

获取单元,用于获取目标应用标识;

确定单元,用于根据所述目标应用标识和对应关系确定存储位置,所述对应关系为所述目标应用标识和存储位置的对应关系,所述存储位置对应的存储空间中存储有与所述目标应用标识对应的至少一个长连接地址;

发送单元,用于向与所述至少一个长连接地址对应的终端设备发送消息。

与现有技术相比,本申请至少具有以下优点:

本申请实施例提供了一种长连接地址处理方法和装置,所述方法包括:服务器获取第一标识,所述第一标识包括目标应用标识和目标用户标识中的其中一项或多项;所述服务器将所述第一标识进行哈希,得到所述第一标识的哈希值;所述服务器根据所述第一标识的哈希值和对应关系,确定所述第一标识对应的存储位置,所述对应关系为所述第一标识的哈希值和所述存储位置的对应关系;所述服务器在所述存储位置对应的存储空间中处理与所述第一标识对应的长连接地址。由此可见,利用本发明实施例提供的方法和装置,可以利用哈希算法定位存储长连接的位置,只确定该位置处的键值对集合,并在服务端对长连接进行高效的操作,例如建立连接、断开连接、查找连接、推送消息等,缩短了查询长连接所耗费的时间,提升了长连接状态变化时,例如断开连接和建立连接的响应速度,使得能够兼顾并发量和实时性,提升消息推送的实时性。

附图说明

图1为本申请实施例一提供的一种长连接地址处理方法的流程示意图;

图2为本申请实施例二提供的一种消息发送方法的流程示意图;

图3为本申请实施例一提供的一种长连接地址处理装置的结构示意图;

图4为本申请实施例二提供的一种消息发送装置的结构示意图。

具体实施方式

本申请实施例提供了一种长连接地址处理方法,能够解决目前消息推送系统往往由于高并发量导致消息推送的实时性降低,无法兼顾并发量和实时性这一问题。通过在服务端对长连接进行高效的处理操作,例如建立连接、断开连接、查找连接等,提升消息推送的实时性,缩短了查询长连接所耗费的时间,提升了长连接状态变化时,例如断开连接和建立连接的响应速度。

以下结合附图对本申请实施例提供的长连接地址处理方法及装置进行介绍。

参见图1,该图为本申请实施例一提供的一种长连接地址处理方法的流程示意图。

本申请的实施例提供的长连接地址处理方法,可以通过如下步骤101-104实现。

步骤101:服务器获取第一标识,所述第一标识包括目标应用标识和目标用户标识中的其中一项或多项。

在本申请实施例中,考虑到在实际应用中,在消息推送系统进行消息推送之前,需要获取消息推送的对象及消息推送的长连接。消息推送的对象为某一用户,由服务器通过消息推送系统向用户推送消息。

需要说明的是,消息推送系统可以用于移动终端应用或超文本标记语言(hypertextmarkuplanguage,简称html5)应用。

作为一种示例,消息推送系统可以支持多个用户同时建立长连接。

作为另一种示例,消息推送系统也可以支持同一用户在多个移动终端应用中建立长连接。

可以理解的是,同一用户可以利用该用户的用户编号(userid)作为唯一标识,同一移动终端应用可以利用该应用的应用编号(clientid)作为唯一标识。

作为一种示例,在寻找某一用户时,可以利用应用#用户标识来寻找。应用#用户标识,即clientid#userid标识,例如112#39584。

作为另一种示例,在寻找某一用户时,也可以直接利用用户标识来寻找某一用户。

作为又一种示例,在寻找某一用户时,也可以直接利用应用标识来寻找某一用户。

需要说明的是,本实施例对所述第一标识具体包括应用标识和用户标识中的其中一项或者多项不做具体限定,可以包括其中的一项,也可以包括多项。

步骤102:所述服务器将所述第一标识进行哈希,得到所述第一标识的哈希值。

在本申请实施例中,考虑到在实际应用中,服务器在获取到第一标识之后,利用哈希算法对第一标识进行哈希,得到第一标识的哈希值。

可以理解的是,在本申请中,不是只有一个集合(map)来存储长连接和键(key)值(value)对,本申请创建了一个长度为n的数组,数组中的每个元素均为一个单独的map,也就是说,本申请有n个map可以存储长连接及key-value对。

作为一种示例,n可以为服务器中央处理器(centralprocessingunit,简称cpu)的个数。

可以理解的是,本申请中的key-value对,key为标识,value为长连接地址。

需要说明的是,利用第一标识的哈希值(二进制)与n-1(二进制)做按位与的方法(以下简称mod函数),根据输入的第一标识的哈希值和cpu个数n,可唯一确定第一标识的哈希值在长度为n的数组中的位置,并且当有多个标识的哈希值时,每个标识的哈希值的位置可在数组中均匀分布。

作为一种示例,在本申请中,可以输入第一标识,根据第一标识确定存储长连接的map在数组中的位置。

步骤103:所述服务器根据所述第一标识的哈希值和对应关系,确定所述第一标识对应的长连接的存储位置,所述对应关系为所述第一标识的哈希值和所述存储位置的对应关系。

在本申请实施例中,考虑到在实际应用中,根据哈希算法对第一标识进行哈希,得到第一标识的哈希值,可以利用第一标识的哈希值确定存储长连接的map在数组中的位置,并利用哈希值查找到对应的map。

可以理解的是,作为一种示例,第一标识的哈希值与第一标识对应的长连接的存储位置的对应关系可以为mod函数关系。根据第一标识的哈希值,利用mod函数确定哈希值在数组中的位置,该位置对应的map中存储着第一标识对应的长连接地址。

步骤104:所述服务器在所述存储位置对应的存储空间中处理与所述第一标识对应的长连接地址。

在本申请实施例中,考虑到在实际应用中,作为一种示例,存储位置对应的存储空间可以为n个map中的其中一个。

需要说明的是,第一标识与长连接地址的对应关系为key-value对应关系。key为第一标识,value为与第一标识对应的长连接地址。

需要说明的是,在确定第一标识对应的长连接地址的存储位置之后,对存储位置对应的存储空间确定,之后在存储位置对应的存储空间处理所述与第一标识对应的长连接地址,处理完成后解除对所述存储空间的确定。

作为一种示例,在确定第一标识对应的长连接地址的map之后,确定该map,之后在该map对第一标识对应的长连接地址进行处理操作,处理完成后解除对所述map的确定。

可以理解的是,本申请中,与cpu相同个数的n个map之间互相独立,对其中一个map的长连接的处理操作,例如查询、新增、删除,不影响其他map,换言之,本申请可以利用多个cpu并行处理长连接地址。

通过以上描述可知,利用本申请实施例提供的长连接地址处理方法,能够解决目前消息推送系统往往由于高并发量导致消息推送的实时性降低,无法兼顾并发量和实时性这一问题。通过在服务端对长连接所在的集合进行高效的处理操作,例如建立连接、断开连接、查找连接等,提升消息推送的实时性,缩短了查询长连接所耗费的时间,提升了长连接状态变化时,例如断开连接和建立连接的响应速度。

需要说明的是,在实际应用中,存储位置对应的存储空间中存储有第一标识和长连接地址的对应关系。

作为一种示例,位于数组某一位置中的map中存储有第一标识和长连接地址的key-value对应关系,其中,key为第一标识,value为长连接地址。

需要说明的是,基于上述的对应关系,所述服务器在所述存储位置对应的存储空间中处理与所述第一标识对应的长连接地址包括:

所述服务器存储或删除所述第一标识和所述长连接地址对应关系。

可以理解的是,长连接在存储位置可能有状态变化,例如,建立连接。又如,断开连接。因此,在长连接的状态变化时,需要对第一标识和长连接地址的对应关系作出相应改变,例如存储对应关系。又如,删除对应关系。

作为一种示例,需要建立第一标识对应的长连接,可以在n个map的某一map中存储第一标识和对应长连接地址的key-value对应关系。

作为另一种示例,需要删除第一标识对应的长连接,可以在存储有第一标识和长连接地址对应关系的map中删除第一标识和对应长连接地址的key-value对应关系。

需要说明的是,在实际应用中,存储位置对应的存储空间中存储有第一标识和长连接地址的对应关系。

作为一种示例,位于数组某一位置中的map中存储有第一标识和长连接地址的key-value对应关系,其中,key为第一标识,value为长连接地址。

需要说明的是,基于上述的对应关系,所述服务器在所述存储位置对应的存储空间中处理与所述第一标识对应的长连接地址包括:

所述服务器在所述存储空间中查询与所述第一标识对应的长连接地址。

可以理解的是,消息推送系统需要与用户建立长连接来推送消息,在消息推送之前需要在服务器内查询到该长连接地址。因此,服务器需要查询第一标识和长连接地址的对应关系,根据对应关系确定该长连接地址。

作为一种示例,需要查询第一标识对应的长连接地址,可以在存储有第一标识和长连接地址对应关系的map中查询第一标识和对应长连接地址的key-value对应关系。

需要说明的是,上述方法还包括:

所述存储空间中存储第一键值对,所述第一键值对的键为所述第一标识,所述第一键值对的值为所述长连接地址。

作为一种示例,在n个map的某一个map中存储有第一键(key)值(value)对,第一键值对的键为第一标识,第一键值对的值为第一标识对应的长连接地址。

所述存储空间可以为以下示意代码:

在一种可能的实现方式中,步骤101中“获取第一标识”在具体实现时,包括:

所述服务器接收来自终端设备的长连接连接请求或长连接断开请求,所述长连接连接请求或长连接断开请求中携带所述第一标识。

可以理解的是,服务器在接收到用户终端设备的长连接连接请求或长连接断开请求时,会存在长连接的状态变化,长连接状态变化会影响长连接地址和第一标识的对应关系的变化。要实现这种变化,在长连接连接请求或长连接断开请求可以携带第一标识。

作为一种示例,服务器接收到来自终端设备用户的长连接连接请求,长连接连接请求中携带第一标识,对第一标识进行哈希,根据第一标识哈希得到的哈希值和mod函数,以哈希值作为输入,利用mod函数确定第一标识的哈希值在数组中的位置,在该位置对应的map中存储第一标识和长连接地址的对应关系,所述对应关系即为键(key)值(value)对。

作为又一种示例,服务器接收到来自终端设备用户的长连接断开请求,长连接断开请求中携带第一标识,对第一标识进行哈希,根据第一标识哈希得到的哈希值和mod函数,以哈希值作为输入,利用mod函数确定第一标识的哈希值在数组中的位置,在该位置对应的map中存储有第一标识和长连接地址的对应关系,所述对应关系即为键(key)值(value)对,删除所述键值对。

需要说明的是,在实际应用中,服务器会对某一应用下所有的用户发送推送消息,为了缩短查询长连接地址和消息发送的时间,本申请实施例还提供了一种消息发送方法,下面结合附图2进行详细说明。

参见图2,该图为本申请实施例二提供的一种消息发送方法的流程示意图。

本申请的实施例二提供的消息发送方法,可以通过如下步骤201-203实现。

步骤201:服务器获取目标应用标识。

在本申请实施例中,考虑到在实际应用中,同一移动终端应用可以利用该应用的应用编号(clientid)作为唯一标识。

步骤202:所述服务器根据所述目标应用标识和对应关系确定存储位置,所述对应关系为所述目标应用标识和存储位置的对应关系,所述存储位置对应的存储空间中存储有与所述目标应用标识对应的至少一个长连接地址。

在本申请实施例中,考虑到在实际应用中,目标应用标识和存储位置之间存在对应关系,可以利用目标应用标识和对应关系确定存储位置。

可以理解的是,在本申请中,在一个总的集合(map)下,还可以创建至少一个map来存储键(key)值(value)对。

作为一种示例,可以利用目标应用标识,例如clientid和对应关系,确定全部存储为目标应用下长连接地址的map。其中,所述对应关系可以为key-value对应关系,key为目标应用标识,value为与目标应用标识对应的map。

需要说明的是,存储位置对应的存储空间中存储有与所述目标应用标识对应的至少一个长连接地址。

作为一种示例,存储位置对应的存储空间为某一map,该map为目标应用标识对应的map,该map下存储有所述目标应用所有用户的长连接地址。

可以理解的是,对总的map进行处理操作,例如查询和新增时,并不影响对目标应用标识对应的map进行处理操作,例如查询、新增、删除,换言之,对总的map和目标应用标识对应的map可以并行处理。

所述存储空间可以为以下示意代码:

步骤203:所述服务器向与所述至少一个长连接地址对应的终端设备发送消息。

在本申请实施例中,考虑到在实际应用中,服务器通过目标应用标识对应的map得到目标应用所有用户的长连接地址,根据这些长连接地址,服务器向长连接地址对应的用户终端设备发送消息。

通过以上描述可知,利用本申请实施例提供的消息发送方法,能够解决目前消息推送系统往往由于高并发量导致消息推送的实时性降低,无法兼顾并发量和实时性这一问题。通过统一处理整个应用下用户的长连接,提升了消息推送的实时性,缩短了查询长连接所耗费的时间。

需要说明的是,在上述实施例的基础上,至少一个长连接地址包括第一长连接地址,所述方法还包括:

所述服务器获取所述目标用户标识和所述第一长连接地址的对应关系;

所述服务器在所述存储空间中存储所述对应关系。

需要说明的是,目标应用标识对应存储位置下的存储空间,存储至少一个长连接地址,包括第一长连接地址。

作为一种示例,目标应用标识对应的map存储有至少一个长连接地址,包括第一长连接地址。该map还存储有目标用户标识和第一长连接地址的对应关系。该对应关系可以为key-value对应关系,key为目标用户标识,value为第一长连接地址。

作为又一种示例,目标应用的目标用户建立了长连接,在目标应用标识对应的map中存储对应关系,该对应关系为目标用户标识和第一长连接地址的key-value对应关系。

作为另一种示例,目标应用建立了长连接,则在总的map下建立目标应用标识对应的map,在该map中存储对应关系。

需要说明的是,在上述方法的基础上,所述方法还包括:

所述服务器在所述存储空间中删除所述对应关系。

作为一种示例,目标应用标识对应的map存储有至少一个长连接地址,包括第一长连接地址。该map还存储有目标用户标识和第一长连接地址的对应关系。目标应用的目标用户撤销了长连接,则在目标应用标识对应的map中删除目标用户标识和第一长连接地址的对应关系。

基于以上实施例提供的长连接地址处理方法,本申请实施例还提供了一种长连接地址处理装置,以下结合附图3介绍该长连接地址处理装置。

参见图3,该图为本申请实施例提供的一种长连接地址处理装置的结构示意图。

图3所示的长连接地址处理装置300,具体包括获取单元310、哈希单元320、确定单元330和处理单元340。

所述获取单元310,用于获取第一标识,所述第一标识包括目标应用标识和目标用户标识中的其中一项或多项;

所述哈希单元320,用于将所述第一标识进行哈希,得到所述第一标识的哈希值;

所述确定单元330,用于根据所述第一标识的哈希值和对应关系,确定所述第一标识对应的存储位置,所述对应关系为所述第一标识的哈希值和所述存储位置的对应关系;

所述处理单元340,用于在所述存储位置对应的存储空间中处理与所述第一标识对应的长连接地址。

需要说明的是,由于所述长连接地址处理装置300是与以上方法实施例一提供的方法对应的装置,因此,关于所述装置300的各个单元的具体实现,可以参考方法实施例中相关内容的描述,在此不再赘述。

通过以上描述可知,利用本申请实施例提供的长连接地址处理装置,能够解决目前消息推送系统往往由于高并发量导致消息推送的实时性降低,无法兼顾并发量和实时性这一问题。通过在服务端对长连接所在的集合进行高效的处理操作,例如建立连接、断开连接、查找连接等,提升消息推送的实时性,缩短了查询长连接所耗费的时间,提升了长连接状态变化时,例如断开连接和建立连接的响应速度。

基于以上实施例提供的消息发送方法,本申请实施例还提供了一种消息发送装置,以下结合附图4介绍该消息发送装置。

参见图4,该图为本申请实施例提供的一种消息发送装置的结构示意图。

图4所示的消息发送装置400,具体包括获取单元410、确定单元420和发送单元430。

所述获取单元410,用于获取目标应用标识;

所述确定单元420,用于根据所述目标应用标识和对应关系确定存储位置,所述对应关系为所述目标应用标识和存储位置的对应关系,所述存储位置对应的存储空间中存储有与所述目标应用标识对应的至少一个长连接地址;

所述发送单元430,用于向与所述至少一个长连接地址对应的终端设备发送消息。

需要说明的是,由于所述消息发送装置400是与以上方法实施例二提供的方法对应的装置,因此,关于所述装置400的各个单元的具体实现,可以参考方法实施例中相关内容的描述,在此不再赘述。

本申请提供的长连接地址处理方法和装置,能够兼顾并发量和实时性,提升消息推送的实时性和长连接状态变化时的响应速度,缩短了查询长连接所耗费的时间。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

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

另外,在本申请各个实施例中的各业务单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件业务单元的形式实现。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已。

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

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