分布式数据保护策略——多副本和纠删码怎么选?

news2024/11/26 20:51:38

在之前的《一文读懂分布式存储》文章中,我们介绍了什么是分布式存储。

但谈到存储,安全就是一个绕不开的话题。

没有数据安全的存储毫无意义。

所以数据保护技术对于分布式存储来说非常重要。

▉ 为什么需要数据保护?

数据显示,硬盘在存储实际使用过程中年故障率一般在2%上下,这意味着100块硬盘中,平均每年会有2块盘出现故障,硬盘的故障率是非常高的。

而且根据浴缸曲线,硬盘在刚上线时和36个月后故障风险更大,远高于理论故障率。

并且,分布式存储与传统的集中存储不同,分布式存储是通过增加存储节点来提升存储性能和容量的。越多的存储节点意味着风险越高,所以更需要数据保护策略来保护数据的安全。

目前,分布式存储的数据保护方式多采用多副本和纠删码技术。

▉什么是多副本和纠删码? 

数据保护大家一定不陌生,例如我们之前经常会提到的RADI技术,就是传统集中存储硬盘数据保护经常用到的数据保护技术。

分布式存储不同于传统的集中存储,它采用无中心的组网方式,每个存储节点都可以同时提供计算和存储资源,实现更灵活的扩展性和更大的存储规模。传统的RAID在分布式存储数据保护过程中也遇到了瓶颈,所以就出现了多副本和纠删码等新的数据保护技术方式。

那么今天我们聊聊什么是多副本和纠删码技术?

多副本,顾名思义就是多个数据副本,简单来说就是一个数据拷贝多份完全一样的副本,分别存放在多个不同节点上。当某个副本丢失时,可以通过另一个副本复制恢复数据。

以三副本为例,如上图,我们要保存A这个数据,并不是只保存单独这个数据,而是需要先将A这个数据拷贝成3份,然后分别放到1、3、4上,这个存储是随机的,下一个B数据有可能就放在节点1、2、4上了。

接下来我们来看下纠删码,纠删码的英文全称是Erasure Code,有时我们也会简称为EC。纠删码顾名思义是一种纠正数据丢失的校验码,简单理解可以把它类比成一个我们上学时候学的方程组。

例如,如果知道4个数a、b、c、d,就可以通过2个不同的公式算出2个校验数据x和y,把6个数据一起保存起来,那么当a、b、c、d其中1个或2个数据丢失的话,就可以通过剩余的2个值和计算公式,反推出丢失的2个数据。

▉ 对存储节点有啥要求?

多副本和纠删码对分布式存储的节点数量和硬盘配置都有一定要求。例如多副本,N个副本至少需要N个节点才能部署,比如3副本至少需要3个存储节点。

而纠删码则是M+N纠删码至少需要(M+N)个节点,比如4+2纠删码至少需要6个节点。

当然这些只是最低要求,上限并没有限制,另外也不会有倍数比例的要求,比如3副本并不要求一定是6个、9个节点,5个、7个节点也可以。

另外,每个节点的硬盘数量和单盘容量建议相同,因为如果不同的话,就会出现水桶的短板效应,两个节点,一个节点配置8TB硬盘,一个节点配置4TB硬盘,8TB硬盘只能当4TB硬盘用,因为每个节点的数据保存容量是随机分布、几乎相同的。

▉ 多副本和纠删码哪个好?

那么我们在做分布式存储的时候是应该选择多副本的方式还是纠删码的方式呢?这个主要看你的业务需求,多副本和纠删码在不同的应用场景下有各自的优势。我们来分不同方面看下:

1.得盘率

得盘率直接关系到企业的支出成本。比如双份本的得盘率只有50%,冗余多虽然很高,但是这带来了巨大的额外存储空间消耗,无形中提升了企业的成本。三副本的得盘率是66.6%,这也是很多人选择三副本的原因,相对安全,读写也能保证。

纠删码技术不需要完整写入真实数据的副本,通过纠删码算法将原始的数据进行编码得到冗余,并将数据和冗余一并存储起来,以达到容错的目的。磁盘利用率为m/(m+n),以纠删码(4+2)为例,得盘率也是66.6%,

整体来说,纠删码技术与副本方法相比具有磁盘利用率更高。

2.容错性

