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

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

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

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

夜行、睡眠与健康:CES 2015十款酷炫的可穿戴产品 Java 9中新的货币API 唯“简”不破,Apple Watch App的设计之道 Google Glass从X labs“毕业”,更换项目负责人 不进化,则消亡——互联网时代企业管理的十项实践 RedMonk 2015年1月编程语言排行榜:进击的Swift! 微信开放JS SDK,这场web巨变意味着什么? 盘点一些iOS开发技巧:Swift和Objective-C 2014年,那些“颜值”爆表的UI动画 《近匠》爱加密:谁说iOS应用不需要保护? SwiftColorArt:开源易用的Swift图片类库 人气爆棚 干货满满 中国电信天翼开放平台开放日圆满落幕 必须Mark!43个优秀的Swift开源项目推荐 治拖延、疗懒癌!安利12款提高工作效率工具 把ES6带进Node社区 Io.js 1.0.0正式发布 Java 2014:10个最热门、最具争议性的话题 回顾:2014年最流行前端开发框架对比评测 实例讲解SQL注入攻击 调试大规模服务器集群的五大策略 .NET编译平台Rosly将迁移到Github Wasai虚拟现实头盔与体验馆发布:虚拟现实的线下经济 订票系统不再瘫痪 阿里云确认与12306合作 Apple前工程师Warren Moore:Swift中Metal使用初体验 手把手教学:详解Swift中的iOS设计模式 见微知著,那些触动人心的应用细节设计(一) 设计优秀API七大要诀 需求 细节 BI项目成功的五大要素 BI项目成功的五大要诀 最受程序员欢迎的公司榜单发布:2015 IT人才招聘趋势分析 Swift中的指针操作及使用 Android性能优化典范 自定义对话框 求解:怎样使用数据窗口能多页预览?有这项功能吗? 域的DNS有问题! 出现out of range 只是偶尔出现并不是经常出现?我的配置在里面 想问问大家关于微软认证的看法。 我有光驱上哪找 请问斑竹:c#中有类似exit(0)之类的函数吗, 请问谁有将可执行文件中的资源提取出来保存在新的rc文件中的源代码? PB数据库的连接分类解决问题? 数据窗口鼠标焦点为什么会遗失? 怎么用xp安装盘升级两千或酒吧下的wmp? 怎样得知ListBox中已经有多少项内容了? 看看大家关于微软认证的看法(只能给77,全给了) OFFICE XP以及金山词霸的漂亮菜单如何实现的??有源代码可以参考吗?? 谁能说一下"快手"的程序是怎么工作的啊 这个问题我都问了三遍了,还是没人帮忙回答一下? 这样怎么能不行了?怪了. ~散分哦~,哈~ 可怜的准初级程序员(水平的没过,竟然拿了个资历格的) 各位兄弟请了!一个远程接入问题邀请教各位~! 这个问题好象不难 如何在WIN NT4中安装、使用IIS4????? no pains,no gains. work for the beautiful girl here and for our beautiful life 各位大侠: 我是新手,有人能给我讲讲xmlspy吗?? win.ini与SYSTEM.INI的区别? Oracle 的产品真的很烂吗?参与者都有分! 现需开发一套对多个数据库(不是一个数据库中的多个表)进行操作的程序,使用BDE,请大家提建议 CPen的问题! 各位请教:我要通过电话线做多路远程接入但我不想用路由器 请问,使用ado控件的程序,考到其他机器上,除了数据库和应用程序之外,还需要拷贝什么文件? 部分技术超过OFFICE 国产软件挑战微软 关于子窗口 请教:uninstall onflow.exe和wcmdmgr.exe是什么软件? DataSet如何定位记录. lius_lzc(小刘)你好。请来这 高程成绩 不是高手不要进来!!!!!!!!!!!!! 那位大侠能说一下快手的原理啊,有源码最好???????????????? 各位有什么网站可在线看片或下载东西,网速要非常快,如果有请与大家分享,如果没有请勿进,免得大家试半天的网址,谢谢合作 实模式和保护模式的区别? 一个只问小湖的问题 ASP 中的 Response.End 在JSP中怎么写??? 有关多媒体数据库的问题 笨鱼笨鱼,好象你的故事大家都知道了,贴张相片出来给大家看看,大家说好不好啊?? 请教关于第三方控件的问题,谢谢 软件工程师们,你们开发软件的时候听什么音乐呀? 各位大侠,请帮助一下初学者 CPen的问题!!!!!!! 我在泡脚呢,给大家发分,打听一下你们泡脚的时候都干什么? 关于新的论坛数据的提问 在Delphi如何存取SQLServer DataBase表里的图像记录?(100分) 橡胶的硬度与温度的关系是怎样的,有没有曲线关系图 外观上人造石和石英石有什么不同?如果是说2者的成分、优缺点、工艺之类的就请免再复制粘贴了假如有2块同样大小的正方形样本,人造石和石英石有什么不同?肉眼能区分吗?怎么区分? 野外求生刀的硬度为多少最好? 材料的韧性能不能衡量断裂时所需的能量的大小? 钢材的伸长率是反映材料( )的性能指标?A、承载率B、弹性变形能力C、塑形变形能力D、韧性 不锈钢弹簧线的硬度是多少?不锈钢线材有没有很硬的,我之前做一个样品用316不锈钢线做,远远达不到客户的样品的力度,请问有没有比这些硬很多的不锈钢材料?听说广东省东莞长安宵边大道 阻燃剂的多少对橡胶性能有什么影响?硬度、耐高温性能等?硅橡胶的使用温度为—40℃﹋+220℃ ,但增加阻燃剂后,在高温烘烤32小时后橡胶变硬变脆,请问是什么原因?怎样获得阻燃等级为0级,绝 黄铜选用何种硬度试验法为宜 有什么方法可以令到很硬的不锈钢可以变软,因为我想把不锈钢屈甩不同的形状 什么复合材料在0.2MM的厚度下既有韧性又有强度 怎么区别石英石和人造石 不锈钢固溶时效会使不锈钢变硬还是变软?比如17-4(630)不锈钢 材料断裂韧性随板材厚度的增加怎么变化 如何自做一个硬度测试仪.方法.和工作原理 石膏里加入什么可以增加硬度和韧性我要用石膏做大门前的狮子像,加入什么可以增加韧性,硬度?那样的雕塑的寿命大概多久? 在保持质量不变时加速度与物体受力间关系的实验中,小车质量M和砝码质量m分别选取下列四组值. A.M在保持质量不变时加速度与物体受力间关系的实验中,小车质量M和砝码质量m分别选取下 钢材随着含碳量的增加,其伸长率___,断面收缩率___,冲击韧性___,冷弯性能___,硬度___,可焊性___. 如何增加涂料的硬度和韧性 高分求“加速度与力的关系”“加速度与质量的关系”实验数据!“加速度与力的关系”要有盘中砝码质量,F大小,相邻点间位移;“加速度与质量的关系”要有车中砝码质量,m大小,相邻点间位 冷弯性能属于钢材力学性能还是工艺性能怎么两种答案呐? 怎样增加石膏产品的硬度和韧性? 在探究加速度与力 质量的关系实验中 为了探究加速度与力的关系 应保持什么不变? 怎样区分人造石和石英石? 下雨前水泥地很潮湿,是为什么如题.有谁知道是什么原理吗? 什么称之为布氏硬度测试法? 在“探究加速度与物体质量、物体受力的关系”实验中的问题在“探究加速度与物体质量、物体受力的关系”实验中,为了减小系统误差,应使砝码盘和砝码的总质量远小于小车的质量.但为什 冲击韧性 金属材料的硬度试验实验总结? 在做“探究加速度与力、质量的关系”的实验时,计算出各纸带的加速度后,将测  得的反映加速度a和力F的关系的有关资料记录在表1中.将测得的反映加速度a和质  量M关系的资料记录在 301不锈钢带的软态,1/2硬度,3/4硬度, 测镁合金的硬度能用布氏硬度?我们是用维氏显微硬度测的镁合金的硬度,硬度值在80-150HV之间.是不是不能用布氏硬度测?为什么不能布氏硬度?有同学说,镁合金的硬度较低,用布氏硬度来测量的 (淡水情况下)用珊瑚沙调节鱼缸水硬度.为什么调不了太高硬度.如何能有效的提高水的硬度我养天空蓝虾.前一段连续前后大概死了7-8个.都是脱壳死的.(刚才侧了下.有点提高了硬度.) 301EH不锈钢带的硬度和具体材质是多少 ? 生铁和钢哪个韧性好到底是哪个呀!我要疯了!] 水硬度高怎么办 橱柜台面到底是石英石的好,还是水晶石或者人造石的好 ,能说出居家使用这几种的优缺点吗 硬度9h是什么意思 304不锈钢离子渗氮后如何测硬度我们的式样是圆柱体,要求从最外层的渗氮层逐渐向基体内部测量其硬度,并画出硬度变化的曲线图. 不锈钢sus301材料硬度高么 手机膜9h硬度影响灵敏度吗? 常用硬度试验方法分类 橱柜台面哪种材质好?石英石还是人造石?人造石市面上分了很多种,该怎么分辨呢?装修就差最后这一步了,买橱柜却给人出了难题,想买个性价比高点的可真是难啊!石英石去咨询了下,价格挺昂 邵氏硬度计|里氏硬度计|洛氏硬度计|布氏硬度计 这几种有什么区别? 硬度试验方法有哪几种 橱柜台面什么的好啊/人造石的还是石英石的啊 正确使用里氏硬度计测量零件的布氏或洛氏硬度 > 影响钢材冲击韧性因素有.. 亚克力人造石台面橱柜,石英石台面橱柜,人造石台面橱柜的区别,及各自优缺点 世界硬度最强的物质比如拿两块不同物质做成的棍子或剑或刀 对砍 哪种物质是最不易断不易碎的 焊接时怎样提高钢的冲击韧性 橱柜的台面,如果选用人造石里面的石英石,人造石台面400元一米和100多元一米的质量差多少? 布氏硬度试验法适合于成品的硬度测量?这句话是对的还是错的 眼看怎么区别石英石和人造石 硬度58hrc什么意思 有没有强度也高,韧度也高的材料?是什么? 石英石和人造石的区别 304不锈钢2B分几种硬度2B代表的是雾面,那么SUS304-2B有没有分为1/4H,1/2H,3/4H,H四种硬度?我记得2B好像是不分硬度的,2B本来就只有一种硬度,而且较软HV170左右,怎么我们的材料供应商说有分硬度呢? 为什么对于一般材料来说,其强度越高其韧性越差?对于金属材料和非金属材料都适用吗? 怎样区分人造石,岗石,石英石,大理石 30元的野外求生刀硬度到56可信吗?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn