CN104980479A - 一种文件预推送方法、相关服务器及系统 - Google Patents

一种文件预推送方法、相关服务器及系统 Download PDF

Info

Publication number
CN104980479A
CN104980479A CN201410424311.0A CN201410424311A CN104980479A CN 104980479 A CN104980479 A CN 104980479A CN 201410424311 A CN201410424311 A CN 201410424311A CN 104980479 A CN104980479 A CN 104980479A
Authority
CN
China
Prior art keywords
file
server
push
index
cache
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
CN201410424311.0A
Other languages
English (en)
Other versions
CN104980479B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201410424311.0A priority Critical patent/CN104980479B/zh
Publication of CN104980479A publication Critical patent/CN104980479A/zh
Application granted granted Critical
Publication of CN104980479B publication Critical patent/CN104980479B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/4061Push-to services, e.g. push-to-talk or push-to-video
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例公开了文件预推送方法,包括:接收文件推送通知指令,文件推送通知指令用于指示将第一文件推送到第一服务器;根据文件推送通知指令和文件推送记录判断第一文件是否已被推送到第一服务器;当判断结果为否时,则查询第一服务器中的已缓存文件索引,检测第一文件是否存在第一服务器中;已缓存文件索引包括当前缓存在第一服务器中的文件信息;当检测结果为是时,则不执行将第一文件推送到第一服务器;采用本发明,降低网络流量成本,且避免每次推送都用信令到对点查询,解决了现有技术中造成的预推送重复文件的流量成本的浪费,或者需要消耗大量信令到对点进行查询的技术问题。

Description

