一种基于区块链的内容分发网络CDN共享方法及系统转让专利

申请号 : CN201710848414.3

文献号 : CN107666484B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 姚建国朱昱锦杨铭

申请人 : 上海交通大学

摘要 :

本发明提供了一种基于区块链的CDN共享方法及系统,智能合约通过智能合约接口接收用户终端发送的请求,并将预分配个人节点列表返回给用户终端;预分配个人节点列表中的预分配个人节点接收到用户终端的请求后,查询本地是否有对应内容的缓存,若有,则直接使用本地缓存完成请求,若没有,则向周边个人节点嗅探是否有对应内容的缓存,若有,则从周边个人节点获取对应内容的缓存并提供给用户终端,若没有,则向对应内容的源服务器发送请求,获取对应内容的缓存并提供给用户终端。本发明使用区块链对内容分发网络进行管理,引入个人节点,将传统的规模大而分布粒度粗的节点,转化为数量庞大,分布更细的个人节点,提高了内容分发的能力和覆盖度。

权利要求 :

1.一种基于区块链的内容分发网络CDN共享方法,其特征在于,包括步骤:配置步骤:

搭建初始网络供个人节点加入形成区块链;

CDN服务端发布服务的内容以及提供配置文件;

区块链运营端根据配置文件发布智能合约,并将智能合约记录到区块链中;

CDN共享步骤:

智能合约通过智能合约接口接收用户终端发送的请求,并将预分配个人节点列表返回给用户终端;

预分配个人节点列表中的预分配个人节点接收到用户终端的请求后,查询本地是否有对应内容的缓存,若有,则直接使用本地缓存完成请求,若没有,则向周边个人节点嗅探是否有对应内容的缓存,若有,则从周边个人节点获取对应内容的缓存并提供给用户终端,若没有,则向对应内容的源服务器发送请求,获取对应内容的缓存并提供给用户终端。

2.根据权利要求1所述的基于区块链的内容分发网络CDN共享方法,其特征在于,还包括步骤:结算步骤:

在请求完成后,用户终端向对应的预分配个人节点传递任务的完成情况,区块链中的智能合约验证完成情况,根据验证结果提供费用给对应的预分配个人节点。

3.根据权利要求2所述的基于区块链的内容分发网络CDN共享方法,其特征在于,所述区块链运营端根据配置文件发布智能合约,并将智能合约记录到区块链中,具体包括:根据CDN服务端提供的配置文件,制定相应的智能合约,并创建相应的智能合约账户;

把相关内容预分配给部分个人节点,作为相关内容的默认服务节点;

在智能合约账户收到预定金额后激活智能合约。

4.根据权利要求3所述的基于区块链的内容分发网络CDN共享方法,其特征在于,所述费用从所述智能合约账户扣除。

5.根据权利要求1所述的基于区块链的内容分发网络CDN共享方法,其特征在于,在空闲时段,个人节点周期性地更新其部分缓存内容。

6.根据权利要求5所述的基于区块链的内容分发网络CDN共享方法,其特征在于,所述个人节点周期性地更新其部分缓存内容包括:在个人节点初始化阶段,定义自身缓存内容的优先级;

在个人节点运行阶段,根据自身缓存内容热度、全局内容共享率更新优先级;

其中,个人节点根据优先级顺序,获取并缓存相关内容,在空间不足的情况下,保留优先级高的内容,以及,当内容过期时,个人节点主动更新内容以替换过期内容。

7.根据权利要求1所述的基于区块链的内容分发网络CDN共享方法,其特征在于,智能合约通过最近节点优先策略获取所述预分配个人节点列表,包括:个人节点在初始化获取内容或者更新自身内容时,到对应的智能合约进行注册或更新注册信息;

智能合约接收到用户终端的请求时,根据注册信息结合CDN算法得到所述预分配个人节点列表。

8.根据权利要求1所述的基于区块链的内容分发网络CDN共享方法,其特征在于,所述用户终端向预分配个人节点列表中的预分配个人节点发送请求包括:用户终端向所述预分配个人节点列表中的一个预分配个人节点发送请求,或者向所述预分配个人节点列表中的所有预分配个人节点发送请求并选择最快返回用户终端对应内容的预分配个人节点。

9.一种基于区块链的内容分发网络CDN共享系统,其特征在于,包括区块链,所述区块链由至少一个个人节点以及智能合约接口组成,所述个人节点包括:智能合约存储模块:存储区块链运营端提供的智能合约;

缓存模块:存储CDN服务端发布的内容;

所述区块链中的个人节点之间通信连接,所述智能合约接口与所述区块链中的所有个人节点的所述智能合约存储模块连接;

智能合约通过智能合约接口接收用户终端发送的请求,并将预分配个人节点列表返回给用户终端;

