CN112910983A - 消息推送方法、装置、设备和介质 - Google Patents

消息推送方法、装置、设备和介质 Download PDF

Info

Publication number
CN112910983A
CN112910983A CN202110113701.6A CN202110113701A CN112910983A CN 112910983 A CN112910983 A CN 112910983A CN 202110113701 A CN202110113701 A CN 202110113701A CN 112910983 A CN112910983 A CN 112910983A
Authority
CN
China
Prior art keywords
message
timeout
time
key
identifier
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.)
Pending
Application number
CN202110113701.6A
Other languages
English (en)
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.)
Apollo Intelligent Connectivity Beijing Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202110113701.6A priority Critical patent/CN112910983A/zh
Publication of CN112910983A publication Critical patent/CN112910983A/zh
Pending legal-status Critical Current

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/55Push-based network services
    • 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/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests

Landscapes

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

Abstract

本公开公开了一种消息推送方法、装置、设备和介质,涉及互联网技术领域,具体涉及车联网、智能汽车等技术领域。该消息推送方法包括:获取当前消息的超时时间,所述当前消息为服务端当前推送给客户端的消息,所述当前消息包括:消息标识和消息内容,且,所述消息标识和所述消息内容还对应存储在所述服务端中;将所述消息标识作为超时键的索引,将所述超时时间作为所述超时键的过期时间,以创建所述超时键,所述超时键的状态包括超时键过期,所述超时键过期用于指示所述客户端未成功接收所述当前消息;在所述超时键过期时,从所述服务端中获取与所述消息标识对应的所述消息内容,并重传所述消息内容。本公开可以提高消息推送的成功率。

Description

