一种基于IPFS技术的对象存储缓存方法与流程

文档序号:37427606发布日期:2024-03-25 19:16阅读:13来源:国知局

本发明涉及分布式存储应用领域,具体来说是一种基于ipfs技术的对象存储缓存方法。


背景技术:

1、对象存储是一种可以原生支持http/https协议的分布式存储产品,只要连接上互联网,就可以直接使用对象存储的服务。随着对象存储的发展与成熟,越来越多的互联网网站、app开始将一些静态资源存储到对象存储服务中,既减轻了服务器的压力,又可以降低成本。

2、为提高用户访问速度与质量,传统的对象存储是使用cdn(content deliverynetwork,即内容分发网络)来作为缓存的,当用户请求对象时,会先去最近的cdn节点进行访问,如果有该对象的话会直接下载,没有的话cdn会去对象存储进行回源,获取到的数据再返回给用户。

3、ipfs(星际文件存储系统)是一种内容可寻址、去中心化、点对点超媒体的分布式存储、传输协议。ipfs内的文件具有不可篡改的特性,通过某一cid(文件的标识码)只可能拿到绝对不会改变的该标识码对应的文件数据。ipfs节点与节点之间互相对等,没有所谓中心节点,因此不会给主网络带来流量压力,且所有节点均可互相拉取数据,达到p2p加速的效果。

4、现有的对象存储缓存方法仍具有以下缺陷:

5、1.成本较高:不能通过将热数据缓存在本地节点中,从而增加了对远程存储的访问不能通过分布式存储和去中心化备份等方式来提高数据的安全性和可靠性,从而增加了备份和恢复成本。

6、2.获取文件速度较慢:用户请求对象时,会先去最近的cdn节点进行访问,如果有该对象的话会直接下载,没有的话cdn会去对象存储进行回源,获取到的数据再返回给用户。

7、3.主干网络的堵塞:在传统的集中式存储系统中,当多个用户同时请求访问同一个存储节点时,该节点可能会成为瓶颈,从而导致主干网络的堵塞。这是因为所有的数据流量都必须经过该存储节点,从而导致该节点的负载过高,无法承受更多的请求。


技术实现思路

1、一种基于ipfs技术的对象存储缓存方法,具体步骤如下:

2、步骤s1:对象存储客户端部分;

3、步骤s2:专用缓存节点部分;

4、步骤s4:管理与监控部分。

5、进一步的,在步骤s1中,对象存储客户端部分主要有两块改造:获取对象以及本地缓存管理。

6、当对象存储客户端需要获取一个对象时,原本的流程是直接去访问对象存储服务端进行获取,这样所有的请求都会直接到达服务端,使得服务端压力较大,且因为服务端只分布于一个或几个机房,这又会造成主干网络的拥堵,拖慢响应时间;而传统的架构方案是采用cdn的方式进行加速与负载均衡的话,这种方案会因为cdn较高的成本而对运营造成较大的压力,从而降低产品的竞争力。

7、进一步的,根据权利要求1所述的一种基于ipfs技术的对象存储缓存方法,改造后,当对象存储客户端需要获取一个对象时,首先发送head请求到服务端获取到对象的元数据,如果该用户有获取该对象的权限,则该请求会返回该对象的元数据,元数据中的x-oss-cid这条元数据即为该对象在ipfs中的cid信息,如果该元数据不为空,则说明ipfs集群中有该对象,客户端的ipfs模块可以在ipfs集群中获取对象数据,并通过ipfs协议从最近的节点中拉取对象,并将此对象返回给用户,请求完成;如果cid信息为空,则去对象存储服务端使用get请求获取对象,并将获取到的对象放入本机的ipfs缓存区,并置该对象的x-oss-cid元数据为ipfs返回的cid值。

8、对象存储客户端中包含一部分对象的缓存,当附近的其他对象存储客户端请求ipfs网络中的对象时,如果本客户端恰好包含该对象的话,就会作出响应并提供该对象供其下载。如果文件过大的话,将会有多个包含此对象缓存的节点同时提供下载服务,对象存储客户端可以同时从上述节点分片下载所需的对象,达到加速的目的。

9、ipfs缓存区位于对象存储客户端所在节点上,这种节点一般为移动设备或者个人电脑,因此能提供的缓存空间是有限的,为了管理这部分空间,因此需要设计一套本地缓存区管理方法。对象存储客户端中维护了一份缓存文件与进入缓存的时间、访问次数的关系表,本地缓存区有一个设定的大小,当缓存的文件已经达到缓存区总大小的清理阈值时(默认为80%),会触发缓存清理动作。

