和luoyan的谈话

晚上给luoyan介绍了一下我们实时流式计算项目内部实现,他也好心地为我介绍了一下整个bailing系统大致组织并且稍微详细地介绍了一下bddb的实现原理。之后我们稍微聊了一些其他的事情。

我和他都感慨时代变化太快了,从每个时代标志性的软件就可以看出来了,现在不再是emacs的年代,不再是gcc的年代,也不再是linux的年代,这个年代的标志性软件是hadoop以及hadoop相关的软件包括hdfs,hbase等。luoyan以前主要是做linux内核方面的工作,而我以前主要是做基础库方面的工作,都面临转型的问题吧。现在linux方面可以做的事情,就是为上层的分布式框架提供更好的支持,比如更好的资源管理、更高效的系统调用、更快速的文件系统等,而那些尝试直接在linux层面上做分布式的东西似乎并没有做得非常的好(比如ceph)。而对于基础库来说,本身大家关注的层次已经从单机转向了分布式,相对来说基础库的重要性也比以前要低了很多。

另外就是luoyan强烈建议我应该自上而下地进行学习,首先尽可能地从业务入手,只有知道了业务的需求才能够做出一个好的(这里好的仅仅意味着满足客户需求,而非设计优雅)系统,然后在设计系统中再来尝试解决更多的问题。可能和他的自身经历有关,之前做linux内核方面的话,可能和上层用户需求脱节比较严重,而且也没有机会站在用户这个角度从更大的方面来观察问题。我觉得他的想法不错,他打算在设计系统的时候花20%的时间了解项目的背景并且参与设计了解真正需求,然后剩余的时间来真正地设计系统。设计系统必须简单明快,为了避免复杂性可以根据用户项目需要提供定制化的解决方案,同时在用户所需要的时间范围内完成。konghui说这通常这种系统是一个半成品系统,但是我觉得还好吧。必须首先确保你这个半成品存活下来了,才有改进的余地(当然这取决于程序员是否愿意改进,但是这种情况显然比不满足需求而直接被cut掉要好)。luoyan.说,有时候对于应用需求的了解比设计系统本身更加重要,我不知道这句话是否完全正确,或许是有道理的。