消息推送方法、装置、设备和介质
技术领域
本公开涉及互联网技术领域,具体涉及车联网、智能汽车等技术领域,尤其涉及一种消息推送方法、装置、设备和介质。
背景技术
车联网,即“汽车移动物联网”,是以网络为基础,按照约定的通信协议和数据交互标准,在车与万物之间通信的网络。其中,基于车联网可以实现消息推送等服务。
随着移动互联网的发展,大部分移动应用程序(Application,APP)都提供了消息推送功能,如新闻客户端的热点新闻推荐,即时通讯工具的聊天消息提醒,电商产品促销信息等。
相关技术中,消息推送是单向的,即消息从服务端推送至客户端。
发明内容
本公开提供了一种消息推送方法、装置、设备和介质。
根据本公开的一方面,提供了一种消息推送方法,包括:获取当前消息的超时时间,所述当前消息为服务端当前推送给客户端的消息,所述当前消息包括:消息标识和消息内容,且,所述消息标识和所述消息内容还对应存储在所述服务端中;将所述消息标识作为超时键的索引,将所述超时时间作为所述超时键的过期时间,以创建所述超时键,所述超时键的状态包括超时键过期,所述超时键过期用于指示所述客户端未成功接收所述当前消息;在所述超时键过期时,从所述服务端中获取与所述消息标识对应的所述消息内容,并重传所述消息内容。
根据本公开的另一方面,提供了一种消息推送装置,包括:获取模块,用于获取当前消息的超时时间,所述当前消息为服务端当前推送给客户端的消息,所述当前消息包括:消息标识和消息内容,且,所述消息标识和所述消息内容还对应存储在所述服务端中;创建模块,用于将所述消息标识作为超时键的索引,将所述超时时间作为所述超时键的过期时间,以创建所述超时键,所述超时键的状态包括超时键过期,所述超时键过期用于指示所述客户端未成功接收所述当前消息;重传模块,用于在所述超时键过期时,从所述服务端中获取与所述消息标识对应的所述消息内容,并重传所述消息内容。
根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述任一方面的任一项所述的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据上述任一方面的任一项所述的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据上述任一方面的任一项所述的方法。
根据本公开的技术方案,可以提高消息推送的成功率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开第一实施例的示意图;
图2是根据本公开第二实施例的示意图;
图3是根据本公开第三实施例的示意图;
图4是根据本公开第四实施例的示意图;
图5是根据本公开第五实施例的示意图;
图6是根据本公开第六实施例的示意图;
图7是根据本公开第七实施例的示意图;
图8是根据本公开第八实施例的示意图;
图9是用来实现本公开实施例的消息推送方法中任一方法的电子设备的示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
相关技术中,消息推送是单向的,即消息从服务端推送至客户端。客户端没有确认机制,服务端并不知道客户端是否收到消息,在客户端未接收到消息时,也无法进行重传,这样就会影响消息的推送成功率。特别是在车载环境下,车载环境下的无线信道很不稳定,经常出现弱网、网络干扰等现象,这种情况下,服务端推送给客户端的消息很容易丢失。如果推送的消息丢失了,客户端依赖该消息所做的交互操作会受到影响,或者,很可能引起数据错乱的问题,会严重影响用户的体验。比如,多人组队出行场景,若一人退出组队,则服务端需要及时、成功地将该消息推送给组队中的其他人,以便后续操作。而相关技术中的单向推送方式,无法保证成功推送消息至客户端。
为了提高服务端推送的消息的成功率,本公开提供如下一些实施例。
图1是根据本公开第一实施例的示意图。本实施例提供一种消息推送方法,本实施例的执行主体可以为服务端,该方法包括:
101、获取当前消息的超时时间,所述当前消息为服务端当前推送给客户端的消息,所述当前消息包括:消息标识和消息内容,且,所述消息标识和所述消息内容还对应存储在所述服务端中。
102、将所述消息标识作为超时键的索引,将所述超时时间作为所述超时键的过期时间,以创建所述超时键,所述超时键的状态包括超时键过期,所述超时键过期用于指示所述客户端未成功接收所述当前消息。
103、在所述超时键过期时,从所述服务端中获取与所述消息标识对应的所述消息内容,并重传所述消息内容。
本公开实施例中,一方面,服务端向客户端推送消息,另一方面,该消息被存储在服务端中,比如,存储在服务端的缓存中,缓存比如为远程字典服务(Remote DictionaryServer,redis)缓存。
可以理解的是,消息推送与消息缓存的时序不限定,比如,服务端可以先向客户端推送消息,再缓存该消息,或者,服务端也可以先缓存该消息再向客户端推送该消息,或者,服务端同步推送该消息以及缓存该消息。
服务端向客户端推送消息时,与相关技术不同的是,该消息中携带消息标识,即,服务端推送的消息包括:消息标识和消息内容。消息标识在全局范围内是唯一的,用于唯一标识一条消息,消息标识比如用包序号(package_id)表示;消息内容是指消息的具体内容,比如,消息是新闻消息,则消息内容可以为具体的新闻内容,或者,消息为聊天消息,则消息内容可以为具体的聊天内容等。
与相关技术不同的是,本公开实施例中,服务端不仅向客户端推送消息,服务端还会存储推送的消息,比如,服务端可以在redis缓存中,对应缓存消息标识与消息内容,以便在需要重传时,可以重传该消息内容。
本公开实施例中,基于过期机制确定是否重传,即在发生过期事件时,重传对应的消息内容。过期机制是基于可过期键实现的,可过期键包括:索引和过期时间,在达到一个可过期键的过期时间时,则表明该可过期键过期,发生过期事件。
redis组件中有个功能pubsub,pubsub能够发布和订阅过期事件,一些实施例中,可以通过pubsub设置可过期键,并通过pubsub对可过期键进行监听,以监听是否发生过期事件。
本公开实施例中,可以创建可过期键,该键可以称为超时键(timeout_key),该超时键的索引为消息标识,过期时间为该消息标识对应的消息的超时时间,从而在一个超时键过期时,确定过期的超时键的消息标识,再根据该消息标识在缓存中找到对应的消息内容,再重传该对应的消息内容。
本公开实施例中,过期事件与客户端未成功接收消息相关,即,当超时键过期时,表明客户端未成功接收该超时键包括的消息标识对应的消息,此时,服务端可以重传对应的消息内容。如果客户端成功接收到一个消息,则客户端会向服务端发送应答消息,应答消息中包含成功接收的消息的消息标识,用于指示客户端成功接收到该消息标识对应的消息,服务端接收到客户端发送的应答消息时,可以确认客户端成功接收到对应的消息,服务端可以清除该应答消息中包含的消息标识对应的超时键,此时的超时键的状态可以理解为超时键不存在,与上述超时键的状态为超时键过期不同。由于该超时键被清除,也就不会发生过期事件,也就不用重传对应的消息内容。
一些实施例中,消息的超时时间可以设置为固定值,比如为3秒。
不过,为了提高推送的消息的及时性,可以根据网络情况动态确定该超时时间。
即,一些实施例中,所述获取当前消息的超时时间,包括:获取预设个数的已推送消息中各个已推送消息的应答耗时,所述已推送消息为所述服务端在所述当前消息之前推送给所述客户端的消息;获取所述各个已推送消息对应的权重值;根据所述应答耗时和所述权重值,计算所述超时时间。
比如,参见图2,服务端可以保存n个已推送消息中各个已推送消息的应答耗时,分别用c(0)、c(1)、c(2)、...、c(n-2)、c(n-1)表示,其中,n是可设置值,可以根据实际需要设定。该n个应答耗时,即c(i),i=0,1,...,n-1,可以依据时间维度或者消息标识维度进行排序。比如,依据时间维度排序时,c(0)是推送时间距离当前消息的推送时间最近的已推送消息的应答耗时,c(n-1)是推送时间距离当前消息的推送时间第n近的已推送消息的应答耗时;其中,服务端在推送消息给客户端后,可以记录对应的推送时间,从而可以依照时间维度记录上述的各个c(i)。或者,依据消息标识维度进行排序时,c(0)是消息标识距离当前消息的消息标识最近的已推送消息的应答耗时,c(n-1)是消息标识距离当前消息的消息标识第n近的已推送消息的应答耗时;比如,消息标识是依次增加1,则假设当前消息的消息标识是ID0,则c(0)是消息标识为ID0-1的已推送消息的应答耗时。
由于推送的消息是数据流形式,即,随着时间的变化,消息也在不断更新,因此,上述的应答耗时c(i)是动态更新的,比如,采用先进先出(First In First Out,FIFO)形式进行更新。
各个c(i)的计算过程可以是:服务端在推送消息给客户端后,可以记录相应的推送时间,比如,一个已推送消息的消息标识为ID1,推送时间为t1,则服务端可以对应记录ID1和t1;客户端收到服务端推送的消息后,向服务端反馈对应的应答消息,该应答消息中包含该推送的消息中携带的消息标识(ID1),服务端接收到该应答消息后,对应记录消息标识和接收时间,比如记为ID1和t2;之后,采用相减运算(t2-t1)就是该消息标识ID1对应的已推送消息的应答耗时。上述以服务端接收到应答消息为例说明,如果服务端接收不到某个消息标识对应的应答消息,比如,服务端推送ID2对应的消息给客户端,但没有接收到携带ID2的应答消息,则将ID2对应的已推送消息的应答耗时设置为固定值,该固定值比如为3秒。
另外,可以理解的是,如果当前消息之前的已推送消息的数量不足n个,则不足部分的c(i)可以选择为某个设置的固定值,比如为0。
如图2所示,除了n个c(i),服务端还可以保存对应各个c(i)的权重值,比如,各个权重值用Q(i)表示,依照距离当前消息越近的已推送消息对应权重值越大的方式进行排序,即Q(0)的值最大。其中,服务端可以以数组的形式存储c(i)和Q(i),i=0,1,...,n-1。
各个Q(i)可以预先配置,使得Q(i)(i=0,1,...,n-1)的相加之和为1。一些实施例中,各个Q(i)可以是等差排列,可以基于如下公式,确定各个Q(i)(i=0,1,...,n-1):
Q(i)=Q(n-i)*dur
其中,
Figure BDA0002919983610000061
在获取到c(i)和Q(i)后,可以依照如下公式计算超时时间:
avg_cost=Q(0)*c(0)+Q(1)*c(1)+…+Q(n-1)*c(n-1)
通过根据已推送消息的应答耗时和对应的权重值计算当前消息的超时时间,可以动态地确定当前消息的超时时间,以便在超时键过期时能够及时重传对应的消息内容。
进一步地,考虑到网络条件的不稳定等原因,可以在上述加权和的基础上增加一定的冗余量,即,将所述加权和与预设系数相乘,以得到所述超时时间。以预设系数为1.2为例,则计算公式如下:
超时时间=1.2*avg_cost。
通过加权和与预设系数相乘得到超时时间,可以在计算超时时间时提供一定的冗余量,以适应网络条件不稳定等因素的影响。
假设当前消息的消息标识为ID0,经过上述计算过程,当前消息的超时时间为T0,则如图3所示,可以创建对应当前消息的超时键,该超时键的索引为ID0,过期时间为T0。
基于redis缓存的过期机制,在当前消息对应的超时键过期时,即达到T0时间,则可以确定过期的超时键对应的消息标识为ID0,再在服务端的缓存中获取该ID0对应的消息内容,假设该消息内容用D0表示,则之后重传该D0。
本实施例中,基于消息标识和超时时间创建超时键,并在超时键过期时,重传该过期的超时键对应的消息内容,可以基于过期机制及时发现需要重传的消息内容,并重传该消息内容,提高消息推送的成功率。
图4为本公开第四实施例的示意图。本实施例以缓存为redis缓存为例,本实施例提供一种消息推送方法,该方法包括:
401、在服务端中注册redis过期事件回调函数。
注册该回调函数的作用是:当发生redis过期事件时,执行该回调函数的逻辑。进一步地,该回调函数的逻辑是重传消息内容,重传消息内容的流程可以参见图5。
402、服务端开启服务。
服务端启动后,可以为客户端提供服务,服务泛指服务端提供的功能、处理、操作、能力或支持等,比如,服务端向客户端推送消息。
403、服务端与客户端建立连接。
服务端向客户端推送消息之前,服务端需要与客户端建立连接,以通过该连接向客户端推送消息。该连接比如为传输控制协议(Transmission Control Protocol,TCP)连接。
404、服务端生成当前消息的消息标识。
其中,服务端可以根据自身的服务功能向客户端推送消息,当前待推送的消息可以称为当前消息。
消息标识比如为包序号(package_id),初始时,可以对包序号进行初始化,使得包序号具有初始值,包序号的初始值比如为0;之后可以采用设定的方式生成包序号,使得包序号为全局唯一的。设定的方式,比如,可以采用redis缓存的支持高并发的increment操作来实现。基于increment操作,可以实现包序号步长为1的递增。
服务端一般会采用集群方式,通过上述的increment操作可以保证集群范围内的包序号是全局唯一的。
405、服务端推送当前消息给客户端,当前消息中包括消息标识和消息内容;服务端在缓存中对应存储消息标识和消息内容;服务端记录当前消息的推送时间。
比如,服务端在redis缓存中,将消息标识作为索引,将消息内容作为context_key,对应存储在缓存中;以及,对应消息标识记录对应的推送时间time_tick,以便基于该推送时间以及后续得到的接收时间,计算该当前消息的应答耗时,该接收时间是指该当前消息的应答消息的接收时间。
406、服务端获取该当前消息的超时时间,以及,将当前消息的消息标识作为超时键的索引,将超时时间作为过期时间,以创建超时键。
407、服务端判断是否发生过期事件,若是,执行408,否则,执行409。
408、服务端基于回调函数执行重传流程。
服务端可以在达到超时键的过期时间时,确定发生过期事件,在发生过期事件后,基于回调函数执行重传流程。重传流程可以参见图5。
另外,当超时键过期时,该超时键会被清除。
409、服务端判断是否接收到应答消息,若是,执行410,否则执行411。
410、服务端执行应答消息的处理流程。具体流程可以参见图6。
411、服务端判断是否与客户端断开连接,若是,则结束,否则重复执行404及其后续步骤。
可以理解的是,407-408、409-410、411的时序关系不限定,即,发生过期事件、接收到应答消息、与客户端断开连接,这三种事件发生的时序不限定,可以是任一种排序或者同步发生。
本实施例中,通过注册过期事件的回调函数,可以基于回调函数执行重传流程,从而简便地实现消息内容的重传。
如图4所示,在发生过期事件后,基于回调函数可以执行重传操作。如图5所示,重传操作的流程可以包括:
501、确定过期的超时键对应的消息标识。
比如,一个超时键的索引是ID0,其过期事件是T0,如果达到该T0,则表明该超时键过期,该过期的超时键对应的消息标识为ID0。
502、在redis缓存中,获取与该消息标识对应的消息内容。
服务端推送给客户端的消息,还会缓存在redis缓存中,在redis缓存中,消息标识与消息内容对应存储,因此,可以从redis缓存中获取到消息标识对应的消息内容。比如,该ID0对应的消息内容是D0,则获取D0。
503、判断重传次数是否大于预设次数,若是,执行505,否则执行504。
其中,重传次数的初始值可以设置,比如为0,之后,每发生一次重传则将重传次数增加1。预设次数是指重传的最大次数,该值可以设置,比如为3。
504、服务端重传获取的消息内容。
比如,获取到D0后,将该D0包含在重传消息中,服务端推送该重传消息给客户端,以实现重传该D0。
另外,在重传消息内容后,将重传次数增加1。
可以理解的是,重传消息的消息标识与之前的消息标识是不同的,比如,之前该D0对应的消息标识为ID0,基于increment操作,该ID可以是ID0增加1后的值,或者,若ID0对应的消息和重传消息之间还推送了其他消息,则该重传消息对应的ID是其他消息对应的ID增加1后的值。
505、清除redis缓存中的该消息标识对应的消息内容,不再重传该消息内容。
比如,依照上例,清除D0。另外,还可以在缓存中清除该消息标识,即还可以清除ID0。
506、记录错误日志以便分析定位。
本实施例中,通过在重传次数不大于预设次数时,重传消息内容,可以实现消息重传,提高消息推送的成功率。在重传次数大于预设次数时,不再进行重传,可以节省重传资源,并且可以及时发现未被成功接收的消息,以便后续处理。
如图4所示,在接收到客户端发送的应答消息后,服务端可以执行应答操作,如图6所示,应答操作的流程可以包括:
601、服务端接收到客户端发送的应答消息。
其中,该应答消息中包含消息标识。客户端接收到服务端推送的携带消息标识的消息后,会向服务端发送应答消息,应答消息中携带的消息标识为客户端接收的消息中的消息标识。
602、服务端从应答消息中获取消息标识。
比如,对应答消息进行解析,获取其中的消息标识。
603、判断是否能够获取到与该消息标识对应的超时键,若是,执行604,否则执行605。
当能够找到该消息标识对应的超时键时,说明该超时键还未过期。
604、确定客户端成功接收到该消息标识对应的消息;清除该超时键;清除缓存中该消息标识对应的消息内容。以及,执行606。
可以理解的是,604和606的时序不限定。
605、判断缓存中是否能够获取到该消息标识对应的消息内容,若是,执行606,否则执行607。
当找不到与接收的应答消息中携带的消息标识对应的超时键时,说明该超时键已过期;在缓存中存在该消息标识对应的消息内容时,则表明该消息标识对应的消息内容已经被重传。
606、记录应答消息的接收时间,并对应消息标识进行存储。
通过记录该接收时间,可以与之前(405)记录的推送时间进行相减运算,得到当前消息的应答耗时,以便基于该应答耗时计算后续消息的超时时间。
607、记录错误日志以便分析定位。
本实施例中,通过在接收到应答消息后清除该超时键,可以避免消息的误重传,并且通过记录推送时间和接收时间,可以基于该推送时间和接收时间计算当前消息的应答耗时,当前消息的应答耗时可以为当前消息的之后消息的超时时间的计算提供基础数据。
图7是本公开第七实施例的示意图,本实施例提供一种消息推送装置。如图7所示,该装置700包括获取模块701、创建模块702和重传模块703。
获取模块701用于获取当前消息的超时时间,所述当前消息为服务端当前推送给客户端的消息,所述当前消息包括:消息标识和消息内容,且,所述消息标识和所述消息内容对应存储在所述服务端中;创建模块702用于将所述消息标识作为超时键的索引,将所述超时时间作为所述超时键的过期时间,以创建所述超时键,所述超时键的状态包括超时键过期,所述超时键过期用于指示所述客户端未成功接收所述当前消息;重传模块703用于在所述超时键过期时,从所述服务端中获取与所述消息标识对应的所述消息内容,并重传所述消息内容。
本实施例中,基于当前消息的消息标识和超时时间创建超时键,并在超时键过期时,重传该过期的超时键对应的消息内容,可以基于过期机制重传消息内容,提高消息推送的成功率。
一些实施例中,所述获取模块701具体用于:获取预设个数的已推送消息中各个已推送消息的应答耗时,所述已推送消息为所述服务端在所述当前消息之前推送给所述客户端的消息;获取所述各个已推送消息对应的权重值;根据所述应答耗时和所述权重值,计算所述超时时间。
一些实施例中,所述获取模块701进一步具体用于:采用所述权重值,计算所述应答耗时的加权和;将所述加权和与预设系数相乘,以得到所述超时时间。
一些实施例中,所述消息标识和所述消息内容存储在所述服务端的redis缓存中,所述重传模块703具体用于:基于预先注册的redis过期事件回调函数,从所述redis缓存中获取所述消息内容,并重传所述消息内容。
一些实施例中,如图8所示,该装置800包括:获取模块801、创建模块802和重传模块803,还包括:接收模块804和第一清除模块805。
接收模块804用于接收所述客户端发送的与所述当前消息对应的应答消息,所述应答消息用于指示所述客户端成功接收所述当前消息,所述应答消息中包含所述消息标识;第一清除模块805用于在根据所述应答消息中包含的所述消息标识,能够获取到与所述消息标识对应的所述超时键时,确定所述客户端成功接收到所述当前消息,并清除所述消息标识对应的所述超时键。
一些实施例中,该装置800还包括:接收记录模块806,接收记录模块806用于在根据所述应答消息中包含的所述消息标识,能够获取到与所述消息标识对应的所述超时键时,记录所述应答消息的接收时间;或者,在根据所述应答消息中包含的所述消息标识,不能获取到与所述消息标识对应的所述超时键,但在所述服务端中能够获取存储的与所述消息标识对应的所述消息内容时,记录所述应答消息的接收时间。
一些实施例中,该装置800还包括:推送记录模块807,推送记录模块807用于记录所述当前消息的推送时间,以便根据所述推送时间和所述接收时间,计算所述当前消息的之后消息的超时时间。
一些实施例中,该装置800还包括:第二清除模块808,第二清除模块808用于在所述消息内容的重传次数大于所述预设次数时,清除所述服务端存储的所述消息内容,不再重传所述消息内容。
本实施例中,基于消息标识和超时时间创建超时键,并在超时键过期时,重传该过期的超时键对应的消息内容,可以基于过期机制及时发现需要重传的消息内容,并重传该消息内容,提高消息推送的成功率。通过注册过期事件的回调函数,可以基于回调函数执行重传流程,从而简便地实现消息内容的重传。通过在重传次数不大于预设次数时,重传消息内容,可以实现消息重传,提高消息推送的成功率。在重传次数大于预设次数时,不再进行重传,可以节省重传资源,并且可以及时发现未被成功接收的消息,以便后续处理。通过在接收到应答消息后清除该超时键,可以避免消息的误重传,并且通过记录推送时间和接收时间,可以基于该推送时间和接收时间计算当前消息的应答耗时,当前消息的应答耗时可以为当前消息的之后消息的超时时间的计算提供基础数据。
可以理解的是,本公开的不同实施例中相同或相应的内容可以相互参考,实施例中未做详细说明的内容,可以参见其他实施例的相关内容。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图9示出了可以用来实施本公开的实施例的示例电子设备900的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图9所示,电子设备900包括计算单元901,其可以根据存储在只读存储器(ROM)902中的计算机程序或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序,来执行各种适当的动作和处理。在RAM 903中,还可存储电子设备900操作所需的各种程序和数据。计算单元901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
电子设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许电子设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元901可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元901的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元901执行上文所描述的各个方法和处理,例如消息推送方法。例如,在一些实施例中,消息推送方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到电子设备900上。当计算机程序加载到RAM 903并由计算单元901执行时,可以执行上文描述的消息推送方法的一个或多个步骤。备选地,在其他实施例中,计算单元901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行消息推送方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (19)

