CN111083037A - 用于实现即时通讯的方法、装置、介质以及电子设备 - Google Patents

用于实现即时通讯的方法、装置、介质以及电子设备 Download PDF

Info

Publication number
CN111083037A
CN111083037A CN201911005821.3A CN201911005821A CN111083037A CN 111083037 A CN111083037 A CN 111083037A CN 201911005821 A CN201911005821 A CN 201911005821A CN 111083037 A CN111083037 A CN 111083037A
Authority
CN
China
Prior art keywords
message
user
scheduling mode
pushed
scheduling
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
Application number
CN201911005821.3A
Other languages
English (en)
Other versions
CN111083037B (zh
Inventor
袁树立
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beike Technology Co Ltd
Original Assignee
Beike Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beike Technology Co Ltd filed Critical Beike Technology Co Ltd
Priority to CN201911005821.3A priority Critical patent/CN111083037B/zh
Publication of CN111083037A publication Critical patent/CN111083037A/zh
Application granted granted Critical
Publication of CN111083037B publication Critical patent/CN111083037B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1859Arrangements for providing special services to substations for broadcast or conference, e.g. multicast adapted to provide push services, e.g. data channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/18Commands or executable codes

Abstract

公开了一种用于实现即时通讯的方法、装置、介质以及电子设备。其中的用于实现即时通讯的方法包括:获取读写扩散调度参数;根据所述读写扩散调度参数以及预设调度策略,确定当前消息调度方式;根据所述当前消息调度方式,对当前来自用户的基于即时通讯的消息进行投递处理;其中,所述当前消息调度方式包括:写扩散调度方式或者读扩散调度方式。本公开有利于兼顾即时通讯的实时性和系统可靠性。

Description

用于实现即时通讯的方法、装置、介质以及电子设备
技术领域
本公开涉及通讯技术,尤其是一种用于实现即时通讯的方法、用于实现即时通讯的装置、存储介质以及电子设备。
背景技术
目前,IM(Instant Messaging,即时通讯)已经被众多用户所接受,成为目前较为流行的一种通讯方式。对于用户而言,不仅可以利用IM与单个用户进行消息交互,还可以利用IM与群中的多个用户进行消息交互。
如何在保证即时通讯的实时性的同时,保证系统的可靠性,是一个值得关注的技术问题。
发明内容
为了解决上述技术问题,提出了本公开。本公开的实施例提供了一种用于实现即时通讯的方法、用于实现即时通讯的装置、存储介质以及电子设备。
根据本公开实施例的一方面,提供一种用于实现即时通讯的方法,包括:获取读写扩散调度参数;根据所述读写扩散调度参数以及预设调度策略,确定当前消息调度方式;根据所述当前消息调度方式,对当前来自用户的基于即时通讯的消息进行投递处理;其中,所述当前消息调度方式包括:写扩散调度方式或者读扩散调度方式。
在本公开一实施方式中,所述获取读写扩散调度参数,包括:获取系统负荷信息;和/或,获取外部输入的读写调度方式设置命令。
在本公开又一实施方式中,所述获取系统负荷信息,包括:获取存储资源的负荷信息;和/或,获取投递处理总负荷信息;和/或,获取各投递队列的投递处理负荷信息;和/或,获取计算处理资源的负荷信息。
在本公开再一实施方式中,所述方法还包括:在接收到来自用户的基于即时通讯的消息时,将所述消息的标识信息分别存储于所述消息的各接收用户的消息标识集合中,并将所述消息存储于消息集合中。
在本公开再一实施方式中,所述根据所述当前消息调度方式,对当前来自用户的基于即时通讯的消息进行投递处理,包括:获取所述基于即时通讯的消息的各接收用户的标识;根据所述各接收用户的标识确定所述各接收用户各自对应的投递队列;对于任一接收用户,若该接收用户对应的投递队列的当前消息调度方式为写扩散调度方式,则将所述消息存储于该接收用户的用户消息集合中,以实现本次投递处理;若该接收用户对应的投递队列的当前消息调度方式为读扩散调度方式,则结束本次投递处理。
在本公开再一实施方式中,所述当前消息调度方式包括:基于全局的当前消息调度方式,且该基于全局的当前消息调度方式对应所有投递队列;或者,多个基于投递队列的当前消息调度方式,且一个投递队列对应一个基于投递队列的当前消息调度方式。
在本公开再一实施方式中,所述方法在确定当前消息调度方式之后,还包括:消息推送处理,且所述消息推送处理包括:若所述当前消息调度方式为基于全局的读扩散调度方式,则根据待推送用户的消息标识集合中的消息标识,从所述消息集合中获取待推送消息,并向所述待推送用户推送;或者,若所述当前消息调度方式为基于全局的写扩散调度方式,则从待推送用户的用户消息集合中获取待推送消息,并向所述待推送用户推送;或者,根据待推送用户的标识确定所述待推送用户对应的投递队列,若该投递队列的当前消息调度方式为写扩散调度方式,则从待推送用户的用户消息集合中获取待推送消息,并向所述待推送用户推送;或者,根据待推送用户的标识确定所述待推送用户对应的投递队列,若该投递队列的当前消息调度方式为读扩散调度方式,则根据待推送用户的消息标识集合中的消息标识,从所述消息集合中获取待推送消息,并向所述待推送用户推送。
在本公开再一实施方式中,所述消息推送处理,还包括:若所述当前消息调度方式为写扩散调度方式,则根据待推送用户的消息标识集合中的消息标识以及待推送用户的用户消息集合中的消息,确定需要补偿推送的消息的消息标识;根据所述需要补偿推送的消息的消息标识,从所述消息集合中获取需要补偿推送的消息;其中,所述需要补偿推送的消息被作为待推送消息。
根据本公开实施例的另一个方面,提供了一种用于实现即时通讯的装置,包括:获取模块,用于获取读写扩散调度参数;调度模块,用于根据所述获取模块获取到的读写扩散调度参数以及预设调度策略,确定当前消息调度方式;消息投递模块,用于根据所述调度模块确定出的当前消息调度方式,对当前来自用户的基于即时通讯的消息进行投递处理;其中,所述当前消息调度方式包括:写扩散调度方式或者读扩散调度方式。
在本公开一实施方式中,所述获取模块包括:第一子模块,用于获取系统负荷信息;和/或,第二子模块,用于获取外部输入的读写调度方式设置命令。
在本公开又一实施方式中,所述第一子模块包括:第一获取单元,用于获取存储资源的负荷信息;和/或,第二获取单元,用于获取投递处理总负荷信息;和/或,第三获取单元,用于获取各投递队列的投递处理负荷信息;和/或,第四获取单元,用于获取计算处理资源的负荷信息。
在本公开再一实施方式中,所述装置还包括:消息接收模块,用于在接收到来自用户的基于即时通讯的消息时,将所述消息的标识信息分别存储于所述消息的各接收用户的消息标识集合中,并将所述消息存储于消息集合中。
在本公开再一实施方式中,所述消息投递模块进一步用于:获取所述基于即时通讯的消息的各接收用户的标识;根据所述各接收用户的标识确定所述各接收用户各自对应的投递队列;对于任一接收用户,若该接收用户对应的投递队列的当前消息调度方式为写扩散调度方式,则将所述消息存储于该接收用户的用户消息集合中,以实现本次投递处理;若该接收用户对应的投递队列的当前消息调度方式为读扩散调度方式,则结束本次投递处理。
在本公开再一实施方式中,所述当前消息调度方式包括:基于全局的当前消息调度方式,且该基于全局的当前消息调度方式对应所有投递队列;或者,多个基于投递队列的当前消息调度方式,且一个投递队列具有一个基于投递队列的当前消息调度方式对应。
在本公开再一实施方式中,所述装置还包括下述至少一个:第一消息推送模块,用于若所述当前消息调度方式为基于全局的读扩散调度方式,则根据待推送用户的消息标识集合中的消息标识,从所述消息集合中获取待推送消息,并向所述待推送用户推送;第二消息推送模块,用于若所述当前消息调度方式为基于全局的写扩散调度方式,则从待推送用户的用户消息集合中获取待推送消息,并向所述待推送用户推送;第三消息推送模块,用于根据待推送用户的标识确定所述待推送用户对应的投递队列,若该投递队列的当前消息调度方式为写扩散调度方式,则从待推送用户的用户消息集合中获取待推送消息,并向所述待推送用户推送;第四消息推送模块,用于根据待推送用户的标识确定所述待推送用户对应的投递队列,若该投递队列的当前消息调度方式为读扩散调度方式,则根据待推送用户的消息标识集合中的消息标识,从所述消息集合中获取待推送消息,并向所述待推送用户推送。
在本公开再一实施方式中,所述装置还包括:消息补偿模块,用于:若所述当前消息调度方式为写扩散调度方式,则根据待推送用户的消息标识集合中的消息标识以及待推送用户的用户消息集合中的消息,确定需要补偿推送的消息的消息标识;根据所述需要补偿推送的消息的消息标识,从所述消息集合中获取需要补偿推送的消息;其中,所述需要补偿推送的消息被作为待推送消息。
根据本公开实施例的再一方面,提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述用于实现即时通讯的方法。
根据本公开实施例的又一方面,提供一种电子设备,该电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述用于实现即时通讯的方法。
基于本公开上述实施例提供的一种用于实现即时通讯的方法和装置,通过利用读写扩散调度参数以及预设调度策略,可以灵活的采用不同的消息调度方式对基于即时通讯的消息进行投递处理,从而有利于在即时通讯的实时性和系统的数据压力之间取得平衡。由此可知,本公开提供的技术方案有利于兼顾即时通讯的实时性和可靠性。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1为本公开的适用场景的一个实施例的示意图;
图2为本公开的用于实现即时通讯的方法一个实施例的流程图;
图3为本公开的用于实现即时通讯的方法另一个实施例的流程图;
图4为本公开的消息投递处理过程一个实施例的流程图;
图5为本公开的消息推送处理过程一个实施例的流程图;
图6为本公开的消息推送处理过程另一个实施例的流程图;
图7为本公开的用于实现即时通讯的装置一个实施例的结构示意图;
图8为本公开一示例性实施例提供的电子设备的结构图。
具体实施方式
下面将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或者两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅是一种描述关联对象的关联关系,表示可以存在三种关系,如A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开的实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或者专用计算系统环境或配置一起操作。适于与终端设备、计算机系统或者服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施。在分布式云计算环境中,任务可以是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
本公开概述
在实现本公开的过程中,发明人发现,IM通常采用写扩散调度方式对消息进行投递处理,具体的,在接收到来自用户的基于即时通讯的消息时,消息投递系统会将该消息分别存储于该消息所属会话涉及到的所有用户的用户信箱中。之后,在向用户推送新消息时,可以直接从该用户的用户信箱中获取该用户的新消息,并向该用户推送。
对于用户数量较多的群而言,写扩散调度方式会给系统造成较大的数据压力,例如,对于用户数量为n的群而言,群中任一用户在群中发布一条消息,消息投递系统都会将该消息分别存储在群中的每一个用户的用户信箱中,也就是说,一条消息被存储了n份。在n的数值较大时,将消息分别存储在多个用户的用户信息中,不仅会大量的消耗系统的存储资源,而且,还会占用消息投递系统较多的处理时间,从而容易在消息投递系统处形成消息堆积。因此,写扩散调度方式会给系统造成较大的数据压力。
本公开通过在实现即时通讯的过程中,利用读写扩散调度参数以及预设调度策略,可以灵活的采用不同的消息调度方式对基于即时通讯的消息进行消息投递处理,例如,在系统的数据压力正常时,采用一种消息调度方式,而在系统的数据压力较大时,全部或者部分切换为其他消息调度方式,从而有利于避免系统的数据压力对系统稳定性的影响。
示例性概述
本公开提供的用于实现即时通讯的技术,可以应用于用户利用其计算机、智能移动电话或者平板电脑等电子设备中的相应应用程序,与其他一个或者多个用户进行聊天的应用场景中。下面结合图1对本公开的用于实现即时通讯的技术的一个应用场景进行举例说明。
图1中,在用户101需要和用户103进行聊天时,无论用户101与用户103是近在咫尺,还是相隔一段距离,用户101均可以使用其智能移动电话100中安装的一款用于社交的APP与用户103进行聊天。用户101与用户103利用各自的智能移动电话,实现聊天的一个过程可以为:用户101打开其智能移动电话100中的用于社交的APP,并从该APP的联系人列表中选取用户103,该APP呈现与用户103聊天交流的页面,用户101在该页面中输入聊天内容,并点击该页面中的发送按钮,聊天内容被智能移动电话100中的该APP形成用户101与用户103之间的会话的一条消息,并通过网络(例如,移动数据网络等)发送该条消息,APP的服务器104在接收到该条消息之后,通过网络(例如,移动数据网络等)将该条消息分别推送给用户101的智能移动电话100和用户103的智能移动电话102,从而使智能移动电话100以及智能移动电话102中的该APP中的用户101与用户103聊天交流的页面中分别展现用户101输入的聊天内容,从而完成用户101与用户103之间的一次聊天。
示例性方法
图2为本公开的用于实现即时通讯的方法一个实施例的流程示意图。如图2所示,该实施例的方法包括步骤:S200、S201以及S202。下面对各步骤分别进行说明。
S200、获取读写扩散调度参数。
本公开中的读写扩散调度参数可以是指预设调度策略所需的参数。
本公开可以采用多种方式获取到读写扩散调度参数。例如,本公开可以根据预设请求周期,定时的发送获取参数请求,从而可以根据接收到的与获取参数请求相对应的获取参数响应,获得读取扩散调度参数。再例如,在系统产生告警信息时,本公开可以通过监听的方式获取到该告警信息,从而获取到读写扩散调度参数。
S201、根据读写扩散调度参数以及预设调度策略,确定当前消息调度方式。
本公开中的当前消息调度方式可以包括:写扩散调度方式,也可以包括:读扩散调度方式。
本公开中的写扩散调度方式可以是指:通过重复写消息的方式,使消息投递给相应的用户。例如,将接收到的来自用户的消息分别写入到能够看到该消息的所有用户各自所拥有的消息列表中,从而在需要向一用户推送新消息时,可以直接从该用户的消息列表中获得该用户的新消息。
本公开中的读扩散调度方式可以是指:消息集中存储的方式,从而在需要向多个用户推送同一新消息时,通过重复读拉取的方式,使多个用户各自获得该新消息。
本公开中的预设调度策略可以是指:预先针对读写扩散调度参数设置的至少一个条件。例如,预设调度策略可以包括:在读写扩散调度参数满足其中一个或者多个条件时,当前应采用的消息调度方式。本公开中的预设调度策略可以根据实际需求设置。
S202、根据当前消息调度方式,对当前来自用户的基于即时通讯的消息进行投递处理。
本公开中的用户可以是指即时通讯的用户。例如,通过在即时通讯的应用程序中执行注册操作,从而成为即时通讯的用户。
本公开中的基于即时通讯的消息可以是指两个用户之间的聊天的消息,也可以是指群中的所有用户之间的聊天的消息。也就是说,消息涉及到的接收用户的数量可以为两个或者更多。对于群而言,消息所涉及到的接收用户的数量通常与群中的用户的数量相同。
本公开中的消息对应的消息内容可以包括但不限于:文字、符号、图片(如表情或者照片等)、视频或者文件等。消息内容可以为聊天内容。
本公开中的对消息所进行的投递处理可以是指:消息的分发处理。如果将一个用于存储消息的消息集合均看做是一个信箱,则可以将对消息的投递处理看做是将消息投递到相应的信箱中的过程。
本公开通过利用读写扩散调度参数以及预设调度策略,可以灵活的采用不同的消息调度方式对基于即时通讯的消息进行投递处理,例如,在系统的数据压力正常时,采用一种消息调度方式,而在系统的数据压力较大时,切换为其他消息调度方式,从而有利于避免系统的数据压力对系统的稳定性造成的不良影响,因此,本公开有利于在即时通讯的实时性和系统的数据压力之间取得平衡,进而在有利于兼顾即时通讯的实时性和系统的可靠性。另外,通过实验结果可知,在不改善用于实现即时通讯的网络设备的硬件设备以及网络环境的情况下,本公开提供的技术方式可以使系统能够承载的消息数量大幅增加,例如,承载的消息数量增加一倍。
在一个可选示例中,本公开中的获取读写扩散调度参数可以包括:获取系统负荷信息。其中的系统可以是指用于实现即时通讯的网络设备中运行的系统,例如,用于执行消息接收的网络设备中运行的消息接收系统、用于执行消息投递的网络设备中运行的消息投递系统以及用于执行消息存储的存储系统等。本公开中的系统负荷信息可以是指用于表征系统的任务处理情况或者系统资源使用情况等的信息。相应的,本公开中的预设调度策略可以包括:针对系统负荷设置的条件,例如,在一系统负荷达到或者超过预定负荷时,采用读扩散调度方式等。
可选的,本公开中的获取系统负荷信息可以为获取存储资源的负荷信息。例如,获取存储资源的使用/未使用百分比。再例如,获取存储资源的已使用/未使用空间大小。再例如,获取存储资源的告警信息等。相应的,本公开中的预设调度策略可以包括:针对存储资源的负荷设置的条件。例如,在存储资源的使用百分比达到或者超过第一预定百分比时,或者在存储资源的未使用百分比小于第二预定百分比时,采用读扩散调度方式。再例如,在存储资源的已使用空间大小达到或者超过第一预定空间大小时,或者在存储资源的未使用空间大小小于第二预定空间大小时,采用读扩散调度方式。再例如,在出现存储资源告警时,采用读扩散调度方式。
可选的,本公开中的获取系统负荷信息也可以为:获取投递处理总负荷信息(如用于执行投递处理的所有投递队列的负荷信息)。例如,获取当前等待消息投递处理的消息的总数量。相应的,本公开中的预设调度策略可以包括:针对消息投递处理总负荷设置的条件。例如,在当前等待消息投递处理的消息的数量达到或者超过第一预定数量时,采用读扩散调度方式。需要特别说明的是,在一条消息的接收用户为n的情况下,对于该条消息而言,当前等待消息投递处理的消息的总数量通常为n。
可选的,本公开中的获取系统负荷信息还可以为:获取各投递队列的投递处理负荷信息。例如,获取各投递队列的当前等待消息投递处理的消息的数量。相应的,本公开中的预设调度策略可以包括:针对投递队列的消息投递处理负荷设置的条件。例如,对于任一投递队列而言,在该投递队列的当前等待消息投递处理的消息的数量达到或者超过第二预定数量时,该投递队列采用读扩散调度方式。需要说明的是,一个投递队列的投递处理操作可以由一个协程实现。
可选的,本公开中的获取系统负荷信息还可以为获取计算处理资源的负荷信息。例如,获取用于实现即时通讯的网络设备的中央处理器(CPU,Central Processing Unit)的使用率/未使用率等。相应的,本公开中的预设调度策略可以包括:针对计算处理资源的负荷设置的条件。例如,在用于实现即时通讯的网络设备的CPU的使用率达到或者超过预定使用率时,采用读扩散调度方式。
在一个可选示例中,本公开中的获取读写扩散调度参数还可以包括:获取外部输入的读写调度方式设置命令。也就是说,本公开允许运维人员等根据实际需求人为干预当前消息调度方式。相应的,本公开中的预设调度策略可以包括:针对读写调度方式设置命令设置的条件。例如,在接收到的读写调度方式设置命令为读调度方式设置命令时,采用读扩散调度方式。例如,在接收到的读写调度方式设置命令为写调度方式设置命令时,采用写扩散调度方式。
可选的,本公开中的读调度方式设置命令可以包括但不限于:用于将当前消息调度方式设置为基于全局的读扩散调度方式的第一读调度方式设置命令,或者,用于将指定投递队列的当前消息调度方式设置为基于投递队列的读扩散调度方式的第二读调度方式设置命令。
可选的,本公开中的写调度方式设置命令可以包括但不限于:用于将当前消息调度方式设置为基于全局的写扩散调度方式的第一写调度方式设置命令,或者,用于将指定投递队列的当前消息调度方式设置为基于投递队列的写扩散调度方式的第二写调度方式设置命令。
本公开通过获取系统负荷信息,可以基于系统负荷灵活的调整当前消息调度方式,例如,在系统负荷重的情况下,通过采用读扩散调度方式,有利于避免增加系统负荷,而在系统负荷较轻的情况下,通过采用写扩散调度方式,有利于避免读拉取用户的消息所造成的时延。本公开通过获取输入的读写调度方式设置命令,使运维人员可以根据实际需求干预当前消息调度方式,有利于进一步增加消息调度方式的灵活性。
在一个可选示例中,本公开可以在接收到来自用户的基于即时通讯的消息时,直接将该消息的标识信息分别存储于该消息的各接收用户的消息标识集合中,并将该消息存储于消息集合中。也就是说,无论当前消息调度方式为读扩散调度方式,还是写扩散调度方式,本公开都可以执行将该消息的标识信息分别存储于该消息的各接收用户的消息标识集合中,并将该消息存储于消息集合中的操作。
可选的,本公开中的消息标识集合通常是针对用户设置的,例如,每个用户分别具有一个消息标识集合,不同用户具有不同的消息标识集合。由于用户的消息标识集合是用于存储消息的标识信息的,而不是用于存储消息的,因此,本公开可以将用户的消息标识集合称为用户简信箱。本公开中的用户简信箱中存储的消息的标识信息通常是指消息的全局标识信息。例如,对于来自多个用户的所有消息而言,一个消息唯一对应一个全局标识信息,即一个全局标识信息可以唯一确定出一个消息。
可选的,本公开中的消息集合通常是针对多用户设置的,例如,本公开可以在系统中设置一个消息集合,该消息集合对应该系统接收到的所有消息的接收用户。本公开可以采用键值(key-value)的方式,在消息集合中存储消息,其中的key可以为消息的标识信息(即消息的全局标识信息),其中的value可以包括消息所属的会话ID、消息在会话中的先后排列顺序信息(即消息在会话中的排列序号)以及消息内容(例如,文字、符号以及图片等)等。由于该消息集合存储的消息通常为来自所有用户的消息,因此,本公开可以将该消息集合称为全量消息集合或者全量消息列表或者全局消息列表等。
可选的,本公开在用户简信箱中存储消息标识以及在全局消息列表中存储消息的操作,可以由用于实现即时通讯的网络设备中的消息接收系统执行。
本公开在接收到消息后,通过在该消息的各接收用户的用户简信箱中存储消息标识,并在全量消息列表中存储消息,可以避免必须为该消息的所有接收用户分别存储消息的现象,尤其是对于包含用户数量较多(如包含几百或者上千或者上万用户)的群而言,可以避免必须为群中每一个用户分别存储消息的现象,从而在有利于避免存储系统的资源消耗严重的同时,有利于避免消息投递系统的投递处理操作时间长等现象,进行有利于消除消息投递系统处的消息堆积现象。因此,本公开有利于保证系统的稳定性,并有利于降低系统的数据压力。
在一个可选示例中,本公开中的当前消息调度方式可以包括:基于全局的当前消息调度方式,例如,基于全局的读扩散调度方式,再例如,基于全局的写扩散调度方式。基于全局的当前消息调度方式对应所有投递队列。也就是说,在当前消息调度方式为基于全局的读扩散调度方式的情况下,所有投递队列均采用读扩散调度方式;在当前消息调度方式为基于全局的写扩散调度方式的情况下,所有投递队列均采用写扩散调度方式。
在一个可选示例中,本公开中的当前消息调度方式也可以包括:多个基于投递队列的当前消息调度方式,且一个投递队列具有一个基于投递队列的当前消息调度方式。所有基于投递队列的当前消息调度方式的数量可以与投递队列的数量相同。基于投递队列的当前消息调度方式可以为基于投递队列的读扩散调度方式,也可以为基于投递队列的写扩散调度方式。也就是说,在一个投递队列的当前消息调度方式为基于投递队列的读扩散调度方式的情况下,该投递队列采用读扩散调度方式,其他投递队列可能并不会采用读扩散调度方式;在一个投递队列的当前消息调度方式为基于投递队列的写扩散调度方式的情况下,该投递队列采用写扩散调度方式,而其他投递队列可能并不会采用写扩散调度方式。
可选的,本公开可以在存储资源的负荷不满足针对存储资源的负荷设置的条件、投递处理总负荷不满足针对消息投递处理总负荷设置的条件、各投递队列的投递处理负荷均不满足针对投递队列的消息投递处理负荷设置的条件以及针对计算处理资源的负荷不满足针对计算处理资源负荷设置的条件的情况下,确定当前消息调度方式为基于全局的写扩散调度方式。
可选的,本公开可以在存储资源的负荷满足针对存储资源的负荷设置的条件、投递处理总负荷满足针对消息投递处理总负荷设置的条件、部分或者全部投递队列的投递处理负荷满足针对投递队列的消息投递处理负荷设置的条件或者针对计算处理资源的负荷满足针对计算处理资源负荷设置的条件的情况下,确定当前消息调度方式为基于全局的读扩散调度方式。
可选的,本公开可以在存储资源的负荷不满足针对存储资源的负荷设置的条件、投递处理总负荷不满足针对消息投递处理总负荷设置的条件以及针对计算处理资源的负荷不满足针对计算处理资源负荷设置的条件的情况下,如果仅部分投递队列的投递处理负荷满足针对投递队列的消息投递处理负荷设置的条件,则可以将该部分投递队列的当前消息调度方式分别设置为基于投递队列的读扩散调度方式,而将其他投递队列的当前消息调度方式分别设置为基于投递队列的写扩散调度方式。
在一个可选示例中,在当前消息调度方式为基于全局的读扩散调度方式的情况下,本公开可以对任一消息的全部接收用户均采用读扩散调度方式。例如,在本公开已经执行了该消息的标识信息分别存储于该消息的所有接收用户的用户简信箱中,并将该消息存储于全量消息列表中之后,可以不再执行针对用户的消息集合进行消息投递处理的操作。由于一条消息并不需要被投递到该消息的所有接收用户的用户消息集合(用户消息集合可以被称为用户信箱)中,且投递到用户简信箱中的不是消息,而是消息的标识信息,因此,本公开可以在较大程度的降低投递处理的数据压力和时延,保证投递处理系统的稳定性的同时,较大程度的节约存储系统的存储资源。
可选的,在当前消息调度方式为基于全局的读扩散调度方式的情况下,对于接收到的任一消息而言,如果该消息的所有接收用户中包含有具有预设用户标识的用户,则本公开可以将该消息分别存储于所有接收用户中的具有预设用户标识的接收用户的用户信箱中。而对于所有接收用户中的除了具有预设用户标识的接收用户之外的其他接收用户,在本公开已经在接收到该消息时,执行了将该消息的标识信息分别存储于该消息的各接收用户的用户简信箱中,并将该消息存储于消息集合中的操作的情况下,本公开可以不再针对其他接收用户执行投递处理操作。本公开中的预设用户标识可以根据实际需要设置,例如,可以将消息的实时性要求较高的用户的ID作为预设用户标识,从而有利于保证特定用户的即时通讯的实时性。本公开中的用户信箱通常是针对用户设置的,例如,每个用户分别具有一个用户信箱,不同用户具有不同的用户信箱。
在一个可选示例中,在当前消息调度方式为基于全局的写扩散调度方式的情况下,无论本公开是否执行了将该消息的标识信息分别存储于该消息的所有接收用户的用户简信箱中,并将该消息存储于全量消息列表中的操作,本公开都需要执行的投递处理操作包括:将接收到的该消息分别存储于该消息的各接收用户的用户信箱中。本公开通过在系统的数据压力正常等情况下,针对消息的所有接收用户均采用写扩散调度方式,有利于保证即时通讯的实时性。
在一个可选示例中,在当前消息调度方式包括:多个基于投递队列的当前消息调度方式的情况下,本公开可以根据接收到的消息的全部接收用户的标识,确定出每一个接收用户所对应的投递队列,对于任一接收用户而言,如果其对应的投递队列的当前消息调度方式为基于投递队列的读扩散调度方式,则本公开在已经执行了将该消息的标识信息分别存储于该消息的所有接收用户的用户简信箱中,并将该消息存储于全量消息列表中之后,可以不再执行针对该接收用户的用户信箱进行消息投递处理的操作。由于该接收用户对应的投递队列可以不再执行将该消息投递到该接收用户的用户信箱中,因此,有利于降低该投递队列的投递处理的数据压力和时延,有利于该投递队列的稳定性。
在一个可选示例中,在当前消息调度方式包括:多个基于投递队列的当前消息调度方式的情况下,本公开可以根据接收到的消息的全部接收用户的标识,确定出每一个接收用户所对应的投递队列,对于任一接收用户而言,如果其对应的投递队列的当前消息调度方式为基于投递队列的写扩散调度方式,则无论本公开是否执行了将该消息的标识信息分别存储于该消息的所有接收用户的用户简信箱中,并将该消息存储于全量消息列表中的操作,本公开都需要执行的投递处理操作包括:将该消息存储于该接收用户的用户信箱中。本公开通过在投递队列的数据压力正常等情况下,针对该投递队列的接收用户采用写扩散调度方式,有利于保证基于该投递队列的即时通讯的实时性。
本公开通过在系统的数据压力异常等情况下,采用读扩散调度方式,并针对部分用户采用写扩散调度方式,在有利于使部分用户获得较好的用户体验的同时,使系统的数据压力得到一定程度的缓解,从而在有利于保证系统的稳定性的同时,保证即时通讯的实时性。
在一个可选示例中,无论当前消息调度方式为读扩散调度方式,还是写扩散调度方式,本公开都可以包括消息推送处理,以便于将相应的新消息推送给相应的用户。本公开中的消息推送处理可以是被动的消息推送处理。例如,在接收到用户的新消息请求时,基于响应该请求,向用户推送新消息。本公开中的消息推送处理也可以是主动的消息推送处理。例如,本公开可以根据预定时间间隔,定时的向相应的用户推送新消息。
可选的,本公开中的消息推送处理通常与当前消息调度方式相关,即当前消息调度方式会影响消息推送处理所执行的操作。也就是说,本公开是根据当前消息调度方式,来确定消息推送处理方式的。
一个例子,在当前消息调度方式为读扩散调度方式(例如,基于全局的读扩散调度方式)的情况下,对于任一待推送用户而言,本公开可以根据该待推送用户的简信箱中的消息的标识信息,从全量消息列表中获取待推送消息,并向该待推送用户推送。本公开中的待推送消息可以是指待推送用户的新消息。例如,本公开在需要向一待推送用户推送新消息时,可以先查看当前消息调度方式标志位,如果当前消息调度方式标志位表示读扩散调度方式(例如,基于全局的读扩散调度方式),则本公开可以从该用户的用户简信箱中获取该用户的所有新消息的标识信息,然后,利用获取到的所有消息的标识信息从全量消息列表中获得所有新消息,并向该用户推送所有新消息。本公开可以通过对用户的简信箱中的已经成功推送的消息的标识信息进行标记的方式,确定用户简信箱中的所有新消息。
另一个例子,在当前消息调度方式为读扩散调度方式(例如,基于全局的读扩散调度方式)的情况下,对于不具有预定用户标识的待推送用户而言,本公开可以根据该待推送用户的用户简信箱中的消息的标识信息,从消息集合中获取待推送消息,并向该具有预定用户标识的待推送用户推送。而对于具有预定用户标识的待推送用户而言,本公开可以直接从该用户的用户信箱中获取所有待推送消息,并向该用户推送。
再一个例子,在当前消息调度方式为写扩散调度方式(例如,基于全局的写扩散调度方式)的情况下,对于任一待推送用户而言,本公开可以从该待推送用户的用户信箱中获取所有待推送消息,并向该待推送用户推送。例如,本公开在需要向一待推送用户推送新消息时,可以先查看当前消息调度方式标志位,如果当前消息调度方式标志位表示写扩散调度方式(例如,基于全局的写扩散调度方式),则本公开可以从该用户的用户信箱中获取所有新消息,并向该用户推送所有新消息。
又一个例子,在当前消息调度方式包括多个基于投递队列的当前消息调度方式的情况下,对于任一待推送用户而言,本公开可以根据该待推送用户的标识确定该待推送用户对应的投递队列,如果该投递队列的当前消息调度方式为基于投递队列的写扩散调度方式,则本公开可以从该待推送用户的用户信箱中获取所有待推送消息,并向该待推送用户推送。
在一个例子,在当前消息调度方式包括多个基于投递队列的当前消息调度方式的情况下,对于任一待推送用户而言,本公开可以根据该待推送用户的标识确定该待推送用户对应的投递队列,如果该投递队列的当前消息调度方式为基于投递队列的读扩散调度方式,则本公开可以根据该待推送用户的用户简信箱中的消息的标识信息,从消息集合中获取待推送消息,并向该待推送用户推送。
可选的,本公开可以对待推送用户的标识进行获取模的处理,并根据获得的模确定该待推送用户对应的投递队列。例如,本公开可以利用投递队列的数量,对待推送用户的标识进行获取模的处理,如果获得的模为n,则该待推送用户对应的第n个投递队列。
本公开通过根据当前消息调度方式采用相应的消息推送处理,在有利于保证系统的稳定性和实时性的同时,丰富了即时通讯的实现过程。
在一个可选示例中,由于本公开存在读扩散调度方式与写扩散调度方式之间的切换(如基于全局的读扩散调度方式与基于全局的写扩散调度方式的切换,再如,对于一个投递队列而言,基于投递队列的写扩散调度方式与基于投递队列的读扩散调度方式的切换),因此,会存在待推送用户的部分新消息存储在用户信箱,而部分新消息存储在全量消息列表中的情况,此时,如果在当前调度方式为写扩散调度方式(如基于全局的写扩散调度方式或者基于投递队列的写扩散调度方式),仅向用户推送其用户信箱中的新消息,会产生消息漏推送的情况。本公开通过获得需要补偿推送的消息,并向用户推动,可以避免由于调度方式切换而导致的消息漏推送的现象。
可选的,在当前消息调度方式为基于全局的写扩散调度方式的情况下,对于任一待推送用户而言,本公开可以根据该待推送用户的用户简信箱中的消息的标识信息以及该待推送用户的用户信箱中的消息,确定需要补偿推送的消息的标识信息,例如,比较用户简信箱中的新消息的标识信息数量与用户信箱中的新消息数量是否相同,如果两者相同,则表示不存在需要补偿推送的消息,如果两者不相同,则确定存在需要补偿推送的消息,存在于用户简信箱中,但是未存在于用户信箱中的消息的标识信息即为需要补偿推送的消息的标识信息;之后,本公开可以根据需要补偿推送的消息的标识信息,从消息集合中获取需要补偿推送的消息,并将需要补偿推送的消息作为待推送消息。这样,在向待推送用户推送待推送消息时,从用户的消息集合中获得的待推送消息与从消息集合中获得的需要补充推送的消息一起,被推送给用户。
可选的,对于任一待推送用户而言,本公开可以根据该待推送用户的标识确定该待推送用户对应的投递队列,如果该投递队列的基于投递队列的当前消息调度方式为基于投递队列的写扩散调度方式,本公开可以根据该待推送用户的用户简信箱中的消息的标识信息以及该待推送用户的用户信箱中的消息,确定需要补偿推送的消息的标识信息,例如,比较用户简信箱中的新消息的标识信息数量与用户信箱中的新消息数量是否相同,如果两者相同,则表示不存在需要补偿推送的消息,如果两者不相同,则确定存在需要补偿推送的消息,且存在于用户简信箱中,但是未存在于用户信箱中的消息的标识信息即为需要补偿推送的消息的标识信息;之后,本公开可以根据需要补偿推送的消息的标识信息,从消息集合中获取需要补偿推送的消息,并将需要补偿推送的消息作为待推送消息。这样,在向待推送用户推送待推送消息时,从用户的消息集合中获得的待推送消息与从消息集合中获得的需要补充推送的消息一起,被推送给用户。
本公开通过获得需要补偿推送的消息,可以避免由于调度方式切换而导致的消息漏推送的情况,从而有利于保证即时通讯的可靠性。
图3为本公开的用于实现即时通讯的方法一个实施例的流程示意图。如图3所示,该实施例的方法包括步骤:S300至S307。下面对各步骤分别进行说明。
S300、开始本次的当前消息调度方式的设置过程。假定当前消息调度方式为缺省调度方式,且缺省调度方式为写扩散调度方式(如基于全局的写扩散调度方式)。
S301、判断是否接收到读写调度方式设置命令,如果接收到调度方式设置命令,且接收到的调度方式设置命令为读扩散调度方式设置命令(如上述第一读扩散调度方式设置命令),则到S306;如果未接收到调度方式设置命令,或者接收到的调度方式设置命令为写扩散调度方式设置命令(如上述第一写扩散调度方式设置命令),则S302。
S302、判断投递系统是否繁忙。本公开可以根据当前获取到的等待进行消息投递处理的消息的数量来判断投递系统是否繁忙,例如,判断当前获取到的等待进行消息投递处理的消息的数量是否达到或者超过阈值,如果达到或者超过阈值,则可以确定投递系统繁忙,如果未达到阈值,则可以确定投递系统不繁忙。
如果判断结果为投递系统繁忙,则可以到S306。如果判断结果为投递系统不繁忙,则可以到S303。
S303、判断存储系统是否处于告警状态。本公开可以根据当前获取到的存储资源的使用百分比来判断存储系统是否处于告警状态,例如,判断当前获取到的存储资源的使用百分比是否达到或者超过一阈值,如果达到或者超过该阈值,则可以确定存储系统处于告警状态,如果未达到该阈值,则可以确定存储系统未处于告警状态。另外,本公开也可以根据当前是否接收到存储系统或者存储监控系统上报的告警信息来判断存储系统是否处于告警状态。
如果判断结果为存储系统处于告警状态,则可以到S305。如果判断结果为存储系统未处于告警状态,则可以到S304。
S304、判断CPU是否处于告警状态。本公开可以根据当前获取到的CPU的使用率来判断CPU是否处于告警状态,例如,判断当前获取到的CPU的使用率是否达到或者超过一阈值,如果达到或者超过该阈值,则可以确定CPU处于告警状态,如果未达到该阈值,则可以确定CPU未处于告警状态。另外,本公开也可以根据当前是否接收到CPU或者CPU监控系统上报的告警信息来判断CPU是否处于告警状态。
如果判断结果为CPU处于告警状态,则可以到S306。如果判断结果为CPU未处于告警状态,则可以到S305。
S305、设置当前消息调度方式为写扩散调度方式(如基于全局的写扩散调度方式),即不改变缺省调度方式。
S306、设置当前消息调度方式为读扩散调度方式(如基于全局的读扩散调度方式)。
S307、本次设置过程结束。
图4为本公开的用于实现即时通讯的方法中的消息投递处理过程一个实施例的流程示意图。如图4所示,该实施例的方法包括步骤:S400至S407。下面对各步骤分别进行说明。
S400、开始本次的消息投递处理操作。
S401、获取待投递消息。例如,在接收到来自用户的基于即时通讯的消息时,获取到待投递消息。
S402、将待投递消息存储在全量消息列表中,并对该待投递消息进行投递前检测。例如,待投递消息的所有接收用户是否具有消息接收权限等。在投递前检测通过的情况下,到S403。
S403、将待投递消息的标识信息分别投递到该待投递消息的所有接收用户的用户简信箱中。
S404、查询当前消息调度方式。例如,通过请求调度系统中的当前消息调度方式标志位获得当前消息调度方式。
S405、判断当前消息调度方式是写扩散调度方式(如基于全局的写扩散调度方式),还是读扩散调度方式(如基于全局的读扩散调度方式),如果为写扩散调度方式,则到S406。如果为读扩散调度方式,则到S407。
S406、将待投递消息写入该待投递消息的所有接收用户的用户信箱中。
S407、结束本次的消息投递处理操作。
图5为本公开的用于实现即时通讯的方法中的消息推送处理过程一个实施例的流程示意图。如图5所示,该实施例的方法包括步骤:S500至S508。下面对各步骤分别进行说明。
S500、开始本次的消息推送处理操作。
S501、执行读取逻辑校验。读取逻辑校验可以包括但不限于:用户的新消息请求是否合法以及该用户是否存在新消息等。如果读取逻辑校验通过,则到S502。
S502、查询当前消息调度方式。例如,通过请求调度系统中的当前消息调度方式标志位获得当前消息调度方式。
S503、判断当前消息调度方式是写扩散调度方式(如基于全局的写扩散调度方式),还是读扩散调度方式(如基于全局的读扩散调度方式),如果为写扩散调度方式,则到S507。如果为读扩散调度方式,则到S504。
S504、从用户的用户简信箱中获取所有新消息的ID。
S505、从全量消息列表中获取上述获得的所有新消息的ID所对应的消息。
S506、向用户推送获取到的所有新消息。例如,先对获取到的消息进行数据组装处理,然后,向用户推送组装处理后的消息。这里的数据组装处理可以包括对消息进行排序等处理。
S507、从用户的用户信箱中分别获取新消息,并向该用户推送获取到的所有新消息。
S508、结束本次的消息推送处理操作。
图6为本公开的用于实现即时通讯的方法中的消息推送处理过程另一个实施例的流程示意图。如图6所示,该实施例的方法包括步骤:S600至S610。下面对各步骤分别进行说明。
S600、开始本次的消息推送处理操作。
S601、执行读取逻辑校验。读取逻辑校验可以包括但不限于:用户的新消息请求是否合法以及该用户是否存在新消息等。
S602、查询当前消息调度方式。例如,通过请求调度系统中的当前消息调度方式标志位获得当前消息调度方式。
S603、判断当前消息调度方式是写扩散调度方式(如基于全局的写扩散调度方式),还是读扩散调度方式(如基于全局的读扩散调度方式),如果为写扩散调度方式,则到S607。如果为读扩散调度方式,则到S604。
S604、从用户的用户简信箱中获取所有新消息的ID。
S605、从全量消息列表中获取上述获得的所有新消息的ID所对应的消息。
S606、向用户推送获取到的所有新消息。具体的,可以先对从全量消息列表中获取到的消息进行数据组装处理,然后,再向用户推送组装处理后的消息。这里的数据组装处理可以包括但不限于:对消息进行排序等处理。
S607、从用户信箱中获取所有新消息。
S608、获取需要补偿推送的消息。
具体的,本公开可以根据用户简信箱中的新消息的ID数量以及用户信箱中的新消息的数量确定是否存在需要补偿推送的消息,也就是说,判断两个数量是否相等,如果相等,表示不存在需要补偿推送的消息,即需要补偿推送的消息为空;如果不相等,表示存在需要补偿推送的消息。,而存储在全量消息列表中的消息。如果存在这样的消息,这样的消息即为需要补偿推送的消息。在确定出存在需要补偿推送的消息的情况下,本公开可以根据用户简信箱中的相应新消息的ID从全量消息列表中获得需要补偿推送的消息。
S609、向用户推送从用户信箱中获取到的所有新消息和上述从全量消息列表中获取到的需要补偿推送的消息。在需要补偿推送的消息为空的情况下,本公开向用户推送的消息只包括:从用户信箱中获取到的所有新消息。
可选的,在需要补偿推送的消息不为空的情况下,本公开可以对从用户信箱中获取的所有新消息以及需要补偿推送的消息进行数据组装处理,然后,再向用户推送组装处理后的消息。同样的,这里的数据组装处理可以包括但不限于:对消息进行排序等处理。
S610、结束本次的消息推送处理操作。
示例性装置
图7为本公开的用于实现即时通讯的装置一个实施例的结构示意图。该实施例的装置可用于实现本公开上述各方法实施例。
如图7所示,该实施例的装置包括:获取模块700、调度模块701以及消息投递模块702。可选的,该装置还可以包括:消息接收模块703、第一消息推送模块704、第二消息推送模块705、第三消息推送模块706、第四消息推送模块707以及消息补偿模块708中的至少一个。
获取模块700用于获取读写扩散调度参数。
可选的,获取模块700可以包括:第一子模块7001以及第二子模块7002中的至少一个。其中的第一子模块7001用于获取系统负荷信息。其中的第二子模块7002用于获取外部输入的读写调度方式设置命令。
可选的,第一子模块7001可以包括:第一获取单元70011、第二获取单元70012、第三获取单元70013以及第四获取单元70014中的至少一个。其中的第一获取单元70011用于获取存储资源的负荷信息。其中的第二获取单元70012用于获取消息投递处理总负荷信息。其中的第三获取单元70013用于获取各投递队列的投递处理负荷信息。其中的第四获取单元70014用于获取计算处理资源的负荷信息。
调度模块701用于根据获取模块700获取到的读写扩散调度参数以及预设调度策略,确定当前消息调度方式。其中,当前消息调度方式可以包括:写扩散调度方式或者读扩散调度方式等。从当前消息调度方式的作用范围来说,当前消息调度方式可以包括:基于全局的当前消息调度方式或者多个基于投递队列的当前消息调度方式。其中的基于全局的当前消息调度方式对应所有投递队列;其中的一个基于投递队列的当前消息调度方式对应一个投递队列,即一个投递队列具有一个基于投递队列的当前消息调度方式对应。
可选的,本公开中的基于全局的当前消息调度方式可以包括:基于全局的写扩散调度方式以及基于全局的读扩散调度方式。本公开中的基于投递队列的当前消息调度方式可以包括:基于投递队列的写扩散调度方式以及基于投递队列的读扩散调度方式。
可选的,本公开中的写扩散调度方式可以包括:基于全局的写扩散调度方式或者基于投递队列的写扩散调度方式。本公开中的读扩散调度方式可以包括:基于全局的读扩散调度方式或者基于投递队列的读扩散调度方式。
消息投递模块702用于根据调度模块701确定出的当前消息调度方式,对当前来自用户的基于即时通讯的消息进行投递处理。例如,消息投递模块702获取所述基于即时通讯的消息的各接收用户的标识;并根据各接收用户的标识确定各接收用户各自对应的投递队列;对于任一接收用户,若该接收用户对应的投递队列的当前消息调度方式为写扩散调度方式,则消息投递模块702将消息存储于该接收用户的用户消息集合中。
消息接收模块703用于在接收到来自用户的基于即时通讯的消息时,将消息的标识信息分别存储于该消息的各接收用户的消息标识集合中,并将该消息存储于消息集合中。
第一消息推送模块704用于若当前消息调度方式为基于全局的读扩散调度方式,则根据待推送用户的消息标识集合中的消息标识,从消息集合中获取待推送消息,并向待推送用户推送。
第二消息推送模块705用于若当前消息调度方式为基于全局的写扩散调度方式,则从待推送用户的用户消息集合中获取待推送消息,并向待推送用户推送。
第三消息推送模块706用于根据一待推送用户的标识确定该待推送用户对应的投递队列,若该投递队列的基于投递队列的当前消息调度方式为写扩散调度方式,则从待推送用户的用户消息集合中获取待推送消息,并向待推送用户推送。
第四消息推送模块707用于根据一待推送用户的标识确定该待推送用户对应的投递队列,若该投递队列的基于投递队列的当前消息调度方式为读扩散调度方式,则根据该待推送用户的消息标识集合中的消息标识,从消息集合中获取待推送消息,并向该待推送用户推送。
消息补偿模块708用于如果当前消息调度方式为写扩散调度方式,则根据待推送用户的消息标识集合中的消息标识以及待推送用户的用户消息集合中的消息,确定需要补偿推送的消息的消息标识;消息补偿模块708根据需要补偿推送的消息的消息标识,从消息集合中获取需要补偿推送的消息,并将需要补偿推送的消息作为待推送消息。
本公开中的获取模块700、调度模块701、消息投递模块702、消息接收模块703、第一消息推送模块704、第二消息推送模块705、第三消息推送模块706、第四消息推送模块707以及消息补偿模块708具体执行的操作可以参见上述方法实施例中的描述,在此不再详细说明。
示例性电子设备
下面参考图8来描述根据本公开实施例的电子设备。图8示出了根据本公开实施例的电子设备的框图。如图8所示,电子设备81包括一个或多个处理器811和存储器812。
处理器811可以是中央处理单元(CPU)或者具有用于实现即时通讯的能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备81中的其他组件以执行期望的功能。
存储器812可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器,例如,可以包括:随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器,例如,可以包括:只读存储器(ROM)、硬盘以及闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器811可以运行所述程序指令,以实现上文所述的本公开的各个实施例的用于实现即时通讯的方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备81还可以包括:输入装置813以及输出装置814等,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。此外,该输入设备813还可以包括例如键盘、鼠标等等。该输出装置814可以向外部输出各种信息。该输出设备814可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图8中仅示出了该电子设备81中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备81还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的用于实现即时通讯的方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的用于实现即时通讯的方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列举)可以包括:具有一个或者多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势以及效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备以及系统。诸如“包括”、“包含、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述,以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改等对于本领域技术人员而言,是非常显而易见的,并且在此定义的一般原理可以应用于其他方面,而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式中。尽管以上已经讨论了多个示例方面以及实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (10)

