快速入门一个分布式组件
经验分享
要快速入门一个组件或者技术怎么比较高效,凭自己这些年的经验,有以下一些心得或者建议:(以一个分布式组件为例)
-
先清楚它生来是要解决什么问题的
出现的背景是什么?没有它时是怎么做的?它的目标是什么?它的优势是什么?
-
了解它提出的一些概念和作用
通常一个组件出现,会创造一些概念。此时可以对比自己当前知识体系下的概念。
-
它的部署架构是什么样的
这点让自己知道它的全貌是啥样的,不要马上陷入某个知识点。这很有必要。
- 单实例上怎么部署的?哪些组件
- 多机上怎么部署联动的?
- 元数据配置中心怎么部署的?
- 选主机制的部署架构?
-
处理读、写的流程、CAP考量等
了解组件在读写上的处理流程。
- 读写都走主?还是写主读备?
- 可用性是怎么保障的?主从同步大概是怎么做的?
- 一致性是强一致、最终一致等
- 选主操作是什么样的
-
了解它的线程模型、IO模型等
有一个更加清晰的认识,为什么这样设计的考量等。
- 线程模型是单进程多线程?还是单进程单线程?还是多进程单线程等。
- IO模型是阻塞IO?IO复用等。
- 什么关键地方用了异步处理?怎么提高的性能等。
-
搭建起一个简版的服务,实践操作一番
当然最终还是要实践起来,动手操作更有体会。
-
找最佳实践
网上去看看了解它的最佳实践是什么样的,对重点有个认识,避免走一些弯路等。
-
看源码
当了解了,也实践过了,那么感兴趣就可以去看源码加深自己的理解和学习优秀的实践。
当然看源码有很多技巧,成熟的组件代码量很大,不可能逐行去看。可以先看早期简版源码,社区、网上都可以去看前人总结的,自己再去阅读、调试理解等,避免陷入无头苍蝇的情况。
心得体会
以上是自己从业这些年总结的一些经验,还有个问题老生常谈,但又不得不谈,即打下一个扎实的计算机基础。
自己作为面试官也面试过不少校招和社招的同学,我本身很注重计算机基础,所以面试时比如操作系统和网络相关问题我都会问。几次都遇到提这样问题的同学,我记这个工作中能用到么?有什么用?
其实像深入理解一个组件这个case,如果你操作系统和网络知识比较扎实的话,理解起来会很容易。比如:
操作系统相关
- 进程与线程的理解
- 多进程与多线程的用法
- 文件描述符的理解
- fork后文件描述符的继承等
- IO模型有哪些,对IO复用、非阻塞IO的理解等。
网络知识
- 如webserver启动 socket bind listen accept这些步骤
- 连接描述符和监听描述符区别等
等等把,如果这些知识理解的很好,对组件的快速入门与熟悉都很有帮助,那是不是对工作也很有帮助了。