预分配个人节点列表中的预分配个人节点接收到用户终端的请求后,查询本地是否有对应内容的缓存,若有,则直接使用本地缓存完成请求,若没有,则向周边个人节点嗅探是否有对应内容的缓存,若有,则从周边个人节点获取对应内容的缓存并提供给用户终端,若没有,则向对应内容的源服务器发送请求,获取对应内容的缓存并提供给用户终端。

10.根据权利要求9所述的内容分发网络CDN共享系统,其特征在于,所述个人节点还包括交易记录模块:在请求完成后,记录用户终端传递的任务的完成情况,供智能合约验证;

智能合约根据验证结果提供费用给对应的个人节点。

说明书 :

一种基于区块链的内容分发网络CDN共享方法及系统

技术领域

[0001] 本发明涉及通信技术领域,具体地,涉及一种基于区块链的CDN共享方法及系统。

背景技术

[0002] 内容分发网络(CDN),通过分布式的缓存网络,将内容与用户终端的距离拉近,为CDN客户提供访问加速服务。当前CDN具有较强的专业性,需要较多和较好的覆盖的节点来提供高质量的内容分发服务。因此,CDN的使用费用较高,大部分CDN客户都难以承受这样的价格。虽然目前市场上已经存在很多分布式系统,比如GFS等,但除了使用成本高昂以外,CDN主服务器带来的性能瓶颈以及安全隐患也始终未能解决。
[0003] 区块链的本质是分布式账本。它作为比特币的底层技术而日益被熟知,具有去中心化、开放性、自治性、信息不可篡改、匿名性的特点。根据这种特性,如果能在此系统上搭建CDN,能够显著降低传统CDN的开销,为终端用户提供更快的访问速度,为CDN客户提供更廉价的费用。

发明内容

[0004] 针对现有技术中的缺陷,本发明的目的是提供一种基于区块链的CDN共享方法及系统。
[0005] 根据本发明提供的一种基于区块链的CDN共享方法,包括步骤:
[0006] 配置步骤:
[0007] 搭建初始网络供个人节点加入形成区块链;
[0008] CDN服务端发布服务的内容以及提供配置文件;
[0009] 区块链运营端根据配置文件发布智能合约,并将智能合约记录到区块链中;
[0010] CDN共享步骤:
[0011] 智能合约通过智能合约接口接收用户终端发送的请求,并将预分配个人节点列表返回给用户终端;
[0012] 预分配个人节点列表中的预分配个人节点接收到用户终端的请求后,查询本地是否有对应内容的缓存,若有,则直接使用本地缓存完成请求,若没有,则向周边个人节点嗅探是否有对应内容的缓存,若有,则从周边个人节点获取对应内容的缓存并提供给用户终端,若没有,则向对应内容的源服务器发送请求,获取对应内容的缓存并提供给用户终端。
[0013] 优选的,还包括步骤:
[0014] 结算步骤:
[0015] 在请求完成后,用户终端向对应的预分配个人节点传递任务的完成情况,区块链中的智能合约验证完成情况,根据验证结果提供费用给对应的预分配个人节点。
[0016] 优选的,所述区块链运营端根据配置文件发布智能合约,并将智能合约记录到区块链中,具体包括:
[0017] 根据CDN服务端提供的配置文件,制定相应的智能合约,并创建相应的智能合约账户;
[0018] 把相关内容预分配给部分个人节点,作为相关内容的默认服务节点;
[0019] 在智能合约账户收到预定金额后激活智能合约。
[0020] 优选的,所述费用从所述智能合约账户扣除。
[0021] 优选的,在空闲时段,个人节点周期性地更新其部分缓存内容。
[0022] 优选的,所述个人节点周期性地更新其部分缓存内容包括:
[0023] 在个人节点初始化阶段,定义自身缓存内容的优先级;
[0024] 在个人节点运行阶段,根据自身缓存内容热度、全局内容共享率更新优先级;
[0025] 其中,个人节点根据优先级顺序,获取并缓存相关内容,在空间不足的情况下,保留优先级高的内容,以及,当内容过期时,个人节点主动更新内容以替换过期内容。
[0026] 优选的,智能合约通过最近节点优先策略获取所述预分配个人节点列表,包括:
[0027] 个人节点在初始化获取内容或者更新自身内容时,到对应的智能合约进行注册或更新注册信息;
[0028] 智能合约接收到用户终端的请求时,根据注册信息结合CDN算法得到所述预分配个人节点列表。
[0029] 优选的,所述用户终端向预分配个人节点列表中的预分配个人节点发送请求包括:
[0030] 用户终端向所述预分配个人节点列表中的一个预分配个人节点发送请求,或者向所述预分配个人节点列表中的所有预分配个人节点发送请求并选择最快返回用户终端对应内容的预分配个人节点。
[0031] 本发明另提供一种基于区块链的CDN共享系统,包括区块链,所述区块链由至少一个个人节点以及智能合约接口组成,所述个人节点包括:
[0032] 智能合约存储模块:存储区块链运营端提供的智能合约;
[0033] 缓存模块:存储CDN服务端发布的内容;
[0034] 所述区块链中的个人节点之间通信连接,所述智能合约接口与所述区块链中的所有个人节点的所述智能合约存储模块连接;
[0035] 智能合约通过智能合约接口接收用户终端发送的请求,并将预分配个人节点列表返回给用户终端;
[0036] 预分配个人节点列表中的预分配个人节点接收到用户终端的请求后,查询本地是否有对应内容的缓存,若有,则直接使用本地缓存完成请求,若没有,则向周边个人节点嗅探是否有对应内容的缓存,若有,则从周边个人节点获取对应内容的缓存并提供给用户终端,若没有,则向对应内容的源服务器发送请求,获取对应内容的缓存并提供给用户终端。
[0037] 优选的,所述个人节点还包括交易记录模块:在请求完成后,记录用户终端传递的任务的完成情况,供智能合约验证;
[0038] 智能合约根据验证结果提供费用给对应的个人节点。
[0039] 与现有技术相比,本发明具有如下的有益效果:
[0040] 本发明的优势在于:使用区块链对内容分发网络进行管理,避免了自己搭建内容分发网络这一复杂和昂贵的过程。并且使用有偿任务的模式,吸引个人节点加入,将传统的规模大而分布粒度粗的节点,转化为数量庞大,分布更细的个人节点,提高了内容分发的能力和覆盖度,解决了CDN主服务器带来的性能瓶颈以及安全隐患。