一种文件预推送方法、相关服务器及系统
技术领域
本发明涉及计算机互联网领域,尤其涉及一种文件预推送方法、相关服务器及系统。
背景技术
随着电子科技以及移动互联网的发展,电子终端(特别是智能移动终端)的功能越来越强大,只要用户按照自身的需求在电子终端上安装各种即时通信应用程序,便可以向好友发送消息内容,与好友进行交流。
用户使用即时通信类聊天应用(Application,APP),进行聊天时,会发送比如图片、视频等文件。为了高质量的服务不同国家地区用户,会在对应的国家或地区部署服务器,称为就近服务点,由就近服务点缓存文件。发送文件时,用户上传到就近服务点,接收文件时,用户从就近服务点下载。当聊天用户处于不同就近服务点时,为了文件接收方能在就近服务点下载,需要实时将文件从发送方的就近服务点,由聊天类实时文件加速系统通过加速网络,预推送到接收方就近服务点,当接收方用户下载时,就能在就近服务点找到文件快速下载,避免回源数据中心。
然而现有技术中,在通过加速网络预推送文件时,往往没有考虑做排重,而是预推送大量重复的文件,或者使用大量信令发送给对点查询文件是否存在,造成预推送重复文件的流量成本的浪费,或者需要消耗大量信令到对点进行查询;而且,在节日高峰时段视频大文件发送量激增,容易导致加速网络流量负载激增,超过上限,触发开启推送柔性措施,不推送视频,在接收方下载时,如果就近服务点无视频文件,那么需要回源,从而导致接收方下载时延增加。
发明内容
本发明实施例所要解决的技术问题在于,提供一种文件预推送方法、相关服务器及系统,解决了现有技术中造成的预推送重复文件的流量成本的浪费,或者需要消耗大量信令到对点进行查询的技术问题。
为了解决上述技术问题,本发明实施例第一方面公开了一种文件预推送方法,包括
接收文件推送通知指令,所述文件推送通知指令用于指示将第一文件推送到第一服务器;
根据所述文件推送通知指令和文件推送记录判断所述第一文件是否已被推送到所述第一服务器;所述文件推送记录包括已完成推送的文件信息;
当判断结果为否时,查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中;所述已缓存文件索引包括当前缓存在所述第一服务器中的文件信息;
当检测结果为是时,则不执行将所述第一文件推送到所述第一服务器。
本发明实施例第二方面公开了一种文件预推送方法,包括:
接收推送服务器推送的第一文件;所述第一文件为所述推送服务器通过上述第一方面所述的方法而推送的第一文件;
获取客户端发送的文件下载请求信息,根据所述文件下载请求信息将所述第一文件发送给所述客户端。
本发明实施例第三方面公开了一种推送服务器,包括:
指令接收模块,用于接收到文件推送通知指令,所述文件推送通知指令用于指示将第一文件推送到第一服务器;
判断模块,用于根据所述文件推送通知指令和文件推送记录判断所述第一文件是否已被推送到所述第一服务器;所述文件推送记录包括已完成推送的文件信息;
检测模块,用于当所述判断模块的判断结果为否时,查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中;所述已缓存文件索引包括当前缓存在所述第一服务器中的文件信息;
检测处理模块,用于当所述检测模块的检测结果为是时,则不执行将所述第一文件推送到所述第一服务器。
本发明实施例第四方面公开了一种服务器,包括:
推送文件接收模块,用于接收推送服务器推送的第一文件;所述推送服务器为上述第三方面所述的推送服务器;
下载请求获取模块,用于获取客户端发送的文件下载请求信息;
文件发送模块,用于根据所述文件下载请求信息将所述第一文件发送给所述客户端。
本发明实施例第五方面公开了一种文件预推送系统,包括推送服务器和第一服务器,其中
所述推送服务器为上述第三方面所述的推送服务器;
所述第一服务器为上述第四方面所述的服务器。
本发明实施例第六方面公开了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序执行时包括本发明实施例第一方面中公开的文件预推送方法的全部步骤。
本发明实施例第七方面公开了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序执行时包括本发明实施例第二方面中公开的文件预推送方法的全部步骤。
实施本发明实施例,具有如下有益效果:
先通过本端的文件推送记录判断文件是否已被推送到第一服务器,若判断已被推送则不执行再推送,若判断没有被推送则查询第一服务器中的已缓存文件索引,检测所要推送的文件是否缓存在第一服务器中,若有缓存则不执行推送,若没有缓存则将文件推送到第一服务器,避免了推送重复文件,降低网络流量成本,且避免每次推送都用信令到对点查询,解决了现有技术中造成的预推送重复文件的流量成本的浪费,或者需要消耗大量信令进行查询的技术问题,而且在节日高峰时段,无需开启柔性措施,避免接收方需要回源产生的下载时延增加的问题,大大降低了接收方下载文件的时延。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的文件预推送方法的流程示意图;
图2是本发明提供的文件预推送方法的另一实施例的流程示意图;
图3是本发明提供的文件预推送方法的另一实施例的流程示意图;
图4是本发明提供的文件预推送方法的另一实施例的流程示意图;
图5是本发明实施例提供的推送服务器的结构示意图;
图6是本发明提供的推送服务器的另一实施例的结构示意图;
图7是本发明提供的判断模块的结构示意图;
图8是本发明提供的检测模块的结构示意图;
图9是本发明提供的另一实施例的推送服务器的结构示意图;
图10是本发明提供的服务器的结构示意图;
图11是本发明提供的服务器的另一实施例的结构示意图;
图12是本发明提供的服务器的另一实施例的结构示意图;
图13是本发明提供的另一实施例的服务器的结构示意图;
图14是本发明提供的文件预推送系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明实施例提供的文件预推送方法的流程示意图,从推送服务器侧来描述本发明实施例文件预推送方法的技术方案,该方法包括:
步骤S100:接收文件推送通知指令,所述文件推送通知指令用于指示将第一文件推送到第一服务器;
具体地,推送服务器可以接收发送方直接发送的文件推送通知指令,或者发送方先将第一文件上传到该发送方就近的第二服务器(即发送方的就近服务点),该推送服务器接收第二服务器发送的文件推送通知指令,该文件推送通知指令为该第二服务器接收到客户端上传的第一文件后推送服务器发送的指令,用于指示将第一文件推送到第一服务器(即接收方的就近服务点);
可理解的是,本发明各个实施例中的第一服务器为下载发送方发送该第一文件的接收方对应的就近服务点;本发明各个实施例中的第一文件包括但不限于视频文件、音频文件、图片等多媒体文件。
步骤S102:根据所述文件推送通知指令和文件推送记录判断所述第一文件是否已被推送到所述第一服务器;
具体地,该文件推送记录包括已完成推送的文件信息,即推送服务器在完成文件的推送时都记录该文件被推送时的文件信息;当判断结果为否时,执行步骤S104;当判断结果为是时,即该推送服务器之前已经将该第一文件推送到该第一服务器,那么执行步骤S108,或者还可以执行其他的判断来进一步该第一文件是否被推送到该第一服务器,本发明实施例不作限定;
步骤S104:查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中;
具体地,该已缓存文件索引包括当前缓存在该第一服务器中的文件信息,该第一服务器针对缓存的文件建立该已缓存文件索引,并维护更新该已缓存文件索引,即可以根据缓存大小删除最早接收到的推送文件,然后在该已缓存文件索引中删除该早接收到的推送文件对应的唯一标识,例如缓存不够需要删除一部分文件时,可以删除最早接收到的推送文件;当检测结果为是时,即通过查询该第一服务器中的已缓存文件索引,检测出该第一文件存在该第一服务器中,则执行步骤S108,否则执行步骤S106;
步骤S106:根据所述文件推送通知指令将所述第一文件推送到所述第一服务器;
具体地,本发明实施例的步骤S106还可以为再执行其他的判断或检测来进一步该第一文件是否被推送到该第一服务器,并在最后获知该第一文件没有被推送到第一服务器时,根据文件推送通知指令将该第一文件推送到该第一服务器,本发明实施例不作限定;
步骤S108:不执行将所述第一文件推送到所述第一服务器。
实施本发明实施例,先通过本端的文件推送记录判断文件是否已被推送到第一服务器,若判断已被推送则不执行再推送,若判断没有被推送则查询第一服务器中的已缓存文件索引,检测所要推送的文件是否缓存在第一服务器中,若有缓存则不执行推送,若没有缓存则将文件推送到第一服务器,避免了推送重复文件,降低网络流量成本,且避免每次推送都用信令到对点查询,解决了现有技术中造成的预推送重复文件的流量成本的浪费,或者需要消耗大量信令进行查询的技术问题。
进一步地,如图2示出的本发明提供的文件预推送方法的另一实施例的流程示意图,本发明实施例中的文件推送记录可以为已推送文件索引,该方法包括:
步骤S200:根据预设算法生成已完成推送的文件对应的唯一标识;
具体地,推送服务器将文件推送到某服务器后,可以利用消息摘要算法第五版(Message Digest Algorithm,MD5)或安全散列算法(Secure Hash Algorithm,SHA)算法等算法,将文件生成对应的唯一标识。
步骤S202:将所述已完成推送的文件对应的唯一标识以及推送的目的服务器记录在所述已推送文件索引中;
步骤S204:接收文件推送通知指令;
具体地,可以参考上述图1实施例中的步骤S100;这里不再赘述。
步骤S206:根据所述预设算法生成所述第一文件对应的唯一标识;
具体地,推送服务器根据步骤S200中采用的预设算法生成该第一文件对应的唯一标识。
步骤S208:查看所述第一文件对应的唯一标识是否存在于所述已推送文件索引中;
具体地,当查看到该第一文件对应的唯一标识存在于该已推送文件索引中,则判断出该第一文件已被推送到该第一服务器,执行步骤S214;当查看到该第一文件对应的唯一标识不存在于该已推送文件索引中,则判断出该第一文件没有被推送到该第一服务器,执行步骤S210。
步骤S210:查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中;
具体地,当检测结果为是时,则执行步骤S214,否则执行步骤S212。
步骤S212:根据所述文件推送通知指令将所述第一文件推送到所述第一服务器;
具体地,步骤S210至步骤S212可以参考上述图1实施例中步骤S104至步骤S106,这里不再赘述。
步骤S214:不执行将所述第一文件推送到所述第一服务器。
再进一步地,如图3示出的本发明提供的文件预推送方法的另一实施例的流程示意图,本发明实施例中的文件推送记录还可以包括已完成推送文件对应的推送时间,该方法包括:
步骤S300:根据预设算法生成已完成推送的文件对应的唯一标识;
步骤S302:将所述已完成推送的文件对应的唯一标识以及推送的目的服务器记录在所述已推送文件索引中;
步骤S304:接收文件推送通知指令;
步骤S306:根据所述预设算法生成所述第一文件对应的唯一标识;
具体地,步骤S300至步骤S306可以参考上述图2实施例中的步骤S200至步骤S206,这里不再赘述。
步骤S308:查看所述第一文件对应的唯一标识是否存在于所述已推送文件索引中;
具体地,当查看结果为是时,执行步骤S310;当查看结果为否时,则判断出该第一文件没有被推送到该第一服务器,执行步骤S312;
步骤S310:检查所述第一文件对应的推送时间是否超过预设的推送期限;
具体地,本发明实施例中的文件推送记录还可以包括已完成推送文件对应的推送时间,即推送服务器可以按需求设置推送期限,比如可以针对就近服务器的缓存大小来设置推送期限(即推送过期时间),比如2天、3天等;当该推送服务器根据该第一文件被推送时的推送时间,以及当前时间来检查该第一文件是否超过了预设的推送期限,当检查结果为是时,则判断出所述第一文件没有被推送到所述第一服务器,执行步骤S312;当检查结果为否时,则判断出所述第一文件已被推送到所述第一服务器;执行步骤S316。
步骤S312:查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中;
步骤S314:根据所述文件推送通知指令将所述第一文件推送到所述第一服务器;
具体地,步骤S312至步骤S314可以参考上述图1实施例中步骤S104至步骤S106,这里不再赘述。
步骤S316:不执行将所述第一文件推送到所述第一服务器。
再进一步地,本发明各个实施例中查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中可以包括:
推送服务器向该第一服务器发送查询指令;该查询指令用于指示该第一服务器查询已缓存文件索引;接收该第一服务器返回的查询结果信息;该查询结果信息包括该第一服务器根据该查询指令,查询该第一文件是否存在已缓存文件索引中;根据该查询结果信息检测出该第一文件是否存在该第一服务器中。
为了便于更好地实施本发明实施例的上述方案,下面从就近服务器侧来描述本发明文件预推送方法的技术方案,如图4示出的本发明提供的文件预推送方法的另一实施例的流程示意图,包括:
步骤S400:接收推送服务器推送的第一文件;
具体地,服务器接收到推送服务器推送的第一文件,该第一文件为推送服务器通过上述图1至图3任意实施例中的推送方法而推送的第一文件;
步骤S402:获取客户端发送的文件下载请求信息,根据所述文件下载请求信息将所述第一文件发送给所述客户端。
具体地,服务器根据客户端发送的文件下载请求信息,向客户端发送该第一文件,客户端下载该第一文件。
进一步地,本发明实施例中服务器在接收推送服务器推送的第一文件之前,建立已缓存文件索引,具体可以包括:接收并缓存推送服务器推送的文件,将该文件对应的唯一标识记录在已缓存文件索引中;并可以根据缓存大小删除最早接收到的推送文件,并在该已缓存文件索引中删除该早接收到的推送文件对应的唯一标识。
具体地,该已缓存文件索引记录有当前缓存的所有推送文件各自对应的唯一标识;该文件对应的唯一标识为根据预设算法生成的该文件对应的唯一标识;该预设算法为推送服务器端采用的算法,可以包括MD5或SHA算法等;且服务器可以根据自身缓存大小来删除推送文件,比如当缓存不够需要删除一部分文件时,可以删除最早接收到的推送文件,并在该已缓存文件索引中删除该早接收到的推送文件对应的唯一标识,以维护更新该已缓存文件索引。
再进一步地,在步骤S400之前,还可以包括:服务器接收该推送服务器发送的查询指令;根据该查询指令查询该第一文件对应的唯一标识是否存在该已缓存文件索引中,并生成查询结果信息;将该查询结果信息发送给该推送服务器。
具体地,推送服务器需要查询要推送的第一文件是否存在于该服务器的缓存中,那么向该服务器发送查询指令,该服务器根据查询指令在已缓存文件索引中进行查询,看该第一文件是否存在于缓存中,并将查询结果信息返回该推送服务器。
需要说明的是,本发明图4实施例中的具体实施方式可以对应参考图1至图3实施例中的描述,这里不再赘述。
通过实施本发明实施例,先通过本端的文件推送记录判断文件是否已被推送到第一服务器,若判断已被推送则不执行再推送,若判断没有被推送则查询第一服务器中的已缓存文件索引,检测所要推送的文件是否缓存在第一服务器中,若有缓存则不执行推送,若没有缓存则将文件推送到第一服务器,避免了推送重复文件,降低网络流量成本,且避免每次推送都用信令到对点查询,解决了现有技术中造成的预推送重复文件的流量成本的浪费,或者需要消耗大量信令进行查询的技术问题,而且在节日高峰时段,无需开启柔性措施,避免接收方需要回源产生的下载时延增加的问题,大大降低了接收方下载文件的时延。
为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种推送服务器,如图5示出的本发明实施例提供的推送服务器的结构示意图,推送服务器50可以包括:指令接收模块500、判断模块502、判断处理模块504、检测模块506和检测处理模块508,其中
指令接收模块500用于接收到文件推送通知指令,所述文件推送通知指令用于指示将第一文件推送到第一服务器;
判断模块502用于根据所述文件推送通知指令和文件推送记录判断所述第一文件是否已被推送到所述第一服务器;所述文件推送记录包括已完成推送的文件信息;
检测模块506用于当判断模块502的判断结果为否时,查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中;所述已缓存文件索引包括当前缓存在所述第一服务器中的文件信息;
检测处理模块508用于当检测模块506的检测结果为是时,则不执行将所述第一文件推送到所述第一服务器。
具体地,本发明实施例中的推送服务器50还可以包括判断处理模块504用于当判断模块502的判断结果为是时,不执行将所述第一文件推送到所述第一服务器;
并且,检测处理模块508还可以用于当检测模块506的检测结果为否时,则根据所述文件推送通知指令将所述第一文件推送到所述第一服务器。
再具体地,文件推送记录为已推送文件索引,如图6示出的本发明提供的推送服务器的另一实施例的结构示意图,推送服务器50包括指令接收模块500、判断模块502、判断处理模块504、检测模块506和检测处理模块508外,还可以包括索引建立模块5010,用于在判断模块502根据文件推送记录判断所述第一文件是否已被推送到所述第一服务器之前,建立所述已推送文件索引;
索引建立模块5010可以包括:第一标识生成单元50100和推送记录单元50102,其中
第一标识生成单元50100用于根据预设算法生成已完成推送的文件对应的唯一标识;
推送记录单元50102用于将所述已完成推送的文件对应的唯一标识以及推送的目的服务器记录在所述已推送文件索引中;
判断模块502可以包括:第二标识生成单元5020和查看判断单元5022,其中
第二标识生成单元5020用于根据所述预设算法生成所述第一文件对应的唯一标识;
查看判断单元5022用于当查看到所述第一文件对应的唯一标识存在于所述已推送文件索引中,则判断出所述第一文件已被推送到所述第一服务器;当查看到所述第一文件对应的唯一标识不存在于所述已推送文件索引中,则判断出所述第一文件没有被推送到所述第一服务器。
可理解的是,第一标识生成单元50100和第二标识生成单元5020可以为同一个物理单元模块,也可以为两个单独的物理单元模块。
进一步地,该已推送文件索引还包括所述已完成推送文件对应的推送时间;如图7示出的本发明提供的判断模块的结构示意图,判断模块502包括第二标识生成单元5020和查看判断单元5022外,还可以包括标识查看单元5024、标识查看处理单元5026、期限检查单元5028和期限检查处理单元50210,其中
标识查看单元5024用于查看所述第一文件对应的唯一标识是否存在于所述已推送文件索引中;
标识查看处理单元5026用于当标识查看单元5024的查看结果为否时,则判断出所述第一文件没有被推送到所述第一服务器;
期限检查单元5028用于当标识查看单元5024的查看结果为是时,检查所述第一文件对应的推送时间是否超过预设的推送期限;
期限检查处理单元50210用于当期限检查单元5028的检查结果为是时,则判断出所述第一文件没有被推送到所述第一服务器;当期限检查单元5028的检查结果为否时,则判断出所述第一文件已被推送到所述第一服务器。
再进一步地,本发明实施例中的指令接收模块500具体可以用于接收第二服务器发送的文件推送通知指令,所述文件推送通知指令为所述第二服务器接收到客户端上传的第一文件后推送服务器发送的指令,用于指示将第一文件推送到第一服务器。
再进一步地,如图8示出的本发明提供的检测模块的结构示意图,检测模块506可以包括:查询指令发送单元5060、查询结果接收单元5062和信息检测单元5064,其中
查询指令发送单元5060用于向所述第一服务器发送查询指令;所述查询指令用于指示所述第一服务器查询已缓存文件索引;
查询结果接收单元5062用于接收所述第一服务器返回的查询结果信息;所述查询结果信息包括所述第一服务器根据所述查询指令,查询所述第一文件是否存在已缓存文件索引中;
信息检测单元5064用于根据所述查询结果信息检测出所述第一文件是否存在所述第一服务器中。
可理解的是,推送服务器50中各模块的功能可对应参考上述各方法实施例中图1至图3任意实施例的具体实现方式,这里不再赘述。
请参阅图9,图9是本发明提供的另一实施例的推送服务器的结构示意图。其中,如图9所示,该推送服务器90可以包括:至少一个处理器901,例如CPU,至少一个网络接口903,存储器904,至少一个通信总线902。其中,通信总线902用于实现这些组件之间的连接通信。存储器904可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器904可选的还可以是至少一个位于远离前述处理器901的存储装置。如图9所示,作为一种计算机存储介质的存储器904中可以包括操作系统、网络通信模块以及文件预推送处理程序。
在图9所示的推送服务器90中,网络接口1003主要用于连接消息发送端(即各就近服务器或客户端)和消息接收端(即各就近服务器)并与之进行数据通信;而处理器901可以用于调用存储器904中存储的信息发送处理程序,并执行以下操作:
接收文件推送通知指令,所述文件推送通知指令用于指示将第一文件推送到第一服务器;
根据所述文件推送通知指令和文件推送记录判断所述第一文件是否已被推送到所述第一服务器;所述文件推送记录包括已完成推送的文件信息;
当判断结果为否时,查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中;所述已缓存文件索引包括当前缓存在所述第一服务器中的文件信息;
当检测结果为是时,则不执行将所述第一文件推送到所述第一服务器。
具体地,当处理器901判断出所述第一文件已被推送到所述第一服务器,不执行将所述第一文件推送到所述第一服务器;
当处理器901检测出所述第一文件不存在所述第一服务器中,则根据所述文件推送通知指令将所述第一文件推送到所述第一服务器。
具体地,所述文件推送记录为已推送文件索引,处理器901在所述根据文件推送记录判断所述第一文件是否已被推送到所述第一服务器之前,建立所述已推送文件索引,包括:
根据预设算法生成已完成推送的文件对应的唯一标识;
将所述已完成推送的文件对应的唯一标识以及推送的目的服务器记录在所述已推送文件索引中;
处理器901根据文件推送记录判断所述第一文件是否已被推送到所述第一服务器包括:
根据所述预设算法生成所述第一文件对应的唯一标识;
当查看到所述第一文件对应的唯一标识存在于所述已推送文件索引中,则判断出所述第一文件已被推送到所述第一服务器;当查看到所述第一文件对应的唯一标识不存在于所述已推送文件索引中,则判断出所述第一文件没有被推送到所述第一服务器。
进一步地,所述已推送文件索引还包括所述已完成推送文件对应的推送时间;处理器901根据所述预设算法生成所述第一文件对应的唯一标识之后,还包括:
查看所述第一文件对应的唯一标识是否存在于所述已推送文件索引中;
当查看结果为是时,检查所述第一文件对应的推送时间是否超过预设的推送期限;当查看结果为否时,则判断出所述第一文件没有被推送到所述第一服务器;
当检查结果为是时,则判断出所述第一文件没有被推送到所述第一服务器;当检查结果为否时,则判断出所述第一文件已被推送到所述第一服务器。
再进一步地,处理器901接收到文件推送通知指令包括:接收第二服务器发送的文件推送通知指令,所述文件推送通知指令为所述第二服务器接收到客户端上传的第一文件后推送服务器发送的指令,用于指示将第一文件推送到第一服务器。
再进一步地,处理器901查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中包括:
向所述第一服务器发送查询指令;所述查询指令用于指示所述第一服务器查询已缓存文件索引;
接收所述第一服务器返回的查询结果信息;所述查询结果信息包括所述第一服务器根据所述查询指令,查询所述第一文件是否存在已缓存文件索引中;
根据所述查询结果信息检测出所述第一文件是否存在所述第一服务器中。
下面结合图10示出的本发明提供的服务器的结构示意图,对应上述方法项来描述就近服务器的实施方式,服务器100可以包括推送文件接收模块1000、下载请求获取模块1002和文件发送模块1004,其中
推送文件接收模块1000用于接收推送服务器推送的第一文件;
具体地,该推送服务器为上述图5至图9任一实施例的推送服务器;
下载请求获取模块1002用于获取客户端发送的文件下载请求信息;
文件发送模块1004用于根据所述文件下载请求信息将所述第一文件发送给所述客户端。
具体地,如图11示出的本发明提供的服务器的另一实施例的结构示意图,服务器100包括推送文件接收模块1000、下载请求获取模块1002和文件发送模块1004外,还可以包括缓存文件索引建立模块1006,用于在推送文件接收模块1000接收推送服务器推送的第一文件之前,建立已缓存文件索引,缓存文件索引建立模块1006可以包括接收缓存单元10060、缓存记录单元10062和文件删除单元10064,其中:
接收缓存单元10060用于接收并缓存推送服务器推送的文件,
缓存记录单元10062用于将所述文件对应的唯一标识记录在已缓存文件索引中;所述已缓存文件索引记录有当前缓存的所有推送文件各自对应的唯一标识;所述文件对应的唯一标识为根据预设算法生成的所述文件对应的唯一标识;
文件删除单元10064用于根据缓存大小删除最早接收到的推送文件,并在所述已缓存文件索引中删除所述早接收到的推送文件对应的唯一标识。
再进一步地,如图12示出的本发明提供的服务器的另一实施例的结构示意图,服务器100包括推送文件接收模块1000、下载请求获取模块1002、文件发送模块1004和缓存文件索引建立模块1006外,还可以包括查询指令接收模块1008、查询生成模块10010和查询结果发送模块10012,其中
查询指令接收模块1008用于在推送文件接收模块1000接收推送服务器推送的第一文件之前,接收所述推送服务器发送的查询指令;
查询生成模块10010用于根据所述查询指令查询所述第一文件对应的唯一标识是否存在所述已缓存文件索引中,并生成查询结果信息;
查询结果发送模块10012用于将所述查询结果信息发送给所述推送服务器。
可理解的是,服务器100中各模块的功能可对应参考上述各方法实施例中图4实施例的具体实现方式,这里不再赘述。
请参阅图13,图13是本发明提供的另一实施例的服务器的结构示意图。其中,如图13所示,该服务器130可以包括:至少一个处理器1301,例如CPU,至少一个网络接口1303,存储器1304,至少一个通信总线1302。其中,通信总线1302用于实现这些组件之间的连接通信。存储器1304可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1304可选的还可以是至少一个位于远离前述处理器1301的存储装置。如图13所示,作为一种计算机存储介质的存储器1304中可以包括操作系统、网络通信模块以及文件预推送处理程序。
在图13所示的服务器130中,网络接口1003主要用于连接消息发送端(即推送服务器或各客户端)和消息接收端(即推送服务器或各客户端)并与之进行数据通信;而处理器1301可以用于调用存储器1304中存储的信息发送处理程序,并执行以下操作:
接收推送服务器推送的第一文件;所述第一文件为所述推送服务器通过图1至图3任一项实施例的方法而推送的第一文件;
获取客户端发送的文件下载请求信息,根据所述文件下载请求信息将所述第一文件发送给所述客户端。
具体地,处理器1301在所述接收推送服务器推送的第一文件之前,建立已缓存文件索引,包括:
接收并缓存推送服务器推送的文件,将所述文件对应的唯一标识记录在已缓存文件索引中;所述已缓存文件索引记录有当前缓存的所有推送文件各自对应的唯一标识;所述文件对应的唯一标识为根据预设算法生成的所述文件对应的唯一标识;
根据缓存大小删除最早接收到的推送文件,并在所述已缓存文件索引中删除所述早接收到的推送文件对应的唯一标识。
进一步地,处理器1301接收推送服务器推送的第一文件之前,还包括:
接收所述推送服务器发送的查询指令;
根据所述查询指令查询所述第一文件对应的唯一标识是否存在所述已缓存文件索引中,并生成查询结果信息;
将所述查询结果信息发送给所述推送服务器。
进一步地,如图14示出的本发明提供的文件预推送系统的结构示意图,文件预推送系统140包括推送服务器1400和第一服务器1402,其中
该推送服务器1400可以为上述图5到图9任一个实施例中的推送服务器;这里不再赘述。
该第一服务器1402可以为上述图10和图13任一个实施例中的服务器;这里不再赘述。
可理解的是,文件预推送系统140还可以包括第二服务器1404,推送服务器1400从第二服务器1404接收到文件推送通知指令;而且文件预推送系统140还可以多个推送服务器1400、多个第一服务器1402以及多个第二服务器1404。
综上所述,实施本发明实施例,先通过本端的文件推送记录判断文件是否已被推送到第一服务器,若判断已被推送则不执行再推送,若判断没有被推送则查询第一服务器中的已缓存文件索引,检测所要推送的文件是否缓存在第一服务器中,若有缓存则不执行推送,若没有缓存则将文件推送到第一服务器,避免了推送重复文件,降低网络流量成本,且避免每次推送都用信令到对点查询,解决了现有技术中造成的预推送重复文件的流量成本的浪费,或者需要消耗大量信令进行查询的技术问题,而且在节日高峰时段,无需开启柔性措施,避免接收方需要回源产生的下载时延增加的问题,大大降低了接收方下载文件的时延。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (19)

