知名架构师畅谈互联网架构热点话题:互联网架构一席谈
作者: wuzhimin
为了帮助大家准确把握互联网架构的热点,本刊记者特别采访了国内五位知名架构师,详细解读互联网架构的现状及趋势。
互联网架构中,最大的热点有哪些?为什么会成为热点?
崔金峰:两个方面:第一是海量存储,包括大数据量存储,一般就是分布式存储的解决方案;第二是海量计算,主要是用分布式计算。
这些之所以成为热点主要是因为Web2.0以后的时代,更关心个人信息方面的存储和计算。比如Facebook、Twitter等。当这些信息量存储足够大,要想分析数据或者实时提取数据,分布式计算技术必然要应用上。比如类Hadoop的典型应用。
邓毅:第一是大规模、低成本、高性能的存储与运算框架;第二是友好的界面支持、AJAX/HTML5等。
冯大辉:NoSQL相关的解决方案越来越多,与存储和RDBMS相关的挑战已经不像几年前那么严峻。随之而来的是SNS应用中日益严重的“消息处理”需求而带来的压力。用户对信息(尤其是碎片化信息)的及时性要求较从前有了更高要求,目前还看不到更好的解决办法。
侯震宇:互联网架构是个很大的范畴,涉及方方面面,自然热点也是方方面面。如果要寻其热点,我们要首先找到互联网公司都有哪些类型,不同的公司又遇到了哪些架构层面的问题。
我把这些公司按照现实社会也分成三个世界:发展中公司、发达公司、超级公司。他们面临的架构性问题是不一样的,而且都有很大的代表性,也就都可能成为互联网架构的热点。我们分头来看。
第三世界,发展中公司:这对应很多的新兴创业公司。这类公司发展很快同时面临的外部竞争压力也很大,他们的首要任务是将产品做好。所以其架构性问题是如何设计一个良好的有一定扩展能力并适合本产品的架构以支持产品的快速开发。在这个领域,大批的开源软件被使用。探讨新兴的开源软件和编程语言特性以及前端技术是这个领域的热点,一切能使开发变得简单的架构、方法都会直接被使用(像不像20世纪八九十年代的中国)。能够总结出一套LAMP这样经典的体系架构或者RESTful这样的架构风格,可能不是这类公司的任务,但却会给这些公司带来很大的指引作用。
第二世界,发达公司(这个名字有点儿怪):这有点像我们现在国内的一些大公司。这些公司已经经历了很多年的发展,产品已经在一定程度上趋于稳定,但早期快速发展造成的基础不扎实带来的影响也渐渐体现出来。原先简单的产品架构变得日益复杂,各产品之间的联系越来越多,参与项目的人数越来越多,总体效率越来越低。这些公司要做的是将现有的系统进行整合,将共用的逻辑独立服务,推行各种标准化,推行各种管理上的流程化。SOA也算是这个领域一个比较泛的热点。这些公司正在经历着成功带来的痛苦(像不像有点儿颓的欧洲)。
第一世界,超级公司:这就是全球几大互联网巨头了。这些公司已经成功度过了第二阶段的痛苦,建立了良好的体系架构,现在正在享受良好的基础架构带来的巨大便利。这些公司面临的架构性问题,已经不能单纯用互联网架构来描述了,这需要整个计算机领域非常强大的体系架构进行支撑。超大规模的集群管理、数据存储和计算系统,作为整个体系架构的基石。为大家极度推崇的Google所谓三架马车就是其中的代表作。这部分可能是大家最津津乐道的互联网热点,但其实真正需要如此大规模系统的公司,能真正接触到这些系统的人,都是少之又少。
栾义来:热点包括互联网数据的大规模处理和存储以及海量信息的实时检索。随着互联网应用的持续爆发,包括移动互联网和未来物联网的发展,这些都是加速度的发展,我们越来越面临大规模数据处理的问题。在海量数据里面人们也越来越希望可以实时地获得自己真正需要的那部分数据,这不是简单的索引问题,而是包括了规则定义的逻辑事件处理功能等,例如各大搜索引擎都在推出的实时搜索。
互联网架构下一步的发展趋势有哪些?
邓毅:第一是快速更新,第二是支持多媒体/视觉等数据。
冯大辉:现有的互联网架构向移动互联网迁移的过程中带来的技术挑战。新的技术(比如HTML5)对基础应用的改变带来的各种可能性。
侯震宇:现在是互联网大发展阶段,电子商务、移动互联网、SNS、搜索引擎无一不是炙手可热的大领域,全球互联网无论从市值还是流量影响力来看的几大巨头基本都集中在这几个领域,Web的架构性问题也主要在这几类产品中出现。太多产品特性我不想多谈,我想说的是这几年来互联网上的数据和流量的增长确实是太快了,这给很多大公司都带来了规模上的架构问题。这些问题再过几年会被现在的一些小公司同样经历。所以规模带来的问题将是互联网架构近期和长期都面临的一大问题。这个问题怎么解决?一个被炒烂了的概念就是云计算。
在做一个系统设计时需要具体情况具体分析。流量大的网站未必数据量大,比如Twitter的数据量其实很小。数据量大的系统也未必很复杂,比如Facebook的图片存储系统。OSDI’10的论文显示Facebook的图片数据有20PB,但其设计的Haystack却是个非常优雅而简单的系统。功能“简单”的系统未必设计实现起来就简单,比如Amazon Webservice里面大部分的服务都带有“Simple”的前缀,但仔细研究会发现其实每个设计都不简单。
综合来看,如何更好地利用多核进行编程、如何实现大规模的分布式存储、如何实现资源和计算的调度、如何使用虚拟机技术、如何实现大规模集群的自动管理、如何更好地定制或选型服务器、如何建设好网络和IDC,都将是巨头公司们需要考虑的问题。当然这一切系统的建设虽然有一些论文参考,但都必须根据自己公司业务的特点重新考虑,照搬任何一个已有的设计都是不靠谱的。国内的几家巨头都应该走类似的路,中小公司则没必要在这方面烧钱。
栾义来:有两个趋势,第一,从云端来讲,分布式计算将变成基本的编程框架,大量云设施的建设将大大简化编程的复杂性;第二,从通信协议上讲,HTTP协议所暴露的各种问题在一段时间内会被新的协议或其他方案所解决。
崔金峰:云计算相关技术的发展和技术的开源,各大公司采用的相关技术趋同,当然细节可能不同。互联网的架构会变得更简单、更稳健。