说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

林仕鼎:架构设计与架构师

HTML文档下载 WORD文档下载 PDF文档下载
他自称“西二旗跨界架构师”,又戴上了百度基础体系首席架构师的封号,喜欢在微博和博客上讨论技术、诗歌和社会热点,他是林仕鼎。他在博客中分享了《系统架构领域的一些学习材料》,不断对架构师这份工作做着总结。

【CSDN综合】林仕鼎自称是个“喜欢厘清概念的人”,在他的博客、CSDN举行的TUP活动中以及QCon中一次一次进行了剖析。


林仕鼎在博客中写道,系统架构是一个工程和研究相结合的领域,既注重实践又依赖理论指导,入门容易但精通很难,有时候还要讲点悟性,很具有“伪科学”的特征。要在此领域进阶,除了要不断设计并搭建实际系统,也要注意方法论和设计理念的学习和提炼。对于工程师来说,到一定阶段后往往会遇到成长瓶颈。要突破此瓶颈,需要在所属技术领域更深入学习,了解本领域的问题本质、方法论与设计理念、发展历史等。


架构 (architecture) 这个概念确实不好定义。首先,它很虚,不像代码可以用源文件“自证”。其次,它很泛,好像跟什么都相关,开发、测试、部署甚至运营等各阶段都有其影子。然后,它好像还在变,在计算机发展的各个阶段(Mainframe/PC/Cloud)都感觉不太一样。而且,在不同的领域也都有不同的反映。

所以,一千个人心中有一千个哈姆雷特,一千个工程师眼里也能有一千种架构。以建筑为例,设计师想方案,建筑师出图纸,工人施工同时项目管理贯穿始终,那图纸就是架构。如果说到烤鸭,骨头和肉是代码,鸭架子就是架构,而过程管理将其变成烤鸭。

如果要更正式点定义,架构就是model和pattern,从而把code串成system。而其中最重要的就是design principles (设计原则),即为什么这个问题要用这个而非那个。更文艺点,再结合点美学,也可以叫作design philosophy (设计哲学或理念)。

然后我们来看什么是model和pattern,这两个具体的定义我还没想出来。先说一下比较,model偏宏观,而pattern偏微观;model重抽象描述,而pattern重具体实现。比如,你的系统有一个服务端和一个客户端,那么client/server就是model,而client与server之间的交互方式则是pattern,比如RPC/message、同步/异步,比如用滑动窗口来组织请求与应答等等。当然,这和系统的尺度有关。如果你zoom in到服务端,此时的model可能就是模块的组织关系,而pattern则是调用方式,比如用function call还是event等。


具体到领域上,我觉得主要有三类架构问题(不包括硬件):

  • 软件架构,其典型用例是企业级软件,通过合理的功能抽象,提取出公共组件和通用流程,进行最大化的功能复用 (reuse)。我称其为软件的可维护性问题。
  • 系统架构,其巅峰是OS,重点是解决资源的分配与复用 (multiplexing)。
  • 大规模分布式架构,主要应用在Cloud中,重点是大规模系统的资源整合、快速交付和运维问题。

那为什么架构会很泛又多变呢?这就牵扯到开发过程了。我们再引入一个方法论 (methodology) 的概念。传统软件工程那一套不必说了,互联网服务常用迭代式的开发方法 (现在又叫敏捷),这就是方法论。我个人的做法通常有三种:divide and conquer,modeling and iterate,back-of-envelop calculation and simulation,按问题的规模、难易程度、熟悉程度、项目的组织方式等等选择不同做法。

存储和分布式

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


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

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

服务架构和计算模型

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


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

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

架构师的三板斧

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



架构师三板斧内容如下:

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

林仕鼎认为在Cloud时代,架构可归结为三点:软件架构和开发过程支持快速迭代,系统架构与分布式架构支持大规模用户和数据分析,然后由数据分析驱动迭代。

在第五届云计算大会上,林仕鼎将出席,欢迎到现场与他交流。(综合/ 包研 审校/仲浩)