多副本方面,N副本技术可以允许N-1个节点同时故障数据不丢失。如果是硬盘故障,只要故障硬盘的范围不超过N-1个节点,数据也不会丢失。例如,2副本允许1个数据节点出现故障,三副本可以允许2个数据节点出现故障。

和多副本一样,纠删码对损失的数据分块内容有要求。比如m+n块的元素,当其中任意的n块元素出错(包括原始数据和冗余数据)时,均可以通过对应的重构算法恢复出原来的m块数据。如果大于n后,就恢复不了数据。如(4+2)纠删码只能丢失2个数据分片才能恢复。

3.重构性能

双副本下,一个节点或者数据块故障,数据恢复直接从另一个副本读取、写入,一次进行恢复副本,影响一个节点的读取性能。三副本的情况下,最多影响两个节点的读取性能。

纠删码设置 (4+2)情况下,一个节点或者数据块故障,数据恢复需要读取三个数据块和两个校验,通过运算后写入一次进行数据恢复,影响5个节点的读取性能。恢复效率较低。

4.写惩罚

双副本下,某个节点的一次数据写入,实际需要两个节点参与(写入两次),写惩罚为 2。三副本情况下,最多需要三个节点参与,写惩罚为3。

纠删码设置 (4+1)情况下,一次数据写入,实际需要至少三个节点参与,其中读取两次(读取数据,读取校验),写入两次(写入数据,写入校验),写惩罚为4。如果是纠删码设置 (4+2)情况下,写惩罚最小为6。

5.CPU开销

无论是双副本还是三副本,都是是基于数据完整复制,几乎没有计算的开销,对 CPU 开销较低。

纠删码由于读写都需要计算校验值,有较高的计算开销,需要额外的 CPU 资源开销。

好了,说了这么多,我将上面的信息总结成一张表格:

▉ 到底怎么用?

选择两种数据保护方式,就需要根据业务情况因地制宜。

多副本技术可以更好的保证数据的安全性,提升读写效率。一般适用于关键业务,对性能要求比较高,网络对数据出错容忍度极低的业务,如数据库等。

纠删码则可以提高存储系统利用率,降低成本。一般适用于其他非关键性业务,如视频、影像存储等海量存储场景,部分数据块的损坏不会影响信息的传递。

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

考研英语|2022年真题 正确率:16/20|14:00~15:30

22 错 25 错 34 错 40 错 Text 1 21 实词对应 preservemaintain 22 推理判断题 错因:仅仅定位在vulnerable 没有继续往后阅读 immune to decay 理解错误,真确释义为“不会腐烂”,错误理解为“容易腐烂坏掉” 文中定位:第…

618年中大促专属!不容错过的B2B电商机遇

即将又迎来一年一度的618年中大促,各大品牌商家是否都做好准备了呢? 对于这场购物狂欢的盛宴,很多人常常会把焦点放在面向消费者的B2C市场上,B2B市场则因线上化渗透率较低,显得相对冷清,不够引人关注。 事实…

