CN111787107B - 消息处理方法、装置、可读介质和电子设备 - Google Patents

消息处理方法、装置、可读介质和电子设备 Download PDF

Info

Publication number
CN111787107B
CN111787107B CN202010622929.3A CN202010622929A CN111787107B CN 111787107 B CN111787107 B CN 111787107B CN 202010622929 A CN202010622929 A CN 202010622929A CN 111787107 B CN111787107 B CN 111787107B
Authority
CN
China
Prior art keywords
message
cursor
list
pull
latest
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.)
Active
Application number
CN202010622929.3A
Other languages
English (en)
Other versions
CN111787107A (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.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network 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 Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN202010622929.3A priority Critical patent/CN111787107B/zh
Publication of CN111787107A publication Critical patent/CN111787107A/zh
Application granted granted Critical
Publication of CN111787107B publication Critical patent/CN111787107B/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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开涉及一种消息处理方法、装置、可读介质和电子设备,该方法应用于服务器,包括:获取终端设备发送的消息请求,消息请求中包括拉取消息游标,拉取消息游标为服务器上一次发送给终端设备的至少一条目标消息中,最后一条目标消息对应的消息游标,根据拉取消息游标,确定消息列表中的拉取位置,消息列表中存储有至少一条消息,和每条消息对应的消息游标,将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息,最新存储位置为消息列表中最新消息存储的位置,根据消息请求,从待发送消息中确定目标消息,并将目标消息和目标消息对应的消息游标发送至终端设备。本公开能够提高服务器查找终端设备所需消息的效率。

Description

消息处理方法、装置、可读介质和电子设备
技术领域
本公开涉及电子信息技术领域,具体地,涉及一种消息处理方法、装置、可读介质和电子设备。
背景技术
随着电子信息技术的不断发展,应用市场上出现了各种各样的应用程序(英文:Application,缩写:APP),以满足用户多样化的需求。针对能够为用户提供互动的实时消息软件,用户终端会定期向消息服务器发送请求,以拉取消息服务器上存储的消息,请求中会携带有用户终端上一次从消息服务器获取的最后一条消息的消息ID。
消息服务器上预先建立有一个map,用于存储每条消息的消息ID和对应的存储位置。当消息服务器接收到用户终端发送的请求后,可以根据请求中包括的消息ID在map中进行查询,找到该消息ID对应的存储位置,再根据该消息ID对应的存储位置确定该消息ID对应的消息,并将该消息发送至用户终端。然而要在map中查询该消息ID对应的存储位置,需要查询整个map,时间复杂度高,查询效率低。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
第一方面,本公开提供一种消息处理方法,应用于服务器,所述方法包括:
获取终端设备发送的消息请求,所述消息请求中包括拉取消息游标,所述拉取消息游标为所述服务器上一次发送给所述终端设备的至少一条目标消息中,最后一条所述目标消息对应的消息游标;
根据所述拉取消息游标,确定消息列表中的拉取位置,所述消息列表中存储有至少一条消息,和每条所述消息对应的消息游标,每条所述消息对应的消息游标能够指示该消息写入所述服务器的写入顺序,该消息在所述消息列表中存储的位置为根据该消息对应的消息游标确定的;
将所述消息列表中,所述拉取位置至最新存储位置之间存储的所述消息作为待发送消息,所述最新存储位置为所述消息列表中最新消息存储的位置,所述最新消息为所述消息列表中对应的消息游标指示的写入顺序最新的所述消息;
根据所述消息请求,从所述待发送消息中确定所述目标消息,并将所述目标消息和所述目标消息对应的消息游标发送至所述终端设备。
第二方面,本公开提供一种消息处理装置,应用于服务器,所述装置包括:
获取模块,用于获取终端设备发送的消息请求,所述消息请求中包括拉取消息游标,所述拉取消息游标为所述服务器上一次发送给所述终端设备的至少一条目标消息中,最后一条所述目标消息对应的消息游标;
确定模块,用于根据所述拉取消息游标,确定消息列表中的拉取位置,所述消息列表中存储有至少一条消息,和每条所述消息对应的消息游标,每条所述消息对应的消息游标能够指示该消息写入所述服务器的写入顺序,该消息在所述消息列表中存储的位置为根据该消息对应的消息游标确定的;
查找模块,用于将所述消息列表中,所述拉取位置至最新存储位置之间存储的所述消息作为待发送消息,所述最新存储位置为所述消息列表中最新消息存储的位置,所述最新消息为所述消息列表中对应的消息游标指示的写入顺序最新的所述消息;
发送模块,用于根据所述消息请求,从所述待发送消息中确定所述目标消息,并将所述目标消息和所述目标消息对应的消息游标发送至所述终端设备。
第三方面,本公开提供一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现本公开第一方面所述方法的步骤。
第四方面,本公开提供一种电子设备,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现本公开第一方面所述方法的步骤。
通过上述技术方案,本公开中服务器首先获取终端设备发送的包括拉取消息游标的消息请求,其中拉取消息游标为服务器上一次发送给终端设备的至少一条目标消息中,最后一条目标消息对应的消息游标。之后,服务器根据拉取消息游标,确定消息列表中的拉取位置,服务器的消息列表中存储有至少一条消息,和每条消息对应的消息游标,每条消息对应的消息游标能够指示该消息写入服务器的写入顺序,该消息在消息列表中存储的位置为根据该消息对应的消息游标确定的,再将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息,其中,最新存储位置为消息列表中对应的消息游标指示的写入顺序最新的消息存储的位置,最后根据消息请求,从待发送消息中确定目标消息,并将目标消息和目标消息对应的消息游标发送至终端设备。本公开中每条消息对应的消息游标能够反映该消息写入服务器的写入顺序,并且每条消息按照对应的消息游标存储在消息列表中,这样服务器能够在消息列表中根据消息游标快速查找到终端设备所需的消息,降低了服务器查找消息的时间复杂度,提高了查询效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:
图1是一种终端设备、服务器部署的示意图;
图2是根据一示例性实施例示出的一种消息处理方法的流程图;
图3是根据一示例性实施例示出的另一种消息处理方法的流程图;
图4是根据一示例性实施例示出的另一种消息处理方法的流程图;
图5是根据一示例性实施例示出的另一种消息处理方法的流程图;
图6是根据一示例性实施例示出的另一种消息处理方法的流程图;
图7是根据一示例性实施例示出的一种消息处理装置的框图;
图8是根据一示例性实施例示出的另一种消息处理装置的框图;
图9是根据一示例性实施例示出的另一种消息处理装置的框图;
图10是根据一示例性实施例示出的电子设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
在介绍本公开提供的消息处理方法、装置、可读介质和电子设备之前,首先对本公开各个实施例所涉及的应用场景进行介绍。该应用场景可以包括终端设备、服务器,终端设备和服务器之间可以进行数据传输。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端,以及诸如数字TV、台式计算机等等的固定终端。服务器可以是消息服务器,例如可以包括但不限于:实体服务器,服务器集群或云端服务器等。在具体的实现场景中,可以包括一个或多个终端设备,如图1所示,多个终端设备之间可以通过服务器进行数据传输,以实现每条终端设备上显示同步的内容。本公开所提供的实施例中,执行主体为上述服务器。
图2是根据一示例性实施例示出的一种消息处理方法的流程图,如图2所示,该方法应用于服务器,可以包括以下步骤:
步骤101,获取终端设备发送的消息请求,消息请求中包括拉取消息游标,拉取消息游标为服务器上一次发送给终端设备的至少一条目标消息中,最后一条目标消息对应的消息游标。
举例来说,当终端设备上运行有实时消息软件(例如:聊天软件、游戏软件、直播软件等)时,终端设备会周期性地向服务器发送消息请求,以向服务器请求指向终端设备的消息。可以理解为,终端设备与服务器之间采用的是消息拉取模式来实现数据传输。消息请求中包括了拉取消息游标,拉取消息游标是服务器在上一次接收到终端设备发送的消息请求时,发送给终端设备的一条或多条目标消息中,最后一条目标消息对应的消息游标。
可以理解为,服务器上存储的每条消息,都有一个对应的消息游标(即cursor),每条消息对应的消息游标能够指示该消息写入服务器的写入顺序。例如消息游标可以根据该消息写入服务器的写入顺序来确定,写入顺序越新(即写入服务器的时间越后),消息游标的值越大,写入顺序越旧(即写入服务器的时间越早),消息游标的值越小。消息游标与消息之间是一一对应的关系。相应的,每条消息在消息列表中存储的位置为根据该消息对应的消息游标确定的,即根据对应的消息游标,可以确定该消息在服务器上存储的位置。
拉取消息游标,为服务器发送给终端设备的,能够反映服务器在上一次接收到终端设备发送的消息请求时,发送给终端设备的一条或多条目标消息中,最后一条目标消息写入服务器的写入顺序,同时也能够反映最后一条目标消息在服务器上存储的位置。拉取消息游标的初始值可以为0,即终端设备在第一次向服务器发送消息请求时,还未收到过服务器发送的目标消息,那么拉取消息游标为0,表示终端设备在此之前还未向服务器发送过消息请求。服务器在接收到消息请求后,可以从消息请求中获取拉取消息游标。
需要说明的是,终端设备可以是一个或多个,为了使服务器能够区分消息请求是由哪个终端设备发送的,消息请求中还可以包括发送该消息请求的终端设备的设备标识码。设备标识码能够唯一标识终端设备,例如:可以是IMEI(英文:International MobileEquipment Identity,中文:国际移动设备识别码)。
步骤102,根据拉取消息游标,确定消息列表中的拉取位置,消息列表中存储有至少一条消息,和每条消息对应的消息游标,每条消息对应的消息游标能够指示该消息写入服务器的写入顺序,该消息在消息列表中存储的位置为根据该消息对应的消息游标确定的。
示例的,消息列表为服务器上用于存储消息的列表,消息列表中存储有一条或者多条消息,和每条消息对应的消息游标。具体的,当服务器上游的服务平台产生新的消息时,会将新的消息写入服务器,服务器在被写入新的消息时,可以根据新的消息的写入顺序,为新的消息生成对应的消息游标,然后根据对应的消息游标确定新的消息在消息列表中存储的位置,并在该位置处存储新的消息和对应的消息游标。其中,写入顺序是由服务器来计数的。例如,在初始情况下,服务器中没有存储消息,写入顺序为0。服务平台写入新的消息,对应的写入顺序为1,之后服务平台再写入新的消息,对应的写入顺序为2,依次类推,服务平台每写入一条新的消息,写入顺序加1,以指示服务器上存储的消息增加了1条。由于消息列表中的每条消息对应的消息游标,都是根据该消息写入服务器的写入顺序确定的,因此,消息列表中存储的消息是按照写入顺序存储的。
相应的,服务器从消息请求中获取拉取消息游标后,可以根据拉取消息游标,在消息列表中,确定拉取位置。可以理解为,服务器在对一条消息进行存储时,是根据该消息对应的消息游标确定该消息在消息列表中存储的位置,那么根据拉取消息游标,可以确定服务器在上一次接收到终端设备发送的消息请求时,发送给终端设备的一条或多条目标消息中,最后一条目标消息在消息列表中存储的位置,即拉取位置。
步骤103,将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息,最新存储位置为消息列表中最新消息存储的位置,最新消息为消息列表中对应的消息游标指示的写入顺序最新的消息。
步骤104,根据消息请求,从待发送消息中确定目标消息,并将目标消息和目标消息对应的消息游标发送至终端设备。
示例的,可以先根据消息列表中存储的全部消息,找到对应的消息游标指示的写入顺序最新的消息,即最新消息,然后再将消息列表中的最新消息存储的位置作为最新存储位置。由于消息列表中的每条消息对应的消息游标,都是根据该消息写入服务器的写入顺序确定的,因此,可以根据每条消息对应消息游标,找到最新消息。最新消息可以理解为消息列表中最新存入的消息(即写入顺序最新的消息)。进一步的,由于消息列表中存储的消息是按照写入顺序存储的,那么从拉取位置至最新存储位置之间存储的消息对应的消息游标,均比拉取消息游标新,即拉取位置至最新存储位置之间存储的消息写入服务器的写入顺序,均比拉取消息游标对应的消息写入服务器的写入顺序新。之后,将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息,待发送消息可以理解为消息列表中存储的,尚未发送至终端设备的消息。
在消息拉取模式中,终端设备可以根据具体的需求,向服务器请求指定数量条目标消息,指定数量(例如:150)可以包括在消息请求中。如果消息请求中没有包括指定数量,那么可以确定指定数量为默认值(例如:100)。因此,在确定待发送消息之后,可以根据消息请求中包括的指定数量,从待发送消息中确定指定数量条目标消息,然后将指定数量条目标消息和每条目标消息对应的消息游标发送至终端设备。例如,待发送消息有200条,指定数量为100,那么可以从拉取位置开始,向最新存储位置的方向,取100条消息作为目标消息,发送给终端设备。
需要说明的是,本公开实施例中所提及的消息,可以是点对点消息(可以理解为仅指向某一个终端设备的消息),也可以是普通消息(可以理解为指向全部终端设备的消息)。服务器上可以设置有两个消息列表,一个消息列表用于存储点对点消息,另一个消息列表用于存储普通消息。上述实施例中的消息列表,可以是存储点对点消息的消息列表,也可以是存储普通消息的消息列表,本公开对此不作具体限定。
综上所述,本公开中服务器首先获取终端设备发送的包括拉取消息游标的消息请求,其中拉取消息游标为服务器上一次发送给终端设备的至少一条目标消息中,最后一条目标消息对应的消息游标。之后,服务器根据拉取消息游标,确定消息列表中的拉取位置,服务器的消息列表中存储有至少一条消息,和每条消息对应的消息游标,每条消息对应的消息游标能够指示该消息写入服务器的写入顺序,该消息在消息列表中存储的位置为根据该消息对应的消息游标确定的,再将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息,其中,最新存储位置为消息列表中对应的消息游标指示的写入顺序最新的消息存储的位置,最后根据消息请求,从待发送消息中确定目标消息,并将目标消息和目标消息对应的消息游标发送至终端设备。本公开中每条消息对应的消息游标能够反映该消息写入服务器的写入顺序,并且每条消息按照对应的消息游标存储在消息列表中,这样服务器能够在消息列表中根据消息游标快速查找到终端设备所需的消息,降低了服务器查找消息的时间复杂度,提高了查询效率。
在一种实现方式中,消息列表为循环列表,循环列表的长度为指定长度。步骤102的实现方式可以为:
根据拉取消息游标和指定长度,确定拉取位置。
举例来说,服务器上用于存储消息的消息列表可以是循环列表,循环列表的长度为指定长度,指定长度可以是2的n次方,n≥1,例如指定长度为1024。当服务器被写入新的消息时,根据写入顺序,为新的消息生成对应的消息游标,然后可以根据对应的消息游标和指定长度,确定新的消息在循环列表中存储的位置。可以将新的消息对应的消息游标,除以指定长度,将得到的余数作为新的消息在循环列表中存储的位置。或者可以将新的消息对应的消息游标,与(指定长度-1)进行按位与运算,将得到的结果作为新的消息在循环列表中存储的位置。同样的,可以根据拉取消息游标和指定长度,确定拉取位置。可以将拉取消息游标(可以是fetchCursor),除以指定长度(可以是Len),将得到的余数作为拉取位置。或者可以将拉取消息游标,与(指定长度-1)进行按位与运算,将得到的结果作为拉取位置(可以fetchIndex)。
以拉取消息游标fetchCursor为210,指定长度Len为1024来举例。fetchCursor对应的目标消息的写入顺序为第210个,那么fetchCursor对应的目标消息在循环列表中存储的位置(即拉取位置)为fetchIndex=fetchCursor%Len=210,那么拉取消息游标对应的目标消息,存储在循环列表中第210个位置处。还可以将210对应的二进制数11010010,与(1024-1)对应的二进制数1111111111进行按位与运算,fetchIndex=fetchCursor&(Len-1)=11010010,即同样为210。采用按位与运算的计算方式,因为是位运算,计算速度更快,能够进一步提高查询效率。
相应的,在消息列表为循环列表的条件下,在确定消息列表中拉取位置至最新存储位置之间存储的消息(即待发送消息),可以根据拉取位置和最新存储位置的大小关系,来确定。以循环列表的指定长度为1024来举例,若拉取位置为循环列表的第378个位置,最新存储位置为循环列表的第527个位置,拉取位置小于最新存储位置,那么待发送消息为循环列表中从第379个位置到第527个位置之间的消息,共149条消息。若拉取位置为循环列表的第700个位置,最新存储位置为循环列表的第210个位置,拉取位置大于最新存储位置,那么待发送消息为循环列表中从第701个位置至第1024个位置之间,和从第1个位置至第210个位置之间的消息,共534条消息。
图3是根据一示例性实施例示出的另一种消息处理方法的流程图,如图3所示,在步骤103之前,该方法还包括:
步骤105,获取消息列表中,拉取位置存储的消息对应的原始消息游标。
相应的,步骤103的实现方式可以为:
若原始消息游标与拉取消息游标匹配,将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息。
在一种实现方式中,服务器可能采用了分布式存储的结构,服务器中包括一个主节点和多个从节点,每个从节点均与主节点保持同步。但是,可能出现某个从节点由于故障、异常等原因,没有及时更新,导致没能与主节点保持同步。如果终端设备向该从节点发送消息请求,该从节点上的消息列表可能与主节点上的消息列表不一致。这样,会导致拉取位置存储的消息对应的原始消息游标,与拉取消息游标不匹配的问题,即拉取位置存储的消息,与服务器上一次发送给终端设备的至少一条目标消息中,最后一条目标消息不是同一条消息。
因此,可以先判断原始消息游标与拉取消息游标是否匹配,再确定待发送消息。若原始消息游标与拉取消息游标匹配,表示从节点上的消息列表可能与主节点上的消息列表一致,拉取位置存储的消息,与服务器上一次发送给终端设备的至少一条目标消息中,最后一条目标消息是同一条消息。那么可以将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息。
图4是根据一示例性实施例示出的另一种消息处理方法的流程图,如图4所示,该方法还包括:
步骤106,若原始消息游标与拉取消息游标不匹配,将消息列表中,拉取位置至最新存储位置之间存储的消息对应的消息游标与拉取消息游标进行比较。
步骤107,将拉取位置至最新存储位置之间存储的,对应的消息游标指示的写入顺序,比拉取消息游标指示的写入顺序新的消息,作为待发送消息。
在另一种实现方式中,若原始消息游标与拉取消息游标不匹配,表示从节点上的消息列表可能与主节点上的消息列表不一致,拉取位置存储的消息,与服务器上一次发送给终端设备的至少一条目标消息中,最后一条目标消息不是同一条消息。那么可以将消息列表中,拉取位置至最新存储位置之间存储的消息依次与拉取消息游标进行比较。以第二消息为拉取位置至最新存储位置之间存储的任一消息为例,若第二消息对应的消息游标指示的写入顺序,比拉取消息游标指示的写入顺序新,那么将第二消息作为待发送消息。若第二消息对应的消息游标指示的写入顺序,比拉取消息游标指示的写入顺序旧,那么不将第二消息作为待发送消息。
图5是根据一示例性实施例示出的另一种消息处理方法的流程图,如图5所示,消息列表包括第一循环列表和第二循环列表,第一循环列表的长度和第二循环列表的长度均为指定长度。该方法还包括:
步骤108,若服务平台写入第一消息,根据写入第一消息的写入顺序生成第一消息对应的消息游标。
步骤109,根据第一消息对应的消息游标和指定长度,确定存储位置。
步骤110,在第一循环列表的存储位置存储第一消息,并在第二循环列表的存储位置存储第一消息对应的消息游标。
举例来说,在服务器上游的服务平台产生新的第一消息时,会将第一消息写入服务器,服务器在被写入第一消息时,可以根据第一消息的写入顺序,为第一消息生成对应的消息游标(可以是writeCursor)。其中,服务平台可以理解为,为终端设备上运行的实时消息软件提供服务的平台,服务平台会产生指向终端设备的消息,并将消息写入服务器。服务器上的消息列表可以包括第一循环列表和第二循环列表,第一循环列表的长度和第二循环列表的长度均为指定长度,指定长度可以是2的n次方,n≥1,例如指定长度为1024。其中,第一循环列表用于存储消息的内容,第二循环列表用于存储消息对应的消息游标。
服务器根据第一消息对应的消息游标和指定长度,确定第一消息在消息列表中存储的存储位置(可以是index),并在第一循环列表的存储位置处存储第一消息,在第二循环列表的存储位置处存储第一消息对应的消息游标。具体的,可以将第一消息对应的消息游标,除以指定长度,将得到的余数作为存储位置,例如,index=writeCursor%Len,其中Len为指定长度。或者可以将第一消息对应的消息游标,与(指定长度-1)进行按位与运算,将得到的结果作为存储位置。例如,index=writeCursor&(Len-1)。
在一种实现方式中,步骤108可以通过以下方式来实现:
将写入第一消息的写入顺序,和写入第一消息的时间戳组成第一消息对应的消息游标。
示例的,由于服务平台写入消息时,通常是多线程执行的,因此可能存在一次写入多条消息的情况,为了使消息游标能够准确反映写入对应的消息的先后顺序,可以将消息的写入顺序和时间戳组成对应的消息游标,使得消息游标能够从时间和写入顺序两个维度来描述消息。例如,可以将消息游标设置为64bit,将第一消息的时间戳设置在高32bit,将第一消息的写入顺序设置在低32bit,如表1所示。
表1
时间戳(高32位) 写入顺序(低32位)
6235467001 1
6235467123 2
6245668001 n
6245668321 n+1
由于第一消息的时间戳设置在高32bit,可以将第一循环列表和第二循环列表的指定长度限制在2的32次方之内,即32≥n≥1。那么在将第一消息对应的消息游标,与(指定长度-1)进行按位与运算时,依然是将第一消息的写入顺序与(指定长度-1)进行按位与运算,既能够保证消息列表中存储的消息是按照写入顺序存储的,又能够从时间和写入顺序两个维度来描述消息,保证了消息游标的准确度。
图6是根据一示例性实施例示出的另一种消息处理方法的流程图,如图6所示,该方法还包括:
步骤111,在消息列表中,确定最新消息,最新消息对应的消息游标中包括的时间戳最新,且最新消息对应的消息游标中包括的写入顺序最新。
步骤112,将最新消息存储的位置作为最新存储位置。
在一种实现场景中,由于消息游标从时间和写入顺序两个维度来描述消息,能够更准确地反映写入消息的先后顺序。因此,在确定消息列表中的最新消息时,也可以从时间和写入顺序两个维度来判断。例如,可以将对应的消息游标中包括的时间戳最新,且写入顺序最新的消息,作为最新消息。以消息游标设置为64bit,高32bit为对应的时间戳,低32bit为对应的写入顺序来举例,那么最新消息对应的消息游标,为消息列表中高32bit最大,且低32bit也最大的消息游标。之后,将最新消息在消息列表中存储的位置作为最新存储位置,最新存储位置可以是最新消息在第一循环列表中存储的位置,也可以是最新消息对应的消息游标在第二循环列表中存储的位置。
综上所述,本公开中服务器首先获取终端设备发送的包括拉取消息游标的消息请求,其中拉取消息游标为服务器上一次发送给终端设备的至少一条目标消息中,最后一条目标消息对应的消息游标。之后,服务器根据拉取消息游标,确定消息列表中的拉取位置,服务器的消息列表中存储有至少一条消息,和每条消息对应的消息游标,每条消息对应的消息游标能够指示该消息写入服务器的写入顺序,该消息在消息列表中存储的位置为根据该消息对应的消息游标确定的,再将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息,其中,最新存储位置为消息列表中对应的消息游标指示的写入顺序最新的消息存储的位置,最后根据消息请求,从待发送消息中确定目标消息,并将目标消息和目标消息对应的消息游标发送至终端设备。本公开中每条消息对应的消息游标能够反映该消息写入服务器的写入顺序,并且每条消息按照对应的消息游标存储在消息列表中,这样服务器能够在消息列表中根据消息游标快速查找到终端设备所需的消息,降低了服务器查找消息的时间复杂度,提高了查询效率。
图7是根据一示例性实施例示出的一种消息处理装置的框图,如图7所示,该装置200应用于服务器,可以包括:
获取模块201,用于获取终端设备发送的消息请求,消息请求中包括拉取消息游标,拉取消息游标为服务器上一次发送给终端设备的至少一条目标消息中,最后一条目标消息对应的消息游标。
确定模块202,用于根据拉取消息游标,确定消息列表中的拉取位置,消息列表中存储有至少一条消息,和每条消息对应的消息游标,每条消息对应的消息游标能够指示该消息写入服务器的写入顺序,该消息在消息列表中存储的位置为根据该消息对应的消息游标确定的。
查找模块203,用于将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息,最新存储位置为消息列表中最新消息存储的位置,最新消息为消息列表中对应的消息游标指示的写入顺序最新的消息。
发送模块204,用于根据消息请求,从待发送消息中确定目标消息,并将目标消息和目标消息对应的消息游标发送至终端设备。
在一种实现方式中,消息列表为循环列表,循环列表的长度为指定长度。
确定模块202可以用于:
根据拉取消息游标和指定长度,确定拉取位置。
在另一种实现方式中,获取模块201还可以用于:
在将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息之前,获取消息列表中,拉取位置存储的消息对应的原始消息游标。
相应的,查找模块203用于:
若原始消息游标与拉取消息游标匹配,将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息。
在又一种实现方式中,查找模块203用于:
若原始消息游标与拉取消息游标不匹配,将消息列表中,拉取位置至最新存储位置之间存储的消息对应的消息游标与拉取消息游标进行比较。将拉取位置至最新存储位置之间存储的,对应的消息游标指示的写入顺序,比拉取消息游标指示的写入顺序新的消息,作为待发送消息。
图8是根据一示例性实施例示出的另一种消息处理装置的框图,如图8所示,消息列表包括第一循环列表和第二循环列表,第一循环列表的长度和第二循环列表的长度均为指定长度。该装置200还包括:
生成模块205,用于若服务平台写入第一消息,根据写入第一消息的写入顺序生成第一消息对应的消息游标。
存储位置确定模块206,用于根据第一消息对应的消息游标和指定长度,确定存储位置。
存储模块207,用于在第一循环列表的存储位置存储第一消息,并在第二循环列表的存储位置存储第一消息对应的消息游标。
在一种实现方式中,生成模块205可以用于:
将写入第一消息的写入顺序,和写入第一消息的时间戳组成第一消息对应的消息游标。
图9是根据一示例性实施例示出的另一种消息处理装置的框图,如图9所示,该装置200还包括:
最新存储位置确定模块208,用于在消息列表中,确定最新消息,最新消息对应的消息游标中包括的时间戳最新,且最新消息对应的消息游标中包括的写入顺序最新。将最新消息存储的位置作为最新存储位置。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
综上所述,本公开中服务器首先获取终端设备发送的包括拉取消息游标的消息请求,其中拉取消息游标为服务器上一次发送给终端设备的至少一条目标消息中,最后一条目标消息对应的消息游标。之后,服务器根据拉取消息游标,确定消息列表中的拉取位置,服务器的消息列表中存储有至少一条消息,和每条消息对应的消息游标,每条消息对应的消息游标能够指示该消息写入服务器的写入顺序,该消息在消息列表中存储的位置为根据该消息对应的消息游标确定的,再将消息列表中,拉取位置至最新存储位置之间存储的消息作为待发送消息,其中,最新存储位置为消息列表中对应的消息游标指示的写入顺序最新的消息存储的位置,最后根据消息请求,从待发送消息中确定目标消息,并将目标消息和目标消息对应的消息游标发送至终端设备。本公开中每条消息对应的消息游标能够反映该消息写入服务器的写入顺序,并且每条消息按照对应的消息游标存储在消息列表中,这样服务器能够在消息列表中根据消息游标快速查找到终端设备所需的消息,降低了服务器查找消息的时间复杂度,提高了查询效率。
下面参考图10,其示出了适于用来实现本公开实施例的电子设备(例如图1中的终端设备或服务器)300的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图10示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图10所示,电子设备300可以包括处理装置(例如中央处理器、图形处理器等)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有电子设备300操作所需的各种程序和数据。处理装置301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至I/O接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及通信装置309。通信装置309可以允许电子设备300与其他设备进行无线或有线通信以交换数据。虽然图10示出了具有各种装置的电子设备300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置308被安装,或者从ROM 302被安装。在该计算机程序被处理装置301执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,终端设备、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取终端设备发送的消息请求,所述消息请求中包括拉取消息游标,所述拉取消息游标为所述服务器上一次发送给所述终端设备的至少一条目标消息中,最后一条所述目标消息对应的消息游标;根据所述拉取消息游标,确定消息列表中的拉取位置,所述消息列表中存储有至少一条消息,和每条所述消息对应的消息游标,每条所述消息对应的消息游标能够指示该消息写入所述服务器的写入顺序,该消息在所述消息列表中存储的位置为根据该消息对应的消息游标确定的;将所述消息列表中,所述拉取位置至最新存储位置之间存储的所述消息作为待发送消息,所述最新存储位置为所述消息列表中最新消息存储的位置,所述最新消息为所述消息列表中对应的消息游标指示的写入顺序最新的所述消息;根据所述消息请求,从所述待发送消息中确定所述目标消息,并将所述目标消息和所述目标消息对应的消息游标发送至所述终端设备。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定,例如,获取模块还可以被描述为“获取消息请求的模块”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上***(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,示例1提供了一种消息处理方法,应用于服务器,包括:获取终端设备发送的消息请求,所述消息请求中包括拉取消息游标,所述拉取消息游标为所述服务器上一次发送给所述终端设备的至少一条目标消息中,最后一条所述目标消息对应的消息游标;根据所述拉取消息游标,确定消息列表中的拉取位置,所述消息列表中存储有至少一条消息,和每条所述消息对应的消息游标,每条所述消息对应的消息游标能够指示该消息写入所述服务器的写入顺序,该消息在所述消息列表中存储的位置为根据该消息对应的消息游标确定的;将所述消息列表中,所述拉取位置至最新存储位置之间存储的所述消息作为待发送消息,所述最新存储位置为所述消息列表中最新消息存储的位置,所述最新消息为所述消息列表中对应的消息游标指示的写入顺序最新的所述消息;根据所述消息请求,从所述待发送消息中确定所述目标消息,并将所述目标消息和所述目标消息对应的消息游标发送至所述终端设备。
根据本公开的一个或多个实施例,示例2提供了示例1的方法,所述消息列表为循环列表,所述循环列表的长度为指定长度;所述根据所述拉取消息游标,确定消息列表中的拉取位置,包括:根据所述拉取消息游标和所述指定长度,确定所述拉取位置。
根据本公开的一个或多个实施例,示例3提供了示例1的方法,在所述将所述消息列表中,所述拉取位置至最新存储位置之间存储的所述消息作为待发送消息之前,所述方法还包括:获取所述消息列表中,所述拉取位置存储的所述消息对应的原始消息游标;所述将所述消息列表中,所述拉取位置至最新存储位置之间存储的所述消息作为待发送消息,包括:若所述原始消息游标与所述拉取消息游标匹配,将所述消息列表中,所述拉取位置至所述最新存储位置之间存储的所述消息作为所述待发送消息。
根据本公开的一个或多个实施例,示例4提供了示例3的方法,所述方法还包括:
若所述原始消息游标与所述拉取消息游标不匹配,将所述消息列表中,所述拉取位置至所述最新存储位置之间存储的所述消息对应的消息游标与所述拉取消息游标进行比较;将所述拉取位置至所述最新存储位置之间存储的,对应的消息游标指示的写入顺序,比所述拉取消息游标指示的写入顺序新的所述消息,作为所述待发送消息。
根据本公开的一个或多个实施例,示例5提供了示例1至示例4中的任一种方法,所述消息列表包括第一循环列表和第二循环列表,所述第一循环列表的长度和所述第二循环列表的长度均为指定长度;所述方法还包括:若服务平台写入第一消息,根据写入所述第一消息的写入顺序生成所述第一消息对应的消息游标;根据所述第一消息对应的消息游标和所述指定长度,确定存储位置;在所述第一循环列表的所述存储位置存储所述第一消息,并在所述第二循环列表的所述存储位置存储所述第一消息对应的消息游标。
根据本公开的一个或多个实施例,示例6提供了示例5的方法,所述根据写入所述第一消息的写入顺序生成所述第一消息对应的消息游标,包括:将写入所述第一消息的写入顺序,和写入所述第一消息的时间戳组成所述第一消息对应的消息游标。
根据本公开的一个或多个实施例,示例7提供了示例6的方法,所述方法还包括:在所述消息列表中,确定所述最新消息,所述最新消息对应的消息游标中包括的时间戳最新,且所述最新消息对应的消息游标中包括的写入顺序最新;将所述最新消息存储的位置作为所述最新存储位置。
根据本公开的一个或多个实施例,示例8提供了一种消息处理装置,应用于服务器,所述装置包括:获取模块,用于获取终端设备发送的消息请求,所述消息请求中包括拉取消息游标,所述拉取消息游标为所述服务器上一次发送给所述终端设备的至少一条目标消息中,最后一条所述目标消息对应的消息游标;确定模块,用于根据所述拉取消息游标,确定消息列表中的拉取位置,所述消息列表中存储有至少一条消息,和每条所述消息对应的消息游标,每条所述消息对应的消息游标能够指示该消息写入所述服务器的写入顺序,该消息在所述消息列表中存储的位置为根据该消息对应的消息游标确定的;查找模块,用于将所述消息列表中,所述拉取位置至最新存储位置之间存储的所述消息作为待发送消息,所述最新存储位置为所述消息列表中最新消息存储的位置,所述最新消息为所述消息列表中对应的消息游标指示的写入顺序最新的所述消息;发送模块,用于根据所述消息请求,从所述待发送消息中确定所述目标消息,并将所述目标消息和所述目标消息对应的消息游标发送至所述终端设备。
根据本公开的一个或多个实施例,示例9提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现示例1至示例7中所述方法的步骤。
根据本公开的一个或多个实施例,示例10提供了一种电子设备,包括:存储装置,其上存储有计算机程序;处理装置,用于执行所述存储装置中的所述计算机程序,以实现示例1至示例7中所述方法的步骤。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

Claims (8)

1.一种消息处理方法,其特征在于,应用于服务器,所述方法包括:
获取终端设备发送的消息请求,所述消息请求中包括拉取消息游标,所述拉取消息游标为所述服务器上一次发送给所述终端设备的至少一条目标消息中,最后一条所述目标消息对应的消息游标;
根据所述拉取消息游标,确定消息列表中的拉取位置,所述消息列表中存储有至少一条消息,和每条所述消息对应的消息游标,每条所述消息对应的消息游标能够指示该消息写入所述服务器的写入顺序,该消息在所述消息列表中存储的位置为根据该消息对应的消息游标确定的;
获取所述消息列表中,所述拉取位置存储的所述消息对应的原始消息游标;若所述原始消息游标与所述拉取消息游标匹配,将所述消息列表中,所述拉取位置至最新存储位置之间存储的所述消息作为待发送消息,所述最新存储位置为所述消息列表中最新消息存储的位置,所述最新消息为所述消息列表中对应的消息游标指示的写入顺序最新的所述消息;
根据所述消息请求,从所述待发送消息中确定所述目标消息,并将所述目标消息和所述目标消息对应的消息游标发送至所述终端设备;
所述消息列表为循环列表,所述循环列表的长度为指定长度;所述根据所述拉取消息游标,确定消息列表中的拉取位置包括:
将所述拉取消息游标,与目标长度进行按位与运算,将得到的结果作为所述拉取位置,所述目标长度为所述指定长度减1。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述原始消息游标与所述拉取消息游标不匹配,将所述消息列表中,所述拉取位置至所述最新存储位置之间存储的所述消息对应的消息游标与所述拉取消息游标进行比较;
将所述拉取位置至所述最新存储位置之间存储的,对应的消息游标指示的写入顺序,比所述拉取消息游标指示的写入顺序新的所述消息,作为所述待发送消息。
3.根据权利要求1或2所述的方法,其特征在于,所述消息列表包括第一循环列表和第二循环列表,所述第一循环列表的长度和所述第二循环列表的长度均为指定长度;所述方法还包括:
若服务平台写入第一消息,根据写入所述第一消息的写入顺序生成所述第一消息对应的消息游标;
根据所述第一消息对应的消息游标和所述指定长度,确定存储位置;
在所述第一循环列表的所述存储位置存储所述第一消息,并在所述第二循环列表的所述存储位置存储所述第一消息对应的消息游标。
4.根据权利要求3所述的方法,其特征在于,所述根据写入所述第一消息的写入顺序生成所述第一消息对应的消息游标,包括:
将写入所述第一消息的写入顺序,和写入所述第一消息的时间戳组成所述第一消息对应的消息游标。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在所述消息列表中,确定所述最新消息,所述最新消息对应的消息游标中包括的时间戳最新,且所述最新消息对应的消息游标中包括的写入顺序最新;
将所述最新消息存储的位置作为所述最新存储位置。
6.一种消息处理装置,其特征在于,应用于服务器,所述装置包括:
获取模块,用于获取终端设备发送的消息请求,所述消息请求中包括拉取消息游标,所述拉取消息游标为所述服务器上一次发送给所述终端设备的至少一条目标消息中,最后一条所述目标消息对应的消息游标;
确定模块,用于根据所述拉取消息游标,确定消息列表中的拉取位置,所述消息列表中存储有至少一条消息,和每条所述消息对应的消息游标,每条所述消息对应的消息游标能够指示该消息写入所述服务器的写入顺序,该消息在所述消息列表中存储的位置为根据该消息对应的消息游标确定的;
查找模块,用于获取所述消息列表中,所述拉取位置存储的所述消息对应的原始消息游标;若所述原始消息游标与所述拉取消息游标匹配,将所述消息列表中,所述拉取位置至最新存储位置之间存储的所述消息作为待发送消息,所述最新存储位置为所述消息列表中最新消息存储的位置,所述最新消息为所述消息列表中对应的消息游标指示的写入顺序最新的所述消息;
发送模块,用于根据所述消息请求,从所述待发送消息中确定所述目标消息,并将所述目标消息和所述目标消息对应的消息游标发送至所述终端设备;
所述消息列表为循环列表,所述循环列表的长度为指定长度;所述确定模块,用于将所述拉取消息游标,与目标长度进行按位与运算,将得到的结果作为所述拉取位置,所述目标长度为所述指定长度减1。
7.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理装置执行时实现权利要求1-5中任一项所述方法的步骤。
8.一种电子设备,其特征在于,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现权利要求1-5中任一项所述方法的步骤。
CN202010622929.3A 2020-06-30 2020-06-30 消息处理方法、装置、可读介质和电子设备 Active CN111787107B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010622929.3A CN111787107B (zh) 2020-06-30 2020-06-30 消息处理方法、装置、可读介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010622929.3A CN111787107B (zh) 2020-06-30 2020-06-30 消息处理方法、装置、可读介质和电子设备

Publications (2)

Publication Number Publication Date
CN111787107A CN111787107A (zh) 2020-10-16
CN111787107B true CN111787107B (zh) 2023-03-24

Family

ID=72760459

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010622929.3A Active CN111787107B (zh) 2020-06-30 2020-06-30 消息处理方法、装置、可读介质和电子设备

Country Status (1)

Country Link
CN (1) CN111787107B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105933213A (zh) * 2016-06-24 2016-09-07 腾讯科技(深圳)有限公司 一种聊天消息的处理方法、相关设备和***
CN108388407A (zh) * 2018-02-10 2018-08-10 深圳壹账通智能科技有限公司 消息的处理方法、装置、计算机设备及存储介质
CN110166346A (zh) * 2019-04-25 2019-08-23 苏宁云计算有限公司 一种聊天消息的显示方法及设备
CN110737536A (zh) * 2019-09-19 2020-01-31 亚信创新技术(南京)有限公司 一种基于共享内存的消息存储方法和消息读取方法
CN110740145A (zh) * 2018-07-18 2020-01-31 北京京东尚科信息技术有限公司 消息消费方法、装置、存储介质及电子设备
CN111245709A (zh) * 2020-02-10 2020-06-05 北京字节跳动网络技术有限公司 一种消息推送方法、装置、电子设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2418108B (en) * 2004-09-09 2007-06-27 Surfcontrol Plc System, method and apparatus for use in monitoring or controlling internet access

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105933213A (zh) * 2016-06-24 2016-09-07 腾讯科技(深圳)有限公司 一种聊天消息的处理方法、相关设备和***
CN108388407A (zh) * 2018-02-10 2018-08-10 深圳壹账通智能科技有限公司 消息的处理方法、装置、计算机设备及存储介质
CN110740145A (zh) * 2018-07-18 2020-01-31 北京京东尚科信息技术有限公司 消息消费方法、装置、存储介质及电子设备
CN110166346A (zh) * 2019-04-25 2019-08-23 苏宁云计算有限公司 一种聊天消息的显示方法及设备
CN110737536A (zh) * 2019-09-19 2020-01-31 亚信创新技术(南京)有限公司 一种基于共享内存的消息存储方法和消息读取方法
CN111245709A (zh) * 2020-02-10 2020-06-05 北京字节跳动网络技术有限公司 一种消息推送方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN111787107A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
CN110708237A (zh) 消息交互方法、装置、可读介质及电子设备
CN110909521B (zh) 在线文档信息的同步处理方法、装置及电子设备
CN109710905B (zh) 文档协同编辑方法、装置、存储介质及电子设备
CN110781373B (zh) 榜单更新方法、装置、可读介质和电子设备
CN111309747A (zh) 数据同步方法、***和装置
CN111679990A (zh) 测试数据生成方法、装置、可读介质及电子设备
CN115757400B (zh) 数据表处理方法、装置、电子设备和计算机可读介质
CN112015816A (zh) 数据同步方法、装置、介质及电子设备
CN111163336B (zh) 视频资源推送方法、装置、电子设备及计算机可读介质
CN111597107B (zh) 信息输出方法、装置和电子设备
CN111857720A (zh) 用户界面状态信息的生成方法、装置、电子设备及介质
CN111432001A (zh) 用于跳转场景的方法、装置、电子设备和计算机可读介质
CN111694629A (zh) 信息展示方法、装置和电子设备
CN110879729A (zh) 直播间道具配置方法、装置、可读介质及电子设备
CN113220281A (zh) 一种信息生成方法、装置、终端设备及存储介质
CN111225255B (zh) 目标视频推送播放方法、装置、电子设备及存储介质
CN111262907B (zh) 服务实例访问方法、装置和电子设备
CN111787107B (zh) 消息处理方法、装置、可读介质和电子设备
CN113420400B (zh) 一种路由关系建立方法、请求处理方法、装置及设备
CN112015746B (zh) 数据实时处理方法、装置、介质和电子设备
CN111212296B (zh) 直播间礼物列表配置方法、装置、介质及电子设备
CN112256700A (zh) 数据存储方法、装置、电子设备及计算机可读存储介质
CN111628913A (zh) 在线时长的确定方法、装置、可读介质和电子设备
CN111314021A (zh) 数据传输方法、装置、电子设备及计算机可读存储介质
CN112948108B (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