1.一种文件预推送方法,其特征在于,包括:
接收文件推送通知指令,所述文件推送通知指令用于指示将第一文件推送到第一服务器;
根据所述文件推送通知指令和文件推送记录判断所述第一文件是否已被推送到所述第一服务器;所述文件推送记录包括已完成推送的文件信息;
当判断结果为否时,查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中;所述已缓存文件索引包括当前缓存在所述第一服务器中的文件信息;
当检测结果为是时,则不执行将所述第一文件推送到所述第一服务器。
2.如权利要求1所述的方法,其特征在于,所述文件推送记录为已推送文件索引,在所述根据文件推送记录判断所述第一文件是否已被推送到所述第一服务器之前,建立所述已推送文件索引,包括:
根据预设算法生成已完成推送的文件对应的唯一标识;
将所述已完成推送的文件对应的唯一标识以及推送的目的服务器记录在所述已推送文件索引中;
所述根据文件推送记录判断所述第一文件是否已被推送到所述第一服务器包括:
根据所述预设算法生成所述第一文件对应的唯一标识;
当查看到所述第一文件对应的唯一标识存在于所述已推送文件索引中,则判断出所述第一文件已被推送到所述第一服务器;当查看到所述第一文件对应的唯一标识不存在于所述已推送文件索引中,则判断出所述第一文件没有被推送到所述第一服务器。
3.如权利要求2所述的方法,其特征在于,所述已推送文件索引还包括所述已完成推送文件对应的推送时间;所述根据所述预设算法生成所述第一文件对应的唯一标识之后,还包括:
查看所述第一文件对应的唯一标识是否存在于所述已推送文件索引中;
当查看结果为是时,检查所述第一文件对应的推送时间是否超过预设的推送期限;当查看结果为否时,则判断出所述第一文件没有被推送到所述第一服务器;
当检查结果为是时,则判断出所述第一文件没有被推送到所述第一服务器;当检查结果为否时,则判断出所述第一文件已被推送到所述第一服务器。
4.如权利要求1所述的方法,其特征在于,所述接收到文件推送通知指令包括:接收第二服务器发送的文件推送通知指令,所述文件推送通知指令为所述第二服务器接收到客户端上传的第一文件后推送服务器发送的指令,用于指示将第一文件推送到第一服务器。
5.如权利要求1所述的方法,其特征在于,当判断出所述第一文件已被推送到所述第一服务器,不执行将所述第一文件推送到所述第一服务器;
当检测出所述第一文件不存在所述第一服务器中,则根据所述文件推送通知指令将所述第一文件推送到所述第一服务器。
6.如权利要求1-5任一项所述的方法,其特征在于,所述查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中包括:
向所述第一服务器发送查询指令;所述查询指令用于指示所述第一服务器查询已缓存文件索引;
接收所述第一服务器返回的查询结果信息;所述查询结果信息包括所述第一服务器根据所述查询指令,查询所述第一文件是否存在已缓存文件索引中;
根据所述查询结果信息检测出所述第一文件是否存在所述第一服务器中。
7.一种文件预推送方法,其特征在于,包括:
接收推送服务器推送的第一文件;所述第一文件为所述推送服务器通过如权利要求1-5任一项所述的方法而推送的第一文件;
获取客户端发送的文件下载请求信息,根据所述文件下载请求信息将所述第一文件发送给所述客户端。
8.如权利要求7所述的方法,其特征在于,在所述接收推送服务器推送的第一文件之前,建立已缓存文件索引,包括:
接收并缓存推送服务器推送的文件,将所述文件对应的唯一标识记录在已缓存文件索引中;所述已缓存文件索引记录有当前缓存的所有推送文件各自对应的唯一标识;所述文件对应的唯一标识为根据预设算法生成的所述文件对应的唯一标识;
根据缓存大小删除最早接收到的推送文件,并在所述已缓存文件索引中删除所述早接收到的推送文件对应的唯一标识。
9.如权利要求8所述的方法,其特征在于,所述接收推送服务器推送的第一文件之前,还包括:
接收所述推送服务器发送的查询指令;
根据所述查询指令查询所述第一文件对应的唯一标识是否存在所述已缓存文件索引中,并生成查询结果信息;
将所述查询结果信息发送给所述推送服务器。
10.一种推送服务器,其特征在于,包括:
指令接收模块,用于接收到文件推送通知指令,所述文件推送通知指令用于指示将第一文件推送到第一服务器;
判断模块,用于根据所述文件推送通知指令和文件推送记录判断所述第一文件是否已被推送到所述第一服务器;所述文件推送记录包括已完成推送的文件信息;
检测模块,用于当所述判断模块的判断结果为否时,查询所述第一服务器中的已缓存文件索引,检测所述第一文件是否存在所述第一服务器中;所述已缓存文件索引包括当前缓存在所述第一服务器中的文件信息;
检测处理模块,用于当所述检测模块的检测结果为是时,则不执行将所述第一文件推送到所述第一服务器。
11.如权利要求10所述的推送服务器,其特征在于,所述文件推送记录为已推送文件索引,还包括索引建立模块,用于在所述判断模块根据文件推送记录判断所述第一文件是否已被推送到所述第一服务器之前,建立所述已推送文件索引,所述索引建立模块包括:
第一标识生成单元,用于根据预设算法生成已完成推送的文件对应的唯一标识;
推送记录单元,用于将所述已完成推送的文件对应的唯一标识以及推送的目的服务器记录在所述已推送文件索引中;
所述判断模块包括:
第二标识生成单元,用于根据所述预设算法生成所述第一文件对应的唯一标识;
查看判断单元,用于当查看到所述第一文件对应的唯一标识存在于所述已推送文件索引中,则判断出所述第一文件已被推送到所述第一服务器;当查看到所述第一文件对应的唯一标识不存在于所述已推送文件索引中,则判断出所述第一文件没有被推送到所述第一服务器。
12.如权利要求11所述的推送服务器,其特征在于,所述已推送文件索引还包括所述已完成推送文件对应的推送时间;所述判断模块还包括:
标识查看单元,用于查看所述第一文件对应的唯一标识是否存在于所述已推送文件索引中;
标识查看处理单元,用于当所述标识查看单元的查看结果为否时,则判断出所述第一文件没有被推送到所述第一服务器;
期限检查单元,用于当所述标识查看单元的查看结果为是时,检查所述第一文件对应的推送时间是否超过预设的推送期限;
期限检查处理单元,用于当所述期限检查单元的检查结果为是时,则判断出所述第一文件没有被推送到所述第一服务器;当所述期限检查单元的检查结果为否时,则判断出所述第一文件已被推送到所述第一服务器。
13.如权利要求10所述的推送服务器,其特征在于,所述指令接收模块具体用于接收第二服务器发送的文件推送通知指令,所述文件推送通知指令为所述第二服务器接收到客户端上传的第一文件后推送服务器发送的指令,用于指示将第一文件推送到第一服务器。
14.如权利要求10所述的推送服务器,其特征在于,还包括:判断处理模块,用于当所述判断模块的判断结果为是时,不执行将所述第一文件推送到所述第一服务器;
所述检测处理模块还用于当所述检测模块的检测结果为否时,则根据所述文件推送通知指令将所述第一文件推送到所述第一服务器。
15.如权利要求10-14任一项所述的推送服务器,其特征在于,所述检测模块包括:
查询指令发送单元,用于向所述第一服务器发送查询指令;所述查询指令用于指示所述第一服务器查询已缓存文件索引;
查询结果接收单元,用于接收所述第一服务器返回的查询结果信息;所述查询结果信息包括所述第一服务器根据所述查询指令,查询所述第一文件是否存在已缓存文件索引中;
信息检测单元,用于根据所述查询结果信息检测出所述第一文件是否存在所述第一服务器中。
16.一种服务器,其特征在于,包括:
推送文件接收模块,用于接收推送服务器推送的第一文件;所述推送服务器为如权利要求10-14任一项所述的推送服务器;
下载请求获取模块,用于获取客户端发送的文件下载请求信息;
文件发送模块,用于根据所述文件下载请求信息将所述第一文件发送给所述客户端。
17.如权利要求15所述的服务器,其特征在于,还包括缓存文件索引建立模块,用于在所述推送文件接收模块接收推送服务器推送的第一文件之前,建立已缓存文件索引,所述缓存文件索引建立模块包括:
接收缓存单元,用于接收并缓存推送服务器推送的文件,
缓存记录单元,用于将所述文件对应的唯一标识记录在已缓存文件索引中;所述已缓存文件索引记录有当前缓存的所有推送文件各自对应的唯一标识;所述文件对应的唯一标识为根据预设算法生成的所述文件对应的唯一标识;
文件删除单元,用于根据缓存大小删除最早接收到的推送文件,并在所述已缓存文件索引中删除所述早接收到的推送文件对应的唯一标识。
18.如权利要求16所述的服务器,其特征在于,还包括:
查询指令接收模块,用于在所述推送文件接收模块接收推送服务器推送的第一文件之前,接收所述推送服务器发送的查询指令;
查询生成模块,用于根据所述查询指令查询所述第一文件对应的唯一标识是否存在所述已缓存文件索引中,并生成查询结果信息;
查询结果发送模块,用于将所述查询结果信息发送给所述推送服务器。
19.一种文件预推送系统,其特征在于,包括推送服务器和第一服务器,其中
所述推送服务器为如权利要求10-15任一项所述的推送服务器;
所述第一服务器为如权利要求16-18任一项所述的服务器。
CN201410424311.0A 2014-08-26 2014-08-26 一种文件预推送方法、相关服务器及系统 Active CN104980479B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410424311.0A CN104980479B (zh) 2014-08-26 2014-08-26 一种文件预推送方法、相关服务器及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410424311.0A CN104980479B (zh) 2014-08-26 2014-08-26 一种文件预推送方法、相关服务器及系统

