CN115473866A - 一种会话管理方法、系统、设备及存储介质 - Google Patents
一种会话管理方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN115473866A CN115473866A CN202211118548.7A CN202211118548A CN115473866A CN 115473866 A CN115473866 A CN 115473866A CN 202211118548 A CN202211118548 A CN 202211118548A CN 115473866 A CN115473866 A CN 115473866A
- Authority
- CN
- China
- Prior art keywords
- session
- instance
- information
- local
- session information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000007726 management method Methods 0.000 title claims abstract description 35
- 238000003860 storage Methods 0.000 title abstract description 22
- 238000000034 method Methods 0.000 claims abstract description 63
- 238000012545 processing Methods 0.000 claims description 38
- 238000004891 communication Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种会话管理方法、系统、设备及存储介质,涉及互联网技术领域,该方法包括若客户端与即时通讯服务器建立连接通道,获取客户端的包括会话标识的本地会话信息,将本地会话信息写入临时队列;创建写缓存任务,将写缓存任务存入任务队列,当执行写缓存任务时,基于会话标识查询临时队列中与会话标识对应的本地会话信息的会话存在状态,若会话存在状态为存在,将本地会话信息写入预设缓存,能够实现在高用户在线,需要同时处理很多信息的前提下,仍然不丢失本地会话信息,提升本地会话信息的一致性,提升即时通讯服务质量。
Description
技术领域
本申请涉及互联网技术领域,特别是涉及一种会话管理方法、系统、设备及存储介质。
背景技术
即时通讯(Instant Messaging,简称IM)是一个实时通信系统,允许两人或多人使用网络实时的传递文字信息、文件、语音与视频交流。IM会话指用户使用IM客户端应用与IM服务器建立的连接通道,包含会话标识、用户标识、服务器IP、建立时间、活跃时间等信息,在建立时记录在当前IM服务器上,当连接通道关闭时移除。因会话在各IM服务器上记录的,在给用户下发信息时,需要轮询每个IM服务器查找用户的会话,效率极低。
在移动互联网环境下,随着用户量级、信息量级的不断增长,现代IM架构,为了保证系统的高吞吐量,是将会话信息集中存储在分布式缓存系统中。在给用户发送信息时可以快速查到会话信息,然后对会话在线的才交给相应IM服务器来下发。但同时带来了会话信息的数据一致性处理的复杂性,特别是对于大体量的即时通讯应用,用户在线高,需要同时处理的消息多,会话信息一致性不佳,IM服务质量不高。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的在于提供一种会话管理方法、系统、设备及存储介质,用于解决相关技术中会话信息的数据一致性处理复杂,会话信息一致性不佳,IM服务质量不高的问题。
为实现上述目的及其他相关目的,本申请提供一种会话管理方法,所述方法包括:
若客户端与即时通讯服务器建立连接通道,获取所述客户端的本地会话信息,所述本地会话信息包括会话标识;
将所述本地会话信息写入临时队列;
创建写缓存任务,将所述写缓存任务存入任务队列,所述写缓存任务包括一所述会话标识;
当执行所述写缓存任务时,基于所述会话标识查询所述临时队列中与所述会话标识对应的所述本地会话信息的会话存在状态;
若所述会话存在状态为存在,将所述本地会话信息写入预设缓存。
于本发明一实施例中,若所述会话存在状态为存在,将所述本地会话信息写入预设缓存之后,所述方法还包括:
获取所述本地会话信息的写入状态;
若写入失败,创建写入重试任务,所述写入重试任务包含写入重试次数阈值和所述本地会话信息的会话标识,将所述写入重试任务加入写入重试处理队列;
基于所述写入重试处理队列中写入重试任务的所述会话标识,确定所述本地会话信息的会话存在状态;
若所述会话存在状态为存在,将所述本地会话信息重新写入所述预设缓存,直到所述写入状态为写入成功,或所述写入重试任务的执行次数等于所述写入重试次数阈值。
于本发明一实施例中,基于所述写入重试处理队列中写入重试任务的所述会话标识,若所述会话存在状态为存在,将所述本地会话信息重新写入所述预设缓存之前,所述方法还包括:
根据所述写入重试次数、预设第一参数和预设第二参数确定写入重试间隔时间;
基于所述写入重试间隔时间执行所述述写入重试处理队列中的所述写入重试任务。
于本发明一实施例中,若所述会话存在状态为存在,将所述本地会话信息写入预设缓存之后,所述方法还包括:
若所述客户端与所述即时通讯服务器关闭所述连接通道,移除所述预设缓存中的所述客户端的本地会话信息,并检测移除状态;
若移除失败,创建移除重试任务,所述移除重试任务包含移除重试次数阈值和本地会话信息的会话标识,将移除重试任务加入移除重试处理队列;
基于所述移除重试处理队列中所述移除重试任务的会话标识,确定本地会话信息的会话存在状态,若所述会话存在状态为存在,将所述本地会话信息重新移除预设缓存,直到移除状态为移除成功,或移除重试任务的执行次数等于移除重试次数阈值。
于本发明一实施例中,若所述会话存在状态为存在,将所述本地会话信息写入预设缓存之后,所述方法还包括:
按照第一时间间隔以实例的当前实例信息对所述预设缓存中所述实例的历史实例信息进行更新,其中,所述当前实例信息根据所述即时通讯服务器的即时通讯服务器地址、所述实例的实例标识、所述实例的活跃时间和所述实例的活跃状态生成,所述即时通讯服务器对应有一个或多个所述实例,一所述实例对应有存储于所述预设缓存中的一个或多个本地会话信息;
根据所述预设缓存中更新后的所述实例的活跃时间与当前时间确定所述实例的间隔时长;
基于所述间隔时长和所述实例的活跃状态确定所述实例的有效性;
若所述实例的有效性确定为无效,则将所述实例对应的本地会话信息从所述预设缓存中移除。
于本发明一实施例中,按照第一时间间隔以实例的当前实例信息对预设缓存中所述实例的历史实例信息进行更新之后,所述方法还包括:
获取所述当前实例信息的更新状态;
若更新失败,按照第二时间间隔以所述当前实例信息对所述历史实例信息进行重新更新,直到更新成功或者所述实例对应的所述即时通讯服务器关闭,其中所述第二时间间隔小于所述第一时间间隔。
于本发明一实施例中,所述本地会话信息还包括客户端标识、即时通讯服务器地址、实例标识、建立时间,按照第一时间间隔以实例的当前实例信息对所述预设缓存中所述实例的历史实例信息进行更新之后,所述方法包括:
获取下发信息请求,所述下发信息请求包括客户端标识;
根据所述请求客户端标识查询预设缓存和/或临时队列中包括所述客户端标识的多个本地会话信息,得到多个目标会话信息;
获取所述目标会话信息对应的目标实例的目标实例标识,以及所述目标实例对应的目标即时通讯服务器的目标即时通讯服务器地址;
基于各所述目标会话信息的所述目标实例标识和目标即时通讯服务器地址查询所述预设缓存中更新后的各所述目标实例的活跃时间;
根据各所述活跃时间与当前时间确定各所述目标会话信息的目标时长;
将所述目标时长小于预设失效时长的所述目标会话信息进行异步移除;
若异步移除后,存在至少一个所述目标会话信息,将各所述目标会话信息转交给即时通讯服务器并下发。
于本发明一实施例中,按照第一时间间隔以实例的当前实例信息对所述预设缓存中所述实例的历史实例信息进行更新之后,所述方法还包括:
预先建立所述实例标识、客户端标识、以及会话标识之间的映射关系;
获取即时通讯服务器对应的实例的当前实例信息中实例标识和活跃时间;
确定所述活跃时间与当前时间的间隔时长;
若所述间隔时长大于预设失效时长,遍历所述实例的会话列表,基于所述实例的实例标识所对应的会话标识和用户标识依次删除预设缓存中的本地会话信息,删除所述会话列表,删除所述预设缓存中所述的实例信息缓存。
本发明还提供了一种会话管理系统,所述系统包括:
获取模块,用于若客户端与即时通讯服务器建立连接通道,获取所述客户端的本地会话信息,所述本地会话信息包括会话标识;
临时写入模块,用于将所述本地会话信息写入临时队列;
创建模块,用于创建写缓存任务,将所述写缓存任务存入任务队列,所述写缓存任务包括一所述会话标识;
查询模块,用于当执行所述写缓存任务时,基于所述会话标识查询所述临时队列中与所述会话标识对应的所述本地会话信息的会话存在状态;
缓存写入模块,用于若所述会话存在状态为存在,将所述本地会话信息写入预设缓存。
本申请还提供一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如上述中任一项所述的会话管理方法。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使计算机执行如上述中任一项所述的会话管理方法。
如上所述,本申请提供一种会话管理方法、系统、设备及介质,具有以下有益效果:
该方法包括若客户端与即时通讯服务器建立连接通道,获取客户端的包括会话标识的本地会话信息,将本地会话信息写入临时队列;创建写缓存任务,将写缓存任务存入任务队列,当执行写缓存任务时,基于会话标识查询临时队列中与会话标识对应的本地会话信息的会话存在状态,若会话存在状态为存在,将本地会话信息写入预设缓存,通过在讲本地会话信息写入到预设缓存中前,预先将本地会话信息写入临时队列,能够保证本地会话信息存储的完整性,即便在用户在线数量多,需要同时处理的信息量较大的情况,仍然由于在临时队列中存储有本地会话信息,确保在对该本地会话信息写入预设缓存过程中,=仍然不丢失本地会话信息,提升本地会话信息的一致性,将客户端生产的本地会话信息更为准确的存储于预设缓存中,在需要下发该本地会话信息时能够确保该本地会话信息在预设缓存中被查找到,并下发,有效提升即时通讯服务质量。
附图说明
图1为应用本申请中一个或多个实施例中技术方案的示例性系统架构的示意图;
图2示出了本申请一实施例提供的会话交互流程示意图
图3为本申请中一实施例提供的会话管理方法的流程示意图;
图4为本申请中另一实施例提供的会话管理方法的流程示意图;
图5为本申请中另一实施例提供的会话管理方法的流程示意图;
图6为本申请中一实施例提供的会话管理系统的硬件结构示意图;
图7为适用于实现本申请中一个或多个实施例的计算机设备的硬件结构示意图。
具体实施方式
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,本实施例中所提供的图示仅以示意方式说明本申请的基本构想,遂图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
图1示出了一种可以应用本申请中一个或多个实施例中技术方案的示例性系统架构的示意图。如图1所示,系统架构100可以包括终端设备110、网络120和服务器130。终端设备110可以包括智能手机、平板电脑、笔记本电脑、台式电脑等各种电子设备。服务器130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。服务器还可以为及时通讯服务器。网络120可以是能够在终端设备110和服务器130之间提供通信链路的各种连接类型的通信介质,例如可以是有线通信链路或者无线通信链路。
根据实现需要,本申请实施例中的系统架构可以具有任意数目的终端设备、网络和服务器。例如,服务器130可以是由多个服务器设备组成的服务器群组。另外,本申请实施例提供的技术方案可以应用于终端设备110,也可以应用于服务器130,或者可以由终端设备110和服务器130共同实施,本申请对此不做特殊限定。
在本申请的一个实施例中,本申请的终端设备110或服务器130之间的交互过程可参见图2,图2示出了本申请一实施例提供的会话交互流程示意图。如图2所示,客户端1的用户A发送消息(信息)给到服务器,服务器包括im服务器1、im服务器2、im服务器3、im服务器4中一个或多个,通过im服务器1转发给路由处理,通过消息路由器转发给处理器做存储相关处理,并通过消息路由器非目标用户下发消息,该消息传输至下发处理器,下发处理器管理im实例本地缓存,下发处理器将消息发送到会话所在的im服务器上,以im服务器3为例,将会话信息下发给客户端2的用户B。其中下发服务器在分布式缓存中查询用户A对应的会话信息,分布式缓存中存储有用户的会话信息、im示例的会话列表、im服务器实例信息,在会话创建或移除时会对用户的会话信息、im示例的会话列表同步处理,对im服务器实例信息会进行定时更新。此外,还会定时清理过期会话。通过上述方案,能够解决相关技术中频繁更新分布式缓存的问题,并加强了会话信息的一致性,不会出现原方法少量不一致的情况。而且查询性能没有明显的损耗。对于IM整体性能来说会有很大提升,如减少了每秒3万的分布式缓存写操作,那相同体量的分布式缓存组件可以多承接每秒1.5万左右的新会话建立。
以上部分介绍了应用本申请技术方案的示例性系统架构的内容,接下来继续介绍本申请的会话管理方法。
图3示出了本申请一实施例提供的会话管理方法流程示意图。具体地,在一示例性实施例中,如图3所示,本实施例提供一种会话管理方法,该方法包括以下步骤:
步骤S310,若客户端与即时通讯服务器建立连接通道,获取客户端的本地会话信息,其中,本地会话信息包括会话标识。
步骤S320,将本地会话信息写入临时队列;
步骤S330,创建写缓存任务,将写缓存任务存入任务队列,其中,写缓存任务包括一会话标识,需要说明的是,步骤S320与步骤S330的执行步序在此不做限定;
步骤S340,当执行写缓存任务时,基于会话标识查询临时队列中与会话标识对应的本地会话信息的会话存在状态;
步骤S350,若会话存在状态为存在,将本地会话信息写入预设缓存。
相关技术中,客户端与即时通讯服务器建立连接通道时,通常是由即时通讯服务器本地记录会话信息的同时将该会话信息写入分布式缓存(预设缓存的一示例性的示例),随着用户量、消息量的不断增长,对分布式缓存的写操作会不断增大,对应的操作延迟也会增大,即时通讯整体性能都会受到影响,如建立通道延迟增大、转发消息延迟增大等。心跳包一般是间隔3分钟发一次,假设同时在线500万用户,那就有每秒近3万的写缓存操作,如果收到消息包也同步更新分布式缓存,那写缓存的操作会更大。像大体量的即时通讯应用,同时在线5000万、每秒40万的消息,这样就要求分布式缓存组件具备非常高的性能。为解决上述相关技术中更新分布式缓存操作频繁的问题,通过图3所示的方法,在即时通讯服务器启动时初始化写分布式缓存的任务队列及处理线程,对应重试的创建延时队列及对应的处理线程,采用延时因减少不必要的重试。单个队列对应有一个或多个处理线程,具体视任务量级来设置处理线程数。当请求量级突然成倍增大,或分布式缓存组件故障造成写入耗时高继而队列积压,此时在队列满的情况下,不想丢弃的话可以写本地文件(也即临时队列)中,即用本地文件作为临时队列,具体实现不在此表述。当用户与即时通讯服务器建立连接通道时,记录好本地会话信息,然后创建写分布式缓存任务,任务包含会话标识,并放入任务队列中。处理线程从队列中获取到任务,基于会话标识查询本地会话信息,如果信息存在且未失效,则写入分布式缓存,否则结束。
在一实施例中,每一个本地会话信息均对应一个写缓存任务,可以通过会话标识来标识当前写缓存任务是对应的需要写入的哪一个本地会话信息。通过对应查找该本地会话信息是否仍有存储于临时队列中,可以即时将失效的本地会话信息排除,降低系统负担,也能减小预设缓存的本地会话信息的写入压力,可以根据当前能够承受的状态,选择写入合适量级的本地会话信息到预设缓存中,能够降低对缓存组件的性能要求。
预设缓存可以是分布式缓存系统,也可以是本领域技术人员所设定的存储空间。
在一实施例中,若会话存在状态为不存在,则结束该写缓存任务,执行认为队列中下一个写缓存任务。
在一实施例中,若会话存在状态为存在,将本地会话信息写入预设缓存之后,该方法还包括:
获取本地会话信息的写入状态;
若写入失败,创建写入重试任务,写入重试任务包含写入重试次数阈值和本地会话信息的会话标识,将写入重试任务加入写入重试处理队列;
基于写入重试处理队列中写入重试任务的会话标识,确定本地会话信息的会话存在状态;
若会话存在状态为存在,将本地会话信息重新写入预设缓存,直到写入状态为写入成功,或写入重试任务的执行次数等于写入重试次数阈值。
由于仅是执行了将本地会话信息写入预设缓存的动作,但由于如服务器宕机等因素导致写入失败,可能存在写入失败的情况,若不对写入状态进行跟进,仍然会导致会话信息的缓存不一致的问题,此时,可以通过创建重试认为,不断的进行重试,重新执行将本地会话信息写入预设缓存的动作,能够在一定程度上解决会话信息的缓存不一致的问题,通过重试策略(重试任务的执行),不断重试写缓存,直到本地会话信息已失效或写入成功。
在一实施例中,基于写入重试处理队列中写入重试任务的会话标识,若会话存在状态为存在,将本地会话信息重新写入预设缓存之前,该方法还包括:
根据写入重试次数、预设第一参数和预设第二参数确定写入重试间隔时间;
基于写入重试间隔时间执行述写入重试处理队列中的写入重试任务。
一种示例性的重试间隔时间的确定方式如下:
f(n)=a+b*(n)公式(1);
其中,f(n)为重试间隔时间,a为预设第一参数,b为预设第二参数,n为写入重试次数。
预设第一参数、预设第二参数可以由本领域技术人员根据需要进行设定,例如,可以设定a=5、b=3(具体视实际情况调整)。重试间隔时间的单位可以为秒等本领域技术人员所设定的单位。
参见图4,图4示出了本申请另一实施例提供的会话管理方法流程示意图。具体地,在一示例性实施例中,如图4所示,客户端与IM服务器(即时通讯服务器)建立连接通道,生成写本地会话信息任务,一方面,将本地会话信息写入临时队列,临时队列可以为图中所示的本地会话信心的存储空间(圆柱形示意),临时队列可以是本地文件或其他本领域技术人员设定的空间。另一方面,创建写分布式缓存任务(也即写缓存任务),并放入队列,也即任务队列,消费写分布式缓存任务时,查询本地会话信息,通过对临时队列进行查询,也即查询图中的“本地会话信息”,判断本地会话信息存在与否,以及是否失效,若本地会话信息存在,且未失效,则将该本地会话信息写入分布式缓存(也即预设缓存),若本地会话信息不存在,或失效,则结束该写分布式缓存任务的执行。判断本地会话信息的写入分布式缓存的写入状态,也即判断是否写入成功,若写入成功,则结束该写分布式缓存任务的执行,若写入失败,则创建写分布式缓存任务,并放入队列,此时的写分布式缓存任务作为重试任务(也即图4中的重试写分布式缓存任务),放入重试处理队列(也即图4中的重试延迟队列),消费重试写写分布式缓存任务,重新查询本地会话信息,重复上述步骤,直到写入状态为写入成功,或写入重试任务的执行次数等于写入重试次数阈值。例如,当第一次执行写分布式缓存任务后,写入状态为写入失败,则创建重试任务,间隔5秒中执行第一次重试任务,再次监测写入状态,若还是写入失败,则再次执行重试任务,并累计重试任务的执行次数,此时为2次,再次监测写入状态,循环上述执行重试任务,监测写入状态、累计重试任务的执行次数的过程,直到写入成功,或者执行次数等于写入重试次数阈值。
通过上述重试策略(写入失败,创建写入重试任务并执行的过程)能够解决当建立连接通道时,将会话信息写入分布式缓存最终失败,导致不一致的问题。相比于相关技术中通过心跳包时更新缓存,继而再次写将会话信息写入了缓存实时性更佳,不需要频繁更新分布式缓存。
在一实施例中,客户端与即时通讯服务器之间的连接通道关闭时,从分布式缓存移除会话,一样采用上述实施例中的重试方法(重试策略),保证在IM服务器在正常运行中,可以移除会话。
在一实施例中,该方法还包括:
若客户端与即时通讯服务器关闭连接通道,移除预设缓存中的客户端的本地会话信息,并检测移除状态,若移除失败,创建移除重试任务,移除重试任务包含移除重试次数阈值和本地会话信息的会话标识,将移除重试任务加入移除重试处理队列;
基于移除重试处理队列中移除重试任务的会话标识,若会话存在状态为存在,将本地会话信息重新移除预设缓存,直到移除状态为移除成功,或移除重试任务的执行次数等于移除重试次数阈值。
在一实施例中,若会话存在状态为存在,将本地会话信息写入预设缓存之后,该方法还包括:
按照第一时间间隔以实例的当前实例信息对预设缓存中实例的历史实例信息进行更新,其中,当前实例信息根据即时通讯服务器的即时通讯服务器地址、实例的实例标识、实例的活跃时间和实例的活跃状态生成,即时通讯服务器对应有一个或多个实例,一实例对应有存储于预设缓存中的一个或多个本地会话信息,其中,实例标识在本IM服务器地址下是唯一的,示例标识可以根据时间戳或者UUID(Universally Unique Identifier,通用唯一识别码)来生成,示例标识还可以根据本领域技术人员所设定的其他规则生成,更新当前实例信息的方式可以是以当前实例信息替换原有的历史实例信息,也可以是将当前实例信息存入预设缓存中,并将当前实例信息标注为该示例的用于外部获取的实例信息等方式;
根据预设缓存中更新后的实例的活跃时间与当前时间确定实例的间隔时长,当前时间为检测时刻,更新后的实例的活跃时间为某一实例的活跃时间中与当前时间最为接近的一个活跃时间,间隔时长即为两个时间之间的时间差;
基于间隔时长和实例的活跃状态确定实例的有效性,对于有效性的确定,一种示例性的确定方式为:若活跃状态为活跃,间隔时长小于预设间隔阈值,则有效,否则,若活跃状态为不活跃,间隔时长大于或等于预设间隔阈值,则无效,又或者有效性的确定不论活跃状态是有效还是无效,仅根据间隔时长与预设间隔阈值之间的大小来确定有效还是无效;
若实例的有效性确定为无效,则将实例对应的本地会话信息从预设缓存中移除,当实例本身无效,则实例下的所有会话信息均失效,可以一并移除。
相比于相关技术中的方案,本实施例的方法引入了实例标识,去除了会话的活跃时间,以实例的活跃时间来替代会话的活跃时间,一旦实例失效,则一定移除实例下所有的会话信息,方案的实现更为简单,节约了算力。
在一实施例中,按照第一时间间隔以实例的当前实例信息对预设缓存中实例的历史实例信息进行更新之后,该方法还包括:
获取当前实例信息的更新状态;
若更新失败,按照第二时间间隔以当前实例信息对历史实例信息进行重新更新,直到更新成功或者实例对应的即时通讯服务器关闭,其中第二时间间隔小于第一时间间隔。
通过上述方式能够尽量保证当前实例的更新成功,以便于上述实施例中关于实例的有效性的判定。
在一实施例中,当即时通讯服务器正常停机时,进行异步回调,更新该当前实例信息的缓存,并以此该实例标识的记录。
相关技术中,布式缓存的会话活跃时间和IM服务器存在不一致情况,因只是收到心跳包才更新分布式缓存,这样IM服务器本地的会话活跃时间和分布式缓存中的不一致。因在网络状态不好、客户端应用在后台时,接收心跳包会不准时,如假设心跳间隔是3分钟,判断会话活跃时间过期的间隔是8分钟,建立好会话后,在第1分钟收到心跳,然后在第2分钟收到消息,然后因网络等原因,下一次心跳在第9分钟才收到,而在第8到9分钟之间刚好有消息时查到的会话状态就是不在线,就会造成消息未及时下发触达用户。本改进方法是在保证会话信息的分布式缓存一致性的前提下,改善频繁更新分布式缓存的问题。通过分析发现,原方法在收到心跳包时来更新缓存是解决了以下情况:当建立连接通道时,将会话信息写入分布式缓存最终失败,在收到心跳包时更新缓存,继而再次写将会话信息写入了缓存。Im服务器突然宕机,或未正常重启时,没有移除会话的分布式缓存,查询时基于会话的活跃时间判断会话是否过期。本申请实施例提供的方法,通过引入IM服务器的心跳机制,设定针对已过期的IM服务器实例,其对应的会话信息也是失效的,进行移除,一种示例的实现方式如下:
IM服务器启动时,初始化实例标识,标识保证在本机器IP下是唯一的,如取时间戳或UUID来生成。
创建一个守护线程,定时将实例信息写入分布式缓存(也可以是本地缓存等本领域技术人员所设定的存储空间)中。也即,按照第一时间间隔以实例的当前实例信息对预设缓存中实例的历史实例信息进行更新可以通过该守护线程执行实现。
对于实例信息缓存:key取IM服务器IP,如im_node_10.0.0.1,value采用hash结构,hashkey取:实例标识,hashvalue包含活跃时间、状态(0:存活,1:关闭)。此处的活跃时间为实例的活跃时间。状态也即活跃状态。
定时策略:先执行一次,之后每隔2分钟执行一次,活跃时间取当前执行时间戳,状态传0。
写入缓存失败(更新失败):不断间隔重试,间隔时间如5秒,直到成功或IM服务器关闭。
若IM服务器正常停机时,基于系统的shutdowncallback机制,更新缓存,移除hashkey是该实例标识的记录。
在一实施例中,在建立连接通道、关闭连接通道时,更新或移除会话信息的分布式缓存,图4中提供的重试策略保证IM服务器运行时可以成功。
在一实施例中,本地会话信息还包括客户端标识、即时通讯服务器地址、实例标识、建立时间,按照第一时间间隔以实例的当前实例信息对预设缓存中实例的历史实例信息进行更新之后,该方法包括:
获取下发信息请求,下发信息请求包括客户端标识;
根据请求客户端标识查询预设缓存和/或临时队列中包括客户端标识的多个本地会话信息,得到多个目标会话信息,可以先查询临时队列(本地文件)中是否存在目标会话信息,再查询预设缓存中是否存在目标会话信息;
获取目标会话信息对应的目标实例的目标实例标识,以及目标实例对应的目标即时通讯服务器的目标即时通讯服务器地址;
基于各目标会话信息的目标实例标识和目标即时通讯服务器地址查询预设缓存中更新后的各目标实例的活跃时间;
根据各活跃时间与当前时间确定各目标会话信息的目标时长;
将目标时长小于预设失效时长的目标会话信息进行异步移除,对于每一个目标会话信息都执行上述步骤,判断是否需要进行异步移除;
若异步移除后,存在至少一个目标会话信息,将各目标会话信息转交给即时通讯服务器并下发。
在一实施例中,对于本地会话信息缓存规则为:key:取用户标识(客户端标识),采用hash结构,hashkey取会话标识,hashvalue包含:会话标识、用户标识(客户端标识)、服务器ip(即时通讯服务器地址)、实例标识、建立时间等,对比相关技术中的方法新添加了实例标识,去除了会话的活跃时间。
参见图5,图5示出了本申请另一实施例提供的会话管理方法流程示意图。在一示例性实施例中,如图5所示,一种示例性的实施例中,给用户下发消息之前,需要查询用户的会话信息,该流程为:
首先,基于用户标识从分布式会话缓存中查到用户的会话信息列表。
用户标识也即客户端标识,当获取到下发信息请求时,该下发信息请求中会携带客户端标识,基于该客户端标识查询预设缓存中包括该客户端标识的多个本地会话信息,得到多个目标会话信息(也即将查询到包括客户端标识的本地会话信息作为目标会话信息),由于本地会话信息在存入预设缓存中是的存入规则是需要包括客户端标识的,故此时可以以客户端标识为纽带,找到存储在预设缓存中的全部的本地会话标识(也即可以得到会话信息列表)。
然后,遍历每个会话信息,从本地缓存中查询IM服务器实例信息,基于服务器IP、实例标识查询IM服务器实例的活跃时间,如果存在且该活跃时间与当前时间的间隔小于某个阈值,如8分钟,则认为该会话有效,否则会话无效,异步移除。
这里为了提高查询效率,IP服务器实例缓存可以做本地缓存,有效期小于8分钟,如5分钟,不能大于失效过期间隔,基于IM服务器实例的心跳机制,实例正常是会更新的。
最后,将用户的有效会话返回,如果存在有效会话(异步移除后的目标会话信息),说明用户在线,将消息转交给对应会话的IM服务器来下发。
例如,继续参见图5,根据客户端标识在本地缓存(临时队列)中查IM服务器实例信息,若本地缓存中存在IM服务器实例信息,从分布式缓存(预设缓存)中查询IM服务器实例信息,如果查到了IM服务器实例信息,则将IM服务器实例信息写入本地缓存后,与若本地缓存没有目标会话信息情况一样,均对IM服务器实例信息是否查到或查到IM服务器实例信息对其活跃时间进行判断是否过期(判断目标时长是否小于预设失效时长),若没有查到IM服务器实例信息,或者目标时长大于预设失效时长,则移除该过期会话信息。否则,收集有效会话(也即异步移除后的目标会话信息),判断是否遍历了全部的目标会话信息,若是,则返回有效的会话信息,结束流程,若否,则继续从本地缓存查询IM服务器实例信息,直到遍历完成。
如果查询分布式缓存失败,直接返回查询失败,按失败处理,此时可以走厂商推送等流程。
与相关技术中基于会话的活跃时间进行判断的方式相比,本实施例提供的方式以实例的活跃时间来判断,更为简单便捷,节约算力,方便快捷。
在一实施例中,按照第一时间间隔以实例的当前实例信息对预设缓存中实例的历史实例信息进行更新之后,该方法还包括:
预先建立实例标识、客户端标识、以及会话标识之间的映射关系;
获取即时通讯服务器对应的实例的当前实例信息中实例标识和活跃时间;
确定活跃时间与当前时间的间隔时长;
若间隔时长大于预设失效时长,遍历实例的会话列表,基于实例的实例标识所对应的会话标识和用户标识依次删除预设缓存中的本地会话信息,删除会话列表,删除预设缓存中的实例信息缓存。
其中,实例信息缓存包括当前实例信息,或当前实例信息和历史实例信息。实例信息缓存的具体内容取决于当前实例信息的更新方式。
通过上述方式可以将过期的会话缓存加以清除,通过引入定时清理过期会话任务,主动检测间隔时长是否大于预设失效时长,能够避免由于没有查询操作导致过期的会话长期占用存储空间的问题。
因过期的会话缓存需要清除,释放空间资源。上面只有在查询会话时对过期做清除,如何清除没有查询操作的过期会话呢。引入定时清理过期会话任务,一种示例性的实现方式如下:
首先,需要在建立连接通道写入会话缓存时,收集IM服务器实例的会话列表:缓存key取IM服务器IP加实例标识,如im_node_sessions_10.0.0.1_00001,value采用set结构,值包含会话标识、用户标识(客户端标识)。
启定时任务(因不清理过期会话主要影响查询性能,时间间隔不宜太长)间隔3分钟(也可以是本领域技术人员所设定的其他市场)执行一次,处理逻辑:
基于配置的IM服务器IP列表,依次遍历查询各IP的实例信息,判断活跃时间与当前时间的间隔是否小于8分钟,如果是,则不做处理,反之则遍历该实例的会话列表,用会话标识、用户标识从会话缓存中删除会话信息,然后删除该实例的会话列表、删除实例信息缓存。
通过上述实施例提供的会话管理方法,解决了相关技术中提供的方法需要频繁更新分布式缓存的问题,并加强了会话信息的一致性,不会出现原方法少量不一致的情况。而且查询性能没有明显的损耗。对于IM服务器的整体性能来说会有很大提升,如减少了每秒3万的分布式缓存写操作,那相同体量的分布式缓存组件可以多承接每秒1.5万左右的新会话建立。
通过上述实施例提供的方法,能够解决连接通道建立时,IM服务器本地记录会话信息,同时写入分布式缓存,写入失败或服务器突然宕机时如何处理的问题,以及连接通道关闭时,IM服务器移除本地会话信息,同时移除分布式缓存,移除失败或服务器突然宕机时如何处理的问题。一种可选的实现方式为,加异步重试,及每次收到数据包时更新会话的活跃时间,并间隔同步(一般是收到的是心跳包时)更新分布式缓存,在查询时通过活跃时间是否超过一定时间间隔(一般是心跳间隔的2-3倍)来判断,若超过则认为不在线。
而本申请提供的一种会话管理方法,若客户端与即时通讯服务器建立连接通道,获取客户端的包括会话标识的本地会话信息,将本地会话信息写入临时队列;创建写缓存任务,将写缓存任务存入任务队列,当执行写缓存任务时,基于会话标识查询临时队列中与会话标识对应的本地会话信息的会话存在状态,若会话存在状态为存在,将本地会话信息写入预设缓存,能够解决当用户在线高,需要同时处理的消息多时,会话信息一致性不佳,IM服务质量不高的问题,通过将本地会话信息先存入临时队列,创建写缓存任务,在执行该写缓存任务的过程中,先判断该本地会话信息是否存在于临时队列中,只有存在时,才会将该本地会话信息写入预设缓存中,能够在即便存在高用户在线,需要同时处理很多信息的前提下,仍然不丢失本地会话信息,提升本地会话信息的一致性,提升IM服务质量。
通过检测本地会话信息的写入状态,当写入失败时创建写入重试任务并执行,能够进一步提升写入成功率,提升本地会话的一致性,提升IM服务质量。
在连接通道关闭时,能够主动移除本地会话信息,并检测移除状态,在移除失败时创建移除重试任务,并执行,能够提升对于失效的本地会话信息的移除完成率,降低对存储空间的无意义占用,提升预设缓存中存储空间的利用率。
通过引入即时通讯服务器的实例的实例信息,定时以当前实例信息对历史实例信息进行更新,以实例的活跃时间表示会话的活跃时间,基于实例的活跃时间确定实例的有效性,当实例有效,则会话有效,否则实例无效,会话无效,对本地会话信息进行移除。以实例的活跃时间替换原有的会话的活跃时间,进行本地会话信息是否移除的判定,能够解决频繁更新分布式缓存的问题,并加强了会话信息的一致性,不会出现少量不一致的情况。而且查询性能没有明显的损耗。对于IM整体性能来说会有很大提升。
本申请实施例还提供了基于用户A查询触发过期会话清除的方法,通过下发信息请求中的客户端标识,确定多个目标会话信息,基于各目标会话信息对应的目标时长,确定是否对目标会话信息进行异步移除,若异步移除后的目标会话信息的数量不为零,将剩余的目标会话信息通过即时通讯服务器进行下发给对应的另一用户B。通过该方式能够将一些失效的会话的本地会话信息进行删除,释放空间资源。
本申请实施例还提供了一种主动进行过期会话清除的方法,通过配置定时任务,定时获取即时通讯服务器对应的实例的当前实例信息中实例标识和活跃时间,确定所述活跃时间与当前时间的间隔时长,若间隔时长大于预设失效时长,遍历实例的会话列表,基于实例的实例标识所对应的会话标识和用户标识依次删除预设缓存中的本地会话信息,删除会话列表,删除预设缓存中的实例信息缓存,能够在不存在查询的状态下,主动对过期会话进行清除,释放空间资源。
如图6所示,图6示出了本申请一实施例提供的会话管理系统的框图。如图6所示,本申请还提供一种会话管理系统,所述系统包括:
获取模块601,用于若客户端与即时通讯服务器建立连接通道,获取客户端的本地会话信息,本地会话信息包括会话标识;临时写入模块602,用于将本地会话信息写入临时队列;创建模块603,用于创建写缓存任务,将写缓存任务存入任务队列,写缓存任务包括一会话标识;查询模块604,用于当执行写缓存任务时,基于会话标识查询临时队列中与会话标识对应的本地会话信息的会话存在状态;缓存写入模块605,用于若会话存在状态为存在,将本地会话信息写入预设缓存。
需要说明的是,上述实施例所提供会话管理系统与上述实施例所提供的会话管理方法属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。上述实施例所提供的会话管理系统在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能,本处也不对此进行限制。所以,本申请有效克服了现有技术中的种种缺点而具高度产业利用价值。
本申请实施例还提供了一种计算机设备,该设备可以包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述设备执行图2所述的方法。图7示出了一种计算机设备700的结构示意图。参阅图7所示,计算机设备700包括:处理器710、存储器720、电源730、显示单元740、输入单元760。
处理器710是计算机设备700的控制中心,利用各种接口和线路连接各个部件,通过运行或执行存储在存储器720内的软件程序和/或数据,执行计算机设备700的各种功能,从而对计算机设备700进行整体监控。本申请实施例中,处理器710调用存储器720中存储的计算机程序时执行如图2所述的方法。可选的,处理器710可包括一个或多个处理单元;优选的,处理器710可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用等,调制解调处理器主要处理无线通信。在一些实施例中,处理器、存储器、可以在单一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、各种应用等;存储数据区可存储根据计算机设备700的使用所创建的数据等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件等。
计算机设备700还包括给各个部件供电的电源730(比如电池),电源可以通过电源管理系统与处理器710逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。
显示单元740可用于显示由用户输入的信息或提供给用户的信息以及计算机设备700的各种菜单等,本申请实施例中主要用于显示计算机设备700中各应用的显示界面以及显示界面中显示的文本、图片等对象。显示单元740可以包括显示面板750。显示面板750可以采用液晶显示屏(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置。
输入单元760可用于接收用户输入的数字或字符等信息。输入单元760可包括触控面板770以及其他输入设备780。其中,触控面板770,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触摸笔等任何适合的物体或附件在触控面板770上或在触控面板770附近的操作)。
具体的,触控面板770可以检测用户的触摸操作,并检测触摸操作带来的信号,将这些信号转换成触点坐标,发送给处理器710,并接收处理器710发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板770。其他输入设备780可以包括但不限于物理键盘、功能键(比如音量控制按键、开关机按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
当然,触控面板770可覆盖显示面板750,当触控面板770检测到在其上或附近的触摸操作后,传送给处理器710以确定触摸事件的类型,随后处理器710根据触摸事件的类型在显示面板750上提供相应的视觉输出。虽然在图7中,触控面板770与显示面板750是作为两个独立的部件来实现计算机设备700的输入和输出功能,但是在某些实施例中,可以将触控面板770与显示面板750集成而实现计算机设备700的输入和输出功能。
计算机设备700还可包括一个或多个传感器,例如压力传感器、重力加速度传感器、接近光传感器等。当然,根据具体应用中的需要,上述计算机设备700还可以包括摄像头等其它部件。
本申请实施例还提供了一种计算机可读存储介质,该存储介质中存储有指令,当一个或多个处理器执行所述指令时,使得上述设备能够执行本申请中如图2所述的方法。
本领域技术人员可以理解的是,图7仅仅是计算机设备的举例,并不构成对该设备的限定,该设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时,可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的,应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可应用至通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器中以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
Claims (10)
1.一种会话管理方法,其特征在于,所述方法包括:
若客户端与即时通讯服务器建立连接通道,获取所述客户端的本地会话信息,所述本地会话信息包括会话标识;
将所述本地会话信息写入临时队列;
创建写缓存任务,将所述写缓存任务存入任务队列,所述写缓存任务包括一所述会话标识;
当执行所述写缓存任务时,基于所述会话标识查询所述临时队列中与所述会话标识对应的所述本地会话信息的会话存在状态;
若所述会话存在状态为存在,将所述本地会话信息写入预设缓存。
2.如权利要求1所述的会话管理方法,其特征在于,若所述会话存在状态为存在,将所述本地会话信息写入预设缓存之后,所述方法还包括:
获取所述本地会话信息的写入状态;
若写入失败,创建写入重试任务,所述写入重试任务包含写入重试次数阈值和所述本地会话信息的会话标识,将所述写入重试任务加入写入重试处理队列;
基于所述写入重试处理队列中写入重试任务的所述会话标识,确定所述本地会话信息的会话存在状态;
若所述会话存在状态为存在,将所述本地会话信息重新写入所述预设缓存,直到所述写入状态为写入成功,或所述写入重试任务的执行次数等于所述写入重试次数阈值。
3.如权利要求1或2任一项所述的会话管理方法,其特征在于,若所述会话存在状态为存在,将所述本地会话信息写入预设缓存之后,所述方法还包括:
若所述客户端与所述即时通讯服务器关闭所述连接通道,移除所述预设缓存中的所述客户端的本地会话信息,并检测移除状态;
若移除失败,创建移除重试任务,所述移除重试任务包含移除重试次数阈值和本地会话信息的会话标识,将移除重试任务加入移除重试处理队列;
基于所述移除重试处理队列中所述移除重试任务的会话标识,确定本地会话信息的会话存在状态,若所述会话存在状态为存在,将所述本地会话信息重新移除预设缓存,直到移除状态为移除成功,或移除重试任务的执行次数等于移除重试次数阈值。
4.如权利要求1或2任一项所述的会话管理方法,其特征在于,若所述会话存在状态为存在,将所述本地会话信息写入预设缓存之后,所述方法还包括:
按照第一时间间隔以实例的当前实例信息对所述预设缓存中所述实例的历史实例信息进行更新,其中,所述当前实例信息根据所述即时通讯服务器的即时通讯服务器地址、所述实例的实例标识、所述实例的活跃时间和所述实例的活跃状态生成,所述即时通讯服务器对应有一个或多个所述实例,一所述实例对应有存储于所述预设缓存中的一个或多个本地会话信息;
根据所述预设缓存中更新后的所述实例的活跃时间与当前时间确定所述实例的间隔时长;
基于所述间隔时长和所述实例的活跃状态确定所述实例的有效性;
若所述实例的有效性确定为无效,则将所述实例对应的本地会话信息从所述预设缓存中移除。
5.如权利要求4所述的会话管理方法,其特征在于,按照第一时间间隔以实例的当前实例信息对预设缓存中所述实例的历史实例信息进行更新之后,所述方法还包括:
获取所述当前实例信息的更新状态;
若更新失败,按照第二时间间隔以所述当前实例信息对所述历史实例信息进行重新更新,直到更新成功或者所述实例对应的所述即时通讯服务器关闭,其中所述第二时间间隔小于所述第一时间间隔。
6.如权利要求4所述的会话管理方法,其特征在于,所述本地会话信息还包括客户端标识、即时通讯服务器地址、实例标识、建立时间,按照第一时间间隔以实例的当前实例信息对所述预设缓存中所述实例的历史实例信息进行更新之后,所述方法包括:
获取下发信息请求,所述下发信息请求包括客户端标识;
根据所述请求客户端标识查询预设缓存和/或临时队列中包括所述客户端标识的多个本地会话信息,得到多个目标会话信息;
获取所述目标会话信息对应的目标实例的目标实例标识,以及所述目标实例对应的目标即时通讯服务器的目标即时通讯服务器地址;
基于各所述目标会话信息的所述目标实例标识和目标即时通讯服务器地址查询所述预设缓存中更新后的各所述目标实例的活跃时间;
根据各所述活跃时间与当前时间确定各所述目标会话信息的目标时长;
将所述目标时长小于预设失效时长的所述目标会话信息进行异步移除;
若异步移除后,存在至少一个所述目标会话信息,将各所述目标会话信息转交给即时通讯服务器并下发。
7.如权利要求4所述的会话管理方法,其特征在于,按照第一时间间隔以实例的当前实例信息对所述预设缓存中所述实例的历史实例信息进行更新之后,所述方法还包括:
预先建立所述实例标识、客户端标识、以及会话标识之间的映射关系;
获取即时通讯服务器对应的实例的当前实例信息中实例标识和活跃时间;
确定所述活跃时间与当前时间的间隔时长;
若所述间隔时长大于预设失效时长,遍历所述实例的会话列表,基于所述实例的实例标识所对应的会话标识和用户标识依次删除预设缓存中的本地会话信息,删除所述会话列表,删除所述预设缓存中所述的实例信息缓存。
8.一种会话管理系统,其特征在于,所述系统包括:
获取模块,用于若客户端与即时通讯服务器建立连接通道,获取所述客户端的本地会话信息,所述本地会话信息包括会话标识;
临时写入模块,用于将所述本地会话信息写入临时队列;
创建模块,用于创建写缓存任务,将所述写缓存任务存入任务队列,所述写缓存任务包括一所述会话标识;
查询模块,用于当执行所述写缓存任务时,基于所述会话标识查询所述临时队列中与所述会话标识对应的所述本地会话信息的会话存在状态;
缓存写入模块,用于若所述会话存在状态为存在,将所述本地会话信息写入预设缓存。
9.一种计算机设备,其特征在于,包括:
处理器;和,
存储有指令的计算机可读介质,当所述处理器执行所述指令时,使得所述设备执行如权利要求1至7中任意一项所述的方法。
10.一种计算机可读介质,其特征在于,其上存储有指令,所述指令由处理器加载并执行如权利要求1至7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211118548.7A CN115473866B (zh) | 2022-09-14 | 2022-09-14 | 一种会话管理方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211118548.7A CN115473866B (zh) | 2022-09-14 | 2022-09-14 | 一种会话管理方法、系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115473866A true CN115473866A (zh) | 2022-12-13 |
CN115473866B CN115473866B (zh) | 2024-07-05 |
Family
ID=84332885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211118548.7A Active CN115473866B (zh) | 2022-09-14 | 2022-09-14 | 一种会话管理方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115473866B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200212A (zh) * | 2012-01-04 | 2013-07-10 | 中国移动通信集团公司 | 一种在云计算环境下实现分布式会话的方法和系统 |
US20140233584A1 (en) * | 2012-11-29 | 2014-08-21 | Tencent Technology (Shenzhen) Company Limited | Method, device, and system for information processing based on distributed buses |
CN106888150A (zh) * | 2015-12-15 | 2017-06-23 | 腾讯科技(深圳)有限公司 | 即时消息处理方法和装置 |
CN110941710A (zh) * | 2019-11-27 | 2020-03-31 | 贝壳技术有限公司 | 用于实现会话的方法、装置、介质以及电子设备 |
CN113886494A (zh) * | 2021-09-30 | 2022-01-04 | 完美世界(北京)软件科技发展有限公司 | 即时通讯的消息存储方法、装置、设备及计算机可读介质 |
CN114615315A (zh) * | 2022-03-22 | 2022-06-10 | 深圳壹账通创配科技有限公司 | 线上会话的通讯方法、装置、设备及存储介质 |
CN114615355A (zh) * | 2022-05-13 | 2022-06-10 | 恒生电子股份有限公司 | 报文处理方法以及报文解析模块 |
-
2022
- 2022-09-14 CN CN202211118548.7A patent/CN115473866B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200212A (zh) * | 2012-01-04 | 2013-07-10 | 中国移动通信集团公司 | 一种在云计算环境下实现分布式会话的方法和系统 |
US20140233584A1 (en) * | 2012-11-29 | 2014-08-21 | Tencent Technology (Shenzhen) Company Limited | Method, device, and system for information processing based on distributed buses |
CN106888150A (zh) * | 2015-12-15 | 2017-06-23 | 腾讯科技(深圳)有限公司 | 即时消息处理方法和装置 |
CN110941710A (zh) * | 2019-11-27 | 2020-03-31 | 贝壳技术有限公司 | 用于实现会话的方法、装置、介质以及电子设备 |
CN113886494A (zh) * | 2021-09-30 | 2022-01-04 | 完美世界(北京)软件科技发展有限公司 | 即时通讯的消息存储方法、装置、设备及计算机可读介质 |
CN114615315A (zh) * | 2022-03-22 | 2022-06-10 | 深圳壹账通创配科技有限公司 | 线上会话的通讯方法、装置、设备及存储介质 |
CN114615355A (zh) * | 2022-05-13 | 2022-06-10 | 恒生电子股份有限公司 | 报文处理方法以及报文解析模块 |
Also Published As
Publication number | Publication date |
---|---|
CN115473866B (zh) | 2024-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102426594B (zh) | 对数据库进行操作的方法和系统 | |
US9015315B2 (en) | Identification and monitoring of distributed business transactions | |
TWI743163B (zh) | 即時聊天工具的聊天記錄處理方法及裝置 | |
CN102449628A (zh) | 用于持久性Web应用设计的架构模式 | |
CN102449602A (zh) | 用于降低软件应用的启动成本的系统和方法 | |
CN103338243A (zh) | Web节点的缓存数据更新方法和系统 | |
CN111338773A (zh) | 一种分布式定时任务调度方法、调度系统及服务器集群 | |
CN105681426B (zh) | 异构系统 | |
CN111475759A (zh) | 一种消息推送平台、方法、装置、服务器和存储介质 | |
CN110740155B (zh) | 分布式系统中的请求处理方法及装置 | |
CN111338893A (zh) | 进程日志处理方法、装置、计算机设备以及存储介质 | |
CN113886494A (zh) | 即时通讯的消息存储方法、装置、设备及计算机可读介质 | |
CN110222288A (zh) | 页面展示方法、装置及存储介质 | |
CN114116014A (zh) | 一种指令下发方法、装置、智能设备及存储介质 | |
CN111104376B (zh) | 资源文件查询方法及装置 | |
CN108763046A (zh) | 线程运行监控方法、装置、计算机设备和存储介质 | |
CN103761255A (zh) | NoSQL方式数据存储的优化方法及系统 | |
CN115473866B (zh) | 一种会话管理方法、系统、设备及存储介质 | |
CN117667144A (zh) | 一种注解热刷新方法、装置、设备及介质 | |
CN106375324B (zh) | 一种基于tcp/ip通信协议的网络通信系统及方法 | |
CN105897869B (zh) | 一种app休眠的管理方法和装置 | |
CN107395443A (zh) | 一种分布式集群管理方法、装置及系统 | |
CN114402313A (zh) | 标签更新方法、装置、电子设备及存储介质 | |
WO2020238748A1 (zh) | 数据同步的处理方法、装置、电子设备及计算机存储介质 | |
CN115118475A (zh) | 密码设备集群调度方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |