CN104767589B - 一种信息发送方法及装置 - Google Patents
一种信息发送方法及装置 Download PDFInfo
- Publication number
- CN104767589B CN104767589B CN201510109461.7A CN201510109461A CN104767589B CN 104767589 B CN104767589 B CN 104767589B CN 201510109461 A CN201510109461 A CN 201510109461A CN 104767589 B CN104767589 B CN 104767589B
- Authority
- CN
- China
- Prior art keywords
- server
- notification message
- connection
- digital certificate
- message
- 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
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种信息发送方法及装置,该方法包括:信息转发设备通过预先建立的服务器连接,将客户端发送的通知消息转发至服务器,所述信息转发设备监测服务器的反馈,当监测到服务器反馈错误通知时,根据该错误通知中携带的信息索引,在服务器连接的发送窗口内存储的通知消息中,查找与所述信息索引对应的通知消息,作为错误消息,信息转发设备根据该错误消息,将相应的通知消息通过所述发送窗口重发至所述服务器。通过本方法,信息转发设备可以根据服务器反馈的出错通知,直接在发送窗口中存储的各个通知消息中查找错误消息,从而立即将相应通知消息重发至服务器中。这样的方式有效地解决了重发通知消息时效率较低的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种信息发送方法及装置。
背景技术
随着信息技术的发展,终端设备(如:移动终端、计算机终端等)的功能越来越丰富。终端设备中的各类功能的实现,通常依赖于运行在终端设备中的各类应用,用户使用运行在终端设备中的各类应用可以获得用户所需的服务。
目前,运行在终端设备上的不同应用,常会弹出相应的通知消息,如:更新通知、业务通知等,这些通知消息是由应用的开发者的客户端向用户使用的终端进行推送的,以提示用户对相应的应用进行维护、更新,以便用户获得充分的服务。
现有技术中,开发者的客户端向用户所使用的终端发送通知消息基于如图1所示的设备连接架构,也即,开发者的客户端与系统服务商的服务器(如:APNs服务器)之间,通过信息转发设备(如:数据库、服务器等网络设备)进行连接,服务器又与用户所使用的终端设备相连接。在该设备构架下,客户端所生成的通知消息均需要先发送至服务器中,再通过服务器将通知消息推送至不同用户所使用的终端设备中,最终以提醒通知的形式展示在用户所使用的终端设备中。
在如图1所示的上述构架下,当客户端向服务器推送不同应用的通知消息时,其具体过程如图2所示:
S201,客户端将通知消息发送至信息转发设备。
S202,信息转发设备接收通知消息,并按照通知消息中所携带的数字证书身份标识(Identification,ID),将通知消息分类形成不同的数据分组,存储在该信息转发设备的缓冲区等待转发。
其中,具有相同数字证书ID的通知消息将分类形成一个数组分组。
S203,信息转发设备中的相应进程根据通知消息的数字证书ID,建立与该数字证书ID对应的服务器连接。
S204,信息转发设备通过服务器连接的发送窗口,将各数据分组中的通知消息逐一发送至服务器,并将已经从发送窗口中发送的通知消息删除,完成通知消息的发送。
而在实际应用中,服务器在对通知消息进行处理时,可能由于多种原因导致对某一通知消息的处理失败,这样一来,服务器则会停止处理该服务器连接中的后续通知消息。若想要使得服务器继续对通知消息进行处理,就需要对通知消息进行重发。
但是,在上述步骤S204中,信息转发设备会删除发送窗口中已经发送出去的通知消息,也就造成了通知消息的丢失,若想重发通知消息,只能由客户端再次将相应的通知消息发送给该信息转发设备,再由该信息转发设备重新建立与服务器的连接,对通知消息进行重发。显然,这样的方式严重影响通知消息的发送效率。
发明内容
本发明实施例提供一种信息发送方法及装置,用以解决目前对通知消息进行发送的效率较低的问题。
本发明实施例提供的一种信息发送方法,包括:
信息转发设备通过预先建立的服务器连接,将客户端发送的通知消息转发至所述服务器;
所述信息转发设备监测所述服务器的反馈;
当监测到所述服务器反馈错误通知时,根据该错误通知中携带的信息索引,在所述服务器连接的发送窗口内存储的通知消息中,查找与所述信息索引对应的通知消息,作为错误消息;
所述信息转发设备根据该错误消息,将相应的通知消息通过所述发送窗口重发至所述服务器。
本发明实施例另提供的一种信息发送装置,包括:
转发模块,用于通过预先建立的服务器连接,将客户端发送的通知消息转发至服务器;
监测模块,用于监测所述服务器的反馈;
查找模块,用于当监测到所述服务器反馈错误通知时,根据该错误通知中携带的信息索引,在所述服务器连接的发送窗口内存储的通知消息中,查找与所述信息索引对应的通知消息,作为错误消息;
重发模块,用于根据该错误消息,将相应的通知消息通过所述发送窗口重发至所述服务器。
本发明实施例提供一种信息发送方法及装置,通过该方法,信息转发设备使用服务器连接的发送窗口,将相应的通知消息转发至服务器中后,并不会将已转发的通知消息从发送窗口中删除,而是将已转发的通知消息临时存储在发送窗口中,当服务器对信息转发设备所转发的通知消息处理失败时,信息转发设备可以根据服务器反馈的出错通知,直接在发送窗口中存储的各个通知消息中查找错误消息,从而立即将相应通知消息重发至服务器中。这样的方式有效地解决了重发通知消息时效率较低的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为现有技术中客户端向终端发送通知消息时所需的设备的连接关系示意图;
图2为现有技术中客户端向服务器推送不同应用的通知消息时的具体过程示意图;
图3为本发明实施例提供的信息发送方法的过程示意图;
图4a~4c为本发明实施例提供的通过服务器连接的发送窗口转发通知消息的示意图;
图5a~5b为本发明实施例提供的对错误消息进行重发的示意图;
图6为本发明实施例提供的获取连接池中的服务器连接的示意图;
图7~8为本发明实施例提供的新建立的服务器连接存储至连接池中的示意图;
图9为本发明实施例提供的信息发送方法的实际应用的示意图;
图10为本发明实施例提供的信息发送装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图3为本发明实施例提供的信息发送过程,该过程具体包括以下步骤:
S301,信息转发设备通过预先建立的服务器连接,将所述客户端发送的通知消息转发至服务器。
在本发明实施例中,客户端、服务器以及信息转发设备的连接关系仍如图1所示,其中,所述信息转发设备包括但不限于:基于业务基础平台(Platform-as-a-Service,PaaS)的服务器、数据库等具有信息转发功能的网络设备。所述客户端,包括但不限于,开发者所使用的各类终端设备、网络设备等。所述服务器,是用户所使用的终端设备(如:智能手机、平板电脑、计算机等)的系统服务商的服务器。所述通知消息,为由开发者使用其客户端生成的针对于不同类型应用的通知消息。
与现有技术不同的是,在上述步骤S301中,信息转发设备将预先建立的服务器连接,存储在该信息转发设备内的连接池中,并在需要转发通知消息时,从该连接池中获取相应的服务器连接,将相应的通知消息通过服务器连接转发至所述服务器。而不是接收到通知消息后才建立相应的服务器连接。通过预先建立服务器连接的方式,可以有效节省服务器的处理资源,提升对服务器连接的利用率。
其中,所述服务器连接,是信息转发设备与服务器建立的安全性连接,包括但不限于:安全套接层(Secure Sockets Layer,SSL)连接,传输层安全(Transport LayerSecurity,TLS)连接等。
当然,在实际应用中,不同的应用具有不同的数字证书ID,针对不同应用的通知消息,也会携带该应用的数字证书ID,为了增加对通知消息处理以及发送的效率,在本发明实施例中,信息转发设备中的不同的服务器连接分别对应不同的数字证书ID,这样,可以保证同一数字证书ID对应一条服务器连接,具有该数字证书ID的通知消息,均通过该服务器连接进行传输,从而提升对通知消息转发以及处理的效率。
S302,所述信息转发设备监测所述服务器的反馈。
在实际应用场景中,由于通知消息自身的消息格式可能出现错误,或者通知消息自身携带的终端应用标识(token)出现问题,那么就会导致服务器对通知消息进行处理时出现处理失败的情况,而当服务器对任一通知消息处理失败时,服务器将根据该处理失败的通知消息中携带的服务器连接标识、数字证书ID以及信息编号等信息,生成针对该通知消息的信息索引,并以错误通知的方式反馈至信息转发设备中。
故在本发明实施例中,监测所述服务器的反馈,也就是监测服务器反馈的错误通知。信息转发设备监测到服务器反馈的错误通知后,便可以根据该错误通知及时进行后续的操作(如:对相应的通知消息进行重发操作)。
S303当监测到所述服务器反馈错误通知时,根据该错误通知中携带的信息索引,在所述服务器连接的发送窗口内存储的通知消息中,查找与所述信息索引对应的通知消息,作为错误消息。
服务器所反馈的错误通知,反映了服务器对某一通知消息处理失败,信息转发设备在接收到该错误通知后,就可根据错误通知中的信息索引查找到与该信息索引对应的通知消息,查找到的通知消息就是服务器处理失败的通知消息,也就可将该通知消息作为错误消息。
但在现有技术中,信息转发设备内运行的转发进程将通知消息转发至服务器后,会将已转发的通知消息从发送窗口中删除,导致通知消息丢失,从而降低对通知消息进行转发的效率。
因此,为了避免信息转发设备的转发进程丢失已转发的通知消息,在本申请实施例中,当信息转发设备通过其发送窗口将通知消息转发至服务器后,并不会立即删除已转发的通知消息,而是将已转发的通知消息临时存储在该发送窗口中。这样一来,如果服务器对某一通知消息处理失败,那么,信息转发设备接收到服务器反馈的错误通知后,便可以根据该错误通知中携带的信息索引,在该发送窗口中查找到出错的通知消息,以便对出错的信息进行重新发送。
通过这样的方式,当信息转发设备接收到服务器反馈的出错通知后,可以直接在相应的服务器连接的发送窗口中快速地查找与信息索引对应的通知消息(也即,出错消息),有效地减少了准备重发通知消息所需的时间。
S304,所述信息转发设备根据该错误消息,将相应的通知消息通过所述发送窗口重发至所述服务器。
正是因为服务器连接的发送窗口发送通知消息后,并不删除已经发送的通知消息,而是临时存储在该发送窗口中,那么,当信息转发设备根据服务器反馈的错误通知中的信息索引,就可以将存储在发送窗口中的通知消息进行重发。
当然,对于上述步骤S301~S304而言,在实际应用场景下,均可由信息转发设备中运行的相应工作进程执行上述操作,如:由转发进程获取连接池中的服务器连接,并对通知消息执行转发操作;由监听进程,执行对服务器的反馈的监测操作。又或者,由转发进程对通知消息执行重发操作。这里并不构成对本发明的限定。
通过上述步骤,信息转发设备使用服务器连接的发送窗口,将相应的通知消息转发至服务器中后,并不会将已转发的通知消息从发送窗口中删除,而是将已转发的通知消息临时存储在发送窗口中,当服务器对信息转发设备所转发的通知消息处理失败时,信息转发设备可以根据服务器反馈的出错通知,直接在发送窗口中存储的各个通知消息中查找错误消息,从而立即根据该错误消息重发至服务器中。这样的方式有效地解决了现有技术中信息转发设备重发通知消息时效率较低的问题。
需要说明的是,在本发明实施例中,信息转发设备通过服务器连接的发送窗口将通知消息转发至服务器中的方式具体如图4a至图4c所示。
假设在信息转发设备中,通知消息m1~m8具有相同的数字证书ID,在这样的情况下,信息转发设备将使用一条与该数字证书ID对应的服务器连接发送通知消息m1~m8。也即,信息转发设备中相应的进程(如:push进程)会将这些通知消息添加至该服务器连接的发送窗口中。
通常,发送窗口中具有至少一个发送位置,每一个发送位置上可以添加一个通知消息,并且,当相应的转发进程要转发发送窗口中的通知消息时,将使用发送指针的方式,顺序地遍历转发各发送位置上的通知消息。
具体地,在如图4a所示的场景下,假设发送窗口中包含6个发送位置,相应的进程将通知消息m1、m2、……、m6添加至该发送窗口中。并且,相应的转发进程从该发送窗口的左起第一个发送位置开始,顺序地逐个发送各发送位置上的各通知消息。如:在图4a中,发送指针指向通知消息m1所在的发送位置,也就表明,转发进程将发送该通知消息m1。
如图4b所示,采用这样的转发方式,假设通知消息m1~m3已经转发至服务器中,那么,在图4b中,发送指针在当前时刻将指向通知消息m4所在的发送位置,表明相应的进程将准备转发通知消息m4。
此时,假设服务器针对通知消息m3处理失败,那么,该服务器将生成错误通知,反馈至该信息转发设备中。但是,信息转发设备接收到服务器反馈的错误通知需要耗费一定的时间,而在这段时间内,信息转发设备中的相应转发进程,仍会继续转发发送窗口中的通知消息,在信息转发设备接收到错误通知时,假设如图4c所示,转发进程已经将发送窗口中的通知消息m4和m5转发至服务器中(发送指针已经指向通知消息m6所在的发送位置,准备发送通知消息m6)。但是由于服务器对通知消息m3处理失败,服务器将不会对该服务器连接后续发送的通知消息进行处理,也就是说,服务器将拒绝处理通知消息m4和m5。
在这样的情况下,若采用现有技术的方式,即使信息转发设备重新接收到客户端再次发送的通知消息m3,信息转发设备也只会重发错误消息m3,并且,根据如图4c所示的发送窗口的状态,将继续转发发送指针所指向的发送位置上的通知消息(也即,通知消息m6),那么,会出现漏发通知消息m4和m5的情况,导致通知消息m4和m5仍不能得到服务器的处理。
为了避免在对某一错误消息重发时,出现漏发其他通知消息的情况,故对于本发明实施例中的上述步骤S104,具体为:所述信息转发设备在所述发送窗口存储的通知消息中,将位于该错误消息所在的发送位置之后的各通知消息进行重发。
这样的重发方式,便可以将服务器停止处理的后续通知消息进行重发,不会出现通知消息的遗漏。
具体地,如图5a所示,信息转发设备根据服务器反馈的错误通知中携带的信息索引,确定出通知消息m3为错误消息后,相应的转发进程会重新调节发送指针的位置,对错误消息m3之后的通知信息进行重发,也即,将发送指针的位置调节至通知消息m4所在的发送位置处。这样一来,该转发进程便会顺序地逐个重发错误消息m3之后的各发送位置上的各通知消息(包括服务器拒绝处理的通知消息m4和m5)。
另外,由于服务器出于节约服务器资源的考虑,对于处理成功的通知消息将不会进行反馈,那么,当信息转发设备根据服务器反馈的错误通知中携带的信息索引,确定出通知消息m3为错误消息时,就可以认为,通知消息m1和m2已经处理成功,从而,信息转发设备中相应的进程便将该发送窗口中的通知消息m1和m2删除。也即,上述步骤S304还包括:所述信息转发设备在所述发送窗口存储的通知消息中,将所述错误消息以及位于该错误消息之前的各通知消息删除。
而且,错误消息m3极有可能因为其自身的消息格式错误,导致服务器处理失败,在这样的情况下,若将该错误消息m3也进行重发,那么,服务器在处理该错误消息m3时,仍会处理失败,从而造成不必要的处理资源的浪费。所以,作为本申请实施例中的一种优选方式,将该错误消息m3记录在错误日志中,并将该错误消息m3在该发送窗口中删除。也就是说,信息转发设备并不会重发该错误消息m3,在实际应用中,信息转发设备会根据错误日志中记录的该错误消息m3,通知相应的客户端,重新修正该错误消息m3,信息转发设备再将由客户端修正后的通知消息m3转发给服务器。当然,这里并不构成对本发明的限定。
如图5b所示,在本发明实施例中,将上述通知消息m1、m2以及错误消息m3删除后,该发送窗口中未删除的通知消息(m4~m6)将自动挤位,也即,通知消息m4~m6将各向左移动两个发送位置。此时,在信息转发设备的缓存区中,还存储有等待转发的通知消息m7和m8,那么,相应的转发进程会将通知消息m7和m8添加至该发送窗口中。之后,转发进程还会将发送指针调整至通知消息m4所在的发送位置处,以便发送当前的发送窗口中的各通知消息。
当然,倘若该信息转发设备中除上述通知消息m1~m6之外,没有其他相同数字证书ID的通知消息,则不向该发送窗口中添加。这是因为,在本发明实施例中,信息转发设备中的各服务器连接分别对应一个数字证书ID,也即,一条服务器连接只负责发送同一数字证书ID的通知消息。
需要说明的是,对于发送窗口中的发送位置的数量(也即,发送窗口存储通知消息的数量),可根据实际应用的需要进行调节,如:在具有大量通知消息待转发的情况下,可以增加每一条服务器连接的发送窗口中的发送位置数量,使得发送窗口中存储较多通知消息进行发送;而在通知消息较少的情况下,可以减少发送窗口的窗口数量。这里并不构成对本发明的限定。
可见,本发明实施例中,正是由于发送窗口在将通知消息进行转发后,不立即删除已经转发的通知消息,从而,信息转发设备不仅可根据服务器反馈的错误通知中携带的信息索引,直接在发送窗口中查找出错消息,并且,还会对该错误消息之后可能被服务器拒绝处理的各通知消息进行重发,有效提升了对通知消息进行重发的准确性,避免了通知消息被遗漏的情况。
还需要说明的是,在现有技术中,当信息转发设备根据服务器反馈的错误通知查找到错误消息后,会断开该错误消息对应的服务器连接,对该错误消息之后的通知消息进行重发时,信息转发设备通常需要重新与服务器建立连接,而频繁的建立或断开服务器连接,极有可能触发服务器自身的安全保护机制,服务器会标识出该服务器连接对应的连接标识,并在一定时间内拒绝含有该连接标识的连接建立请求,从而导致不能发送携带有该数字证书ID的通知消息。
因此,在本发明实施例中,信息转发设备采用预先建立服务器连接并存储在连接池中的方式,避免频繁地针对通知消息建立或断开服务器连接,也即,预先建立服务器连接,具体为:所述信息转发设备预先确定接收到的通知消息中包含的数字证书ID,根据所述通知消息的所述数字证书ID,建立与该数字证书ID对应的服务器连接,并存储在连接池中。
其中,上述的通知消息是指,信息设备接收到的携带有该数字证书ID的首个通知消息,也即,在该通知消息之前,信息转发设备中从未接收到含有该数字证书ID的通知消息,也从未建立过与该数字证书ID对应的服务器连接。
也就是说,当信息转发设备预先根据接收到的任一通知消息所携带的数字证书ID建立对应的服务器连接后,均会将服务器连接存放在连接池中。对于信息转发设备中的转发进程而言,存储在连接池中的各服务器连接都处于可读状态,也就是说,各服务器连接都保持与服务器的正常连接状态,那么,当需要对通知消息进行转发时,转发进程便可以直接从该连接池中获取一条与通知消息携带的数字证书ID对应的服务器连接,转发该通知消息。从而有效降低了针对通知消息建立服务器连接的频率,可有效地避免出发服务器自身的安全保护机制。
在本发明实施例中,相应的转发进程对通知消息的转发过程具体为:确定所述通知消息的数字证书ID,从所述连接池中获取与所述数字证书ID对应的服务器连接,将所述客户端发送的具有相同数字证书ID的所述通知消息,添加至所述服务器连接对应的发送窗口中,将所述通知消息通过所述发送窗口,顺序转发至所述服务器中。对所述通知消息的转发过程,与上述如图4a~图4c所示的过程类似,故在此不再赘述。
转发进程从信息转发设备的连接池中获取服务器连接的方式如图6所示,在图6中,假设连接池中存储三条服务器连接:连接一~连接三,转发进程会顺序读取该连接池中的各条连接,为形象表示,假设在图6中,转发进程从连接一开始读取,并逐个向右遍历读取连接二至三,直到读取到符合条件的服务器连接,该转发进程便会获取该服务器连接,用以转发通知消息。
考虑到实际应用中,对于某一款应用而言,开发者通常会使用其客户端在不同的时期生成不同的通知消息,如:版本更新通知、新增业务通知等,某些应用的通知消息的频率较高,相应的,该通知消息的数字证书ID所对应的服务器连接的使用频率较高。在这样的情况下,假设信息转发设备在一段时间内频繁地接收到具有某一数字证书ID的通知消息,而该数字证书ID对应的服务器连接在连接池中排列在后端(类似于图6中“连接三”所在的位置),也即,转发进程每次转发具有该数字证书ID的通知消息时,都需要遍历读取多个服务器连接后,才会获取到相应的服务器连接,尤其在实际应用中,信息转发设备的连接池中,可能存储有成百上千条服务器连接,若仍采用逐个遍历读取的方式,那么必然会降低读取服务器连接的效率。
因此,为了提升信息转发设备中的连接池的利用效率,作为本发明实施例中的一种优选方式,所述服务器连接具体为最近最少使用(Least Recently Used,LRU)连接。
仍以图6为例,假设信息转发设备的连接池中存储的是3条LRU连接,即:连接一~连接三。这3条LRU连接分别对应数字证书ID:ID1~ID3。并假设一段时间内,该信息转发设备分别接收到多批通知消息,其所对应的数字证书ID为:ID2、ID3、ID2、ID3、ID1。转发进程将逐批次地处理这些通知消息,具体地:
第一批通知消息:转发进程将在连接池中读取与ID2对应的LRU连接,也即,连接二,并且,考虑到后续极有可能还会出现携带有ID2的通知消息,从而,连接池中的各连接的排列将变为:
连接二,连接一,连接三。
第二批通知消息:转发进程在连接池中,读取与ID3对应的LRU连接,也即,连接三,连接池中的各连接的排列将变为:
连接三,连接二,连接一。
第三批通知消息:转发进程在连接池中获取与ID2对应的连接二,连接池中的各连接的排列将变为:
连接二,连接三,连接一。
第四批通知消息:转发进程在连接池中获取与ID3对应的连接三,连接池中的各连接的排列将变为:
连接三,连接二,连接一。
第五批通知消息:转发进程在连接池中获取与ID1对应的连接一,连接池中的各连接的排列将变为:
连接一,连接三,连接二。
通过上例可见,采用LRU连接的方式,在转发进程每一次从连接池中获取了相应的服务器连接后,连接池中的各服务器连接的排列顺序都会发生一定的变化,也即,被转发进程获取的服务器连接,将排列在连接池的前端,使得信息转发设备再次接收到相同数字证书ID的通知消息时,转发进程在连接池中遍历较少的次数,就可以读取到相应的服务器连接。尤其对于实际应用中连接池内存储大量服务器连接的情况,这样的方式将有效提升对服务器连接的读取效率。
当然,如果信息转发设备接收到一批携带有新的数字证书ID的通知消息(也即,连接池中没有与该数字证书ID对应的服务器连接),那么,信息转发设备将根据该数字证书ID,在建立与该数字证书对应的服务器连接,并存储在连接池中。
具体地,沿用上例,假设连接池中的各连接的排列为:
连接一,连接三,连接二。
此时,信息转发设备接收到携带有ID4的通知消息,那么,相应的进程将根据该ID4建立新的服务器连接,假设为:连接四。建立完成的该连接四将被存储在连接池中,并等待转发进程的读取,那么,当前时刻,连接池中的状态如图7所示。也即,在连接池中,连接四将排列在其他三条连接之前。
所以,根据上述内容以及示例可知,在本发明实施例中,从所述连接池中获取与该数字证书ID对应的连接,具体为:判断所述连接池中是否含有与所述通知消息的数字证书ID对应的服务器连接,若是,则在连接池中,将与所述通知消息的数字证书ID对应的服务器连接排列至最前,并获取该服务器连接作为与该通知消息的数字证书ID对应的服务器连接;否则,则根据所述数字证书ID,建立与该数字证书ID对应的服务器连接,存储在连接池中,并将该服务器连接排列至最前,获取该服务器连接作为与该通知消息的数字证书ID对应的服务器连接。
这里需要说明的是,在上述建立服务器连接时,还需考虑当前时刻连接池是否已经饱和,若连接池饱和,则不能存储新建立的服务器连接。因此,在建立服务器连接时,需要判断所述连接池中的服务器连接数量是否饱和,若是,则将所述连接池中指定时段内使用次数最少的服务器连接释放,建立与所述数字证书ID对应的服务器连接,并存储;否则,则直接建立与所述数字证书ID对应的服务器连接并存储。
继续沿用图7为例,假设在图7所示的场景下,连接池最大可容纳4条服务器连接(图7中,连接池已经饱和),此时,信息转发设备接收到携带有ID5的通知消息,显然,当前连接池中没有服务器连接与ID5对应,因此,将建立对应于ID5的服务器连接,即:连接五。
由于连接池已经饱和,那么,将删除连接池中使用次数最少的服务器连接。在图7中可见,连接二排列在最后,表明在这一段时间内,连接二未被读取,因此,将该连接二从连接池中释放。并将新建立的连接五存储在该连接池中,也即,如图8所示。
如图9所示,结合上述方法及应用实例,在本发明中,图3中的信息发送方法S301~S304的实际应用如下:
S901,信息转发设备预先确定接收到的通知消息中包含的数字证书ID。
S902,信息转发设备预先判断连接池中的服务器连接数量是否饱和,若是,执行步骤S903;否则,执行步骤S904。
S903,将连接池中指定时段内使用次数最少的服务器连接释放,建立与数字证书ID对应的服务器连接,并存储。
S904,建立与数字证书ID对应的服务器连接并存储。
S905,信息转发设备确定通知消息的数字证书ID,并判断连接池中是否含有与该数字证书ID对应的服务器连接,若是,执行步骤S906;否则,执行步骤S907。
S906,在连接池中,将与该数字证书ID对应的服务器连接排列至最前,并获取该服务器连接作为与该数字证书ID对应的服务器连接。
S907,根据该数字证书ID,建立与该数字证书ID对应的服务器连接,存储在连接池中,并将该服务器连接排列至最前,获取该服务器连接作为与该数字证书ID对应的服务器连接。
S908,信息转发设备将已接收到的所有具有该数字证书ID的通知消息,均添加至所述服务器连接对应的发送窗口中,并将所述通知消息通过所述发送窗口,顺序转发至所述服务器中。
S909,监测服务器的反馈。
S910,当监测到所述服务器反馈错误通知时,根据该错误通知中携带的信息索引,在所述服务器连接的发送窗口内存储的通知消息中,查找与所述信息索引对应的通知消息,作为错误消息。
S911,信息转发设备在所述发送窗口存储的通知消息中,将位于该错误消息所在的发送位置之后的各通知消息进行重发,并将所述错误消息以及位于该错误消息之前的各通知消息删除。
上述方法及应用实例,主要是针对通知消息进行重发的过程。而在实际应用中,信息转发设备使用某一条服务器连接的发送窗口转发通知消息时,可能转发至服务器的通知消息均能处理成功,那么,服务器就不会针对该服务器连接反馈任何错误通知。在这种场景下,存储在发送窗口中的已经转发的各通知消息就会超时,为了不影响信息转发设备的缓存区中等待转发的各通知消息进行转发,故在本发明实施例中,当转发进程通过发送窗口对通知消息进行转发时,均会在转发时刻针对转发的通知消息记录一个时间戳,这样一来,相应的监控进程便可以对发送窗口中的每一个已经转发的通知消息进行时间上的监控。信息转发设备将根据转发通知消息的时间戳和接收到错误消息所用的时间间隔,确定出针对该证书ID的通知消息的时间阈值。从而,若当前发送窗口中的已经转发出通知消息的时间超过时间阈值,仍未接收到服务器反馈的错误通知时,便可以认为,已经转发出去的各通知消息均处理成功,从而,信息转发设备会将该发送窗口中的通知消息都删除。
在本发明中,之所以采用发送窗口的形式转发通知消息,是因为针对某一数字证书ID的通知消息可能转发过快,那么就会消耗大量的处理资源(如:CPU中的处理资源),使得其他转发进程对其他数字证书ID的通知消息进行处理的效率降低,从而采用发送窗口的方式(尤其在发送窗口中的通知消息数量达到一定阈值时),可以有效控制转发进程对处理资源的利用率,保证信息转发设备中的各转发进程可以均衡地利用处理资源,对不同的数字证书ID的通知消息进行转发。此外,通过发送窗口转发通知消息的方式,也可以限制信息转发设备中内存的骤增。
以上为本发明实施例提供的信息发送方法,基于同样的思路,本发明实施例还提供一种信息发送装置。
如图10所示,本发明实施例提供的一种信息发送装置包括:转发模块1001、监测模块1002、查找模块1003以及重发模块1004,其中,
所述转发模块1001,用于通过预先建立的服务器连接,将客户端发送的通知消息转发至服务器。
所述监测模块1002,用于监测所述服务器的反馈。
所述查找模块1003,用于当监测到所述服务器反馈错误通知时,根据该错误通知中携带的信息索引,在所述服务器连接的发送窗口内存储的通知消息中,查找与所述信息索引对应的通知消息,作为错误消息。
所述重发模块1004,用于根据该错误消息,将相应的通知消息通过所述发送窗口重发至所述服务器。
在本发明实施例中,所述重发模块1004,具体用于:在所述发送窗口存储的通知消息中,将位于该错误消息所在的发送位置之后的各通知消息进行重发。
并且,该重发模块1004,还用于:在所述发送窗口存储的通知消息中,将所述错误消息以及位于该错误消息之前的各通知消息删除。
在本发明实施例中,所述转发模块1001,具体用于:预先确定接收到的通知消息中包含的数字证书ID,根据所述通知消息的所述数字证书ID,建立与该数字证书ID对应的服务器连接,并存储在连接池中。
具体地,所述转发模块1001,用于:确定所述通知消息的数字证书ID,从所述连接池中获取与所述数字证书ID对应的服务器连接,将所述客户端发送的具有相同数字证书ID的所述通知消息,添加至所述服务器连接对应的发送窗口中,将所述通知消息通过所述发送窗口,顺序转发至所述服务器中。
更为具体地,所述转发模块1001,用于:判断所述连接池中是否含有与所述通知消息的数字证书ID对应的服务器连接,若是,则在连接池中,将与所述通知消息的数字证书ID对应的服务器连接排列至最前,并获取该服务器连接作为与该通知消息的数字证书ID对应的服务器连接;否则,则根据所述数字证书ID,建立与该数字证书ID对应的服务器连接,存储在连接池中,并将该服务器连接排列至最前,获取该服务器连接作为与该通知消息的数字证书ID对应的服务器连接。
并且,该转发模块1001,用于:判断所述连接池中的服务器连接数量是否饱和,若是,则将所述连接池中指定时段内使用次数最少的服务器连接释放,建立与所述数字证书ID对应的服务器连接,并存储;否则,则直接建立与所述数字证书ID对应的服务器连接并存储。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (8)
1.一种信息发送方法,其特征在于,该方法包括:
信息转发设备通过预先建立的服务器连接,将客户端发送的通知消息转发至服务器;
所述信息转发设备监测所述服务器的反馈;
当监测到所述服务器反馈错误通知时,根据该错误通知中携带的信息索引,在所述服务器连接的发送窗口内存储的通知消息中,查找与所述信息索引对应的通知消息,作为错误消息;
所述信息转发设备在所述发送窗口存储的通知消息中,将位于该错误消息所在的发送位置之后的各通知消息通过所述发送窗口重发至所述服务器;
所述信息转发设备在所述发送窗口存储的通知消息中,将所述错误消息以及位于该错误消息之前的各通知消息删除;
所述信息转发设备通知所述客户端对所述错误消息进行修正,并将所述客户端修正后的所述错误消息转发至所述服务器。
2.如权利要求1所述的方法,其特征在于,预先建立服务器连接,具体包括:
所述信息转发设备预先确定接收到的通知消息中包含的数字证书ID;
根据所述通知消息的所述数字证书ID,建立与该数字证书ID对应的服务器连接,并存储在连接池中;
以及,
将客户端发送的通知消息转发至服务器,具体包括:
确定所述通知消息的数字证书ID;
从连接池中获取预先建立的与所述数字证书ID对应的服务器连接;
将所述客户端发送的具有相同数字证书ID的所述通知消息,添加至所述服务器连接对应的发送窗口中;
将所述通知消息通过所述发送窗口,顺序转发至所述服务器中。
3.如权利要求2所述的方法,其特征在于,从连接池中获取预先建立的与所述数字证书ID对应的服务器连接,具体包括:
判断所述连接池中是否含有预先建立的与所述通知消息的数字证书ID对应的服务器连接;
若是,则在连接池中,将与所述通知消息的数字证书ID对应的服务器连接排列至最前,并获取该服务器连接作为与该通知消息的数字证书ID对应的服务器连接;
否则,则根据所述数字证书ID,建立与该数字证书ID对应的服务器连接,存储在连接池中,并将该服务器连接排列至最前,获取该服务器连接作为与该通知消息的数字证书ID对应的服务器连接。
4.如权利要求3所述的方法,其特征在于,建立与该数字证书ID对应的服务器连接,存储在连接池中,具体包括:
判断所述连接池中的服务器连接数量是否饱和;
若是,则将所述连接池中指定时段内使用次数最少的服务器连接释放,建立与所述数字证书ID对应的服务器连接,并存储;
否则,则直接建立与所述数字证书ID对应的服务器连接并存储。
5.一种信息发送装置,其特征在于,该装置包括:
转发模块,用于通过预先建立的服务器连接,将客户端发送的通知消息转发至服务器;
监测模块,用于监测所述服务器的反馈;
查找模块,用于当监测到所述服务器反馈错误通知时,根据该错误通知中携带的信息索引,在所述服务器连接的发送窗口内存储的通知消息中,查找与所述信息索引对应的通知消息,作为错误消息;
重发模块,用于在所述发送窗口存储的通知消息中,将位于该错误消息所在的发送位置之后的各通知消息通过所述发送窗口重发至所述服务器;以及在所述发送窗口存储的通知消息中,将所述错误消息以及位于该错误消息之前的各通知消息删除;并通知所述客户端对所述错误消息进行修正,并将所述客户端修正后的所述错误消息转发至所述服务器。
6.如权利要求5所述的装置,其特征在于,所述转发模块,具体用于预先确定接收到的通知消息中包含的数字证书ID,根据所述通知消息的所述数字证书ID,建立与该数字证书ID对应的服务器连接,并存储在连接池中;
以及具体用于确定所述通知消息的数字证书ID,从所述连接池中获取预先建立的与所述数字证书ID对应的服务器连接,将所述客户端发送的具有相同数字证书ID的所述通知消息,添加至所述服务器连接对应的发送窗口中,将所述通知消息通过所述发送窗口,顺序转发至所述服务器中。
7.如权利要求6所述的装置,其特征在于,所述转发模块,具体用于判断所述连接池中是否含有预先建立的与所述通知消息的数字证书ID对应的服务器连接;
若是,则在连接池中,将与所述通知消息的数字证书ID对应的服务器连接排列至最前,并获取该服务器连接作为与该通知消息的数字证书ID对应的服务器连接;
否则,则根据所述数字证书ID,建立与该数字证书ID对应的服务器连接,存储在连接池中,并将该服务器连接排列至最前,获取该服务器连接作为与该通知消息的数字证书ID对应的服务器连接。
8.如权利要求7所述的装置,其特征在于,所述转发模块,具体用于判断所述连接池中的服务器连接数量是否饱和;
若是,则将所述连接池中指定时段内使用次数最少的服务器连接释放,建立与所述数字证书ID对应的服务器连接,并存储;
否则,则直接建立与所述数字证书ID对应的服务器连接并存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510109461.7A CN104767589B (zh) | 2015-03-12 | 2015-03-12 | 一种信息发送方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510109461.7A CN104767589B (zh) | 2015-03-12 | 2015-03-12 | 一种信息发送方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104767589A CN104767589A (zh) | 2015-07-08 |
CN104767589B true CN104767589B (zh) | 2018-08-14 |
Family
ID=53649230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510109461.7A Active CN104767589B (zh) | 2015-03-12 | 2015-03-12 | 一种信息发送方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104767589B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371697B (zh) * | 2016-08-31 | 2019-11-22 | 蒋欣飏 | 一种数字信息转发方法 |
CN107317745A (zh) * | 2017-06-06 | 2017-11-03 | 山东中创软件商用中间件股份有限公司 | 一种消费端与消息代理之间的消息传输方法及装置 |
CN109802995B (zh) * | 2018-12-13 | 2023-04-11 | 深圳壹账通智能科技有限公司 | 消息推送方法、装置、设备及存储介质 |
CN117729055A (zh) * | 2024-02-08 | 2024-03-19 | 中汽智联技术有限公司 | 一种基于Linux进程的网络流量统计的方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056194A (zh) * | 2006-06-30 | 2007-10-17 | 华为技术有限公司 | 一种简单网络管理协议消息传送方法及装置 |
CN101304362A (zh) * | 2007-05-11 | 2008-11-12 | 中芯国际集成电路制造(上海)有限公司 | 重传缓冲装置及传输数据的方法 |
CN102694632A (zh) * | 2012-04-19 | 2012-09-26 | 哈尔滨工业大学深圳研究生院 | 基于中继存储-转发的深空文件传输方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267241A (zh) * | 2007-03-15 | 2008-09-17 | 华为技术有限公司 | 一种中继网络中的自动重传请求方法、系统及中继站 |
CN103167491B (zh) * | 2011-12-15 | 2016-03-02 | 上海格尔软件股份有限公司 | 一种基于软件数字证书的移动终端唯一性认证方法 |
CN103532822B (zh) * | 2012-07-02 | 2016-12-21 | 北京神州泰岳软件股份有限公司 | 消息投递的管理方法、服务器和系统 |
CN104168269B (zh) * | 2014-07-24 | 2016-05-04 | 深圳市腾讯计算机系统有限公司 | 安全连接建立方法、装置及系统 |
-
2015
- 2015-03-12 CN CN201510109461.7A patent/CN104767589B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056194A (zh) * | 2006-06-30 | 2007-10-17 | 华为技术有限公司 | 一种简单网络管理协议消息传送方法及装置 |
CN101304362A (zh) * | 2007-05-11 | 2008-11-12 | 中芯国际集成电路制造(上海)有限公司 | 重传缓冲装置及传输数据的方法 |
CN102694632A (zh) * | 2012-04-19 | 2012-09-26 | 哈尔滨工业大学深圳研究生院 | 基于中继存储-转发的深空文件传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104767589A (zh) | 2015-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9742721B2 (en) | Method, system, server and client device for message synchronizing | |
CN104767589B (zh) | 一种信息发送方法及装置 | |
CN108287751B (zh) | 任务执行方法及装置、分布式系统 | |
CN103916482A (zh) | 一种基于sqlite的数据同步传输方法 | |
CN107196848B (zh) | 消息推送方法及装置 | |
CN104092717A (zh) | 消息处理方法及系统、消息目的端设备与分布式消息系统 | |
CN103078791A (zh) | Oam报文处理方法、设备及系统 | |
CN110162512A (zh) | 一种日志检索方法、装置及存储介质 | |
CN106569934B (zh) | 一种应用日志显示方法及装置 | |
CN105577480A (zh) | 一种网络连接性能的监测方法及装置 | |
CN107908481A (zh) | 一种数据同步方法、装置和系统 | |
CN105281940B (zh) | 一种基于netconf协议的hello报文交互的方法、设备和系统 | |
CN108833961B (zh) | 获取飞行记录数据的方法、服务器和系统 | |
CN111884769B (zh) | 消息同步方法及装置 | |
CN107609197A (zh) | 一种数据同步方法、数据同步装置及移动终端 | |
CN107577822A (zh) | 一种数据同步方法、数据同步装置及移动终端 | |
CN105488199B (zh) | 混合表单处理方法、装置以及移动终端 | |
CN104079663A (zh) | 分布式实时同步网络系统及其通告数据的方法 | |
CN106341449A (zh) | 数据同步方法及装置 | |
CN110022323A (zh) | 一种基于WebSocket与Redux的跨终端实时交互的方法和系统 | |
CN108040000B (zh) | 一种信息传送方法及设备 | |
CN112291254B (zh) | 一种用于可靠交易的消息处理方法及装置 | |
CN107835243A (zh) | 一种数据传输方法、系统、电子设备及存储介质 | |
CN104516883A (zh) | 一种网页共享方法、装置及系统 | |
CN110233747B (zh) | 一种数据上报方法及云平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230317 Address after: Room 501-502, 5/F, Sina Headquarters Scientific Research Building, Block N-1 and N-2, Zhongguancun Software Park, Dongbei Wangxi Road, Haidian District, Beijing, 100193 Patentee after: Sina Technology (China) Co.,Ltd. Address before: 100080, International Building, No. 58 West Fourth Ring Road, Haidian District, Beijing, 20 floor Patentee before: Sina.com Technology (China) Co.,Ltd. |
|
TR01 | Transfer of patent right |