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

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

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时代,架构可归结为三点:软件架构和开发过程支持快速迭代,系统架构与分布式架构支持大规模用户和数据分析,然后由数据分析驱动迭代。

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

在Delphi的DBGrid中插入其他可视组件 在Delphi的Socket编程中如何从服务器向指定的客户机发送信息? 在Delphi动态生成定义数据库 在Delphi中处理数据库日期型字段的显示与输入 在Delphi中简单实现多重查询 在Delphi中建立和使用别名 在DELPHI中使用ADO对象存取ODBC数据库 在Delphi中使用DBF数据 在Delphi中随意控制DBGrid 每一行的颜色 在Delphi中自动检测、建立数据库别名和表格 在存储过程中使用use database-Delphi资料 在一个Dbgrid中显示多数据库-Delphi资料 在运行期创建表-Delphi资料 怎样把可以使用的表名输出到一个选择框?-Delphi资料 怎样发布基于Microsoft SQL Server的程序-Delphi资料 怎样解决打开一个DBF表时的Index not found..错误-Delphi资料 怎样向SQL Server插入带有Image字段的记录-Delphi资料 怎样在Paradox表中加密码?-Delphi资料 自动Login数据库-Delphi资料 自动检测、建立数据库别名和表格-Delphi资料 自动注册Paradox-Delphi资料 Delphi 4增訂的Object Pascal Delphi 5 Enterprise版10大特点 Delphi 插件创建、调试与使用应用程序扩展 Delphi 程序制作要点 Delphi 中面向对象编程之我见 Delphi”程序级触发器”功能的实现 Delphi4.0系统提示信息的汉化 Delphi5优化 Delphi编程技巧十则 Delphi程序制作要点 &&&&&&小弟现在初学COM,有谁留下QQ,帮助小弟,小弟感激不尽。 十万火急 我想开发一些牌类和棋类的游戏,有什么外国的网站可以学到,和开放源代码。知道的请帮帮忙(100) 万分感谢 怎样配置运行.exe的CGI程序 请教,如何改变 TreeView的背景颜色? 一个算法问题 誰能介紹廣州几個做掌上電腦開發的牛一點的公司? 如何在客户端的Web Service请求中加入SOAP标头 Fortran中怎样实现类似 全局变量的实现方法。 关于无边框窗口 几个名词的英汉翻译,这样翻译对吗? JBuilder6个人版的注册号谁知道?急用!!! 高分求教 哪儿可以下载InstallShield 6.22(在线等待,急!!!!) 我要installshield 怎样backupwin98的注册表? ****************如何生成安装文件************* 求教这样一个角度算法 征求好网址!大家把收藏夹里的好网址贡献出来吧! 中国队惨了!!!!!!!贝克汉姆已加入土耳其队! 《Applied Cryptography》,这是本什么书? 一个12位的整型,用unsigned long可以容纳吗? Perl以后会变成什么样呢? 谁能帮我!错手把逻辑盘的东西删了,能不能恢复。 下面添加用户的代码能运行吗,我怎么运行不起来,50feng VC文本编辑器没有参数提示 在Delphi中如何使图像淡入淡出? 猜猜中国今天输几个,本人大胆预测10-0 为什么我这里总是405错误呀?Method Not Allowed……The requested method POST is not allowed ADO技术问题! HOOK还是不行! 在ocx中如何使用一个ActiveX,不算使用IMPORT,还有没有别的方法呢?(大送100分) API中的SETTEXTCOLOR函数! 部署实体bean的问题(jbuilder6+weblogic6)??? 怎么样自动增加一列在select UserID,AreaCode from table 。在先等候,先答来的100 谁能帮我!错手把逻辑盘的东西删了,能不能恢复。 调查:各位都用哪里的主页空间? 猜猜中国今天输几个,本人大胆预测10-0 我不喜欢南美球队,球风太差,犯规隐蔽,演戏一流!!! 请问这段代码哪里有误?我用的asp+access。急急急急急急急急急急急急急急! 我想做一个类,提供ONMOUSERMOVE事件给用户接口,怎么做,在线等候? 请问关于软件架构,框架和构架的问题 看看别人吧!!!再看看我们!!! 怎么样自动增加一列在select UserID,AreaCode from table 。在先等候,先答来的100 全民健身 有谁使用过水晶报表? 求线段作另一线段的垂足 请问哪里有Delphi 6的控件下载? 怎么调用api画多边形? 求线段作另一线段的垂足 求离子交换柱层析法和拥有分子筛作用的(叫什么忘了)的两个实验报告或操作详细说明一个是离子交换柱层析法另一个分子筛作用的(叫什么忘了) 氯化亚铁和氢氧化钠反应会生成氢氧化亚铁吗?氢氧化亚铁好像是会氧化的吧……似乎还会炸掉……冷死 我只知道TS DuPont 不知道“都彭朗声”是什么意思 凝胶过滤层析中和凝胶电泳中的分子筛效应有什么不同?为什么?要求比较标准的答案,这是王镜岩版生物化学的一道课后习题. 氢氧化亚铁与氢氧化钠反应方程式 硫酸的化学符号是什么 用托盘天平能称出11.7克食盐吗? 油脂是多种高级脂肪酸和甘油酯的混和物 是混合物吗?可以这么说吗? 细胞膜的选择透过性表现在主动运输.为什么那协助运输呢? 丙二醇甲醚和丁醚有什么区别 1+1的硫酸怎么配的? 细胞膜的主动运输遵循选择透过性吗! 一缩二丙二醇甲基醚与二丙二醇甲醚是同一种物质吗? 1%硫酸怎么配 输液时为什么不能输白开水和蒸馏水 乙基丙烯基乙炔的结构式? 酱油为什么不结冰 临床上给患者输液时,为什么不能用蒸馏水? 2,4-辛二炔 2,2,5,5-四甲基-3-乙炔 异丙烯基 结构式 酱油为什么不会结冰? 化学---硫酸,硝酸在某10ML的混合液中,HNO3和H2SO4的物质的量浓度分别是:0.4mol/l,0.1mol/l.向该混合溶液中加入1.92g铜粉,加热,待充分反应后,所得溶液中的Cu²+的物质的量浓度(mol/l)是 ( )A.0.15 什么是异丙烯,它的结构式是什么? 侯氏制碱法制的纯碱中少量的氯化钠,为测定该纯碱样品中碳酸钠的纯度,现将6克纯碱样品加入到50克稀盐酸中,恰好反应后得到溶液的质量为51.8克,求产生二氧化碳的质量 硫酸还有硝酸哪个强, 异丙醇和二丙二醇丁醚能否共沸,如果行的话共沸点多少.什么比例最佳? 无机物可以合成有机物吗? 氨 硝酸 硫酸下列反应体现了什么性质?A脱水性 B强酸性 C 二元酸 D氧化性 E吸水性1.将胆矾放入装有浓硫酸的干燥器中( )2.NAOH与H2SO4反应,可以生成NA2SO4和NAHSO4这两种盐( )3.在烧杯中放入蔗 2-丙醇怎么生成醚 方程式 氢氧化亚铁和氢氧化钠反应变为什么,最后和盐酸反应变为什么颜色的物质 一个化学问题(关于硝酸和硫酸)说硝酸氧化亚硫酸成硫酸,原理是什么呢?即将硫酸钠 亚硫酸钠 硝酸钠 放入硫酸中会发生什么反应?晕,还有下面那个问题啊`` 在京东上买的杯子,盖子的材料是PPH(丙二醇苯醚,分子式 C 6 H 5 C 3 H 7 O 2 ),味道比较大,问有毒么PPH有那么大的味么? 血型是由糖蛋白决定的还是由核酸决定的? 我们已经用完热水了.用英语翻译 环丙烷和丙烯是同分异构体吗 丙烯分子中三个碳原子在同一条直线上吗 血型到底与什么有关?糖脂还是糖蛋白还是其他? 丙烯的同分异构体类型有哪些 丙烯中的甲基为什么会把与其相连的有双键的碳原子的电子推向另一个双键碳原子? 膜骨架上血型糖蛋白与哪个蛋白相连 高锰酸钾加热制氧化学反应方程式 细胞膜之所以具有选择透过性是因为细胞膜上的哪种物质? 杜邦分析法有实际作用吗? 高锰酸钾制取氢气化学方程式 蒸馏水有不干净的东西吗 杜邦分析法的原理 甲基绿吡罗红试剂如何配制? 电路板用到5V和12V的电压源,我把这两部分分在了两块板子上,中间用杜邦线连接传输信号但是两个电压源的地信号不是同一个,导致前边的信号传不到后边来,求怎么解决?有人说用飞线,就是用 杜邦分析法怎么用啊?那些公式都怎么分解? 高一生物中甲基绿吡罗红染色剂配方须掌握吗 怎样制取纯净的氢氧化亚铁? 验证木炭可被浓硫酸氧化成CO2,的装置 分子筛填充量是怎么计算的? 氢氧化亚铁的制备实验室如何制取 塑料的饭盒与不锈钢的差别,塑料就有什么不好的? 吡罗红和甲基绿染液如何配制? 制取氢氧化亚铁的过程中,如何制得氢氧化亚铁沉淀(至少能存在较长时间)提示:如何减少氧气对生成的氢氧化亚铁的氧化 浓硫酸和浓硝酸在加热条件下能将木炭氧化成为二氧化碳对吗? 凝胶过滤层析中和凝胶电泳中的分子筛效应有什么不同,请尽量全面 蒸馏水能不能喝? 伏安法测电阻多次测量取平均值的目的?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