分布式存储工程师的技能树是什么?

电脑杂谈  发布时间:2020-04-23 03:26:44  来源:网络整理

分布式海量数据存储_分布式存储 文件系统_分布式存储算法

吴镝

374人同意答案

有几种类型的与分布式存储相关的系统(这里更不用说与分布式计算相关的系统):

1. 分布式文件系统,例如HDFS和Ceph. 这些是特殊的大文件. 特别是标准的HDFS公司,话不多说.

2. 对象存储,典型的是Amazon S3. 许多公司在内部使用这种系统,并存储诸如图片之类的小文件. 该接口通常与Amazon S3不兼容,因为它是不需要的,例如淘宝的TFS基本版. 该想法是将多个小文件合并到一个大文件存储中,即HayStack,这是经典的纸质FB. 这种系统一般读多写少,不需要修改,很少删除,一致性不是很强,而且系统比较容易做. 基本上,HDFS + HBase可以处理这样的系统. HBase存储元数据,并使用HDFS附加功能将小文件合并为大文件.

3. 分布式. 外部数据模型是一个表(底层可以是分布式KV). 如HBase(BigTable)分布式存储算法,Ali的OceanBase和国外的cockroachdb(GitHub-cockroachdb / cockroach: 一个可扩展,可生存,高度一致的SQL,基本上您可以阅读和理解其设计文档,水平非常好)是前同事的创业项目TIKV(想要建立的github.com/pingcap/tikv可以提交简历). 这些都是高度一致的OLTP. 除了HBase,其他两个还支持分布式事务. 分布式事务和多个副本的强一致性很难做到. 分布式事务基本上是两阶段提交. 在实施过程中,需要处理协调员/参与者失败的问题,这需要多个副本的协调员/参与者. . 同时,为了获得高可用性和容错能力,还应该使用每个数据的多个副本. 如何保持副本的一致性是另一个大问题. OceanBase使用Multi-Paxos,corckroachdb使用Raft,ramcloud.stanford.edu /〜ongaro / userstudy /,到目前为止,我见过的最好的是Multi-Paxos和Raft.

Paxos的设计仅考虑在价值上达成一致. Paxos协议本身不考虑项目中的应用程序,因此不考虑日志同步. 因此使用Multi-Paxos. 考虑到项目中的问题,木筏出现得较晚,其局限性是日志同步要求的顺序. Multi-Paxos没有此要求,并且相应的实现更为复杂. 因为Paxos需要两轮就一个值达成共识,所以为了提高性能,引入了master,只有master可以摆出日志,因此Paxos在第一轮中不需要它. 这需要主要的选择算法,有很多主要的选择算法,例如基于IP的或直接基于Paxos的. 然后是成员资格变化的问题分布式存储算法,即扩张和收缩. 筏再次考虑. 实际上,在这里,我们直接讨论有关一致性的高级协议. 这些高级协议即使在多点写入的情况下也可以确保一致性. 相对而言,“低级”方法类似于NWR. 成功写作需要占多数,而阅读也需要占多数. 它不能处理由多点写入引起的一致性问题. 它需要由代表Dynamo的应用程序本身选择. ,这是为矢量时钟等技术设计的. 然后,考虑到负载和其他原因,需要对平板电脑(范围)进行拆分,迁移等. 这也是重点,其中大多数依赖外部协调器来解决,例如ZooKeeper等.

最后,让我们谈谈计时问题. 因为它是一个分布式系统,所以不同的机器时钟不能相同,并且或多或少都有错误,这给的外部一致性带来了一些挑战. 这是NTP同步. 当然,Google的Spanner功能更强大. 由硬件实现的原子钟称为TrueTime. 一种更理论上的方法是逻辑时钟. 折衷方案是HLC,这是一种逻辑时钟物理时钟混合解决方案.

对于初学者来说,您可以刷一下该MIT课程nil.csail.mit.edu/6.824/2016/schedule.html

分布式存储 文件系统_分布式海量数据存储_分布式存储算法

作业基于Golang,开发效率高. 以前是C ++.

对于中文博客,您可以阅读通过电子邮件发送的博客花园. 上面提到了许多技术博客.

于2016-04-24编辑

dongmao zhang

781人同意答案

分布式存储工程师显然需要同时关注分布式和存储方面

分布式:

伊利诺伊大学有一个分布式课程,该课程最终将实现分布式k-v. 该课程中有讲座,还有作业和助教可以帮助您. 回答问题并强烈推荐

一些参考资料:

分布式海量数据存储_分布式存储 文件系统_分布式存储算法

课程:

coursera.org/course/cloudcomputing

纸张:

paxos论文: research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf

dynamodb论文:

allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf

citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.37.767&rep=rep1&type=pdf

GitHub-kevinxhuang / awesome-distributed-systems: 精选的分布式系统书籍,论文,资源和闪亮事物的精选清单.

此摘要也很好.

分布式存储 文件系统_分布式存储算法_分布式海量数据存储

别忘了,有存储空间

存储空间:

另一个参考:

斯坦福大学的原理课程:

CS 245系统原理::主要

与对应的教科书:

系统实现(英文版2),这本书是影印本,也有翻译版本,但仍建议阅读原文,理解也不成问题

德语课程,但幻灯片全部为英语

informatik.hu-berlin.de/de/forschung/gebiete/wbi/teaching/archive/ws1213/vl_dbs2

分布式存储 文件系统_分布式海量数据存储_分布式存储算法

SQLite回滚模式的实现

SQLite中的原子提交

WAL的SQLite实现

预写日志

了解Linux内核

gauss.ececs.uc.edu/Courses/022/code/memory/understanding.pdf

语言

根据您的工作,这些主流语言将始终相同.

大型分布式系统始终需要部署运行和维护自动化测试,并且某些,某些粘合语言必不可少,

Bash,Python可以大大提高工作效率

需要大数据来分析用户行为吗?需要大数据来预测硬盘驱动器何时损坏?我使用Spark进行数据分析,此时我需要Python.

有时您需要编写代理以清除流量,或缓存一些请求以减轻存储集群本身的压力. Openresty是一个好帮手,因此您需要Lua. 或者Golang也是一个不错的选择.

编辑于2019-01-02


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-185504-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...