微信号:infoqchina

介绍:有内容的技术社区媒体

林仕鼎谈数据中心计算(三):设计一个好的系统架构为啥这么难?

2013-04-23 15:51 InfoQ

为什么设计一个好的系统架构这么难?林仕鼎是这样解读的:


设计一个好的系统架构,不仅仅是为了把系统做出来,更重要的是去考虑这个东西本质上应该是什么样的,怎样才会更优雅、更具有普遍性的推广意义。而且,数据中心里的系统涉及到应用、软件系统以及硬件架构等,需要多个团队配合,也需要产业链上合作伙伴的配合。我们可以提出思路并给出设计方案,但这些方案的实施需要业界的参与。这是一次产业的变革,我们很希望能在技术上起一些引领作用。


这同样也是现代IT技术演进的特点。创新,包括基础技术的创新,更多由工业界,特别是大型互联网公司来引导。因为,只有在大型互联网公司里才有需求有条件去做这些创新,真实的海量的数据和用户请求、实际运行的大规模平台,这些都是高校和研究机构所不具备的。


当然,也不是有需求有条件就必然带来创新,跟环境氛围、个人意愿和能力也有很大的关系。就我个人来说,我首先是一个工程师,一向hands-on,一行一行代码写起,做过很多套系统;其次,我也有多年的系统研究背景,对这个领域的方法论、发展历史和现状比较熟悉。也就是说,我了解问题所在,有条件有能力去解决,并且也有意愿去定义一套完整的技术体系和理论框架。这个情况在业界是不太多的。


互联网公司里,多数工程师们在使用开源技术,这对于快速完成项目有很大帮助。在长期的实践过程中,大家也积累了很多经验,但这只是应用级开发经验,因为很多时候他们对这些技术的了解仅止于应用,缺乏对设计思路和实现细节的深究。在没有合适开源技术或者需要从头构建一个新的系统时,这些应用级开发能力就不足以胜任了。当然,深入了解这些开源技术也只是开始而已,说实话,大多数开源项目的设计和实现的水平并不太高。


学术界也有其固有的问题,从逻辑上的设计思路到物理上的系统架构和代码,还有很大的鸿沟存在。如我起先说的,一个复杂的系统在逻辑上有很多个层次,具体映射到模块、介质、机器、机群等物理结构上时,有诸多因素需要考虑,而这些因素有时候要到具体实施时才能被确定。另一方面,系统的实现难度也是很高的,怎么把硬件的并行度发挥出来,怎么让系统去异步地调度资源,这些都很复杂,需要大量的开发经验。


另外,系统研究产生的通常是原型系统,这跟实际的生产系统有两点根本性的不同。一个是规模,研究系统一般跑在几十台机器上,这已经很大了。把几十台机器当作一台机器来看,和把几千台机器当作一台机器来看,完全是不一样的。我经常开玩笑说,这会影响一个工程师的世界观,如果没有实际做过这样的大系统,根本体会不到其中的区别。比如刚才说的层次结构,在几十台机器的时候,根本就不明显。对于故障的处理方法,对于自动化工具和机制的重视程度也会完全不同。第二个不同在于,生产系统面临的压力是不一样的,用户请求的类型也完全不同。刚来百度的时候,我做了第一个存储系统,实现原型只用了半年,但是花了半年的时间才让它稳定运行,再花半年的时间才结束试运行,然后上线成为一个真正的生产系统。也就是说,从设计到实现的过程只是1/3,把它变成真正可用的系统还要再花两倍的时间。


你认同林仕鼎的看法么?点击“阅读原文”查看更多内容并吐槽吧。


另,在4月25日QCon北京的主题演讲上,林仕鼎将会带来主题为《架构设计与架构师》的分享,就系统领域中基本的存储、计算、分布式技术以及服务模型进行分析,从另一种视角看待这些领域问题。敬请期待!

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 Linux进程管理命令详解(ps和top) Angular.js教程。 有梦想,不孤单——首届上海传智杯演讲大赛正式启动! 2副图秒懂SQL中的join 我的程序员经历和与头条网微信结缘