| @@ -1,6 +1,6 @@ | |||||
| **其他语言: [English](README_en.md) | [中文](README.md)** | **其他语言: [English](README_en.md) | [中文](README.md)** | ||||
| # JCS-pub(云际存储公共基础设施)+ JCS-client(开箱即用云际存储客户端) | |||||
| # 云际存储公共基础设施版(公共基础设施+开箱即用客户端) | |||||
| ## 项目简介 | ## 项目简介 | ||||
| 云际存储是基于云际对等协作机制,纳管多个云的存储资源,为用户提供统一数据存储服务的一种存储服务模式。其核心理念是强调各个云的对等独立地位,通过非侵入方式联接多个云的存储资源;强调云际协作,综合运用各个云的存算网资源,提供高质量存储服务。 | 云际存储是基于云际对等协作机制,纳管多个云的存储资源,为用户提供统一数据存储服务的一种存储服务模式。其核心理念是强调各个云的对等独立地位,通过非侵入方式联接多个云的存储资源;强调云际协作,综合运用各个云的存算网资源,提供高质量存储服务。 | ||||
| @@ -15,60 +15,37 @@ | |||||
| ## 特性 | ## 特性 | ||||
| ### 1、数据迁移能力 | |||||
| - **跨云迁移支持**:支持用户在多个云存储服务间迁移数据 | |||||
| - **策略化迁移引擎** | |||||
| - 筛选条件:按文件大小、后缀类型、目录路径定向迁移 | |||||
| - 调度控制:设置迁移时间窗口 | |||||
| - 迁移后操作:可选保留或删除原数据 | |||||
| - **迁移效率优化**:通过**云际存储公共基础设施**提高迁移效率,降低用户流量成本 | |||||
| ### 2、跨云存储数据 | |||||
| - **统一多云存储视图**:支持数据分散存储至多个云平台,并为用户提供统一数据视图,屏蔽底层多云复杂性 | |||||
| - **多级容灾冗余方案**:提供云级容灾能力,支持纠删码、多副本、混合冗余(纠删码+多副本)等多种冗余方案 | |||||
| - **自适应冗余策略** | |||||
| - **冗余方案**:自定义副本数、EC编码块数及算法 | |||||
| - **数据放置**:各副本或编码块放置策略 | |||||
| - **跨云操作指令集**:支持定制化指令,包括:上传、下载、随机读、跨云调度、跨云修复等 | |||||
| - **多种数据访问模式** | |||||
| - REST API | |||||
| - 命令行 | |||||
| - FUSE | |||||
| - **访问效率优化**:通过**云际存储公共基础设施**,提高跨云数据访问效率,降低用户流量成本 | |||||
| ### 3、本地+多云混合存储数据 | |||||
| - **统一混合存储视图**:支持数据分散存储于**本地文件系统**及**多个远端云平台**,并为用户提供统一数据视图,屏蔽底层多云复杂性 | |||||
| - **智能数据协同策略**提供多种本地文件系统与远端云存储服务间的数据协同策略 | |||||
| - **数据筛选机制**:按文件大小、目录路径、后缀类型动态筛选需同步至远端的数据 | |||||
| - **本地留存机制**:可配置远端数据是否在本地保留副本 | |||||
| - **双向同步策略**:可分别配置本地到远端、远端到本地的同步策略 | |||||
| - **协同效率优化**:通过**云际存储公共基础设施**,提高本地与远端协同的效率并降低用户流量费用 | |||||
| - **多种数据访问模式** | |||||
| - REST API | |||||
| - 命令行 | |||||
| - FUSE | |||||
| ### 4、开箱即用 | |||||
| - 下载安装客户端即可使用。 | |||||
| ### 5、云际存储公共基础设施 | |||||
| - **统一混合存储视图**:支持数据分散于**本地文件系统**和**多个远端云平台**,并为用户提供统一数据视图,屏蔽底层多云复杂性 | |||||
| - **双模运行架构**: | |||||
| - **独立运行模式**:客户端可完全离线操作,不依赖其他服务 | |||||
| - **基础设施连接模式**:接入公共基础设施后运行(**可提高数据传输效率,降低用户流量费用**) | |||||
| - **开源公共基础设施**: | |||||
| - 任何用户可自主部署公共基础设施,或接入现有公共基础设施 | |||||
| - 免费公共基础设施: | |||||
| - 请发邮件至`song-jc@foxmail.com`领取账号密码和证书,申请流程如下图。 | |||||
| ### 1、跨云数据迁移 | |||||
| - JCS-pub可以帮助用户在多个云存储服务间迁移数据,允许用户灵活选择迁移方式: | |||||
| - 允许用户按不同的条件筛选需要迁移的数据,比如按文件大小筛选、按文件后缀筛选、按文件路径筛选等; | |||||
| - 允许用户设置执行迁移操作的时间段,比如凌晨执行迁移操作以减少对正常业务的影响; | |||||
| - 允许用户设置迁移完成后是否删除原云存储服务中的数据。 | |||||
| ### 2、跨云数据存储 | |||||
| - JCS-pub可以帮助用户将数据分散托管至多个云存储服务上,并且通过预置的多种数据冗余策略(纠删码、多副本、混合冗余等)帮助用户达到兼顾存储容灾度、存储成本和数据访问效率的效果。 | |||||
| - 与此同时,JCS-pub可为用户提供统一的数据视图,即用户可以像使用单个云存储服务一样使用云际存储服务,JCS-pub为用户提供的数据访问方式包括REST API、命令行、FUSE等。 | |||||
| ### 3、本地+多云混合数据存储 | |||||
| - JCS-pub可以帮助用户将数据分散托管在本地文件系统和多个云存储服务上,并为用户提供统一数据视图,即用户可以像使用单个云存储服务一样使用本地+多云存储服务,为用户提供的数据访问方式包括REST API、命令行、FUSE等。 | |||||
| - 为了帮助用户充分利用本地文件系统和多云存储各自的优势,JCS-pub允许用户灵活配置本地、云端数据布局方案,具体而言: | |||||
| - 允许用户按不同的条件筛选需要存储到云端的数据,比如按文件大小筛选、按文件后缀筛选、按文件路径筛选等; | |||||
| - 允许用户配置将数据上传到云端后是否在本地文件系统中保留一个数据副本; | |||||
| - 允许用户分别配置将数据从本地文件系统迁移到云端、从云端迁移到本地文件系统的时机。 | |||||
| ### 4、低门槛、高性能 | |||||
| - 为降低个人或中小企业使用高性能云际存储服务的门槛,JCS-pub将客户端外的各组件公共基础设施化,配套提供可单节点一键安装部署的开箱即用客户端。公共基础设施可由第三方机构提供,也可由多个组织联合共建共用。普通用户(个人或中小企业)只需安装开箱即用客户端即可共享使用云际存储服务,并且可以利用公共基础设施提高服务性能。 | |||||
| - 根据开箱即用客户端是否与公共基础设施建立连接,其工作模式可以分为在线模式和离线模式: | |||||
| - 以离线模式工作的开箱即用客户端不与公共基础设施连接,直接控制各个云存储服务中的数据来满足用户发起的各类数据访问请求; | |||||
| - 以在线模式工作的开箱即用客户端需与公共基础设施保持连接,控制公共基础设施中的各公共服务节点协同处理用户发起的各类数据访问请求。 | |||||
| - 任何用户可自主部署公共基础设施,或接入现有公共基础设施 | |||||
| - 免费公共基础设施: | |||||
| - 请发邮件至`song-jc@foxmail.com`领取账号密码和证书,申请流程如下图。 | |||||
| <center> | <center> | ||||
| <img src="docs/figs/application.png" width=70% /></center> | <img src="docs/figs/application.png" width=70% /></center> | ||||
| ### 5、可定制 | |||||
| - JCS-pub的开箱即用客户端采用了分层解耦的设计思想,除提供多种预置功能和预置数据管理策略外,还允许用户灵活定制数据冗余策略、数据读取策略、顶层数据操作指令(定制方式见项目主页)等,因而共用同一套公共基础设施的用户也可以通过定制各自的开箱即用客户端,获得完全不同的云际存储服务。 | |||||
| ## 架构图 | ## 架构图 | ||||
| @@ -80,13 +57,12 @@ | |||||
| - 主流的公有云存储服务注册教程见链接:[跳转](docs/公有云注册及使用教程.md) | - 主流的公有云存储服务注册教程见链接:[跳转](docs/公有云注册及使用教程.md) | ||||
| ### 2、云际存储公共基础设施 | ### 2、云际存储公共基础设施 | ||||
| - 公共基础设施包含若干代理节点,它们可以根据客户端的请求,与客户端协同完成跨云数据迁移、数据上传、数据下载等访问操作,并可通过数据传输路径优化、数据并发访问等技术提高数据访问效率,同时降低客户端的流量开销并避免客户端成为数据传输瓶颈。 | |||||
| - 公共基础设施包含若干公共服务节点,它们可以根据客户端的请求,与客户端协同完成跨云数据迁移、数据上传、数据下载等访问操作,并可通过数据传输路径优化、数据并发访问等技术提高数据访问效率,同时降低客户端的流量开销并避免客户端成为数据传输瓶颈。 | |||||
| ### 3、云际存储客户端 | ### 3、云际存储客户端 | ||||
| - 云际存储客户端部署在用户的服务器上,充当数据服务网关和元数据管理节点的角色。 | - 云际存储客户端部署在用户的服务器上,充当数据服务网关和元数据管理节点的角色。 | ||||
| - 用户通过客户端提供的各类方式管理用户自由的云存储空间中的数据。 | - 用户通过客户端提供的各类方式管理用户自由的云存储空间中的数据。 | ||||
| - 用户数据的元数据和其云存储空间的鉴权方式仅保留在用户自己运维的客户端上,代理节点需访问客户的云存储空间时由客户端为其临时赋权。 | |||||
| - 用户数据的元数据和其云存储空间的鉴权方式仅保留在用户自己运维的客户端上,公共服务节点需访问客户的云存储空间时由客户端为其临时赋权。 | |||||
| ## 安装 | ## 安装 | ||||
| @@ -328,7 +304,7 @@ type Node interface { | |||||
| 从接口的定义可以看出: | 从接口的定义可以看出: | ||||
| - 一个节点包含4组Slot,分别是流和值的输入输出Slot。每一个输入Slot代表这个指令需要的外部数据,只允许从一个节点来,而每一个输出Slot代表这个指令会产生的输出,可以送到多个节点去。 | - 一个节点包含4组Slot,分别是流和值的输入输出Slot。每一个输入Slot代表这个指令需要的外部数据,只允许从一个节点来,而每一个输出Slot代表这个指令会产生的输出,可以送到多个节点去。 | ||||
| - Env代表这个指令将在哪个环境里执行,比如在Driver(发起计划的服务,即JCS客户端)、Hub(代理节点)、Any。大多数指令的Env设置成Any即可,除非你确定这个指令必须在哪个环境执行。 | |||||
| - Env代表这个指令将在哪个环境里执行,比如在Driver(发起计划的服务,即JCS客户端)、Hub(公共服务节点)、Any。大多数指令的Env设置成Any即可,除非你确定这个指令必须在哪个环境执行。 | |||||
| - 最后的GenerateOp函数是计划DAG优化结束后生成指令时被调用的。 | - 最后的GenerateOp函数是计划DAG优化结束后生成指令时被调用的。 | ||||
| 推荐嵌入`gitlink.org.cn/cloudream/jcs-pub/common/pkgs/ioswitch/dag`包中的NodeBase结构体,它实现了除GenerateOp以外的其他函数。 | 推荐嵌入`gitlink.org.cn/cloudream/jcs-pub/common/pkgs/ioswitch/dag`包中的NodeBase结构体,它实现了除GenerateOp以外的其他函数。 | ||||
| @@ -380,6 +356,9 @@ type ToNode interface { | |||||
| MulanPSL v2 | MulanPSL v2 | ||||
| ## 更多资料 | |||||
| https://mp.weixin.qq.com/s/zOAmPXPjQ_PEjdi2cs89pw | |||||
| ## 开发小组 | ## 开发小组 | ||||