1.一种消息推送方法,包括:
获取当前消息的超时时间,所述当前消息为服务端当前推送给客户端的消息,所述当前消息包括:消息标识和消息内容,且,所述消息标识和所述消息内容还对应存储在所述服务端中;
将所述消息标识作为超时键的索引,将所述超时时间作为所述超时键的过期时间,以创建所述超时键,所述超时键的状态包括超时键过期,所述超时键过期用于指示所述客户端未成功接收所述当前消息;
在所述超时键过期时,从所述服务端中获取与所述消息标识对应的所述消息内容,并重传所述消息内容。
2.根据权利要求1所述的方法,其中,所述获取当前消息的超时时间,包括:
获取预设个数的已推送消息中各个已推送消息的应答耗时,所述已推送消息为所述服务端在所述当前消息之前推送给所述客户端的消息;
获取所述各个已推送消息对应的权重值;
根据所述应答耗时和所述权重值,计算所述超时时间。
3.根据权利要求2所述的方法,其中,所述根据所述应答耗时和所述权重值,计算所述超时时间,包括:
采用所述权重值,计算所述应答耗时的加权和;
将所述加权和与预设系数相乘,以得到所述超时时间。
4.根据权利要求1所述的方法,其中,还包括:
接收所述客户端发送的与所述当前消息对应的应答消息,所述应答消息用于指示所述客户端成功接收所述当前消息,所述应答消息中包含所述消息标识;
在根据所述应答消息中包含的所述消息标识,能够获取到与所述消息标识对应的所述超时键时,确定所述客户端成功接收到所述当前消息,并清除所述消息标识对应的所述超时键。
5.根据权利要求4所述的方法,其中,还包括:
在根据所述应答消息中包含的所述消息标识,能够获取到与所述消息标识对应的所述超时键时,记录所述应答消息的接收时间;或者,
在根据所述应答消息中包含的所述消息标识,不能获取到与所述消息标识对应的所述超时键,但在所述服务端中能够获取存储的与所述消息标识对应的所述消息内容时,记录所述应答消息的接收时间。
6.根据权利要求5所述的方法,其中,还包括:
记录所述当前消息的推送时间,以便根据所述推送时间和所述接收时间,计算所述当前消息的之后消息的超时时间。
7.根据权利要求1所述的方法,其中,所述消息内容在小于或等于预设次数时重传,所述方法还包括:
在所述消息内容的重传次数大于所述预设次数时,清除所述服务端存储的所述消息内容,不再重传所述消息内容。
8.根据权利要求1-7任一项所述的方法,其中,所述消息标识和所述消息内容存储在所述服务端的redis缓存中,所述从所述服务端中获取与所述消息标识对应的所述消息内容,并重传所述消息内容,包括:
基于预先注册的redis过期事件回调函数,从所述redis缓存中获取所述消息内容,并重传所述消息内容。
9.一种消息推送装置,包括:
获取模块,用于获取当前消息的超时时间,所述当前消息为服务端当前推送给客户端的消息,所述当前消息包括:消息标识和消息内容,且,所述消息标识和所述消息内容还对应存储在所述服务端中;
创建模块,用于将所述消息标识作为超时键的索引,将所述超时时间作为所述超时键的过期时间,以创建所述超时键,所述超时键的状态包括超时键过期,所述超时键过期用于指示所述客户端未成功接收所述当前消息;
重传模块,用于在所述超时键过期时,从所述服务端中获取与所述消息标识对应的所述消息内容,并重传所述消息内容。
10.根据权利要求9所述的装置,其中,所述获取模块具体用于:
获取预设个数的已推送消息中各个已推送消息的应答耗时,所述已推送消息为所述服务端在所述当前消息之前推送给所述客户端的消息;
获取所述各个已推送消息对应的权重值;
根据所述应答耗时和所述权重值,计算所述超时时间。
11.根据权利要求10所述的装置,其中,所述获取模块进一步具体用于:
采用所述权重值,计算所述应答耗时的加权和;
将所述加权和与预设系数相乘,以得到所述超时时间。
12.根据权利要求9所述的装置,其中,还包括:
接收模块,用于接收所述客户端发送的与所述当前消息对应的应答消息,所述应答消息用于指示所述客户端成功接收所述当前消息,所述应答消息中包含所述消息标识;
第一清除模块,用于在根据所述应答消息中包含的所述消息标识,能够获取到与所述消息标识对应的所述超时键时,确定所述客户端成功接收到所述当前消息,并清除所述消息标识对应的所述超时键。
13.根据权利要求12所述的装置,其中,还包括:
接收记录模块,用于在根据所述应答消息中包含的所述消息标识,能够获取到与所述消息标识对应的所述超时键时,记录所述应答消息的接收时间;或者,在根据所述应答消息中包含的所述消息标识,不能获取到与所述消息标识对应的所述超时键,但在所述服务端中能够获取存储的与所述消息标识对应的所述消息内容时,记录所述应答消息的接收时间。
14.根据权利要求13所述的装置,其中,还包括:
推送记录模块,用于记录所述当前消息的推送时间,以便根据所述推送时间和所述接收时间,计算所述当前消息的之后消息的超时时间。
15.根据权利要求9所述的装置,其中,所述消息内容在小于或等于预设次数时重传,所述装置还包括:
第二清除模块,用于在所述消息内容的重传次数大于所述预设次数时,清除所述服务端存储的所述消息内容,不再重传所述消息内容。
16.根据权利要求9-15任一项所述的装置,其中,所述消息标识和所述消息内容存储在所述服务端的redis缓存中,所述重传模块具体用于:
基于预先注册的redis过期事件回调函数,从所述redis缓存中获取所述消息内容,并重传所述消息内容。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-8中任一项所述的方法。
19.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-8中任一项所述的方法。
CN202110113701.6A 2021-01-27 2021-01-27 消息推送方法、装置、设备和介质 Pending CN112910983A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110113701.6A CN112910983A (zh) 2021-01-27 2021-01-27 消息推送方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110113701.6A CN112910983A (zh) 2021-01-27 2021-01-27 消息推送方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN112910983A true CN112910983A (zh) 2021-06-04