1.一种用于实现即时通讯的方法,包括:
获取读写扩散调度参数;
根据所述读写扩散调度参数以及预设调度策略,确定当前消息调度方式;
根据所述当前消息调度方式,对当前来自用户的基于即时通讯的消息进行投递处理;
其中,所述当前消息调度方式包括:写扩散调度方式或者读扩散调度方式。
2.根据权利要求1所述的用于实现即时通讯的方法,其中,所述获取读写扩散调度参数,包括:
获取系统负荷信息;和/或
获取外部输入的读写调度方式设置命令。
3.根据权利要求2所述的用于实现即时通讯的方法,其中,所述获取系统负荷信息,包括:
获取存储资源的负荷信息;和/或
获取投递处理总负荷信息;和/或
获取各投递队列的投递处理负荷信息;和/或
获取计算处理资源的负荷信息。
4.根据权利要求1至3中任一项所述的用于实现即时通讯的方法,其中,所述方法还包括:
在接收到来自用户的基于即时通讯的消息时,将所述消息的标识信息分别存储于所述消息的各接收用户的消息标识集合中,并将所述消息存储于消息集合中。
5.根据权利要求4所述的用于实现即时通讯的方法,其中,所述根据所述当前消息调度方式,对当前来自用户的基于即时通讯的消息进行投递处理,包括:
获取所述基于即时通讯的消息的各接收用户的标识;
根据所述各接收用户的标识确定所述各接收用户各自对应的投递队列;
对于任一接收用户,若该接收用户对应的投递队列的当前消息调度方式为写扩散调度方式,则将所述消息存储于该接收用户的用户消息集合中,以实现本次投递处理;若该接收用户对应的投递队列的当前消息调度方式为读扩散调度方式,则结束本次投递处理。
6.根据权利要求4至5中任一项所述的用于实现即时通讯的方法,其中,所述当前消息调度方式包括:
基于全局的当前消息调度方式,且该基于全局的当前消息调度方式对应所有投递队列;或者
多个基于投递队列的当前消息调度方式,且一个投递队列对应一个基于投递队列的当前消息调度方式。
7.根据权利要求6所述的用于实现即时通讯的方法,其中,所述方法在确定当前消息调度方式之后,还包括:消息推送处理,且所述消息推送处理包括:
若所述当前消息调度方式为基于全局的读扩散调度方式,则根据待推送用户的消息标识集合中的消息标识,从所述消息集合中获取待推送消息,并向所述待推送用户推送;或者
若所述当前消息调度方式为基于全局的写扩散调度方式,则从待推送用户的用户消息集合中获取待推送消息,并向所述待推送用户推送;或者
根据待推送用户的标识确定所述待推送用户对应的投递队列,若该投递队列的当前消息调度方式为写扩散调度方式,则从待推送用户的用户消息集合中获取待推送消息,并向所述待推送用户推送;或者
根据待推送用户的标识确定所述待推送用户对应的投递队列,若该投递队列的当前消息调度方式为读扩散调度方式,则根据待推送用户的消息标识集合中的消息标识,从所述消息集合中获取待推送消息,并向所述待推送用户推送。
8.一种用于实现即时通讯的装置,其中,所述装置包括:
获取模块,用于获取读写扩散调度参数;
调度模块,用于根据所述获取模块获取到的读写扩散调度参数以及预设调度策略,确定当前消息调度方式;
消息投递模块,用于根据所述调度模块确定出的当前消息调度方式,对当前来自用户的基于即时通讯的消息进行投递处理;
其中,所述当前消息调度方式包括:写扩散调度方式或者读扩散调度方式。
9.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-7中任一项所述的方法。
10.一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-7中任一项所述的方法。
CN201911005821.3A 2019-10-22 2019-10-22 用于实现即时通讯的方法、装置、介质以及电子设备 Active CN111083037B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911005821.3A CN111083037B (zh) 2019-10-22 2019-10-22 用于实现即时通讯的方法、装置、介质以及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911005821.3A CN111083037B (zh) 2019-10-22 2019-10-22 用于实现即时通讯的方法、装置、介质以及电子设备