Publications (2)

Publication Number Publication Date
CN104980479A true CN104980479A (zh) 2015-10-14
CN104980479B CN104980479B (zh) 2018-03-13

Family

ID=54276579

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410424311.0A Active CN104980479B (zh) 2014-08-26 2014-08-26 一种文件预推送方法、相关服务器及系统

Country Status (1)

Country Link
CN (1) CN104980479B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108737853A (zh) * 2017-04-20 2018-11-02 腾讯科技(深圳)有限公司 一种数据文件的降码处理方法和服务器
CN109828771A (zh) * 2019-01-18 2019-05-31 深圳壹账通智能科技有限公司 文件推送方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103002029A (zh) * 2012-11-26 2013-03-27 北京百度网讯科技有限公司 上传文件的管理方法、系统和客户端
CN103457973A (zh) * 2012-06-01 2013-12-18 深圳市腾讯计算机系统有限公司 一种图片上传方法、系统、图片上传客户端及网络服务器
CN103916437A (zh) * 2013-01-05 2014-07-09 中国移动通信集团公司 文件发布系统、装置及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103457973A (zh) * 2012-06-01 2013-12-18 深圳市腾讯计算机系统有限公司 一种图片上传方法、系统、图片上传客户端及网络服务器
CN103002029A (zh) * 2012-11-26 2013-03-27 北京百度网讯科技有限公司 上传文件的管理方法、系统和客户端
CN103916437A (zh) * 2013-01-05 2014-07-09 中国移动通信集团公司 文件发布系统、装置及方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108737853A (zh) * 2017-04-20 2018-11-02 腾讯科技(深圳)有限公司 一种数据文件的降码处理方法和服务器
CN108737853B (zh) * 2017-04-20 2021-07-13 腾讯科技(深圳)有限公司 一种数据文件的降码处理方法和服务器
US11444998B2 (en) 2017-04-20 2022-09-13 Tencent Technology (Shenzhen) Company Limited Bit rate reduction processing method for data file, and server
CN109828771A (zh) * 2019-01-18 2019-05-31 深圳壹账通智能科技有限公司 文件推送方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN104980479B (zh) 2018-03-13