Family

ID=76119143

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110113701.6A Pending CN112910983A (zh) 2021-01-27 2021-01-27 消息推送方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN112910983A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117156398A (zh) * 2023-08-04 2023-12-01 中移互联网有限公司 消息处理方法、装置、电子设备及存储介质
CN117156398B (zh) * 2023-08-04 2024-10-22 中移互联网有限公司 消息处理方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106533639A (zh) * 2016-12-06 2017-03-22 迈锐数据(北京)有限公司 一种数据重传方法及装置
CN110019263A (zh) * 2017-10-18 2019-07-16 北京京东尚科信息技术有限公司 信息存储方法和装置
CN110798495A (zh) * 2018-08-03 2020-02-14 北京京东尚科信息技术有限公司 用于在集群架构模式下端到端的消息推送的方法和服务器
CN110971535A (zh) * 2020-03-03 2020-04-07 友刻(北京)通讯技术有限公司 一种通信拥塞控制方法及装置、设备和存储介质
CN111194012A (zh) * 2019-12-30 2020-05-22 广东飞企互联科技股份有限公司 一种基于redis的定时超时业务的开发过程及其处理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106533639A (zh) * 2016-12-06 2017-03-22 迈锐数据(北京)有限公司 一种数据重传方法及装置
CN110019263A (zh) * 2017-10-18 2019-07-16 北京京东尚科信息技术有限公司 信息存储方法和装置
CN110798495A (zh) * 2018-08-03 2020-02-14 北京京东尚科信息技术有限公司 用于在集群架构模式下端到端的消息推送的方法和服务器
CN111194012A (zh) * 2019-12-30 2020-05-22 广东飞企互联科技股份有限公司 一种基于redis的定时超时业务的开发过程及其处理方法
CN110971535A (zh) * 2020-03-03 2020-04-07 友刻(北京)通讯技术有限公司 一种通信拥塞控制方法及装置、设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117156398A (zh) * 2023-08-04 2023-12-01 中移互联网有限公司 消息处理方法、装置、电子设备及存储介质
CN117156398B (zh) * 2023-08-04 2024-10-22 中移互联网有限公司 消息处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN111030784A (zh) 一种信息同步方法和装置
CN111352967A (zh) 滑动窗口算法的频次控制方法、系统、设备及介质
CN113590437B (zh) 一种告警信息处理方法、装置、设备和介质
CN112527530A (zh) 消息处理方法、装置、设备、存储介质及计算机程序产品
CN114039703A (zh) 数据传输方法、装置、设备和介质
CN114090366A (zh) 一种监控数据的方法、装置和系统
CN114661510B (zh) 一种请求超时检测方法、装置、设备以及存储介质
CN112905930B (zh) 一种接口请求重发方法和装置
CN114786216A (zh) 应用层数据传输方法、装置、设备及介质
CN114900379A (zh) 一种消息通知方法、装置、电子设备及存储介质
CN112230880B (zh) 一种数据传输控制方法、装置、fpga及介质
CN113590017B (zh) 用于处理数据的方法、电子设备和计算机程序产品
CN112883041A (zh) 一种数据更新方法、装置、电子设备及存储介质
CN112948081A (zh) 延时处理任务的方法、装置、设备以及存储介质
CN112910983A (zh) 消息推送方法、装置、设备和介质
US9369331B1 (en) Application message management
CN116528177A (zh) 一种短信发送方法、装置、电子设备及存储介质
CN113238808B (zh) 一种消息推送方法和装置
CN115391158A (zh) 一种时延确定方法、系统、装置及电子设备
CN111371586A (zh) 日志数据传输方法、装置和设备
CN110971535B (zh) 一种通信拥塞控制方法及装置、设备和存储介质
CN114500443A (zh) 消息推送方法、装置、系统、电子设备和存储介质
CN114579416A (zh) 一种指标确定方法、装置、服务器和介质
CN113301029A (zh) 数据发送方法、装置、设备以及存储介质
CN114064803A (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
TA01 Transfer of patent application right

Effective date of registration: 20211020

Address after: 100176 101, floor 1, building 1, yard 7, Ruihe West 2nd Road, Beijing Economic and Technological Development Zone, Daxing District, Beijing

Applicant after: Apollo Intelligent Connectivity (Beijing) Technology Co., Ltd.

Address before: 2 / F, baidu building, 10 Shangdi 10th Street, Haidian District, Beijing 100085

Applicant before: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
RJ01 Rejection of invention patent application after publication

Application publication date: 20210604

RJ01 Rejection of invention patent application after publication