新闻产经轻工日化电器通讯仪器机械冶金矿产建筑建材石油化工食品医药电子电工能源电力交通运输农业环保图片手机版
当前位置:中国市场调查网>产业>科技>  正文

林仕鼎:大数据处理 架构师的三板斧

中国市场调查网  时间:03/05/2012 17:00:53   来源:CSDN

  2月18日,CSDN(微博)在北京举行了TUP第19期活动:大数据系列研讨会——从12306谈起。本次研讨会汇集了来自百度、豆瓣(微博)网、搜狗、淘宝、土豆、凡客诚品(微博)、新浪微博、IBM等公司的众多业内技术高管,就大数据及海量并发用户网络的需求分析、架构设计、产品研发、系统运维等话题和与会者进行了深度探讨。与会者包括来自互联网/IT公司技术高管、研发精英、运维管理、对高并发网站解决方案有研究的技术人员,共计三百人参与了此次研讨会。本次研讨会分为上下午两部分,上午为高端讨论,下午为集中讲座。

  针对网站在突发高负载和高增长的情况下,如何承载巨大访问量,来自百度(移动·云)的首席架构师林仕鼎带来了名为《架构设计的一些思考》的精彩演讲。

图:百度(移动·云)首席架构师 林仕鼎

  图:百度(移动·云)首席架构师 林仕鼎

  存储和分布式

  林仕鼎首先从存储、分布式、服务架构、计算模型的例子开始谈起。他认为程序组织非常重要,对于存储这部分来说,它需要考虑包括结构、数据特点、访问模式、接口性质四大方面的问题。林仕鼎对这四大方面的问题作了详细阐述,指出每一个问题都面临若干选择,比如结构问题就有:File、Object、Table的选择,然后在同样一个结构中,还要面临是实时读写、批量写实时读之类的访问模式的选择,接下来不同访问模式对系统带来的影响,数据大小的分布、布局等。林仕鼎表示,正是因为有这么多因素的影响,导致开发者在设计系统时,必需要考虑很多方面。只有在全面掌握这些信息的情况下,才能设计出符合实际要求的系统。

  存储带来的一些矛盾包括:延迟与吞吐、随机与顺序、规模与实时性。一般来说,系统的规模越大,实时性的保证难度也就越大。要化解矛盾,需要在包括B+tree、Log-based两类模型建设的基础上做到弱化需求、发掘局部性、组合模型。

图:存储的两类模型

  图:存储的两类模型

图:为弱化存储带给系统的矛盾而采用的组合模型

  图:为弱化存储带给系统的矛盾而采用的组合模型

  在谈到分布式时,林仕鼎表示其实分布式的目标很简单,只有两个:扩容和容错。要实现这些目标需要采用Partition和Replication两种方法,而协议设计、调试是难点。

  服务架构和计算模型

  在进行系统设计时,所有系统都会面临一个极限值,即在给定系统资源情况下,所能提供的最大请求数,这里需要做一个特别设计,以防请求数突破极限值。如果没有作特别设计,在极端情况下,吞吐量超过一个点,那整个系统将崩溃。

图:服务架构

  图:服务架构

  服务架构的目标包括系统的高吞吐能力和在极限压力下的稳定输出。要实现这两个目标离不开服务架构的两类模型:属于基本类型的threadpool + queue和属于复杂类型的event-driven。为了保证整个系统的稳定性,还需要注意:减小资源分配粒度并主动调度、Flow Control、负载反馈,Throttling和延迟截断这四个方面。

  计算模型包含很多不同特点,一般来讲分为三类:数据密集型、计算密集型、通讯密集型(即传统HPC)。林仕鼎表示,首先要分析系统的特点,找到适合的模型。

  在很多情况下,在怎么做系统、服务、数据仓库等问题上,开发者面临的具体问题都千差万别。此时,需要建立一些模型,或者有比较好的实践原则。作为一个架构师,首先是要非常深入地了解自己的业务,再根据业务特点运用一些现行做法。林仁鼎总结了“架构师三板斧”,作为本次演讲总结与各位分享。架构师三板斧内容如下。

  看清需求:Tradeoff、无法满足所有需求、无须同等对待所有需求、发现根本需求、抽象、降维、了解需求随时间的变化、选择方法、把握节奏。选择方法:测算 -> 模拟 -> 实现、分解 vs 迭代、设计模式。把握节奏:目标与可达路径、定期产出。