Publications (2)

Publication Number Publication Date
CN111083037A true CN111083037A (zh) 2020-04-28
CN111083037B CN111083037B (zh) 2022-02-01

Family

ID=70310488

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911005821.3A Active CN111083037B (zh) 2019-10-22 2019-10-22 用于实现即时通讯的方法、装置、介质以及电子设备

Country Status (1)

Country Link
CN (1) CN111083037B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111669313A (zh) * 2020-05-29 2020-09-15 广西东信互联科技有限公司 一种即时通讯系统消息的储存及同步方法
CN111740897A (zh) * 2020-08-06 2020-10-02 上海众旦信息科技有限公司 用于信息处理的方法、电子设备和存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104901865A (zh) * 2015-04-20 2015-09-09 上海云睦网络科技有限公司 一种基于全局单调序列号的移动端即时通讯信号同步方法
CN105871703A (zh) * 2016-06-03 2016-08-17 用友网络科技股份有限公司 推拉结合的即时通信消息获取系统和方法
EP3085009A1 (en) * 2013-12-19 2016-10-26 Google, Inc. Systems, methods, and computer program products for service processing
CN106302091A (zh) * 2015-05-25 2017-01-04 上海琨视电子科技有限公司 一种流媒体信息发布方法及系统
CN108288228A (zh) * 2017-01-09 2018-07-17 腾讯科技(深圳)有限公司 社交网络信息获取方法和装置
CN108400927A (zh) * 2018-01-22 2018-08-14 广州欧赛斯信息科技有限公司 一种针对高并发消息的消息推送方法及装置
CN108924041A (zh) * 2018-08-03 2018-11-30 北京捷易迅信息技术有限公司 一种即时通讯中消息高效可靠发送方法
CN110191486A (zh) * 2019-05-14 2019-08-30 华中师范大学 一种基于消息覆盖率的移动机会网络拥塞控制方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3085009A1 (en) * 2013-12-19 2016-10-26 Google, Inc. Systems, methods, and computer program products for service processing
CN104901865A (zh) * 2015-04-20 2015-09-09 上海云睦网络科技有限公司 一种基于全局单调序列号的移动端即时通讯信号同步方法
CN106302091A (zh) * 2015-05-25 2017-01-04 上海琨视电子科技有限公司 一种流媒体信息发布方法及系统
CN105871703A (zh) * 2016-06-03 2016-08-17 用友网络科技股份有限公司 推拉结合的即时通信消息获取系统和方法
CN108288228A (zh) * 2017-01-09 2018-07-17 腾讯科技(深圳)有限公司 社交网络信息获取方法和装置
CN108400927A (zh) * 2018-01-22 2018-08-14 广州欧赛斯信息科技有限公司 一种针对高并发消息的消息推送方法及装置
CN108924041A (zh) * 2018-08-03 2018-11-30 北京捷易迅信息技术有限公司 一种即时通讯中消息高效可靠发送方法
CN110191486A (zh) * 2019-05-14 2019-08-30 华中师范大学 一种基于消息覆盖率的移动机会网络拥塞控制方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
POWERSHELLTEAM: ""Push and Pull configuration Modes"", 《HTTPS://DEVBLOGS.MICROSOFT.COM/POWERSHELL/PUSH-AND-PULL-CONFIGURATION-MODES/》 *
代震军: ""微博后台架构浅析——读扩散pull、写扩散push、混合模式(push+pull)——相关cache(redis,memcache)"", 《HTTPS://WWW.CNBLOGS.COM/DAIZHJ/ARTICLES/3545343.HTML》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111669313A (zh) * 2020-05-29 2020-09-15 广西东信互联科技有限公司 一种即时通讯系统消息的储存及同步方法
CN111740897A (zh) * 2020-08-06 2020-10-02 上海众旦信息科技有限公司 用于信息处理的方法、电子设备和存储介质

