【分布式存储】聊一下分布式存储中分片机制

为什么需要分片

在服务端领域,主要特点是支撑7*24小时不间断的服务,而最终对各种行为会生产对应的数据,比如用户登陆/注册,发起订单交易、支付、身份验证,短信验证等情况都需要存储起来,其中包括各种各样的数据,而采用格式的存储中间件进行保存数据,可以有效的进行数据查询和存储,比如MySQL支持关系型数据的存储,Redis支持NoSQL,ES支持快速查询等。但是如果只是单实例的话,其实存储的数据是有上限的,即使将一台机器从PC->小型机->大型机,所能存储的数据还是有上限的。所以分片或者分区的本质是为了解决单机存储和性能瓶颈带来的问题,让分布式系统的计算和存储能力可以线性扩展。而数据复制解决的是数据的高可用。
好了既然说明白为什么需要数据分片,那么有哪些形式的数据分片呢?

水平分片/ 垂直分片 / 混合分片

其实目前业界比较主流的分片主要就是水平、垂直、混合三种模式。

水平分片

水平分片是将数据按照水平进行切分数据,比如原来有1000W数据,但是采用水平分片后,可以切分出3个表,第一个表存储前3000W数据,第二个表存储3000W-6000W数据,第三个表存储最后4000W数据。这样就可以实现将单机的存储进行分摊到不同的实例上。
在这里插入图片描述

垂直分片

相对于水平分片来说,垂直分片其实按照列进行切分,比如一个用户表,按照用户id 年龄、性别、体重等进行切分,这种方式按照不同的数据纬度记性切分和保存。但是在数据查询的时候是非常困难,如果设计多个表之间的查询,所以就需要开发出一个数据代理中间件来解决这个问题,而对于中小型公司来说,是不需要垂直分片。在初期,会使用读写分离的数据镜像方式,而后期会采用分库分表的方式。而分库分表的方式大多数也都是采用水平分片的方式。所以说这种方式了解即可。
在这里插入图片描述

混合分片

混合分片其实就是垂直和水平两种结合,一种是垂直在水平,另一种是先水平在垂直。
在这里插入图片描述

水平分片算法

1.范围分片

水平划分其实就是按照数据的一个范围进行划分,比如说存储中国所有人的身份证信息,就是按照省市区级别,分别存储到对应的户籍所在地。这样的方式比较好管理,也方便查询。但是缺点就是数据分布不会平均,比如北京的密度和山西的密度就不是一个数量级。一个是直辖市2000多W的人口,一个是省级3000多W的人口。
优点:可以按照范围快速查找数据。
缺点:数据分布不均匀,数据的存储和访问不均匀。

2.哈希分片

Hash分片其实比较简单,比如用身份证的或者手机号进行数据取余数,比如100个数据库,那么余数是几,就存储到第几号数据库中,这样数据比较分散,但是范围查询不支持,因为只能通过关键字key进行查询。
优点:数据分布存储和查询比较均匀。
缺点:不支持范围查询。其实哈希分片这里还有一个隐藏的问题,如果存储的节点是不固定的话,可能存在删除或者添加节点的情况,那么就会导致整体数据的key需要重新计算。而这个计算和存储是非常耗费性能和资源。那么如何解决的呢?使用一致性哈希

如何选择呢?其实不管是范围分片还是哈希分片,都需要建立的所在业务数据了解的前提下进行选择。如果了解具体业务数据可以根据具体情况决定,但是不了解的话,推荐还是使用哈希分片进行存储,这样不论是数据分布还是访问都不会出现热度不均匀的情况。

3.一致性哈希分片

首先声明下 一致性哈希所解决的问题是用来解决分布式存储中哈希分区删除或者增加节点导致数据大规模移动的问题,是一种特殊的哈希分片算法。在各种存储中间件中,也会出现节点的下线和上线,所以为保证数据可以均匀的落在每个节点上,在发生节点删除和增加的时候,不会出现大规模数据访问和迁移的情况。就需要引入一致性哈希。

