一种信息发送方法及装置的制造方法_3

文档序号:8447288阅读:来源:国知局
户端修正后的通知消息m3转发给服务器。当然,这里并不构成对本发明的限定。
[0066]如图5b所示,在本发明实施例中,将上述通知消息ml、m2以及错误消息m3删除后,该发送窗口中未删除的通知消息(m4?m6)将自动挤位,也即,通知消息m4?m6将各向左移动两个发送位置。此时,在信息转发设备的缓存区中,还存储有等待转发的通知消息m7和m8,那么,相应的转发进程会将通知消息m7和m8添加至该发送窗口中。之后,转发进程还会将发送指针调整至通知消息m4所在的发送位置处,以便发送当前的发送窗口中的各通知消息。
[0067]当然,倘若该信息转发设备中除上述通知消息ml?m6之外,没有其他相同数字证书ID的通知消息,则不向该发送窗口中添加。这是因为,在本发明实施例中,信息转发设备中的各服务器连接分别对应一个数字证书ID,也即,一条服务器连接只负责发送同一数字证书ID的通知消息。
[0068]需要说明的是,对于发送窗口中的发送位置的数量(也即,发送窗口存储通知消息的数量),可根据实际应用的需要进行调节,如:在具有大量通知消息待转发的情况下,可以增加每一条服务器连接的发送窗口中的发送位置数量,使得发送窗口中存储较多通知消息进行发送;而在通知消息较少的情况下,可以减少发送窗口的窗口数量。这里并不构成对本发明的限定。
[0069]可见,本发明实施例中,正是由于发送窗口在将通知消息进行转发后,不立即删除已经转发的通知消息,从而,信息转发设备不仅可根据服务器反馈的错误通知中携带的信息索引,直接在发送窗口中查找出错消息,并且,还会对该错误消息之后可能被服务器拒绝处理的各通知消息进行重发,有效提升了对通知消息进行重发的准确性,避免了通知消息被遗漏的情况。
[0070]还需要说明的是,在现有技术中,当信息转发设备根据服务器反馈的错误通知查找到错误消息后,会断开该错误消息对应的服务器连接,对该错误消息之后的通知消息进行重发时,信息转发设备通常需要重新与服务器建立连接,而频繁的建立或断开服务器连接,极有可能触发服务器自身的安全保护机制,服务器会标识出该服务器连接对应的连接标识,并在一定时间内拒绝含有该连接标识的连接建立请求,从而导致不能发送携带有该数字证书ID的通知消息。
[0071]因此,在本发明实施例中,信息转发设备采用预先建立服务器连接并存储在连接池中的方式,避免频繁地针对通知消息建立或断开服务器连接,也即,预先建立服务器连接,具体为:所述信息转发设备预先确定接收到的通知消息中包含的数字证书ID,根据所述通知消息的所述数字证书ID,建立与该数字证书ID对应的服务器连接,并存储在连接池中。
[0072]其中,上述的通知消息是指,信息设备接收到的携带有该数字证书ID的首个通知消息,也即,在该通知消息之前,信息转发设备中从未接收到含有该数字证书ID的通知消息,也从未建立过与该数字证书ID对应的服务器连接。
[0073]也就是说,当信息转发设备预先根据接收到的任一通知消息所携带的数字证书ID建立对应的服务器连接后,均会将服务器连接存放在连接池中。对于信息转发设备中的转发进程而言,存储在连接池中的各服务器连接都处于可读状态,也就是说,各服务器连接都保持与服务器的正常连接状态,那么,当需要对通知消息进行转发时,转发进程便可以直接从该连接池中获取一条与通知消息携带的数字证书ID对应的服务器连接,转发该通知消息。从而有效降低了针对通知消息建立服务器连接的频率,可有效地避免出发服务器自身的安全保护机制。
[0074]在本发明实施例中,相应的转发进程对通知消息的转发过程具体为:确定所述通知消息的数字证书ID,从所述连接池中获取与所述数字证书ID对应的服务器连接,将所述客户端发送的具有相同数字证书ID的所述通知消息,添加至所述服务器连接对应的发送窗口中,将所述通知消息通过所述发送窗口,顺序转发至所述服务器中。对所述通知消息的转发过程,与上述如图4a?图4c所示的过程类似,故在此不再赘述。
[0075]转发进程从信息转发设备的连接池中获取服务器连接的方式如图6所示,在图6中,假设连接池中存储三条服务器连接:连接一?连接三,转发进程会顺序读取该连接池中的各条连接,为形象表示,假设在图6中,转发进程从连接一开始读取,并逐个向右遍历读取连接二至三,直到读取到符合条件的服务器连接,该转发进程便会获取该服务器连接,用以转发通知消息。
[0076]考虑到实际应用中,对于某一款应用而言,开发者通常会使用其客户端在不同的时期生成不同的通知消息,如:版本更新通知、新增业务通知等,某些应用的通知消息的频率较高,相应的,该通知消息的数字证书ID所对应的服务器连接的使用频率较高。在这样的情况下,假设信息转发设备在一段时间内频繁地接收到具有某一数字证书ID的通知消息,而该数字证书ID对应的服务器连接在连接池中排列在后端(类似于图6中“连接三”所在的位置),也即,转发进程每次转发具有该数字证书ID的通知消息时,都需要遍历读取多个服务器连接后,才会获取到相应的服务器连接,尤其在实际应用中,信息转发设备的连接池中,可能存储有成百上千条服务器连接,若仍采用逐个遍历读取的方式,那么必然会降低读取服务器连接的效率。
[0077]因此,为了提升信息转发设备中的连接池的利用效率,作为本发明实施例中的一种优选方式,所述服务器连接具体为最近最少使用(Least Recently Used, LRU)连接。
[0078]仍以图6为例,假设信息转发设备的连接池中存储的是3条LRU连接,即:连接一?连接三。这3条LRU连接分别对应数字证书ID:ID1?ID3。并假设一段时间内,该信息转发设备分别接收到多批通知消息,其所对应的数字证书ID为:ID2、ID3、ID2、ID3、ID1。转发进程将逐批次地处理这些通知消息,具体地:
[0079]第一批通知消息:转发进程将在连接池中读取与ID2对应的LRU连接,也即,连接二,并且,考虑到后续极有可能还会出现携带有ID2的通知消息,从而,连接池中的各连接的排列将变为:
[0080]连接二,连接一,连接三。
[0081]第二批通知消息:转发进程在连接池中,读取与ID3对应的LRU连接,也即,连接三,连接池中的各连接的排列将变为:
[0082]连接三,连接二,连接一。
[0083]第三批通知消息:转发进程在连接池中获取与ID2对应的连接二,连接池中的各连接的排列将变为:
[0084]连接二,连接三,连接一。
[0085]第四批通知消息:转发进程在连接池中获取与ID3对应的连接三,连接池中的各连接的排列将变为:
[0086]连接三,连接二,连接一。
[0087]第五批通知消息:转发进程在连接池中获取与IDl对应的连接一,连接池中的各连接的排列将变为:
[0088]连接一,连接三,连接二。
[0089]通过上例可见,采用LRU连接的方式,在转发进程每一次从连接池中获取了相应的服务器连接后,连接池中的各服务器连接的排列顺序都会发生一定的变化,也即,被转发进程获取的服务器连接,将排列在连接池的前端,使得信息转发设备再次接收到相同数字证书ID的通知消息时,转发进程在连接池中遍历较少的次数,就可以读取到相应的服务器连接。尤其对于实际应用中连接池内存储大量服务器连接的情况,这样的方式将有效提升对服务器连接的读取效率。
[0090]当然,如果信息转发设备接收到一批携带有新的数字证书ID的通知消息(也即,连接池中没有与该数字证书ID对应的服务器连接),那么,信息转发设备将根据该数字证书ID,在建立与该数字证书对应的服务器连接,并存储在连接池中。
[0091]具体地,沿用上例,假设连接池中的各连接的排列为:
[0092]连接一,连接三,连接二。
[0093]此时,信息转发设备接收到携带有ID4的通知消息,那么,相应的进程将根据该ID4建立新的服务器连接,假设为:连接四。建立完成的该连接四将被存储在连接池中,并等待转发进程的读取,那么,当前时刻,连接池中的状态如图7所示。也即,在连接池中,连接四将排列在其他三条连接之前。
[0094]所以,根据上
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1