附图说明

[0041] 通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0042] 图1为本发明的结构示意图;
[0043] 图2为本发明基于区块链的CDN工作示意图;
[0044] 图3为智能合约的状态信息图;
[0045] 图4为本发明的内容发布流程图;
[0046] 图5为本发明的缓存策略示意图;
[0047] 图6为本发明用户终端发送请求的示意图。

具体实施方式

[0048] 下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
[0049] 根据本发明提供的一种基于区块链的CDN共享方法,包括以下步骤:
[0050] 配置步骤:
[0051] 如图1所示,本发明所采用的架构是典型的无中心化节点的分布式系统架构。搭建初始网络供个人节点加入形成区块链,区块链由不限的个人节点运营维护,并通过共识算法保证系统状态一致。区块链负责保存智能合约、域名解析记录以及一般的交易记录。CDN服务端负责内容的发布,需要自行维护源服务器,保证服务的提供,以及提供配置文件。区块链运营端根据配置文件发布智能合约,并将智能合约记录到区块链中。用户终端则调用区块链中智能合约的应用编程接口(API),获得对应的服务。
[0052] CDN共享步骤:
[0053] 如图2、图6所示,用户终端向区块链的智能合约接口发送请求,智能合约将预分配个人节点列表返回给用户终端;
[0054] 用户终端向预分配个人节点列表中的预分配个人节点发送请求;
[0055] 预分配个人节点接收到用户终端的请求后,查询本地是否有对应内容的缓存,若有,则直接使用本地缓存完成请求,若没有,则向周边个人节点嗅探是否有对应内容的缓存,若有,则从周边个人节点获取对应内容的缓存并提供给用户终端,若没有,则向对应内容的源服务器发送请求,获取对应内容的缓存并提供给用户终端。
[0056] 在这里,用户终端可以向所述预分配个人节点列表中的一个预分配个人节点发送请求,也可以向所述预分配个人节点列表中的所有预分配个人节点发送请求并选择最快返回用户终端对应内容的预分配个人节点。
[0057] 结算步骤:
[0058] 在请求完成后,用户终端向对应的预分配个人节点传递任务的完成情况,区块链中的智能合约验证完成情况,根据验证结果提供费用给对应的预分配个人节点。完成情况包括任务对象、流量大小信息,通过私钥加密形成签名,传递给对应的预分配个人节点。区块链中的智能合约状态(如图3所示)通过共识算法保持一致。
[0059] 如图4所示,内容分发网络服务端发布新的加速内容时,由区块链运营端根据配置文件,创建对应的智能合约。在内容分发网络服务端向智能合约转入所需的费用后,智能合约被激活,开始负责管理此内容的内容分发网络服务。我们使用的策略如下:
[0060] 步骤1:根据CDN服务端提供的配置文件,制定相应的智能合约,并创建相应的智能合约账户;
[0061] 步骤2:把相关内容预分配给部分个人节点,作为相关内容的默认服务节点;
[0062] 步骤3:在智能合约账户收到预定金额后激活智能合约。结算步骤中的费用正是从智能合约账户中扣除。
[0063] 如图5所示,为了加快整个分布式网络中资源的高效分配,在空闲时段,各个节点会周期地缓存更新部分内容,对未来预期做出优化决策。我们使用优先级缓存策略,该策略遵循以下内容:
[0064] 在个人节点初始化阶段,定义自身缓存内容的优先级;
[0065] 在个人节点运行阶段,根据自身缓存内容热度、全局内容共享率更新优先级;
[0066] 其中,个人节点根据优先级顺序,获取并缓存相关内容,在空间不足的情况下,保留优先级高的内容,以及,当内容过期时,个人节点主动更新内容以替换过期内容。
[0067] 由于内容分发网络的性能受地区限制较大,一般使用距离用户终端较近的个人节点接受请求。为了能够使系统在去中心化的同时,实现较高的性能,我们使用了最近节点优先策略。该策略遵循以下内容:
[0068] 个人节点在初始化获取内容或者更新自身内容时,到对应的智能合约进行注册或更新注册信息;
[0069] 智能合约接收到用户终端的请求时,根据注册信息结合CDN算法得到所述预分配个人节点列表。
[0070] 如图2、图6所示,在上述基于区块链的CDN共享方法的基础上,本发明还提供一种基于区块链的CDN共享系统,包括区块链,区块链由至少一个个人节点以及智能合约接口组成,个人节点包括:
[0071] 智能合约存储模块:存储区块链运营端提供的智能合约;
[0072] 缓存模块:存储CDN服务端发布的内容;
[0073] 交易记录模块:在请求完成后,记录用户终端传递的任务的完成情况,供智能合约验证;
[0074] 区块链中的个人节点之间通信连接,智能合约接口与区块链中的所有个人节点的智能合约存储模块连接;
[0075] 智能合约通过智能合约接口接收用户终端发送的请求,并将预分配个人节点列表返回给用户终端;
[0076] 预分配个人节点列表中的预分配个人节点接收到用户终端的请求后,查询本地是否有对应内容的缓存,若有,则直接使用本地缓存完成请求,若没有,则向周边个人节点嗅探是否有对应内容的缓存,若有,则从周边个人节点获取对应内容的缓存并提供给用户终端,若没有,则向对应内容的源服务器发送请求,获取对应内容的缓存并提供给用户终端。在请求完成后,智能合约根据验证结果提供费用给对应的个人节点。
[0077] 以下通过举例详细说明本发明的运行过程:
[0078] 假设CDN服务端A搭建了源服务器运行自己技术博客,并且拥有域名gooblog.com,可以通过公网访问。该网站下有两个页面,分别为index.html和admin/index.html。CDN服务端A希望使用本发明为其博客进行CDN加速服务。如图2所示,客户A首先需要填写自己的配置文件,包括:加速的域名、服务时间(默认为一个月)、加速内容类型(具体包括:网页、大型文件、视频点播、视频直播)、可访问文件地址列表(index.html、admin/index.html)。
[0079] 本发明需要使用货币进行交易,货币可以是虚拟货币,例如C币。
[0080] 系统接受到了CDN服务端A的配置文件后,将会为其创建并发布对应的智能合约M。在创建成功后,返回CDN服务端A智能合约M的账户地址T,然后在区块链上更新此域名和智能合约的键值对数据(gooblog.com-M),用来作为查询内容的索引。此过程需要花费开销
0.1C币。同时,CDN服务端A向账户地址T中转入一定数量C币,比如1个,用来激活智能合约。
[0081] 此时,用户终端B想要访问gooblog.com/index.html,通过客户端在区块链中找到了此域名对应的智能合约M,用户终端B内的客户端调用M的接口getFile(client_address,index.html)。智能合约保存请求和终端用户后,通过CDN相关算法,返回可用节点信息“{节点3,节点4}”给用户终端B。此过程会查询智能合约账户余额,发现余额充足,扣除0.02C币,此时智能合约账户余额0.88C币。
[0082] 用户终端B在拿到节点列表后,尝试与节点3建立P2P连接,连接成功后发现节点3未缓存对应数据。节点3开始向周边节点嗅探,若仍然找不到内容,则直接访问源服务器,并将获取数据缓存后返回给用户终端B。若节点3失效,B的客户端将会使用节点4作为服务节点,而如果找不到可服务的节点,节点4将返回给终端用户B请求内容的源服务器地址。
[0083] 节点4成功传输文件给B。用户终端在获取数据完成后,用私钥加密得到签名,把签名及相关信息发送到传输节点4。节点4把相关信息传递给智能合约接口fileTransferDone(node,signature)。智能合约验证后进行费用结算,智能合约向该节点转账费用。此文件传输需要花费0.02C币,智能合约账户给节点4的账户转账0.02C币,智能合约账户余额0.86C币。
[0084] 本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0085] 以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。