核心原理
一致性哈希的原理比较好理解,使用一个哈希函数,构建出一个虚拟环,每个节点都存储在环上。比如Node0、Node1、Node2等。按照顺时针的方向,比如key1存储在Node0上,key2存储在Node2上。
在这里插入图片描述
当出现Node3节点宕机下线时,原本存储在Node3中的数据会按照顺时针的方向落在Node1上,所以即使出现节点的下线和增加节点的情况,也只会影响一部分的节点。但是当出现节点数比较少的时候,那么都会集中趋向于其中几台机器。这样时候并不能很好的数据分布均匀。
基于虚拟节点的一致性哈希算法
其实就是在整个环中将节点的副本构建多个,平均去分担其中的流量,比如Node0 拷贝出2个,分别是Node 0 1 2。那么即使出现下线,也会比较均匀的分布式其中环中的节点上。可以很好的实现数据存储负载的均衡性。
在这里插入图片描述

实际应用

本篇主要介绍了数据存储的分片机制中的几种常见机制,垂直分片、水平分片、混合形式,但是一般常用的方式是采用垂直分片,垂直分片中范围分片、哈希分片,但是哈希分片存在节点的删除和增加导致数据的重新hash,所以进一步进入了一致性哈希,以及基于虚拟界定的一致性哈希算法。
在具体的实际应用中,mysql、redis、Kafka其实都有对应的分片机制,redis中为保证可以存储更多的数据,使用了切片集群的方式。通过使用不同的slot存储数据。具体可以参考 redis切片集群的原理,而kafka中为了保证消息写入Broker的存储高性能,也采用分片机制存储数据。比如将一个消息ABC,会进行存储到不同的broker节点上,保证数据的高性能。Kafka topic分区机制原理,当然了,其实其他的存储中间件也肯定有相关的机制,这个后边学到别的在进行统一汇总。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 九八年秋季试题 5 1.1. 概念题 5 1.1.1. 比较半连接方法和枚举法的优缺点。 5 1.1.2. 2PL协议的基本思想。 5 1.1.3. WAL协议的主要思想。 5 1.1.4. SSPARC三级模式体系结构。 5 1.1.5. 设计OID的数据结构时应考虑哪些问题。 6 1.2. 某个大学有若干系,且每个系有若干个班级和教研室,每个教研室有若干个教员,其教授、副教授每个人带若干名研究生。每个班有若干名学生,每个学生可选修若干门课程,每门课程可由若干学生选修。完成下列各种要求: 6 1.3. 下面是某学院的一个学生档案数据库的全局模式: 7 1.3.1. 将全局模式进行分片,写出分片定义和分片条件。 7 1.3.2. 指出各分片的类型,并画出分片树。 8 1.3.3. 假设要求查询系号为1的所有学生的姓名和成绩,写出在全局模式上的SQL查询语句,并要求转换成相应的关系代数表示,画出全局查询树,请依次进行全局优化和分片优化,画出优化后的查询树。要求给出优化变换过程。 8 1.4. 设数据项x,y存放在S1场地,u,v存放在S2场地,有分布式事务T1和T2,T1在S1场地的操作为R1(x)W1(x)R1(y)W1(y),T2在S1场地的操作为R2(x)R2(y)W2(y);T1在S2场地上的操作作为R1(u)R1(v)W1(u),T2在S2场地上的操作作为W2(u)R2(v)W2(v)。对下述2种情况,各举一种可能的局部历程(H1和H2),并说明理由。 9 1.4.1. 局部分别是可串行化,而全局是不可串行化的 9 1.4.2. 局部和全局都是可串行化的。要求按照严格的2PL协议,加上适当的加锁和解锁命令,(注意,用rl(x)表示加读锁,wl(x)表示加对x加写锁,ul(x)表示解锁) 9 1.5. 试述面向对象的数据库系统页面服务器和对象服务器两种Client/Server体系结构的主要特点, 10 2. 九九年春季试题 10 2.1. DBMS解决了信息处理技术的哪些挑战? 10 2.2. 在关系数据库应用设计,为什么要对数据库模式进行规范化? 10 2.3. 简述ACID特性。 11 2.4. 长事务处理有哪些特性,如何解决? 12 2.5. 数据库系统体系结构有哪几类,每种类型的特点是什么,关键技术有哪些? 12 2.6. 决策支持类应用与OLTP应用对于数据库系统的要求有哪些不同,支持前者的关键技术有哪些,并简述之。 12 2.7. 面向对象的数据库是如何产生的,其基本原理是什么?有哪些创新特性? 13 2.8. r r 一定等于r r 吗?在什么条件下r r = r r 成立? 14 2.9. 为了设计一个健壮的分布式系统,你必须知道可能发生哪种类型的失败。 14 2.9.1. 请列出在分布式系统可能的失败类型: 14 2.9.2. 在你列出的失败类型,哪些也可能发生在集式系统? 14 2.9.3. 对于每一种失败类型,在失败发生情况下,两段提交机制如何保证事务的原子性? 14 3. 九九年秋季试题 14 3.1. 问答题 14 3.1.1. 分布式数据库系统在系统结构、模式结构、功能模块等方面有何特点? 14 3.1.2. 给出两种2PL协议,并比较它们的优点缺点? 14 3.1.3. 解释为什么对象类的多继承存在二义性,并通过例子加以说明。 15 3.1.4. 对于下述情况,哪种并行性(查询间并行性、操作间并行性、操作内并行性)有助于正加系统的吞吐量: 15 3.2. 下面是某个公司人事数据库的两个全局关系 15 3.2.1. 将全局模式进行分片,写出分片定义和分片条件。 15 3.2.2. 指出各分片的类型,并画出分片树 15 3.2.3. 进行全局优化,画出优化后的全局查询树。 16 3.2.4. 进行分片优化,画出优化后的分片查询树。 16 3.3. 对3个关系R,S和T的分布式连接,已知有如下的剖视图: 19 3.3.1. 按照SDD-1半连接优化算法,逐步求出半连接优化集和最终执行场地; 19 3.3.2. 对以上结果做相应的优化处理。 23 3.4. 用下面的关键字值的集合构造一颗B+树:(2,3,5,7,11,17,19,23,29,31)。假定树开始是空的,且关键字的值是以升序插入到B+树去的,B+树每个节点含的指针数为4。 24 3.5. 考虑关系r (A,B,C),r (C,D,E),r (E,F),假设不存在主关键字。设V(C, r )=900, 24 3.6. 假设一个存储仅能存放一个记录且在内存最多只有三个页框。请 出在排序合并算法每遍形成的Runs,排序属性为第一个属性:(kangaroo,17),(wallaby,21),(emu,1),(wombat,13),(platypus,3),(lion,8),(warthg,4),(zebra,11),(meerkat,6),(hornbill,2),(baboon,12)。 24 4. 二零年春季试题 24 4.1. 24 4.1.1. 分布库管理系统有哪些主要功能模块及其作用. 24 4.1.2. 半连接方法和枚举法各适用于何种查询优化情况. 25 4.1.3. 分布式事务有哪些基本性质. 25 4.1.4. 什么是2PL协议 25 4.2. 下面是某个公司的人事关系数据库的全局模式: 25 4.2.1. 将全局模式进行分片,写出分片定义和分片条件。 26 4.2.2. 指出分片的类型,并画出分片树。 26 4.3. 对题4.2所确定的分片模式,要求查询级别高于“6”的所有职员的姓名和工资,写出的在全局模式上的SQL查询语句,并要求转换成相应的关系代数表示,画出全局查询树。 26 4.3.1. 进行全局优化,画出各步优化后的全局查询树。 26 4.3.2. 进行分片优化,画出各步优化后的分片查询树。 27 4.4. 下面是一个数据库系统出现故障是,日志文件记录的信息; 27 4.4.1. 找出发生故障时系统的活动事务,确定出反做和重做事务集。 27 4.4.2. 用C或其他语言定义出数据库记录(D记录)和检查点记录(K记录)的数据结构。 28 4.5. 设数据项x,y存放在S1场地,u,v存放在S2场地,有分布式事务T1和T2,T1在S1场地的操作为R1(x)W1(x)R1(y)W1(y),T2在S1场地的操作为R2(x)R2(y)W2(y);T1在S2场地上的操作作为R1(u)R1(v)W1(u),T2在S2场地上的操作作为W2(u)R2(v)W2(v)。对下述2种情况,各举一种可能的局部历程(H1和H2),并说明理由 28 4.5.1. 局部分别是可串行化,而全局是不可串行化的 28 4.5.2. 局部和全局都是可串行化的。 28 4.5.3. 要求按照严格的2PL协议,加上适当的加锁和解锁命令,(注意,用rl(x)表示加读锁,wl(x)表示加对x加写锁,ul(x)表示解锁) 28 5. 二零年秋试题 29 5.1. 概念题 29 5.1.1. 解释对象数据库系统面向对象的相关概念 29 5.1.2. 从概念上比较对象数据库模型与对象关系模型 29 5.1.3. 利用左深树、右深树、浓密树来进行查询优化的各自特点 29 5.1.4. 试解释影响并行数据库系统并行算法性能的三个因数 30 5.1.5. 简述用爬山算法进行查询优化的基本思想 30 5.2. 下面是某个公司一个人事关系数据库的全局模式: EMP={ENO*,ENAME,POSITION,PHONE} PAY={POSITION*,SALARY} ENO为职员号,POSITION为岗位。SALARY表示岗位对应的工资,*对应的属性表示主关键字。该公司分布在两个场地上,其,在场地1经常处理所有职员数据,而场地2只处理工资低于1000的职员数据,为了节省磁盘空间和增大处理局部性: 30 5.2.1. 将以上全局关系进行分片设计,写出分片定义和分片条件。 30 5.2.2. 指出分片的类型,并画出分片树。 30 5.2.3. 给出分配设计。 31 5.3. 对题二所确定的分片模式,要求查询岗位为“salesman”的所有职员的姓名和工资,写出的在全局模式上的SQL查询语句,并要求转换成相应的关系代数表示,画出全局查询树。假设“salesman”的工资为800元。要求给出间转换过程。 31 5.3.1. 进行全局优化,画出优化后的全局查询树。 31 5.3.2. 进行分片优化,画出优化后的分片查询树。 31 5.4. 按如下给出的条件,求出半连接优化计划和执行场地,并作后优化处理 32 5.5. 下面是当一个数据库系统出现故障时,日志文件的信息 36 5.5.1. 画出对应的事务并发执行图。 37 5.5.2. 找出发生故障时系统的活动事务,确定出反做和重做事务集。 37 5.5.3. 指出需要undo的和redo的数据记录。 37 5.6. 设数据项x,y存放在S1场地,u,v存放在S2场地,有分布式事务T1和T2。T1在S1场地的操作为R1(x)W1(x)R1(y)W1(y),T2在S1场地的操作为R2(x)R2(y)W2(y);T1在S2场地上的操作作为R1(u)R1(v)W1(u),T2在S2场地上的操作作为W2(u)R2(v)W2(v)。对下述2种情况,各举一种可能的局部历程(H1和H2),如果是可串行化的,指出事务的执行次序。对第3种情况,给出符合基本2PL协议的调度。(T1 加锁命令用L1(X)表示,开锁命令U1(X)表示。对任何数据的加锁可在事务开始后立即进行)。 38 5.6.1. 局部是不可串行化的。 38 5.6.2. 局部是可串行化的,而全局是不可串行化的。 38 5.6.3. 局部是可串行化的,全局也是可串行化的。 39 5.7. 设计一种满足下列要求的索引结构。 39 5.7.1. 被索引的数据集合为有序集 39 5.7.2. 在有序集上的查询操作都是基于位置来进行的 39 5.7.3. 当往有序集插入或删除一个元素时,与该元素相关的后续元素的位置均要发生变化 39 5.7.4. 元素的类型可为任意类型(这一个小问题的解决需要考虑语言的特征) 39 6. 二零一春季试题 39 6.1. 39 6.1.1. 讨论集数据库分布式数据库各自的优缺点。 39 6.1.2. 讨论在局域网和广域网两种情况下分布库设计的区别。 39 6.1.3. 解释分片透明性、复制透明性和位置透明性等三级透明性的区别。 39 6.1.4. 解释2PC协议如何在故障情况下保证事务的原子性的 40 6.1.5. 解释严格2PL协议与基本2PL协议的区别 40 6.2. 下面是某个公司一个人事关系数据库的全局模式: EMP={ENO*,ENAME,POSITION,PHONE} PAY={POSITION*,SALARY} ENO为职员号,POSITION为岗位。SALARY表示岗位对应的工资,*对应的属性表示主关键字。该公司分布在两个场地上,其,在场地1经常处理所有职员数据,而场地2只处理工资低于1000的职员数据,为了节省磁盘空间和增大处理局部性: 41 6.2.1. 将以上全局关系进行分片设计,写出分片定义和分片条件。 41 6.2.2. 指出分片的类型,并画出分片树。 41 6.2.3. 给出分配设计。 41 6.3. 对题二所确定的分片模式,要求查询岗位为“salesman”的所有职员的姓名和工资,写出的在全局模式上的SQL查询语句,并要求转换成相应的关系代数表示,画出全局查询树。假设“salesman”的工资为1500元。要求给出间转换过程。 41 6.3.1. 进行全局优化,画出优化后的全局查询树 42 6.3.2. 进行分片优化,画出优化后的分片查询树。 42 6.4. 下面是当一个数据库系统出现故障时,日志文件的信息 43 6.4.1. 画出对应的事务并发执行图。 44 6.4.2. 找出发生故障时系统的活动事务,确定出反做和重做事务集。 44 6.4.3. 指出需要undo的和redo的数据记录。 44 6.5. 设数据项x,y存放在S1场地,u,v存放在S2场地,有分布式事务T1和T2,T1在S1场地的操作为R1(x)W1(x)R1(y)W1(y),T2在S1场地的操作为R2(x)R2(y)W2(y);T1在S2场地上的操作作为R1(u)R1(v)W1(u),T2在S2场地上的操作作为W2(u)R2(v)W2(v)。对下述2种情况,各举一种可能的局部历程(H1和H2),如果是可串行化的,指出事务的执行次序。对第3种情况,给出符合基本2PL协议的调度。(T1 加锁命令用L1(X)表示,开锁命令U1(X)表示。对任何数据的加锁可在事务开始后立即进行)。 44 6.5.1. 局部是不可串行化的。 44 6.5.2. 局部是可串行化的,而全局是不可串行化的。 45 6.5.3. 局部是可串行化的,全局也是可串行化的。 45
1. 填空 分布式数据库系统按局部数据库管理系统的数据模型分类,可以分为 和 两类。 同构型DDBS 异构型DDBS 分布式数据库系统按全避控制系统类型分类,可以分为 、 和 三类。 全局控制集型DDBS 全局控制分散型DDBS 全局控制可变型DDBS 分布式数据库分布式数据库系统各站点上数据库的逻辑集合,它由 和 组成。 应用数据库 描述数据库 数据分片的三种基本方法是: 、 和 三类。 水平分片 垂直分片 混合分片 分布式数据库的数据分布策略有: 、 、 和 四层。 集式 分割式 复制式 混合式 分布式数据库是多层模式结构,一般划分为 、 、 和 四层。 全局外层 全局概念层 局部概念层 局部内层 一个分布式数据库管理系统一般应包括 、 、 和 四个基本功能模块。 查询处理模块 完整性处理模块 调度处理模块 可靠性处理模块 分布透明性包括 、 和 三个层次。 分片透明性 位置透明性 局部数据模型透明性 分布式数据库系统的创建方法,大致可分为 和 两种。 组合法 重构法 集数据库设计一般包括:需求分析,概念设计,逻辑设计和物理设计四个阶段,分 布式数据库设计除了上述四个阶段外,还需增加一些个新的阶段 ,它位于 和 之间。 分布设计 逻辑设计 物理设计 水平分片的方法可归为 和 两种。 初级分片 导出分片 DATAID-D相对于DATAID-1增加了 和 两个阶段。 分布要求分析 分布设计 DATAID-D的分布设计分成 、 、 和 四个阶段。 分片设计 非冗余分配 冗余分配 局部模式的重新构造 分布式查询优化的准则是 。 通信费用和响应时间最短 在分布式系统,查询代价QC= 。 I/O代价+CPU代价+通信代价 在分布式环境下,查询可分为 、 和 三种类型。 局部查询 远程查询 全局查询 分布式查询处理可以分为 、 、 和 四层。 查询分解 数据本地化 全局优化 局部优化一个分布式事务通常是由 和 组成。 主事务 子事务 事务的四个特性是: 、 、 和 。 原子性 一致性 隔离性 耐久性 控制分布式事务所执行的控制模型有: 、 和 。 主从模型 三角模型 层次模型 分布式数据库系统,通信故障可以分为 和 两种。 报文故障 网络分割故障 事务恢复主要是依靠 来实现的。 日志 并发控制机制可以为 和 两种类型。 悲观并发控制法 乐观并发控制法 常用的基本封锁算法有: 、 、 和 。 简单的分布式封锁方法 主站点封锁法 主副本封锁法 快照方法 预防死锁的方法有 和 两种类型。 非占先权方法 占先权方法 检测分布式死锁的三种方法是 、 和 。 集式 层次式 分布式 2. 简答题 分布式数据库系统的特点是什么 答:物理分布性:数据不是存放在一个站点上 逻辑整体性:是与分散式数据库系统的区别 站点自治性:是与多处理机的系统的区别 数据分布透明性 集与自治相结合 存在适当的数据冗余度 事务管理的分布性 分布式数据库数据分片的规则是什么 答:(1)完备性原则:必须把全局关系的所有数据映射到各自片段,绝不允许有属于 全局关系的数据却不发球它的任何一个片段。 (2)可重构原则:必须保证能够由同一个全局关系的各个片段来重建该全局关系。对于 水平分片可用并操作重构全局关系,对于垂直分片可用连接操作重构全局关系。 (3)不相交原则:关系分片后的各个片断不能重叠或只包含主键重叠。 DATAID-D相对于DATAID-1增加哪两个阶段,这两个阶段的具体工作是什么 答:(1)分布要求分析阶段:收集关于分布的信息,如水平分片的划分谓词,每一应用 在各站点激活的频率等。 (2)分布设计阶段:始于全局数据库模式的规格说明和所收集的分布要求,然后产生全 局数据的分片模式和片段的位置分配模式,分配模式描述了分配在各站点上的数据情况 。 分布式事务的一般结构是什么 答:分布式事务的一般结构为: Begin Transaction原语:开始一个事务(2分) T1[] T2[] : 子事务或操作序列 : Tn[] Commit原语:事务成功完成的结束(2分) Rollback或Abort原语:事务失败的结束(1分) 5. 论述题 分布式数据库,"数据分配"有哪些策略"数据分片"有哪些策略 数据分片的准则是什么 数据分配是指数据在计算机网络各场地上的分配策略。包括: (1)集式:所有数据均安排在同一个场地上。 (2)分割式:所有数据只有一份,分别被安置在若干个场地。 (3)全复制式:数据在每个场地重复存储。 (4)混合式:数据库分成若干可相交的子集,每一子集安置在一个或多个场地上,但是 每一场地未必保存全部数据。 数据分片的方式有以下三种: (1)水平分片:按一定的条件把全局关系的所有元组划分成若干不相交的子集,每个子 集为关系的一个片段。
ZooKeeper是一个开源的分布式协调服务,它被广泛用于构建可靠的分布式系统。虽然它本身不是一个分布式存储系统,但它可以用于实现分布式存储。 在分布式存储,ZooKeeper可以被用作协调服务,在存储节点之间提供一致性和可靠性的保证。以下是一些使用ZooKeeper实现分布式存储的常见方式: 1. 数据元信息管理:ZooKeeper可以用于管理分布式存储系统的数据元信息,例如存储节点的状态、拓扑结构、数据分片等。通过在ZooKeeper存储这些元信息,系统可以实现动态的节点管理和数据路由。 2. Leader选举:在一些分布式存储系统,需要选举一个Leader节点来负责协调其他节点的工作。ZooKeeper提供了一种基于ZAB(ZooKeeper Atomic Broadcast)协议的Leader选举机制,可以确保只有一个节点被选为Leader,从而实现数据一致性和可靠性。 3. 分布式锁:在分布式存储系统,经常需要对共享资源进行访问控制,以避免数据的竞争和冲突。ZooKeeper提供了一种称为临时有序节点(EPHEMERAL_SEQUENTIAL)的特性,可以用于实现分布式锁。通过在ZooKeeper创建临时有序节点,并通过节点的顺序来决定锁的获取顺序,可以实现分布式环境下的互斥访问。 4. Watch机制:ZooKeeper支持Watch机制,可以让应用程序在某个节点状态发生变化时得到通知。这个机制可以被用来实现分布式存储系统的事件触发和通知机制,例如数据更新、节点状态变化等。 总之,ZooKeeper提供了一些基本的协调服务和机制,可以被应用于实现分布式存储系统的一些关键功能。通过利用ZooKeeper的这些特性,开发者可以构建可靠、高效的分布式存储系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qxlxi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值