程序员的十大烦恼 兼顾性能和兼容体验:HTML5时代的浏览器全面测试 Lisp的本质 Amazon工作环境恶劣员工高流失率 为何却依然能持续成功和创新? 对几个软件开发传统观点的质疑和反驳 [实战分析] 编写高效的JavaScript程序 Twitter的系统编程 百度高通达成合作 为Android终端提供云服务 EasyHadoop技术沙龙在北京、广州两地齐发 CloudStack技术沙龙:committer李学辉及中航信分享 思科为什么愿意花12亿美元收购云计算网络初创公司Meraki? 谷歌有麻烦了!联邦贸易委员会正调查其搜索业务 当数据中心遭遇污水 微软新能源数据中心的诞生 2012vForum:更加注重开发者 腾讯赵伟:Hive在腾讯分布式数据仓库的实践 Apple将在2013年启动香港数据中心的建设 顶级域名扩张受阻:ICANN透露部分域名存争议 硅谷创业教父Paul Graham:如何获得创业好点子? GDC2012特别报道:中西方游戏开发思想在这里融合 应用示例和对象是编程的未来吗? 为什么2012年HTML5发展远未达预期 当程序不再工作时,程序员说 独立游戏开发者易犯的9大致命错误 “Do Not Track”的前世今生 《Warcraft是怎样炼成的(三)》:从Demo到游戏 无限强大的超级马里奥AI 以Google第二代数据库产品MegaStore为理论模式 探索HBase系统 传Google明年推Chrome OS触摸屏上网本 下载自己过去的Tweets?用户准备好了吗? 微软任命研究部门新副总裁 负责北京等实验室 欧朋首席标准官:HTML5将在2014年成熟 怎样动态增加表格? 有人解决了jive的中文问题吗?? 报表就是查询结果吗?用VB很难做吗?为什么这么多人讨论,请问设计报表难点是什么? 请问我的VC地ClassView无法打开,有什么快速的方法可以打开 一个关于tomcat中servlet的棘手问题..... 谁可以帮我提供一个PHP的站内目录管理程序! 请问c++中,函数重载和虚函数有什么区别,在实现多态性方面有差别吗? 现有一个小项目: 如何对多个按钮的BN_ClICK进行映射 SQLserver备份与恢复 Delphi中怎样声明一个类?怎样实现多态?如果要在类库的一个类中添加一个方法又怎么做? 然后怎样封装它?是不是封装以后维护就非常简单? 可 计算机网络--〉清华大学出版社,作者:Andrew S Tanenbaum哪里有电子版下载 把播放F4的时间上《我们程序员都是活雷锋》 随便问问:VC能不能调用Access中的Form,Report 用ADO在线程中打不开数据库,请帮忙 如何在VB中动态的加载Dll,并使用其加载的函数??? 高手们看过来 Oracle初学,兄弟们多帮忙了! 怎么打开一个.txt文件,然后一行一行读取? 请问大家知道一个局域网里的IP在因特网上如何表示的呢。 请问各位,如何在我的程序中用代码生成Access数据库? 神啊,救救我吧,我想要含笑半步喋=== 请教NT4。0下的IE2。0怎样升级到IE6。0或IE5。0? 我要在程序中重载CBitmap类的一个函数,请问如何做 为什么我在bcb的new中找不到multitier(就是多层)选项页 请问如何知道数据库中有哪些表存在?在线等待 向各位大侠求救中 这是数据库的缺点吗? Choice.asp?VehicleType=a+&VehicleColor=Red + 传不到Choice.asp 如何获取文件扩展名关联信息 急!应选择什么样的服务器? 请问哪里有关于DOS和BIOS的系统功能调用的e书籍下载?谢谢指点 想用bcb的DirectX编一个显示器(第二个)的独占程序!希望专家指点!也欢迎大家来交流! 你碰到过这样的问题吗? What is meaning "$1 $2 " in perl? 配置支持ISAPI调用的 apache 服务器 怎样判断内存有没有被释放? window2000的安装和IE的问题 像我這樣的Boy,是否可以找到GF??? Oracle816连接问题,急 小妹有一事相求,请问哪里有SQL Server 7.0 的虚拟光盘下载啊?急!!! 谢了! Delphi的枚举类型是怎么用的?如果它的元素是字符串,怎样判断它和某个字符串相等? 我以前是用Delphi的,现在新找了家公司,是用C++Builder的,请帮忙推荐本C++Builder的书,谢谢 请问如何实现多媒体数据库??? SQL Server 7.0作为后台,它主要完成什么功能??!!求救!!!!!!! 请教WebUIValidation.js'的作用 2000 server 的 IE 的非法操作?(如果是非技术的,也请斑竹手下留情。) 求助:开发一个小型数据库,使用那种哈希函数适宜 如何调用IE的缓存 如何获取文件扩展名关联信息 小妹有一事相求,请问哪里有SQL Server 7.0 的虚拟光盘下载啊?急!!! 谢了! 中世纪的西欧为什么与黑暗联系在一起? 怎样鉴别Na2CO3和K2CO3两瓶无色溶液?做好焰色反应的关键是什么? 实行人民代表大会制度有什么意义 在物理学中,物理量之间的关系可以用----------表示,也可以用--------表示高一物理之直线运动练习题 为什么要坚持人民代表大会制度? 中世纪西欧的城市以当时的中国城市最大的不同是什么? 物理学中为了比较运动的快慢引进了一个重要的物理量是什么 碳酸氢钠与过量、少量氢氧化钠【aq】反应的方程式, NaOH溶液中同时混有NaCl Na2SO4 Na2CO3怎么除去杂质?什么银?氢氧化银?有氢氧化银这种东西?为啥书上说没有 在阿司匹林的制备中为什么要使用醋酐来代替醋酸? 为什么中国要坚持人民代表大会制度 全国人民代表大会和人民代表大会制度在我国的政治生活中分别占什么地位?注意!是地位 醋豆是怎样做的?用什么材料做?有什么作用? 中国为什么要实行全国人民代表大会制度? 全国人民代表大会在我国的政治制度中具有怎样的地位 水杨醛和醋酐在碳酸钠作用下的反应方程式 KCl和NaCl的焰色反应是什么来区分他们 碳酸钠,碳酸氢钠,过氧化钠怎样分辨 为啥醋酐管制啊? 利用焰色反应区别下列物质:NaCL溶液、KCL溶液、稀盐酸 请问人民代表大会制度能使人民在国家政治生活中直接行使民主权利,这句话对吗? 黑暗的西欧中世纪 字数100~500 如何正确减速减档 过氧化钠,碳酸钠和碳酸氢钠的物理,化学性质和用途. 高中历史论文黑暗的西欧中世纪 1000字左右 如何减档减速 为什么说人民代表大会制度是我国的根本政治制度?法律硕士的题目 怎么区分碳酸钾和碳酸钠具体点 不要说的太麻烦 谢谢!~ 什么食物可以排汞和铅? 中世纪西欧城市兴起的背景,特点,如题. 汞有挥发性吗?它能怎样到人体内? 在初中范围内如何鉴别碳酸钾与碳酸钠不用焰色反应 人民代表大会制度是适应我国的国情的,这一国情指的是什么 汞有挥发性吗 当闭合开学S1时,L1是否短路怎么判断的?如何判断用电器短路(电流没有经过用电器)?感激不尽是闭合“开关” 结点?就是交点吗?对不起...正负极画反了...明天放学我再来给分吧 为什么人民代表大会制度适合我国国情的根本政治制度 质量和速度谁对物体动能影响大 ===初中物理问题===关于短路到底有哪几种情况下电路会短路呢?请列举一下,顺便稍微解释..当然简单的可以不用.还有就是该怎么区别电路是否短路呢? 等量的钠,氧化钠,过氧化钠,氢氧化钠,碳酸钠晶体露置在空气中,最后质量由小到大是怎样排列的? 物体运动速度越快,其分子动能越大 为什么不对 短路!虽然说短路是导线直接连接在电源的正极或负极,或者说是导线直接连在用电器上这个乙是错误的是短路疑问:那么第一个图算不算短路 与钠 氧化钠 过氧化钠 氢氧化钠 碳酸钠 碳酸氢钠 都能反应的东西是什么? 速度一定情况下为什么质量越大动能越大? 如何分辨串联电路中是否出现局部短路是指在电路图中如何看出是否有短路现象出现 NaOH 过氧化钠 氧化钠 Na2CO3-10H2O在空气中质量会减轻NaOH 过氧化钠 氧化钠 Na2CO3-10H2O在空气中质量会减轻的是? 为什么动能和质量和速度都有关如果一个物体相对另一个物体是静止的.那么则此物体动能为0.所谓的动能就是一个物体运动时所具备的能量...我们所生存的空间是一个虚无的东西?那么我们人 该说灯泡短路还是线路短路 氯化铵与硫酸钠的混合溶液如何结晶氯化铵?并且对温度有什么要求.谢谢! 怎样测试纯净水、花生油、酱油是导体还是绝缘体? 如何鉴别碳酸钾和碳酸钠溶液? 中世纪西欧城市的兴起有何历史意义?同志们不要懒哈!说全面一点啊!谢了! 说西欧中世纪黑暗这个想法全面吗? 我国改革开放30年来取得的成果,有目共睹.发展是会注意民主政治,最根本的是把坚持党的领导、人民当家做主和依法治国有机统一起来.结合所学政治生活说明我国为什么要坚持人民代表大会 人民代表大会制度、人民代表大会、全国人民代表大会三者的区别是什么? 黑暗的西欧中世纪形成历史、背景、原因 如何鉴别两种无色溶液碳酸钠溶液和碳酸钾溶液? 人民代表大会制度与全国人民代表大会制度的区别与联系急 求黑暗的西欧中世纪感悟(1500字)要感悟,不要内容~1500字,多点也没事~少的不要!就是有讲西欧中世纪的一些介绍的,那个就是内容,我不要的~我要的是感悟,对于黑暗的西欧中世纪的你的看法, 为什么要坚持和完善人民代表大会制度? 高中有机中关于溴乙烷+氢氧化钠水溶液反应CH3CH2Br + H2O = 氢氧化钠催化 = CH3CH2OH + HBrCH3CH2Br + NaOH = 水 = CH3CH2OH + NaBr这两个方程貌似都是溴乙烷与氢氧化钠共热的方程式·· 请问这两个方程有什
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