全网最全,pytest自动化测试框架——数据驱动实战详解(超详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 第一种&#xff1…

Web前端开发技术储久良第三版课后选择答案(1-10章)

P16-第1章 练习与实验答案 练习1 1.选择题 【1】Html是一种()语言。 【A】编译型 【B】超文本标记 【C】高级程序设计 【D】面向对象编程【2】世界上第一个网页是()。 【A】http://www.w3c.org 【B】http:/info.cern.ch 【C】http://www.microsoft.com…

ffmpeg学习记录

1、对图片进行裁剪 ffmpeg -i input.jpg -vf cropiw/3:ih:20:0 caijian.jpg PS: crop100:100:12:34 相同效果: cropw100:h100:x12:y34 2、视频增加文字水印 使用drawtext滤镜进行增加水印 参数 类型 说明 text 字符串 文字 textfile 字符串 文字文件 …

invalid python sdk, pycharm2022不能创建虚拟环境的解决方法

感谢万能的google! 一开始google搜索“pycharm2022 invalid python sdk cannot set up a python sdk at python 3.11”,进入链接:Cannot setup a Python SDK in PyCharm project using virtualenv after OS reinstallation - Stack Overflow…

Flink将数据写入CSV文件后文件中没有数据

Flink中有一个过时的sink方法:writeAsCsv,这个方法是将数据写入CSV文件中,有时候我们会发现程序启动后,打开文件查看没有任何数据,日志信息中也没有任何报错,这里我们结合源码分析一下这个原因. 这里先看一下数据处理的代码 代码中我是使用的自定义数据源生产数据的方式,为了方…

AIVA.AI:AI音乐作曲创作平台

【产品介绍】 AIVA.AI是一个人工智能音乐创作平台,可以根据用户的需求和喜好,自动生成不同风格和情感的音乐。目标是成为创意人士的创意助手,无论是独立游戏开发者、音乐新手还是专业作曲家,都可以利用AIVA.AI的技术来为自己的项目…

分布式各系统时间统一程序

目录 1、背景2、Cristians algorithm 算法(克里斯蒂安算法)3、实现思路3.1、步骤:3.2、公式 4、具体代码4.1、构建时间戳4.2、定义数据包4.3、客户端实现4.3、服务端实现 说明 1、背景 使用场景是在一个大型分布式系统下,对时间有…

第一天,掌握PyTorch的张量创建

文章目录 一,张量二,创建张量1. 直接从数据来创建张量Tensor函数TODO :从数据直接创建张量 2. 从numpy数据创建张量from_numpy函数从numpy数据创建张量 3. 从另一个张量来进行创建张量4. 使用随机值或者常数值来创建张量5. 张量的属性&#x…

【C】C语言数据类型、常量变量的介绍

C语言基础 数据类型常量和变量变量全局变量和局部变量变量的作用域和生命周期作用域生命周期 常量 数据类型 下图为C语言常见的数据类型: (浮点数就是我们常见的小数,字符类型要用‘’引起来,在C语言中字符串类型要用字符数组来…

如何知识变现?介绍几个变现途径

哈喽,大家好,我是海哥,知识付费变现创业教练,教育公司培训总监,从事知识付费变现咨询10年,已助力3000人实现知识付费变现。 在互联网时代,所有线下的产业都可以在线上再做一遍,知识产…

简易版python爬虫--通过关键字爬取网页

背景: 帮同学写了个爬虫程序,特此记录,怕以后忘了 这里是爬取百度https://www.baidu.com 不为什么,主要就是百度老实,能爬,爬着简单,爬着不犯法。。。 关键字爬取基本模板: import…

Git第一章、Git的原理与使用

背景知识: 我们在编写各种文档时,为了防止文档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出一个副本。每个版本有各自的内容,但最终会只有一份报告需要被我们使用 。但在此之前的工作都需要这些不…

[Flutter]理解Widget-Key的作用

这里主要是理解在Widget中key的作用/用途。 import dart:math;import package:flutter/material.dart;/// 这里主要是理解在Widget中key的作用/用途。 void main() {runApp(const MyApp()); }class MyApp extends StatelessWidget {const MyApp({super.key});overrideWidget b…

Vault从入门到精通系列之二:启动Vault服务器

Vault从入门到精通系列之二:启动Vault服务器 一、启动开发服务器二、设置环境变量三、验证服务器正在运行四、vault命令汇总 Vault 作为客户端-服务器应用程序运行。Vault 服务器是唯一与数据存储和后端交互的 Vault 架构。通过 Vault CLI 完成的所有操作都通过 TLS…

【Leetcode60天带刷】day09字符串—— 459.重复的子字符串,28. 实现 strStr(),剑指Offer 05.替换空格

题目: 459. 重复的子字符串 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。示例 2: 输入: s "aba" 输出: false示例…

Grammarly:AI语法检测写作助手工具

【产品介绍】 Grammarly是于2009年发布,当前使用最普遍和准确的英语语法检查(grammar checker)、拼写、校对(proofreading)检查和抄袭(plagiarism)检测软件工具,其中Grammarly校对检…

pytorch笔记:transformer 和 vision transformer

来自B站视频,API查阅,TORCH.NN seq2seq 可以是 CNN,RNN,transformer nn.Transformer 关键源码: encoder_layer TransformerEncoderLayer(d_model, nhead, dim_feedforward, dropout,activation, layer_norm_eps, ba…

杂谈 | 人类微生物组研究:解析挑战与前景

谷禾健康 人类微生物组研究正在从描述关联发展到了解整个微生态对人类的影响。虽然存在挑战,但在应用数据驱动的微生物组诊断和干预方面正在取得进展,这可能会在未来十年内带来精准医学的突破。 本文我们来探讨关于微生物组的研究进展及其对人类健康的影…