当前位置: 首页 > article >正文

如何系统学习分布式?

关键词:想要走存储/数据库方向的话,具体路线是啥?重点需要掌握精通哪些知识?

回答

那我简单说一下走存储/数据库这块的学习路线吧。

目前做存储比较热门的是分布式存储方向,有NoSQL的也有关系型数据库的,比如腾讯就有TDSQL,PingCAP 也有TIDB、也有分布式KV存储TIKV。

提到分布式系统,非常经典学习资料肯定首推MIT 6.824(即 MIT 分布式系统课程)

基础的数据结构以及操作系统和计算机网络肯定都是必备的,分布式系统就是通过网络构建在分散的物理节点上。

现在的分布式kv,分布式数据库基本架构是类似的:

  • 基于多副本实现高可用和容灾

  • 分布式查询

  • 数据 Sharding 机制

  • 通过2PC,Paxos/Raft 等协议实现数据一致

存储层目前 LSM Tree用的比较多,可以看看 Google Leveldb 的源码学习:https://github.com/google/leveldb

同时这也是一个非常适合用来学习C++的开源库。

存储层之上在通过分布式一致性协议在多个副本之间做到数据的一致性,以此保证存储的高可用和容错能力。

常见分布式一致性算法是raft和paxos,可以看看raft和paxos的论文。

raft 的实现,还是推荐上面说的 MIT 6.828 的课程实验,这个会有几个Lab,逐步实现一个基于raft的kv

把底层的存储层和分布式一致性协议组装起来,大概就是一个建议的分布式KV。

如果想基于这之上构建关系型数据库,那么需要引入事务层,

Google 算是这方面的鼻祖,后来很多的 NewSQL 数据库基本都是按照 Spanner/F1 论文去实现的:

这里可以学习谷歌的 Percolator 的论文。

然后再往上就是SQL层,SQL包括语法相关解析,执行器,优化器之类的。

当然在学校要学到这里来,比较难,很少有相关课程,但是网上有很多学习资源的。

我这里简单列举一下顺序哈:

  1. leveldb 学习底层存储引擎,目前非常热门的 LSM Tree结构

  2. 分布式一致性算法:MIT6.824,也可以看下CSE 552 ,这门课是来自分布式系统巨牛 Tom Anderson

  3. 学习数据库原理,可以看《数据库系统概念》这本书和cmu15445  的课程,也会实现一个关系型数据库

补充一下,《数据库系统概念》这本书重点关注:

  • 第 3 章:SQL

  • 第 11 章:索引与散列

  • 第 12 章:查询处理

  • 第 13 章:查询优化

  • 第 14 章:事务

  • 第 15 章:并发控制

  • 第 18 章:并行数据库

  • 第 19 章:分布式数据库

如果自己把前面几项学完了(至少估计大半年时间)

 


http://www.kler.cn/a/37283.html

相关文章:

  • Flink实时任务性能调优
  • 复习java基础
  • 中国移动光猫设置桥接
  • C++结合EasyX写扫雷(new)
  • window.getComputedStyle
  • 【Linux后端服务器开发】管道设计
  • 2023大数据面试总结
  • 【C#】并行编程实战:同步原语(1)
  • jquery html特殊字符反转义,JS - 实现HTML标签的转义、反转义的几种方法
  • Boundless Hackathon @Stanford 主题黑客松活动闭幕,一文回顾
  • 解决小程序 scroll-view 里面的image有间距、小程序里面的图片之间有空隙的问题。
  • 自然语言处理从入门到应用——LangChain:快速入门-[链(Chains)、代理(Agent:)和内存(Memory)]
  • 二维码识别 OCR 原理及如何应用于物流和仓储管理中
  • “简单易懂的排序:深入了解直接选择排序“
  • msvcp140.dll是什么文件?如何修复丢失的msvcp140.dll文件
  • 【C++】STL之string功能及模拟实现
  • vue中给数字新增四舍五入属性
  • docker-compose常用模板
  • 从小白开始学习CAD(一)
  • MySQL常用命令1