专访百度云首席架构师林仕鼎:如何突破瓶颈

www.net130.com     日期:2012-7-11    浏览次数:
出处:杨赛 51CTO.com

在今年的百度开发者大会上,百度云战略高调发布,成为开发者们瞩目的焦点。一直以来在公共领域很低调的百度移动·云事业部的首席架构师,也在当天以百度云首席架构师的身份站到了前台。在他的博客上,他喜欢谈谈架构,谈谈安全,谈谈火车票订购系统,谈谈OS的内核架构;在他的微博上,除了讨论技术之外,也喜欢晒晒团队,谈谈社会与生活。

他是林仕鼎,一位自称“西二旗跨界架构师”的资深技术男。他的成长历程是典型的研究学院派:</P>

林仕鼎的履历
(来源)

对于架构师的成长之路,林仕鼎先生有什么看法?近日,51CTO编辑对林仕鼎先生进行了一次采访,讨论这方面的话题。以下为采访实录:

51CTO:您最近的博客将架构分为三类:软件架构,系统架构,以及大规模分布式架构。您个人从开始接触架构设计到现在,对于这三类架构都有所研究。能具体讲讲一开始接触架构设计的时候是怎样的背景吗?

林仕鼎:其实我对架构设计的看法主要还是源于项目经验,做过的事情多了,于是开始总结和提炼。架构设计不是一个单独的行为。它在系统设计和实现的过程中发生,或者在事后总结提炼生成。我觉得并不存在一个单纯的、独立的“架构设计”。

51CTO:您最初开始接触计算机和编程是什么时候?为什么会喜欢上CPU设计和内核架构这个领域的?

林仕鼎:我从95年到02年都在北航6系,真正编程始于大二。大二上半年用C做了个跳棋小游戏,暑假时帮一个老师干活,做了个基于单片机的图形化控制系统。这个控制系统大概用了一两万行的8051汇编代码,在此过程中我隐隐约约地悟出了资源管理、函数调用和模块封装等理念。虽然以今天的眼光来看,这些经验都很粗糙,但奠定了我做底层系统的基础,也从此喜欢上了这一领域。后来在本科阶段做的工作也主要与网络通信和并行程序相关,在读研时因缘巧合加入了实验室的OS小组。

51CTO:当时学习OS Kernel主要是通过阅读论文吗?在这种深层次的领域,有没有觉得有时候特别难懂,好像自己的成长陷入一个瓶颈,特别烦躁的情况?

林仕鼎:我当时主要通过阅读Linux kernel源码和CPU (i386, SPARC) 手册来学OS kernel的。半年多的时间,一些关键代码基本是一行一行研究的。在那个阶段,总是有新的东西可学,觉得每天都在进步,一直都很兴奋。我的看法是Linux kernel(或者Unix-like kernel)的最关键之处在于进程的创建、调度和切换,当时在把0号和1号进程搞清楚之后,真的是手舞足蹈兴奋不已。有几天觉得最复杂的程序都研究清楚了,也不过如此,甚至产生了“身登绝顶我为峰”的幻象。不过这个幻象很快就被打破了,因为有人问了我一个问题,我哑口无言。这个问题是“Linux kernel有什么缺点?如果你自己设计,会怎么改进?”后来,我开始阅读一些关于OS架构的论文,这些论文为我打开了一扇进入系统领域的大门。

在我身上,比较少有陷入瓶颈的情况,一般我都在不停地迎接新的挑战,这可能也跟我的经历有关。

51CTO:对于突破瓶颈,您个人有什么经验分享吗?有没有和导师、师兄弟们交流过这方面的事情?

林仕鼎:不同阶段工程师的瓶颈是不同的,有些人需要多写点程序,而有些人却需要从程序中跳出来。对于需要从程序中跳出来的人,我的百度空间里有篇文章,可供一读:《架构相关领域的学习材料》。

另外对于架构师的成长,我也有张图,总结了我个人的经验:

架构师成长之路

简言之,通过写code和辛勤工作深刻理解how,通过阅读和思考逐渐体会到why,二者需要持续迭代不断升华。通常工作中得到的只是experience,思考后才会变成自己的skill;而阅读中得到的一般也只是information,使用后加深理解才会变成knowledge;把skill和knowledge结合起来,才会真正形成自己的expertise。于此,才有可能具备前瞻性,知道what to do next。

51CTO:后来接触分布式系统又是从什么时候开始的?您提到大规模分布式架构的重点是资源整合、快速交付和运维问题,而系统架构的重点是资源的分配与复用,这当中的异同具体表现在哪些方面?

林仕鼎:2002年毕业后,我加入微软研究院的系统研究组,主要研究大规模分布式系统和高性能系统架构。这段时间的主要工作是问题域研究、系统设计和原型实现,真正做出实际系统是在我到百度工作之后。

分布式架构和系统架构是两个维度的技术。从规模上来看,分布式架构通常关注的是机群或IDC,而系统架构则是单机。从目标上来看,分布式架构主要保证availability,而系统架构提供performance。在一个实际系统中,通常这两个维度的技术都会有所体现。

对于这几个类型的架构划分,都是纯粹的个人观点,不一定是成熟的或业界公认的。我的习惯是,先把一些复杂的问题解耦、分离成独立的子课题,这样比较容易找到切入点和理解问题域,然后再把不同维度的技术结合,针对具体问题和环境做出不同的折中考虑,最后形成最终解决方案。

51CTO:现在百度移动、云计算这块,您目前主要关注的方向是什么?

林仕鼎:我当前的主要工作是把面向数据处理的云计算平台、面向网络服务的应用引擎以及面向网页的浏览器平台结合,形成一个更具有普适性意义的OS平台,供WebApp运行。

现在有几个大的技术浪潮,移动、云计算、大数据以及物联网。在我看来,移动和物联网提供的是interaction和connectivity,云计算提供的是处理能力,而大数据产生智能。我们的工作就是整合这些能力,使其变得普适化,使App可以更方便地使用。然后App做什么呢?我的看法是用来program web。Web上有足够的data和services,App可以更智能地把这些能力都串联起来,更好满足用户需求,提供更自然的交互方式。

这些技术与互联网的结合,将开启一个全新的时代,我认为这就是继PC和互联网之后的云的时代。这也是百度云战略的发展目标。

51CTO:之前看您提到过百度的绿色数据中心计划,这方面目前的进展如何?有没有计划跟其他同行,比如淘宝的工程师团队进行合作?

林仕鼎:我们的绿色数据中心计划包括三个方面:IDC、服务器和新硬件。

IDC方面,我们自行设计的M1数据中心已经运营半年多了,除了常规的直流供电和新风制冷等技术,我们还设计了冷热风道隔离和智能调节,当前的成果是夏季平均PUE是1.4左右,冬季大约1.1,这应该是国内的领先水平了。

服务器方面,我们正在设计整体机架式服务器以及基于ARM的低功耗高密度服务器。新硬件则包括自行设计的SSD、FPGA卡等。

这些设计我们都会逐步开放,也很欢迎其他同行采用我们的做法或共同研发。

51CTO:最后一个问题有关新人的培养。您现在招聘工程师主要看中哪些方面?有没有什么可以快速招到(或者定位到)合适的人的经验可以分享?

林仕鼎:就我个人而言,我最看重的是工程师的抽象能力和对问题变化的敏感性。很多年来,对于新人我只用一道面试题,很简单的数据结构建模,然后变化一些条件,看他的处理方案。

51CTO:好的,问题到此结束。感谢林仕鼎先生接受我们的采访!

分享道
相关新闻