发明内容
本发明旨在至少在一定程度上解决上述技术中的技术问题之一。为此,本发明的一个目的在于提出一种基于CDN边缘计算网络的APK动态改写方法,能够对APK进行动态打包,有效降低源站服务器的存储压力和文件管理复杂度。
本发明的第二个目的在于提出一种计算机可读存储介质。
本发明的第三个目的在于提出一种基于CDN边缘计算网络的APK动态改写系统。
为达到上述目的,本发明第一方面实施例提出了一种基于CDN边缘计算网络的APK动态改写方法,包括以下步骤:将原始APK上传至源服务器,并生成渠道下载链接,其中,所述渠道下载链接包括打包参数;获取用户通过所述渠道下载链接发起的APK下载请求,并将所述APK下载请求导向CDN边缘计算节点;所述CDN边缘计算节点获取所述APK下载请求,并根据所述APK下载请求获取相应的原始APK,以及根据所述APK下载请求对所述原始APK进行动态打包,并将打包结果反馈给所述用户。
根据本发明实施例的基于CDN边缘计算网络的APK动态改写方法,首先,将原始APK上传至源服务器,并生成渠道下载链接,其中,所述渠道下载链接包括打包参数;接着,获取用户通过所述渠道下载链接发起的APK下载请求,并将所述APK下载请求导向CDN边缘计算节点;然后,所述CDN边缘计算节点获取所述APK下载请求,并根据所述APK下载请求获取相应的原始APK,以及根据所述APK下载请求对所述原始APK进行动态打包,并将打包结果反馈给所述用户,从而实现对APK进行动态打包,有效降低源站服务器的存储压力和文件管理复杂度。
另外,根据本发明上述实施例提出的基于CDN边缘计算网络的APK动态改写方法还可以具有如下附加的技术特征:
可选地,所述打包参数包括版本信息、渠道信息和动态打包信息。
可选地,在所述CDN边缘计算节点获取所述APK下载请求之后,还包括:所述CDN边缘计算节点判断所述渠道信息是否有效;如果否,则拒绝用户访问;如果是,则根据所述APK下载请求中的用户信息和用户请求行为信息判断所述APK下载请求是否合法,并在判断结果为否时拒绝用户访问。
可选地,根据所述APK下载请求获取相应的原始APK之前,还包括:所述CDN边缘计算节点根据所述APK下载请求判断缓存系统中是否存储有相应的打包结果;如果是,则获取该打包结果,并反馈给所述用户;如果否,则在根据所述APK下载请求向源站服务器获取相应的原始APK,并对所述原始APK进行动态打包之后,将打包结果缓存至缓存系统,并反馈给所述用户。
可选地,在根据所述APK下载请求获取相应的原始APK之后,还包括:根据所述动态打包信息判断所述APK下载请求是否需要对原始APK进行动态打包,并在判断结果为否时直接将所述原始APK作为打包结果缓存至缓存系统,并反馈给所述用户。
可选地,根据所述APK下载请求对所述原始APK进行动态打包,包括:对所述APK下载请求进行预处理,以获取所述APK下载请求对应的渠道信息,其中,所述预处理包括参数替换、参数排序、加密操作和解密操作;将所述渠道信息写入所述原始APK的签名块,其中,所述签名块位于ZIP中央目录之前,且所述签名块位于ZIP摘要之后。
为达到上述目的,本发明第二方面实施例提出了一种计算机可读存储介质,其上存储有基于CDN边缘计算网络的APK动态改写程序,该基于CDN边缘计算网络的APK动态改写程序被处理器执行时实现如上述的基于CDN边缘计算网络的APK动态改写方法。
根据本发明实施例的计算机可读存储介质,通过存储基于CDN边缘计算网络的APK动态改写程序,以使得处理器在执行该基于CDN边缘计算网络的APK动态改写程序时,实现如上述的基于CDN边缘计算网络的APK动态改写方法,从而实现对APK进行动态打包,有效降低源站服务器的存储压力和文件管理复杂度。
为达到上述目的,本发明第三方面实施例提出了一种基于CDN边缘计算网络的APK动态改写系统,包括:上传模块,所述上传模块用于将原始APK上传至源服务器,并生成渠道下载链接,其中,所述渠道下载链接包括打包参数;导向模块,所述导向模块用于获取用户通过所述渠道下载链接发起的APK下载请求,并将所述APK下载请求导向CDN边缘计算节点;CDN边缘计算节点,所述CD边缘计算节点用于获取所述APK下载请求,并根据所述APK下载请求获取相应的原始APK,以及根据所述APK下载请求对所述原始APK进行动态打包,并将打包结果反馈给所述用户。
根据本发明实施例的基于CDN边缘计算网络的APK动态改写系统,通过设置上传模块用于将原始APK上传至源服务器,并生成渠道下载链接,其中,所述渠道下载链接包括打包参数;导向模块用于获取用户通过所述渠道下载链接发起的APK下载请求,并将所述APK下载请求导向CDN边缘计算节点;CD边缘计算节点用于获取所述APK下载请求,并根据所述APK下载请求获取相应的原始APK,以及根据所述APK下载请求对所述原始APK进行动态打包,并将打包结果反馈给所述用户;从而实现对APK进行动态打包,有效降低源站服务器的存储压力和文件管理复杂度。
另外,根据本发明上述实施例提出的基于CDN边缘计算网络的APK动态改写系统还可以具有如下附加的技术特征:
可选地,所述打包参数包括版本信息、渠道信息和动态打包信息。
可选地,所述CDN计算节点还用于在所述CDN边缘计算节点获取所述APK下载请求之后,判断所述渠道信息是否有效;如果否,则拒绝用户访问;如果是,则根据所述APK下载请求中的用户信息和用户请求行为信息判断所述APK下载请求是否合法,并在判断结果为否时拒绝用户访问。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
相关技术中,在进行APK推广的过程中,源站服务器需要存储大量的APK文件,源站服务器存储压力极大,并且文件的管理复杂度大。根据本发明实施例的基于CDN边缘计算网络的APK动态改写方法,首先,将原始APK上传至源服务器,并生成渠道下载链接,其中,所述渠道下载链接包括打包参数;接着,获取用户通过所述渠道下载链接发起的APK下载请求,并将所述APK下载请求导向CDN边缘计算节点;然后,所述CDN边缘计算节点获取所述APK下载请求,并根据所述APK下载请求获取相应的原始APK,以及根据所述APK下载请求对所述原始APK进行动态打包,并将打包结果反馈给所述用户,从而实现对APK进行动态打包,有效降低源站服务器的存储压力和文件管理复杂度。
为了更好的理解上述技术方案,下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
图1为根据本发明实施例的基于CDN边缘计算网络的APK动态改写方法的流程示意图,如图1所示,该基于CDN边缘计算网络的APK动态改写方法包括以下步骤:
S101,将原始APK上传至源服务器,并生成渠道下载链接,其中,渠道下载链接包括打包参数。
即言,开发者在完成APK的开发之后,直接将开发完成的原始APK上传至源服务器,无需顾及渠道差异,也不需要根据不同的渠道进行APK文件的差异组装。从而,源服务器上只需要存储不同版本的原始APK文件,大大降低了源服务器的存储压力。进而,在完成原始APK的存储之后,生成每个渠道(例如,抖音推广、微博推广等)所对应的渠道下载链接。而每个渠道下载链接中包括打包参数,以便后续CDN边缘计算节点根据打包参数进行动态打包。
其中,打包参数的设置方式可以有多种。
在一些实施例中,打包参数包括版本信息、渠道信息和动态打包信息。
作为一种示例,APK开发者提供给某渠道商的URL链接为:
http://www.xxx.com/xxx.apk?type=active&v=123&append=xxx;其中,type=active&v=123&append=xxx即为打包参数,type参数表示动态打包信息,用以判断用户的下载请求是否需要进行APK动态打包,append表示渠道信息,v表示APK的版本信息。
其中,生成渠道下载链接的方式可以有多种。
作为一种示例,APK开发者在生成原始APK对应的下载链接URL之后,进一步地获取渠道方提供的信息(例如:所需APK版本号、是否需要进行APK下载量统计、渠道标识等);进而,根据渠道方提供的信息和与CDN厂商约定的动态写入规则生成该渠道方的渠道下载链接URL;以便渠道方通过渠道下载链接URL进行推广。
S102,获取用户通过渠道下载链接发起的APK下载请求,并将APK下载请求导向CDN边缘计算节点。
也就是说,用户在接收到渠道方推广的信息之后,可以通过其推广的渠道下载链接发起相应的APK下载请求,而在接收到用户发起的APK下载请求时,将APK下载请求导向CDN边缘计算节点,以便通过CDN边缘计算节点对下载任务进行加速。
作为一种示例,APK开发者通过DNS解析的原理,修改域名CNAME解析记录到CND厂商的负载均衡系统,以使得用户直接向边缘服务器发起APK下载请求。
在一些实施例中,为了降低服务器数据传输压力,提高访问安全性,本发明实施例提出的基于CDN边缘计算网络的APK动态改写方法,在CDN边缘计算节点获取APK下载请求之后,还包括:CDN边缘计算节点判断渠道信息是否有效;如果否,则拒绝用户访问;如果是,则根据APK下载请求中的用户信息和用户请求行为信息判断APK下载请求是否合法,并在判断结果为否时拒绝用户访问。
作为一种示例,当CDN边缘计算节点获取到APK下载请求后,即对该APK下载请求的合法性进行鉴权;首先,对该APK下载请求中携带的渠道信息进行判断,判断该渠道信息所对应的渠道是否是有效渠道;如果是,则进一步地根据APK下载请求的请求参数中携带的用户信息(例如,用户ID信息)和用户请求行为信息(例如,用户请求频率)判断APK下载请求是否合法;具体地,可以根据用户ID信息查询黑名单,以判断该用户是否为黑名单用户,如果是,则禁止访问;或者,根据用户请求频率判断用户请求是否过于频繁,从而,可以过滤请求频繁的刷量请求。
S103,CDN边缘计算节点获取APK下载请求,并根据APK下载请求获取相应的原始APK,以及根据APK下载请求对原始APK进行动态打包,并将打包结果反馈给用户。
在一些实施例中,为了进一步提高CDN边缘计算网络对于用户下载速率的提高效果,在本发明提出的基于CDN边缘计算网络的APK动态改写方法中,根据APK下载请求获取相应的原始APK之前,还包括:CDN边缘计算节点根据APK下载请求判断缓存系统中是否存储有相应的打包结果;如果是,则获取该打包结果,并反馈给用户;如果否,则在根据APK下载请求向源站服务器获取相应的原始APK,并对原始APK进行动态打包之后,将打包结果缓存至缓存系统,并反馈给用户。
即言,CDN边缘计算节点在获取到APK下载请求之后,并非立刻至源站服务器下载原始APK,而是根据APK下载请求判断缓存系统中是否存储有相应的打包结果(可以理解,如果APK下载请求不需要进行动态打包,则相应的打包结果为原始APK);如果是,则获取该打包结果;如果否,则继续获取原始APK的步骤,并在动态打包完成之后,将相应的打包结果存储到缓存系统;以便下一次接收到相同请求时直接取用该打包结果,进一步提升用户对于APK的下载速率。
在一些实施例中,在根据APK下载请求获取相应的原始APK之后,还包括:根据动态打包信息判断APK下载请求是否需要对原始APK进行动态打包,并在判断结果为否时直接将原始APK作为打包结果缓存至缓存系统,并反馈给用户。
作为一种示例,假设提供给某渠道商的链接为:
http://www.xxx.com/xxx.apk?type=active&v=123&append=xxx;其中,type即表示动态打包信息,根据该参数,可以判断当前下载请求是否需要进行动态打包。可以理解,在众多渠道中,有些渠道是需要付费需要进行下载量、使用量统计的;而有些渠道是自有渠道,是不需要进行统计的;因此,通过这一参数可以对两者进行有效地区分;进而降低CDN边缘计算节点的运算压力,降低动态打包频率。
在一些实施例中,根据APK下载请求对原始APK进行动态打包,包括:对APK下载请求进行预处理,以获取APK下载请求对应的渠道信息,其中,预处理包括参数替换、参数排序、加密操作和解密操作;将渠道信息写入原始APK的签名块,其中,签名块位于ZIP中央目录之前,且签名块位于ZIP摘要之后。
作为一种示例,CDN边缘计算节点接收到上述渠道下载链接发起的APK下载请求后,自动提取该APK下载请求中的有效信息(例如,HTTP请求头部信息和URL的指定参数信息等),并对这些有效信息进行预处理,预处理的步骤包括参数替换、参数排序、加密操作和解密操作;具体地,从URL中可以获取到host、path、query等信息,并对这些信息进行预处理;例如,上述渠道下载链接中的type=active&v=123&append=xxx部分,v值表示APK的版本号,用于检查版本是否变化,以便在检查到版本发生变化时,对CDN边缘计算节点对应的缓存系统中缓存的打包结果进行替换;type表示动态写入信息,以通过该值判断是否需要进行动态写入;append表示需要进行预处理后进行动态写入的值;进而,将预处理后的渠道信息写入到原始APK的签名块中;如图2所示,该签名块(APK Signing Block)位于ZIP中央目录(Central Directory)之前,且签名块位于ZIP摘要(Contents of ZIP entries)之后。
可以理解,如图2所示的APK签名方式是一种全文件签名方式,能够发现对APK的受保护部分进行的所有更改,有助于加快验证速度并增强完整性保证。使用这种方式进行签名时,会在APK文件中插入一个签名块,该签名块位于ZIP中央目录(Central Directory)之前且紧邻该ZIP中央目录;可以理解,签名信息会被保存在区块2中,而区块1、区块3和区块4是受保护的区块,在签名后任何对区块1、3、4的修改都逃不过该签名方式的检查。
另外,需要说明的是,通过本发明实施例提出的APK动态改写方法打包的APK文件;当用户下载完成APK之后,其所下载的APK中包含渠道信息;则当用户有效安装APK之后,通过APK内嵌代码逻辑即可对渠道下载量进行上报;如此,可以对渠道推广所得的下载量进行有效的统计。相比于传统基于下载日志的方式,可大大提高统计准确率。有效避免渠道为了刷下载量而采用下载工具自动下载、没有有效安装而造成的虚假统计。使得统计结果更加精准。
作为本发明实施例的一个具体实施例;如图3所示,该基于CDN边缘计算网络的APK动态改写方法包括以下步骤:
S201,将原始APK上传至源服务器,并生成渠道下载链接。
S202,获取用户通过渠道下载链接发起的APK下载请求,并将APK下载请求导向CDN边缘计算节点。
S203,CDN边缘计算节点获取APK下载请求。
S204,判断渠道信息是否有效;如果否,则执行步骤S205;如果是,则执行步骤S206。
S205,拒绝用户访问。
S206,判断APK下载请求是否合法;如果否,则执行步骤S205;如果否,则执行步骤S207。
S207,根据APK下载请求判断缓存系统中是否存储有相应的打包结果;如果是,则执行步骤S208;如果否,则执行步骤S209。
S208,获取该打包结果,并反馈给用户。
S209,根据APK下载请求获取相应的原始APK。
S210,根据动态打包信息判断APK下载请求是否需要对原始APK进行动态打包;如果否,则执行步骤S211;如果是,则执行步骤S212。
S211,将原始APK缓存至缓存系统,并将原始APK作为打包结果反馈给用户。
S212,对APK下载请求进行预处理,以获取APK下载请求对应的渠道信息。
S213,将渠道信息写入原始APK的签名块,以完成原始APK的动态打包,将打包结果缓存至缓存系统,并将打包结果反馈给用户。
综上所述,根据本发明实施例的基于CDN边缘计算网络的APK动态改写方法,首先,将原始APK上传至源服务器,并生成渠道下载链接,其中,所述渠道下载链接包括打包参数;接着,获取用户通过所述渠道下载链接发起的APK下载请求,并将所述APK下载请求导向CDN边缘计算节点;然后,所述CDN边缘计算节点获取所述APK下载请求,并根据所述APK下载请求获取相应的原始APK,以及根据所述APK下载请求对所述原始APK进行动态打包,并将打包结果反馈给所述用户,从而实现对APK进行动态打包,有效降低源站服务器的存储压力和文件管理复杂度。
为了实现上述实施例,本发明实施例提出了一种计算机可读存储介质,其上存储有基于CDN边缘计算网络的APK动态改写程序,该基于CDN边缘计算网络的APK动态改写程序被处理器执行时实现如上述的基于CDN边缘计算网络的APK动态改写方法。
根据本发明实施例的计算机可读存储介质,通过存储基于CDN边缘计算网络的APK动态改写程序,以使得处理器在执行该基于CDN边缘计算网络的APK动态改写程序时,实现如上述的基于CDN边缘计算网络的APK动态改写方法,从而实现对APK进行动态打包,有效降低源站服务器的存储压力和文件管理复杂度。
为了实现上述实施例,本发明实施例提出了一种基于CDN边缘计算网络的APK动态改写系统,如图4所示,该基于CDN边缘计算网络的APK动态改写系统包括:上传模块10、导向模块20和CDN边缘计算节点30。
其中,上传模块10用于将原始APK上传至源服务器,并生成渠道下载链接,其中,渠道下载链接包括打包参数;
导向模块20用于获取用户通过渠道下载链接发起的APK下载请求,并将APK下载请求导向CDN边缘计算节点30;
CD边缘计算节点30用于获取APK下载请求,并根据APK下载请求获取相应的原始APK,以及根据APK下载请求对原始APK进行动态打包,并将打包结果反馈给用户。
在一些实施例中,打包参数包括版本信息、渠道信息和动态打包信息。
在一些实施例中,CDN计算节点还用于在CDN边缘计算节点获取APK下载请求之后,判断渠道信息是否有效;如果否,则拒绝用户访问;如果是,则根据APK下载请求中的用户信息和用户请求行为信息判断APK下载请求是否合法,并在判断结果为否时拒绝用户访问。
需要说明的是,上述关于图1中基于CDN边缘计算网络的APK动态改写方法的描述同样适用于该基于CDN边缘计算网络的APK动态改写系统,在此不做赘述。
综上所述,根据本发明实施例的基于CDN边缘计算网络的APK动态改写系统,通过设置上传模块用于将原始APK上传至源服务器,并生成渠道下载链接,其中,所述渠道下载链接包括打包参数;导向模块用于获取用户通过所述渠道下载链接发起的APK下载请求,并将所述APK下载请求导向CDN边缘计算节点;CD边缘计算节点用于获取所述APK下载请求,并根据所述APK下载请求获取相应的原始APK,以及根据所述APK下载请求对所述原始APK进行动态打包,并将打包结果反馈给所述用户;从而实现对APK进行动态打包,有效降低源站服务器的存储压力和文件管理复杂度。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不应理解为必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。