CN113378095A - 签名算法的动态加载方法、装置、设备及存储介质 - Google Patents
签名算法的动态加载方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113378095A CN113378095A CN202110733971.7A CN202110733971A CN113378095A CN 113378095 A CN113378095 A CN 113378095A CN 202110733971 A CN202110733971 A CN 202110733971A CN 113378095 A CN113378095 A CN 113378095A
- Authority
- CN
- China
- Prior art keywords
- signature algorithm
- script
- signature
- url
- api
- 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
Links
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 242
- 238000011068 loading method Methods 0.000 title claims abstract description 66
- 238000013515 script Methods 0.000 claims abstract description 128
- 238000013507 mapping Methods 0.000 claims abstract description 35
- 230000003068 static effect Effects 0.000 claims abstract description 31
- 238000000034 method Methods 0.000 claims description 70
- 238000004590 computer program Methods 0.000 claims description 23
- 238000004806 packaging method and process Methods 0.000 claims description 11
- 238000012546 transfer Methods 0.000 claims description 3
- 230000006978 adaptation Effects 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 22
- SPBWHPXCWJLQRU-FITJORAGSA-N 4-amino-8-[(2r,3r,4s,5r)-3,4-dihydroxy-5-(hydroxymethyl)oxolan-2-yl]-5-oxopyrido[2,3-d]pyrimidine-6-carboxamide Chemical compound C12=NC=NC(N)=C2C(=O)C(C(=O)N)=CN1[C@@H]1O[C@H](CO)[C@@H](O)[C@H]1O SPBWHPXCWJLQRU-FITJORAGSA-N 0.000 description 15
- 102100021677 Baculoviral IAP repeat-containing protein 2 Human genes 0.000 description 15
- 101000896157 Homo sapiens Baculoviral IAP repeat-containing protein 2 Proteins 0.000 description 15
- 102100021662 Baculoviral IAP repeat-containing protein 3 Human genes 0.000 description 13
- 101000896224 Homo sapiens Baculoviral IAP repeat-containing protein 3 Proteins 0.000 description 13
- 230000004044 response Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008571 general function Effects 0.000 description 10
- 238000012795 verification Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 102100037024 E3 ubiquitin-protein ligase XIAP Human genes 0.000 description 1
- 101000804865 Homo sapiens E3 ubiquitin-protein ligase XIAP Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种签名算法的动态加载方法、装置、设备及存储介质,包括:获取目标签名算法的动态部分对应的脚本,该脚本包括:至少一个脚本API;封装目标签名算法的静态部分的至少一个通用API,至少一个脚本API与至少一个通用API具有映射关系;根据至少一个脚本API与至少一个通用API之间的映射关系,对脚本和静态部分进行组合,以生成目标签名算法;编译目标签名算法,从而可以提高签名算法的加载效率,另外,从整个CDN分发系统来看,可以提高整个CDN中的签名算法加载效率,使得用户接入或者业务适配的效率得到了提升。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种签名算法的动态加载方法、装置、设备及存储介质。
背景技术
内容分发网络(Content Delivery Network,CDN)的基本原理是广泛采用各种边缘服务器,即缓存服务器,将这些边缘服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的边缘服务器上,由边缘服务器直接响应用户请求,提高用户访问响应速度和命中率。
其中,用户访问网站的过程可以如下:客户端通过私钥(Secret Key,SK)和签名算法对统一资源定位符(Uniform Resource Locator,URL)进行签名,将得到的签名、URL和访问密钥(Access Key,AK)携带在超文本传输协议(Hyper Text Transfer Protocol,HTTP)请求中,该客户端对应的边缘服务器接收到HTTP请求后,确定该AK对应的SK,并通过签名算法和该SK对该URL进行签名,对得到的签名和HTTP请求中携带的签名进行比对,以验证该URL的真实性,如果URL是真实的,则边缘服务器发送HTTP响应,或者,当边缘服务器本地未保存用户所需的数据时,则会回源至源站获取用户所需的数据。
目前,签名算法是以传统的硬编码方式植入对应的边缘服务器中,然而,一方面,当某一台边缘服务器需要加载某签名算法时,如果按照这种传统的硬编码方式植入该签名算法,导致签名算法加载效率较低的问题。另一方面,在一些场景中,不同的客户端可能采用的签名算法不同,也就是客户端可能需要定制化的签名算法,而CDN中存在海量的边缘服务器,如果这种需要定制化的签名算法的客户端对应的边缘服务器都按照传统的硬编码方式植入签名算法,导致整个CDN中的签名算法加载效率较低的问题,最终导致用户接入或者业务适配的效率上存在明显的瓶颈。
发明内容
本申请提供一种签名算法的动态加载方法、装置、设备及存储介质,从而可以提高签名算法的加载效率,另外,从整个CDN分发系统来看,可以提高整个CDN中的签名算法加载效率,使得用户接入或者业务适配的效率得到了提升。
第一方面,提供一种签名算法的动态加载方法,包括:获取目标签名算法的动态部分对应的脚本,脚本包括:至少一个脚本API;封装目标签名算法的静态部分的至少一个通用API,至少一个脚本API与至少一个通用API具有映射关系;根据至少一个脚本API与至少一个通用API之间的映射关系,对脚本和静态部分进行组合,以生成目标签名算法;编译目标签名算法。
第二方面,提供一种签名算法的动态加载装置,包括:第一获取模块、封装模块、生成模块和编译模块,其中,第一获取模块用于获取目标签名算法的动态部分对应的脚本,脚本包括:至少一个脚本API;封装模块用于封装目标签名算法的静态部分的至少一个通用API,至少一个脚本API与至少一个通用API具有映射关系;生成模块用于根据至少一个脚本API与至少一个通用API之间的映射关系,对脚本和静态部分进行组合,以生成目标签名算法;编译模块用于编译目标签名算法。
第三方面,提供一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行如第一方面或其各实现方式中的方法。
第四方面,提供一种计算机可读存储介质,用于存储计算机程序,计算机程序使得计算机执行如第一方面或其各实现方式中的方法。
第五方面,提供一种计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行如第一方面或其各实现方式中的方法。
第六方面,提供一种计算机程序,计算机程序使得计算机执行如第一方面或其各实现方式中的方法。
综上,通过本申请技术方案,在边缘服务器静态编译的软件上,可热插拔地植入签名算法的动态部分对应的脚本,从而可以提高签名算法的加载效率。另外,从整个CDN分发系统来看,可以提高整个CDN中的签名算法加载效率,使得用户接入或者业务适配的效率得到了提升。
进一步的,本申请提供的动态加载方法可以在边缘服务器获取到HTTP请求之前进行,也就是上述目标签名算法的加载过程是一个预加载过程,该加载过程涉及的封装目标签名算法的静态部分的至少一个通用API可以被称为预封装过程,编译目标签名算法也是一种预编译过程,从而可以进一步的提高签名算法的加载效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种CDN分发系统架构图;
图2为本申请实施例提供的一种签名算法的动态加载方法的流程图;
图3为本申请实施例提供的至少一个脚本API与至少一个通用API之间的映射关系的示意图;
图4为本申请实施例提供的一种签名算法的使用方法的流程图;
图5为本申请实施例提供的一种脚本预加载过程的示意图;
图6为本申请实施例提供的KFC600的示意图;
图7是本申请实施例提供的电子设备700的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
CDN是构建在网络上的内容分发网络,依靠部署在各地边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率,核心技术是内容存储和分发技术。
应理解的是,在本申请中,边缘服务器也被称为缓存服务器、CDN边缘服务器、CDN缓存服务器、边缘节点或者CDN边缘节点等,本申请对此不做限制。
示例性的,图1为本申请实施例提供的一种CDN分发系统架构图,如图1所示,假设全球有N个数据中心,在这些数据中心里部署多台缓存服务器,形成缓存集群系统来缓存部分数据,用户访问数据就可以就近访问了。边缘服务器数目众多,最贴近用户,但是规模小,缓存的数据少,会出现用户无法命中的情况,那边缘服务器之上就需要部署区域节点,规模比边缘服务器更大,缓存数据更多;在区域服务器之上就是中心服务器,规模更大,缓存数据更多,如果还没有命中,只能回源到源站访问数据了。
需要说明的是,图1所示的CDN分发系统仅是一种示例,实际上,CDN分发系统可以包括:至少一层服务器即可,例如:该CDN分发系统只包括一层边缘服务器,当用户无法命中时,直接可以回源到源站访问数据了。再例如:该CDN分发系统包括一层边缘服务器和一层区域服务器,当用户无法在边缘服务器命中时,先去区域服务器获取数据,如果在区域服务器也未名中国,那么直接可以回源到源站访问数据了。
应理解的是,在本申请中,区域服务器也被称为区域节点、CDN区域服务器、CDN区域节点等,本申请对此不做限制。
应理解的是,在本申请中,中心服务器也被称为总节点、CDN中心服务器、CDN总节点等,本申请对此不做限制。
应理解的是,源站可以是万维网(World Wide Web,WWW)服务器。
如上所述,用户访问网站的过程可以如下:客户端通过SK和签名算法对URL进行签名,将得到的签名、URL和AK携带在HTTP请求中,该客户端对应的边缘服务器接收到HTTP请求后,确定该AK对应的SK,并通过签名算法和该SK对该URL进行签名,对得到的签名和HTTP请求中携带的签名进行比对,以验证该URL的真实性,如果URL是真实的,则边缘服务器发送HTTP响应,或者,当边缘服务器本地未保存用户所需的数据时,则会回源至源站获取用户所需的数据。
应理解的是,这里的签名算法可以是任何签名算法,例如:哈希消息认证码(Hash-based Message Authentication Code,HMAC)、消息摘要算法(Message-DigestAlgorithm,MD5)等,本申请对此不做限制。
应理解的是,上述AK是一种公共密钥(Public Key,PK)。
应理解的是,URL包括:协议部分、域名部分、端口部分、文件名部分、锚部分、参数部分。例如:假设URL为http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name,该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,文件传输协议(File Transfer Protocol,FTP)等等,该例子中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符,该URL的域名部分为“www.aspxfans.com”。一个URL中,也可以使用IP地址作为域名使用。从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”。从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名。从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分。从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
HTTP用于从Web服务器传输超文本到本地浏览器的传送协议,HTTP是一个基于传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol,TCP/IP)通信协议来传递数据,如超文本标记语言(Hyper Text Markup Language,HTML)文件、图片文件、查询结果等。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即Web服务器发送所有请求,即HTTP请求。Web服务器根据接收到的请求后,向客户端发送响应信息,即HTTP响应。
HTTP请求一般包括如下四部分:第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本;第二部分:请求头部(Header),紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息。第三部分:空行,请求头部后面的空行是必须的。第四部分:请求数据也叫主体,可以添加任意的其他数据。
HTTP响应一般包括如下四部分:状态行、消息报头、空行和响应正文。
如上所述,目前签名算法是以传统的硬编码方式植入对应的边缘服务器中,然而,一方面,当某一台边缘服务器需要加载某签名算法时,如果按照这种传统的硬编码方式植入该签名算法,导致签名算法加载效率较低的问题。另一方面,在一些场景中,不同的客户端可能采用的签名算法不同,也就是客户端可能需要定制化的签名算法,而CDN中存在海量的边缘服务器,如果这种需要定制化的签名算法的客户端对应的边缘服务器都按照传统的硬编码方式植入签名算法,导致整个CDN中的签名算法加载效率较低的问题,最终导致用户接入或者业务适配的效率上存在明显的瓶颈。
为了解决上述技术问题,本申请提供一种签名算法的动态加载方法、装置、设备及存储介质,在边缘服务器在静态编译的软件上,可热插拔地植入签名算法的动态部分对应的脚本,从而可以提高签名算法的加载效率。另外,从整个CDN分发系统来看,可以提高整个CDN中的签名算法加载效率,使得用户接入或者业务适配的效率得到了提升。
下面将对本申请技术方案进行详细阐述:
图2为本申请实施例提供的一种签名算法的动态加载方法的流程图,其中该方法应用于待加载目标签名算法的边缘服务器,可选的,该边缘服务器可以采用GO构建,但不限于此。需要说明的是,这里的加载可以被理解为该边缘服务器首次加载目标签名算法,或者被理解为该边缘服务器已删除旧版本的目标签名算法,首次加载新版本的目标签名算法等。如图2所示,该方法包括如下步骤:
S210:获取目标签名算法的动态部分对应的脚本,该脚本包括:至少一个脚本应用程序接口(Application Programming Interface,API)。
S220:封装目标签名算法的静态部分的至少一个通用API,至少一个脚本API与至少一个通用API具有映射关系。
S230:根据至少一个脚本API与至少一个通用API之间的映射关系,对脚本和静态部分进行组合,以生成目标签名算法。
S240:编译目标签名算法。
可选的,本申请技术方案的应用场景可以如下,但不限于此:
场景一:某用户调整了业务逻辑,期望使用另外一套算法规则,即上述的目标签名算法。
场景二:某用户是新接入用户,提出了自己的业务逻辑,比如用私有加密算法,如上述的目标签名算法。
应理解的是,该目标签名算法可以是待加载的任一签名算法,例如:该目前签名算法可以是待加载的HMAC算法或者MD5算法等,本申请对此不做限制。
示例性的,用户A调整了业务逻辑,使用客户端请求的header["a"],header["b"],以及问号串中的arg["a"],通过"\t"分隔拼接起来,期望使用目标签名算法,即HMAC算法进行签名,最终可以将签名保存到请求头["c"]中。
示例性的,用户B是新接入用户,使用客户端请求的header["c"],以及HTTP协议,通过"\n"分隔拼接起来,通过目标签名算法,即MD5算法进行签名,最终可以将签名保存到问号串["xx"]中。
应理解的是,目标签名算法中通常涉及一些通用的函数,如查询(Query)函数、主机(Host)查询函数、头部(Header)增加函数、头部(Header)删除函数、头部(Header)修改函数、头部(Header)查询函数、HTTP协议查询函数、加密计算函数、业务参数查询函数等,这些通用的函数构成该目标签名算法的静态部分,也就是该目标签名函数的不变部分。
相反的,每个签名算法之间存在一定的差异,或者,即使针对同一目标签名算法,针对不同的用户可能稍有不同,即目标签名算法可以是一种定制化的签名算法,这部分内容就是目标签名算法的动态部分,该动态部分可以是该目标签名算法中的一些动态参数、动态逻辑等。该动态部分也被称为目标签名算法的可变部分。
可选的,边缘服务器可以按照上述脚本的各个功能模块的划分情况,封装该脚本的至少一个脚本API,例如:脚本API1对应的功能模块包括:字符串转大写的参数,脚本API2对应的功能模块包括:字符串转小写的参数。
可选的,上述脚本可以是Lua脚本,基于此,本申请中的脚本API也可以被称为LuaAPI。
可选的,边缘服务器可以按照目标签名算法的静态部分的各个功能模块的划分情况,封装该静态部分的至少一个通用API,例如:通用API1对应的功能模块用于完成字符串转大写的操作,脚本API2对应的功能模块用于完成字符串转小写的操作。
可选的,如上所述,边缘服务器可以采用GO构建,基于此,本申请中的通用API也可以被称为GO API。
可选的,边缘服务器可以建立上述至少一个脚本API与至少一个通用API之间的映射关系,或者也可以是智能设备,如其他服务器建立上述至少一个脚本API与至少一个通用API之间的映射关系,并发送给该边缘服务器,本申请对此不做限制。示例性的,图3为本申请实施例提供的至少一个脚本API与至少一个通用API之间的映射关系的示意图,如图3所示,这里的至少一个脚本API与至少一个通用API之间的映射关系是一一对应关系,例如:脚本API1对应的功能模块包括:字符串转大写的参数,脚本API2对应的功能模块包括:字符串转小写的参数。通用API1对应的功能模块用于完成字符串转大写的操作,脚本API2对应的功能模块用于完成字符串转小写的操作。那么脚本API1与通用API1对应,脚本API2与通用API2对应。
应理解的是,至少一个脚本API与至少一个通用API之间的映射关系不限于一一对应关系,例如是多对一的映射关系,或者是一对多,又或者是多对多的映射关系,本申请对此不做限制。
进一步的,边缘服务器在获取到至少一个脚本API与所述至少一个通用API之间的映射关系之后,可以根据该映射关系对脚本和该静态部分进行组合,以生成目标签名算法。例如:边缘服务器将按照该映射关系,将脚本中的动态参数通过脚本API传递给该API对应的通用API,然后通过该通用API将该动态参数传递给对应的通用函数。再例如:边缘服务器将按照该映射关系,将脚本中的动态逻辑通过脚本API传递给该API对应的通用API,然后通过该通用API将该动态逻辑传递给对应的通用函数。又例如:边缘服务器将按照该映射关系,将脚本中的动态参数和动态逻辑通过脚本API传递给该API对应的通用API,然后通过该通用API将该动态参数和动态逻辑传递给对应的通用函数。或者,例如:边缘服务器将按照该映射关系,将静态部分的通用函数通过对应的通用API传递给脚本API,然后通过该脚本API将该通用函数传递给脚本,这时脚本就有了通用函数以及动态参数,或者,通用函数以及动态逻辑,又或者,通用函数以及动态参数、动态逻辑。
示例性的,假设脚本API1对应的功能模块包括:字符串转大写的参数,脚本API2对应的功能模块包括:字符串转小写的参数。通用API1对应的功能模块用于完成字符串转大写的操作,脚本API2对应的功能模块用于完成字符串转小写的操作。脚本API1与通用API1对应,脚本API2与通用API2对应。边缘服务器根据脚本API1与通用API1的对应关系,可以将字符串转小写的参数通过脚本API1传输给通用API1,从而可以实现目标签名算法中的字符串转小写的功能。类似的,边缘服务器根据脚本API2与通用API2的对应关系,可以将字符串转大写的参数通过脚本API2传输给通用API2,从而可以实现目标签名算法中的字符串转大写的功能。
进一步的,在边缘服务器生成目标签名算法之后,其需要将目标签名算法转化为可以识别的内容,即需要编译目标签名算法。
综上,在本申请中,边缘服务器可以获取目标签名算法的动态部分对应的脚本,该脚本包括:至少一个脚本API,封装目标签名算法的静态部分的至少一个通用API,至少一个脚本API与至少一个通用API具有映射关系,根据至少一个脚本API与至少一个通用API之间的映射关系,对脚本和静态部分进行组合,以生成目标签名算法,编译目标签名算法。即在边缘服务器静态编译的软件上,可热插拔地植入签名算法的动态部分对应的脚本,从而可以提高签名算法的加载效率。另外,从整个CDN分发系统来看,可以提高整个CDN中的签名算法加载效率,使得用户接入或者业务适配的效率得到了提升。
进一步的,本申请提供的动态加载方法可以在边缘服务器获取到HTTP请求之前进行,也就是上述目标签名算法的加载过程是一个预加载过程,该加载过程涉及的封装目标签名算法的静态部分的至少一个通用API可以被称为预封装过程,编译目标签名算法也是一种预编译过程,从而可以进一步的提高签名算法的加载效率。
可选的,边缘服务器还可以将目标签名算法的标识以及编译结果存储至哈希表中。
应理解的是,该目标签名算法的标识和该目标签名算法对应的编译结果也可以不以哈希表的表项的形式存储,本申请对任何签名算法的编译结果以及标识的存储方式不做限制。
可选的,该目标签名算法的标识是该目标签名算法的名称,又或者是该目标签名算法的动态部分对应的脚本的名称,这是因为每个签名算法的唯一性或者定制化主要体现在动态部分对应的脚本上,因此,通过脚本的名称也可以唯一标识签名算法。
图4为本申请实施例提供的一种签名算法的使用方法的流程图,其中该方法应用于已加载目标签名算法的边缘服务器,可选的,该边缘服务器可以采用GO构建,但不限于此。如图4所示,该方法包括如下步骤:
S410:获取客户端发送HTTP请求,HTTP请求包括:URL、第一签名、AK,第一签名是URL经过目标签名算法和SK签名后得到的。
S420:确定AK对应的SK。
S430:在哈希表中查找目标签名算法。
S440:根据目标签名算法和私钥对URL进行签名,以得到第二签名。
S450:根据第一签名和第二签名验证URL的真实性。
需要说明的是,本申请对如何根据目标签名算法和SK对URL进行签名不做限制。
应理解的是,SK与AK具有对应关系,二者是一对公私钥,即通过AK可以确定SK。
应理解的是,第一签名是客户端根据目标签名算法和SK对URL进行签名得到的签名。而第二签名是边缘服务器根据目标签名算法和SK对URL进行签名得到的签名。如果第一签名和第二签名相同,则表示该URL是真实的,如果第一签名和第二签名不同,则表示该URL不是真实的。
可选的,客户端可以决定自己所需的签名算法,即上述客户端对应的签名算法,接着将其对应的签名算法可以通知给边缘服务器,或者,边缘服务器可以根据客户端的域名配置确定客户端对应的签名算法是目标签名算法。总之,本申请对边缘服务器如何确定客户端对应的签名算法不做限制。
可选的,客户端的域名配置包括:客户端需要使用的签名算法,即上述客户端对应的签名算法。
可选的,该客户端的域名配置还包括以下至少一项:密钥参数、业务逻辑、客户端对应的签名算法的过期时间等。其中,该密钥参数包括:AK和SK,但不限于此。
可选的,针对一层结构的CDN分发系统,即该CDN分发系统只包括边缘服务器,而不包括区域服务器以及中心服务器。若验证URL是真实的,则边缘服务器判断本地是否缓存URL对应的访问数据,如HTML文件、图片文件、查询结果等。若本地缓存有URL对应的访问数据,则边缘服务器向客户端发送访问数据,该访问数据可以携带在HTTP响应中。若本地未缓存URL对应的访问数据,则该边缘服务器根据第二签名进行回源,即将第二标签发送给源站。
可选的,针对两层结构的CDN分发系统,即该CDN分发系统包括边缘服务器和区域服务器。若验证URL是真实的,则边缘服务器判断本地是否缓存URL对应的访问数据,如HTML文件、图片文件、查询结果等。若本地缓存有URL对应的访问数据,则边缘服务器向客户端发送访问数据,该访问数据可以携带在HTTP响应中。若本地未缓存URL对应的访问数据,这时该边缘服务器先将第二标签发送给其对应的区域服务器,接着区域服务器查看其本地是否缓存URL对应的访问数据。若本地缓存有URL对应的访问数据,则区域服务器向客户端发送访问数据。若本地未缓存URL对应的访问数据,这时该区域服务器根据第二签名进行回源,即将第二标签发送给源站。
可选的,针对三层结构的CDN分发系统,即该CDN分发系统包括边缘服务器、区域服务器和中心服务器。若验证URL是真实的,则边缘服务器判断本地是否缓存URL对应的访问数据,如HTML文件、图片文件、查询结果等。若本地缓存有URL对应的访问数据,则边缘服务器向客户端发送访问数据,该访问数据可以携带在HTTP响应中。若本地未缓存URL对应的访问数据,这时该边缘服务器先将第二标签发送给其对应的区域服务器,接着区域服务器查看其本地是否缓存URL对应的访问数据。若本地缓存有URL对应的访问数据,则区域服务器向客户端发送访问数据。若本地未缓存URL对应的访问数据,这时该区域服务器先将第二标签发送给中心服务器,接着中心服务器查看其本地是否缓存URL对应的访问数据。若本地缓存有URL对应的访问数据,则中心服务器向客户端发送访问数据。若本地未缓存URL对应的访问数据,这时该中心服务器根据第二签名进行回源,即将第二标签发送给源站。
需要说明的是,本申请对CDN分发系统的结构不做限制,相应的,对如何向客户端发送访问数据不做限制。
可选的,上述签名算法的动态加载方法可以具体由边缘服务器中的至少一个处理器或者至少一个芯片执行,例如:该方法可以由边缘服务器中的简洁、易用、高效缓存(KISSand Fast Cache,KFC)执行,KISS表示简洁、易用(Keep It Simple and Stupid)。
如上所述,目标密钥算法可以预加载至边缘服务器,而该目标密钥算法中的动态部分的脚本是该目标密钥算法的一部分,因此,可以理解该脚本也被预加载至边缘服务器。示例性的,图5为本申请实施例提供的一种脚本预加载过程的示意图,如图5所示,脚本1中包括:脚本API1、脚本API2和脚本API3,通过这些API可以将脚本1预加载至KFC中,进一步的,KFC可以对目标密钥算法进行编译,最终将编译结果存储至哈希表中,如图5所示,该哈希表中存储了脚本1的标识以及对应的编译结果1,在本申请中,编译结果可以是二进制数值。可选的,该哈希表中还可以存储其他密钥算法的标识和对应的编译结果,例如:如图5所示,该哈希表中还存储了脚本2的标识以及对应的编译结果2。
可选的,该KFC中可以包括如下的功能模块,但不限于此:HTTP接入模块、回源模块、监听模块和存储模块。示例性的,图6为本申请实施例提供的KFC600的示意图,如图6所示,KFC600中的监听模块610负责监听脚本文件目录下脚本是否有变化,例如:监听模块610监听该目录下是否增加了新的签名算法或者是否有签名算法发生了更新,如果该目录下新增了签名算法或者有签名算法发生了更新,那么监听模块610按照上述监听算法的动态加载方法,完成该签名算法的加载,并对该签名算法的编译结果存储至存储模块620中。
可选的,该签名算法的标识以及该签名算法对应的编译结果可以存储在哈希表中,而该哈希表被存储在存储模块620中。
应理解的是,该签名算法对应的编译结果也可以不以哈希表的表项的形式存储,本申请对签名算法的编译结果的存储方式不做限制。
可选的,上述签名算法的标识是该签名算法的名称,又或者是该签名算法的脚本的名称,这是因为每个签名算法的唯一性或者定制化主要体现在动态部分对应的脚本上,因此,通过脚本的名称也可以唯一标识签名算法。
可选的,KFC中的HTTP接入模块630可以获取HTTP请求,该HTTP请求包括:URL、第一签名、AK,第一签名是URL经过目标签名算法和SK签名后得到的,并将该HTTP请求发送给回源模块640,该回源模块640用于确定AK对应的SK,并在哈希表中查找目标签名算法,根据目标签名算法和私钥对URL进行签名,以得到第二签名,根据第一签名和第二签名验证URL的真实性。如果第一签名和第二签名相同,则表示该URL是真实的,如果第一签名和第二签名不同,则表示该URL不是真实的。进一步的,该回源模块640可以查看存储模块620是否缓存URL对应的访问数据,如果本地缓存了URL对应的访问数据,则回源模块640向客户端发送访问数据,若本地没有缓存URL对应的访问数据,则回源模块640根据第二签名进行回源,即将第二标签发送给源站。需要说明的是,这里假设CDN分发系统采用的一层结构的情况,当然,该CDN分发系统也可以采用多层结构,如果采用多层结构,那么回源模块640上文记载的返回访问数据或者将其第二标签发送给上层服务器,直至客户端获取到访问数据为止。
通过本申请提供的技术方案,签名算法由原先上万个机器的滚动升级,到一键全网推送脚本瞬间即完成升级,升级效率提升100倍以上。并且通过本申请提供的技术方案,降低了CPU消耗负担,且对访问质量几乎无影响。
上文结合图1至图6,详细描述了本申请的方法实施例,下文结合图7,详细描述本申请的装置实施例,应理解,装置实施例与方法实施例相互对应,类似的描述可以参照方法实施例。
本申请实施例还提供一种签名算法的动态加载装置。该动态加载装置包括:第一获取模块、封装模块、生成模块和编译模块,其中,第一获取模块用于获取目标签名算法的动态部分对应的脚本,脚本包括:至少一个脚本API。封装模块用于封装目标签名算法的静态部分的至少一个通用API,至少一个脚本API与至少一个通用API具有映射关系。生成模块用于根据至少一个脚本API与至少一个通用API之间的映射关系,对脚本和静态部分进行组合,以生成目标签名算法。编译模块用于编译目标签名算法。
可选的,该动态加载装置还包括:存储模块,用于在编译模块编译目标签名算法之后,将目标签名算法的标识和目标签名算法的编译结果存储至哈希表中。
可选的,该动态加载装置还包括:第二获取模块、第一确定模块、查找模块、签名模块、第二获取模块、第一确定模块、查找模块、签名模块和验证模块,其中,第二获取模块用于获取客户端发送的HTTP请求,HTTP请求包括:URL、第一签名、访问密钥,第一签名是URL经过目标签名算法和私钥签名后得到的。第一确定模块用于确定访问密钥对应的私钥。查找模块用于在哈希表中查找目标签名算法。签名模块用于根据目标签名算法和私钥对URL进行签名,以得到第二签名。验证模块用于根据第一签名和第二签名验证URL的真实性。
可选的,该动态加载装置还包括:第三获取模块、第二确定模块,其中,第三获取模块用于查找模块在在哈希表中查找目标签名算法之前,获取客户端的域名配置。第二确定模块用于根据客户端的域名配置确定客户端对应的签名算法是目标签名算法。
可选的,该动态加载装置还包括:判断模块、发送模块和回源模块,其中,判断模块用于若验证URL是真实的,则判断本地是否缓存URL对应的访问数据。发送模块用于若本地缓存有URL对应的访问数据,则向客户端发送访问数据。回源模块用于若本地未缓存URL对应的访问数据,则根据第二签名进行回源。
可选的,验证模块具体用于:若第一签名和第二签名相同,则确定URL真实。若第一签名和第二签名不相同,则确定URL不真实。
可选的,目标签名算法的标识是目标签名算法的名称或者脚本的名称。
可选的,该签名算法的动态加载装置采用GO构建。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,该签名算法的动态加载装置可以执行上述方法实施例,并且该签名算法的动态加载装置中的各个模块的前述和其它操作和/或功能分别为了上述方法实施例中的各个方法中的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的动态加载装置。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图7是本申请实施例提供的电子设备700的示意性框图,该电子设备700可用作边缘服务器。
如图7所示,该电子设备700可包括:
存储器710和处理器720,该存储器710用于存储计算机程序,并将该程序代码传输给该处理器720。换言之,该处理器720可以从存储器710中调用并运行计算机程序,以实现本申请实施例中的方法。
例如,该处理器720可用于根据该计算机程序中的指令执行上述方法实施例。
在本申请的一些实施例中,该处理器720可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器710包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器710中,并由该处理器720执行,以完成本申请提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该电子设备中的执行过程。
如图7所示,该电子设备还可包括:
收发器730,该收发器730可连接至该处理器720或存储器710。
其中,处理器720可以控制该收发器730与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器730可以包括发射机和接收机。收发器730还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
本申请还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
根据本公开的一个或多个实施例,提供一种签名算法的动态加载方法,包括:获取目标签名算法的动态部分对应的脚本,脚本包括:至少一个脚本API;封装目标签名算法的静态部分的至少一个通用API,至少一个脚本API与至少一个通用API具有映射关系;根据至少一个脚本API与至少一个通用API之间的映射关系,对脚本和静态部分进行组合,以生成目标签名算法;编译目标签名算法。
根据本公开的一个或多个实施例,编译目标签名算法之后,还包括:将目标签名算法的标识和目标签名算法的编译结果存储至哈希表中。
根据本公开的一个或多个实施例,将目标签名算法的标识和目标签名算法的编译结果存储至哈希表中之后,还包括:获取客户端发送的HTTP请求,HTTP请求包括:URL、第一签名、访问密钥,第一签名是URL经过目标签名算法和私钥签名后得到的;确定访问密钥对应的私钥;在哈希表中查找目标签名算法;根据目标签名算法和私钥对URL进行签名,以得到第二签名;根据第一签名和第二签名验证URL的真实性。
根据本公开的一个或多个实施例,在哈希表中查找目标签名算法之前,还包括:获取客户端的域名配置;根据客户端的域名配置确定客户端对应的签名算法是目标签名算法。
根据本公开的一个或多个实施例,根据第一签名和第二签名验证URL的真实性之后,还包括:若验证URL是真实的,则判断本地是否缓存URL对应的访问数据;若本地缓存有URL对应的访问数据,则向客户端发送访问数据;若本地未缓存URL对应的访问数据,则根据第二签名进行回源。
根据本公开的一个或多个实施例,根据第一签名和第二签名验证URL的真实性,包括:若第一签名和第二签名相同,则确定URL真实;若第一签名和第二签名不相同,则确定URL不真实。
根据本公开的一个或多个实施例,目标签名算法的标识是目标签名算法的名称或者脚本的名称。
根据本公开的一个或多个实施例,方法应用于边缘服务器中,边缘服务器采用GO构建。
根据本公开的一个或多个实施例,提供一种签名算法的动态加载装置,包括:第一获取模块、封装模块、生成模块和编译模块,其中,第一获取模块用于获取目标签名算法的动态部分对应的脚本,脚本包括:至少一个脚本API。封装模块用于封装目标签名算法的静态部分的至少一个通用API,至少一个脚本API与至少一个通用API具有映射关系。生成模块用于根据至少一个脚本API与至少一个通用API之间的映射关系,对脚本和静态部分进行组合,以生成目标签名算法。编译模块用于编译目标签名算法。
根据本公开的一个或多个实施例,该动态加载装置还包括:存储模块,用于在编译模块编译目标签名算法之后,将目标签名算法的标识和目标签名算法的编译结果存储至哈希表中。
根据本公开的一个或多个实施例,该动态加载装置还包括:第二获取模块、第一确定模块、查找模块、签名模块、第二获取模块、第一确定模块、查找模块、签名模块和验证模块,其中,第二获取模块用于获取客户端发送的HTTP请求,HTTP请求包括:URL、第一签名、访问密钥,第一签名是URL经过目标签名算法和私钥签名后得到的。第一确定模块用于确定访问密钥对应的私钥。查找模块用于在哈希表中查找目标签名算法。签名模块用于根据目标签名算法和私钥对URL进行签名,以得到第二签名。验证模块用于根据第一签名和第二签名验证URL的真实性。
根据本公开的一个或多个实施例,该动态加载装置还包括:第三获取模块、第二确定模块,其中,第三获取模块用于查找模块在在哈希表中查找目标签名算法之前,获取客户端的域名配置。第二确定模块用于根据客户端的域名配置确定客户端对应的签名算法是目标签名算法。
根据本公开的一个或多个实施例,该动态加载装置还包括:判断模块、发送模块和回源模块,其中,判断模块用于若验证URL是真实的,则判断本地是否缓存URL对应的访问数据。发送模块用于若本地缓存有URL对应的访问数据,则向客户端发送访问数据。回源模块用于若本地未缓存URL对应的访问数据,则根据第二签名进行回源。
根据本公开的一个或多个实施例,验证模块具体用于:若第一签名和第二签名相同,则确定URL真实。若第一签名和第二签名不相同,则确定URL不真实。
根据本公开的一个或多个实施例,目标签名算法的标识是目标签名算法的名称或者脚本的名称。
根据本公开的一个或多个实施例,该签名算法的动态加载装置采用GO构建。
根据本公开的一个或多个实施例,提供一种电子设备,包括:处理器和存储器,存储器用于存储计算机程序,处理器用于调用并运行存储器中存储的计算机程序,以执行上述签名算法的动态加载方法。
根据本公开的一个或多个实施例,提供一种计算机可读存储介质,用于存储计算机程序,计算机程序使得计算机执行上述签名算法的动态加载方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上该,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。
Claims (11)
1.一种签名算法的动态加载方法,其特征在于,包括:
获取目标签名算法的动态部分对应的脚本,所述脚本包括:至少一个脚本应用程序接口API;
封装所述目标签名算法的静态部分的至少一个通用API,所述至少一个脚本API与所述至少一个通用API具有映射关系;
根据所述至少一个脚本API与所述至少一个通用API之间的映射关系,对所述脚本和所述静态部分进行组合,以生成所述目标签名算法;
编译所述目标签名算法。
2.根据权利要求1所述的方法,其特征在于,所述编译所述目标签名算法之后,还包括:
将所述目标签名算法的标识和所述目标签名算法的编译结果存储至哈希表中。
3.根据权利要求2所述的方法,其特征在于,所述将所述目标签名算法的标识和所述目标签名算法的编译结果存储至哈希表中之后,还包括:
获取客户端发送的超文本传输协议HTTP请求,所述HTTP请求包括:统一资源定位符URL、第一签名、访问密钥,所述第一签名是所述URL经过所述目标签名算法和私钥签名后得到的;
确定所述访问密钥对应的所述私钥;
在所述哈希表中查找所述目标签名算法;
根据所述目标签名算法和所述私钥对所述URL进行签名,以得到第二签名;
根据所述第一签名和所述第二签名验证所述URL的真实性。
4.根据权利要求3所述的方法,其特征在于,所述在所述哈希表中查找所述目标签名算法之前,还包括:
获取所述客户端的域名配置;
根据所述客户端的域名配置确定所述客户端对应的签名算法是所述目标签名算法。
5.根据权利要求3或4所述的方法,其特征在于,所述根据所述第一签名和所述第二签名验证所述URL的真实性之后,还包括:
若验证所述URL是真实的,则判断本地是否缓存所述URL对应的访问数据;
若本地缓存有所述URL对应的访问数据,则向所述客户端发送所述访问数据;
若本地未缓存所述URL对应的访问数据,则根据所述第二签名进行回源。
6.根据权利要求3或4所述的方法,其特征在于,所述根据所述第一签名和所述第二签名验证所述URL的真实性,包括:
若所述第一签名和所述第二签名相同,则确定所述URL真实;
若所述第一签名和所述第二签名不相同,则确定所述URL不真实。
7.根据权利要求2-4任一项所述的方法,其特征在于,所述目标签名算法的标识是所述目标签名算法的名称或者所述脚本的名称。
8.根据权利要求1-4任一项所述的方法,其特征在于,所述方法应用于边缘服务器中,所述边缘服务器采用GO构建。
9.一种签名算法的动态加载装置,其特征在于,包括:
第一获取模块,用于获取目标签名算法的动态部分对应的脚本,所述脚本包括:至少一个脚本API;
封装模块,用于封装所述目标签名算法的静态部分的至少一个通用API,所述至少一个脚本API与所述至少一个通用API具有映射关系;
生成模块,用于根据所述至少一个脚本API与所述至少一个通用API之间的映射关系,对所述脚本和所述静态部分进行组合,以生成所述目标签名算法;
编译模块,用于编译所述目标签名算法。
10.一种电子设备,其特征在于,包括:
处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1至8中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110733971.7A CN113378095B (zh) | 2021-06-30 | 2021-06-30 | 签名算法的动态加载方法、装置、设备及存储介质 |
US18/562,163 US20240259215A1 (en) | 2021-06-30 | 2022-05-23 | Dynamic loading method and apparatus for signature algorithm, and device and storage medium |
PCT/CN2022/094381 WO2023273693A1 (zh) | 2021-06-30 | 2022-05-23 | 签名算法的动态加载方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110733971.7A CN113378095B (zh) | 2021-06-30 | 2021-06-30 | 签名算法的动态加载方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113378095A true CN113378095A (zh) | 2021-09-10 |
CN113378095B CN113378095B (zh) | 2023-08-04 |
Family
ID=77580284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110733971.7A Active CN113378095B (zh) | 2021-06-30 | 2021-06-30 | 签名算法的动态加载方法、装置、设备及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240259215A1 (zh) |
CN (1) | CN113378095B (zh) |
WO (1) | WO2023273693A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080059A (zh) * | 2022-06-28 | 2022-09-20 | 北京火山引擎科技有限公司 | 请求处理方法、装置和电子设备 |
WO2023273693A1 (zh) * | 2021-06-30 | 2023-01-05 | 北京字节跳动网络技术有限公司 | 签名算法的动态加载方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130080888A1 (en) * | 2011-09-25 | 2013-03-28 | Mathieu Audet | Method and apparatus of navigating information element axes |
CN105653933A (zh) * | 2016-01-06 | 2016-06-08 | 北京京东尚科信息技术有限公司 | 插件加载方法及装置 |
CN112434286A (zh) * | 2020-11-12 | 2021-03-02 | 浙江大华技术股份有限公司 | 动态库的调用方法、装置、电子装置和存储介质 |
CN112989325A (zh) * | 2021-03-12 | 2021-06-18 | 远光软件股份有限公司 | 服务调用方法、装置、存储介质和电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190362344A1 (en) * | 2018-05-24 | 2019-11-28 | Capital One Services, Llc | Secure element to protect transactions made by or within a vehicle |
CN111541542B (zh) * | 2019-12-31 | 2023-09-15 | 远景智能国际私人投资有限公司 | 请求的发送和验证方法、装置及设备 |
CN111835523B (zh) * | 2020-05-25 | 2023-05-30 | 北京齐尔布莱特科技有限公司 | 一种数据请求方法、系统及计算设备 |
CN113378095B (zh) * | 2021-06-30 | 2023-08-04 | 抖音视界有限公司 | 签名算法的动态加载方法、装置、设备及存储介质 |
-
2021
- 2021-06-30 CN CN202110733971.7A patent/CN113378095B/zh active Active
-
2022
- 2022-05-23 US US18/562,163 patent/US20240259215A1/en active Pending
- 2022-05-23 WO PCT/CN2022/094381 patent/WO2023273693A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130080888A1 (en) * | 2011-09-25 | 2013-03-28 | Mathieu Audet | Method and apparatus of navigating information element axes |
CN105653933A (zh) * | 2016-01-06 | 2016-06-08 | 北京京东尚科信息技术有限公司 | 插件加载方法及装置 |
CN112434286A (zh) * | 2020-11-12 | 2021-03-02 | 浙江大华技术股份有限公司 | 动态库的调用方法、装置、电子装置和存储介质 |
CN112989325A (zh) * | 2021-03-12 | 2021-06-18 | 远光软件股份有限公司 | 服务调用方法、装置、存储介质和电子设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023273693A1 (zh) * | 2021-06-30 | 2023-01-05 | 北京字节跳动网络技术有限公司 | 签名算法的动态加载方法、装置、设备及存储介质 |
CN115080059A (zh) * | 2022-06-28 | 2022-09-20 | 北京火山引擎科技有限公司 | 请求处理方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113378095B (zh) | 2023-08-04 |
WO2023273693A1 (zh) | 2023-01-05 |
US20240259215A1 (en) | 2024-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9628554B2 (en) | Dynamic content delivery | |
US9191458B2 (en) | Request routing using a popularity identifier at a DNS nameserver | |
US6038603A (en) | Processing customized uniform resource locators | |
US9479476B2 (en) | Processing of DNS queries | |
US8521885B1 (en) | Dynamically translating resource identifiers for request routing using popularity information | |
US10783212B2 (en) | Method and apparatus for realizing communication between web page and native application, and electronic device | |
WO2023273693A1 (zh) | 签名算法的动态加载方法、装置、设备及存储介质 | |
US9182971B2 (en) | Distributed control method and apparatus using URL | |
CN107181779B (zh) | 访问请求的处理方法、装置和系统 | |
US20130198313A1 (en) | Using entity tags (etags) in a hierarchical http proxy cache to reduce network traffic | |
CN111277592B (zh) | 一种鉴权方法、装置、存储介质及计算机设备 | |
CN113452780B (zh) | 针对客户端的访问请求处理方法、装置、设备及介质 | |
JP2000500259A (ja) | 動的に生成するカスタム化ページのサーバ独立キャッシュ方式の方法および装置 | |
CN104714965A (zh) | 静态资源去重方法、静态资源管理方法及装置 | |
US10817424B1 (en) | Using post-cache edge computing to re-populate dynamic content in cached content | |
WO2013092661A1 (en) | Method, system and computer program product for providing composite web application | |
US11853806B2 (en) | Cloud computing platform that executes third-party code in a distributed cloud computing network and uses a distributed data store | |
US7069297B2 (en) | Data transfer scheme using re-direct response message for reducing network load | |
CN106856456B (zh) | 缓存集群服务的处理方法及系统 | |
CN107786594A (zh) | 业务请求处理方法及装置 | |
CN109672756B (zh) | 一种数据传输方法及相关装置、服务器和存储介质 | |
CN114830105A (zh) | 一种数据读取方法以及终端 | |
CN113973135B (zh) | 数据缓存处理方法、装置、缓存网格平台和存储介质 | |
CN110191203A (zh) | 实现服务器动态访问的方法及电子设备 | |
CN113347234B (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 | ||
CB02 | Change of applicant information |
Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing. Applicant after: Douyin Vision Co.,Ltd. Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing. Applicant before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |