目录
摘要:
最近的事情阅读代码的比较多,也有点杂乱,导致没有认真的梳理和整理过去的经验和以后的规划。不利于进一步的开拓,
事项记录:
一. k8s-csi的in-tree的逻辑
二. k8s-csi的enternal的接口的设计思想
三. linux文件系统存储栈的思想
四.分布式存储理论
上面这四点,单独某个来说对精力的摧残都是非常巨大的。在开启任何一个模块前,都必须有清醒的认知,否则极有可能在还未将知识点串联起来的时候,就因为精力耗竭而无法推进。
推进要点:
一. 基础必搞, 每天都要搞
包括:
- paxos理论
- raft理论
- 谷歌的经典三篇论文
- 其他的分布式文献
二. 从具体的实际开始发展到抽象
这一点猛然看的时候似乎和GOF的面向对象的先抽象后具体违背,但是注意这么一点,抽象必然是对具体的事物的模拟,而不能像形而上学一样只是存在于抽象本身。一旦和现实脱节,将会沦为二流的只会纸上谈兵的管理者,缺失了一个技术者应有的能力。
另外之所以要强调这一点,是因为最近在阅读k8s的源码中发现,其代码本身包含的设计过于抽象,如果不能理解其要解决的具体的问题,以及面对的具体的场景,则很难理解为什么要做出如此的设计, 无论是模块划分还是接口划分,层次都过多,无法理解其真意。
一个比较好的例子是linux文件系统,对硬件做了抽象,但是抽象的恰到好处。
还有一个比较好的例子是redis,几乎实现了分布式系统的所有要点,但是依然保持了简洁性。
三. 理论必须非常精通
精通的意思不是去亲自实现一个paxos或者raft,而是对各种设计的理论都了如指掌,将他人的设计变成自己的一部分。
这在对抗设计分析时是非常有用的,知识的广度也是一个专家的必要条件。