Also Published As

Publication number Publication date
CN111083037B (zh) 2022-02-01

Similar Documents

Publication Publication Date Title
US11882242B2 (en) System and method for a work distribution service
US10244066B2 (en) Push notification delivery system
CN103718578B (zh) 用于消息通知、以及用于提供消息通知的方法和装置
US10659410B2 (en) Smart message delivery based on transaction processing status
CN107241281B (zh) 一种数据处理方法及其装置
US9325644B2 (en) Systems and methods for managing interactive communications
US8213434B2 (en) Method and device for providing QoS control capability for a presence server and system thereof
EP2974232B1 (en) User- aware cloud to device messaging systems and methods
CN109152061B (zh) 通道调配方法、装置、服务器及存储介质
US9900837B2 (en) Multi-channel communications for sending push notifications to mobile devices
CN111083037B (zh) 用于实现即时通讯的方法、装置、介质以及电子设备
US20170041435A1 (en) Methods and apparatus to generate virtual war rooms via social media in enterprise network environments
CN104412250A (zh) 用于基于消息优先级来管理消息传递的系统和方法
CN109446204B (zh) 一种即时通信的数据存储方法、装置、电子设备和介质
WO2017037924A1 (ja) データ処理システムおよびデータ処理方法
CN111200606A (zh) 深度学习模型任务处理方法、系统、服务器及存储介质
US10673792B2 (en) Extensible chat rooms in a hosted chat environment
CN109600240A (zh) 群通信方法和装置
US10608970B2 (en) Messaging forwarding system and method
US10893015B2 (en) Priority topic messaging
EP3975598A1 (en) Method, apparatus, and device for subscribing resources in field of internet of things, and storage medium
CN110247808B (zh) 信息发送方法、装置、设备及可读存储介质
US9185059B1 (en) Management of journaling destinations
CN113259261B (zh) 网络流量控制方法和电子设备
US20230379756A1 (en) Throttling text messaging on-the-fly based on customer specific throughput allotment

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