10、缓存有进入缓存的时间、访问次数这两个属性,所以缓存清理可以采用按照热度排序的清理方式,也即每次清理都优先将进入时间最久、访问次数最少的缓存进行清理,具体的公式为d=h/t,其中d为热度,h为访问次数,t为已缓存的时间。每当缓存清理开始后,程序会首先将缓存文件的热度计算出来,然后按照热度由低至高进行排序,随后依次删除掉热度最低的缓存文件,直到缓存文件的总大小小于缓存区总大小的空闲阈值(默认为40%),这时缓存清理完毕。

11、进一步的,在步骤s2中,为了进一步提升缓存效率和可扩展性,该方法引入了专用缓存节点,其主要工作是对ipfs网络中的缓存数据进行维护、清理和分发。专用缓存节点一方面具有普通ipfs节点的所有特性,同时还具备对对象存储数据的侦测与主动获取能力。

12、专用缓存节点中缓存的对象,会供给所有的对象存储客户端使用,当客户端根据cid在ipfs集群中请求对象时,离客户端最近的且包含该对象的专用缓存节点会做出响应,并将对象提供给客户端,如果文件过大的话,多个缓存节点会同时响应。

13、专用缓存节点会定时去对象存储中获取最新的文件,并将其缓存在本地以供ipfs网络中的其他节点使用。专用缓存节点中会储存一个历史更新时间,当其去对象存储获取时,它请求的是该历史更新时间之后的文件,当更新完成后,历史更新时间会改为当前的时间,利用这种方法,专用缓存节点可以保持一致获取对象存储的最新文件。

14、专用缓存节点提供手动更新文件的接口,以便于在特殊情况下进行缓存管理。该接口接收一个对象存储的文件地址,当接口被调用后,缓存节点会去对象存储拉取该文件,并放入本地,为ipfs网络提供该文件的缓存。

15、进一步的,根据权利要求1所述的一种基于ipfs技术的对象存储缓存方法,在节点缓存的对象总大小超过阈值时,会进行清理缓存操作。专用缓存节点清理缓存时,采用近期访问次数与进入时间综合评价的方式,具体地来说,就是近期访问次数越多、进入时间越近的文件,就越不容易被清理,具体的公式为d=h/t,其中d为热度,h为访问次数,t为已缓存的时间。程序会首先将缓存文件按照热度进行排序,然后依次删除掉最不需要的缓存文件,直到缓存文件的总大小小于缓存区总大小的空闲阈值(如40%),这时缓存清理完毕。

16、专用缓存节点提供手动清除缓存的接口,以便于在特殊情况下进行缓存清理。该接口接收一个缓存的cid列表,当接口被调用后,缓存节点直接将本地cid被包含在列表中的对象直接删除,释放缓存空间。

17、进一步的,在步骤s3中,为了提高对象的可靠性和容错性,对象存储缓存管理端会将对象在ipfs集群中的多个节点上进行复制,且副本数可配置。这样,即使某个节点发生故障,仍然可以从其他节点获取对象,并保证数据的可用性。

18、如果一个缓存节点发生故障或离线,该节点上的对象将无法提供给客户端。为了解决这个问题,我们可以利用ipfs网络中其他节点的副本进行故障转移。当一个节点离线时,根据ipfs协议的特性,其他的节点可以自动的接管下载任务,并持续的提供缓存检索能力,此时对象存储缓存管理端会进行一遍副本梳理,将因为节点离线而减少的副本迁移到其他的ipfs节点上,一旦故障节点恢复,它可以重新加入ipfs网络,并参与到对象存储的缓存和分发中。

19、为了及时发现节点故障和异常情况,另外引入了监控和报警系统。通过监控节点的状态、网络延迟和错误率等指标,可以实时监控ipfs节点的运行状况。当节点发生故障或异常时,监控系统将触发报警,并通知管理员采取相应的措施,例如重新分配任务或修复故障节点。

20、通过以上的高可用性和容错性措施,该方案可以确保对象存储系统在节点故障或异常情况下依然可靠运行,并且能够及时恢复故障节点,保证数据的可用性和一致性。

21、本发明设计了一种基于ipfs技术的对象存储缓存方法,通过ipfs系统的加入,为低成本对象存储缓存提供了解决方案,让客户端成为对象存储的缓存节点,并且增加一些利旧机器作为专用缓存节点,客户端之间可以共享缓存数据,进一步提升对象下载的速度,可以大大降低对象存储本身的压力与流量成本,本发明优点:

22、1.成本低,可以使用利旧机器作为缓存节点;

23、2.减少对象存储本身的压力,并加快用户获取文件的速度;

24、3.每个节点都是数据源,可避免单点故障,且减少主干网络的堵塞情况。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1