Similar Documents

Publication Publication Date Title
KR100677497B1 (ko) 단말기의 중복 통보 메시지 처리 방법
KR102167613B1 (ko) 메시지 푸시 방법 및 장치
CN102664827B (zh) 一种即时通讯消息回执方法及系统
CN103327039A (zh) 一种消息推送方法及装置、系统
CN103618800A (zh) 订阅通知的实现方法和装置
CN101183946B (zh) 一种获取下载文件资源列表的方法及系统
CN104519036A (zh) 一种发送业务请求消息的方法及装置
CN102625287A (zh) 一种手机应用软件的下载方法
CN103095684A (zh) 获取关注用户聚合信息的方法、装置及系统
CN111541555A (zh) 群聊优化方法及相关产品
CN101115260B (zh) 移动通信终端及其实时播放消息的方法
CN106817689B (zh) 一种高可靠性的数据订阅及发布方法及系统
KR100812396B1 (ko) 위치기반 멀티미디어 메시지 서비스 방법 및 이를 위한장치
CN104980479A (zh) 一种文件预推送方法、相关服务器及系统
CN1758801B (zh) 移动通信终端中的消息发送设备和方法
CN111757282A (zh) 短信发送方法及装置
WO2017005118A1 (zh) 维持通信连接的方法、装置、终端及服务器
US20140200041A1 (en) Evaluation of overall performance of interactive application service
CN108924773B (zh) 消息处理方法及装置
CN112865927A (zh) 消息送达验证方法、装置、计算机设备和存储介质
CN103795810A (zh) 数据分发系统及方法以及该数据分发系统中的中心服务器
CN103139723B (zh) 多媒体消息信息处理方法和系统以及设备
CN101330664A (zh) 多媒体业务的实现方法、系统和装置
CN104753984A (zh) 一种数据传送方法及装置
CN101500327A (zh) 移动终端的开关机状态获取系统及其方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant