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

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

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

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

MDCC 2015移动开发者大会 八大技术专场首批议题剧透 Apple TV指南:从零开始用Swift开发个tvOS应用 React Native、开源:MDCC平台与技术Android专场全揭秘! 相约MDCC 2015 首批免费展位破茧而出 MDCC 2015召开在即,平台与技术iOS专场大咖来了! 一个iOS开发者对tvOS SDK的初探 前Twitter iOS技术团队负责人:使用第三方库的四大准则 【SDCC讲师专访】巨杉数据库创始人兼CTO王涛:SequoiaDB为何要开源? 对话函数式编程语言Roy之父Brian Mckenna GitLab获400万美元A轮融资,GitLab 8.0将很快到来 【CTO讲堂】如何构建高可用和可伸缩的架构? 未来程序员会被机器取代吗? React Native实战(一):配置和起步 集聚MDCC 2015 免费展位第二波正式放出 【深入浅出Koa】入门知识,带你以现代化开发方式构建Web应用 升级到Node V4的七个理由 支持大量ES6特性 像写SQL一样编写Java数据应用 Swift 2.0实战:如何实现从非零下标遍历数组? 手把手教学:在iOS 8中使用Cocoapods 交互技术前沿与应用实战:MDCC虚拟现实专场议程揭晓 解密“攻城狮使用手册” 技术专家齐聚!MDCC 2015精彩日程全曝光 基于ActiveMQ的消息中间件系统 OneMM逻辑与物理架构设计详解 John Carmack大神亲操刀,为Oculus开发Netflix应用 React Native实战(二):Android的打包 独立游戏的成功秘诀:好设计才是王道 Swift 2.1的新变化 Apple TV实战:用TVML开发第一款tvOS应用 【SDCC讲师专访】阿里王晶昱:云时代的分布式数据库DRDS 硬件研发、嵌入式技术演进:MDCC IoT峰会日程揭晓 专访百度知道iOS团队负责人孙源:代码强迫症的死实践派 在线求解,很急,谢谢 程序是SQL Server2000+Delphi6的三层结构,打包问题,大侠请帮忙!(200) ¥¥火星人都不会的问题!巨难!欢迎各位! 这里有没有兄弟写过“万邦“图形采集(winbond)的应用程序没有 关于输入法 为什么ASP页面关闭后,session中的值还存在呢? 到底有没有官方出的VS6.0中文版?? 请问怎样给一个buffer中所有数据清0 test 数据采集问题,高手指教!!!急 为何我修改了打印纸尺寸但不起作用? 请问大家现在MCSE的题目变了没有啊? 共同学习 高人指点一下 DataGrid如何实现如下功能? 如何在图片框中按鼠标时知道当前鼠标在图片框中的坐标?谢谢! 【骂人】destroy(只想灌的爽)进来 散分~~~~前5名!谢~ 请教两个问题,专家请进! 请问在什么地方可以找的计算机方面的中英文对照翻译? Dll向主窗口发送自定义消息? 如何用MoveWindow()和SetWindowPos()来改变窗口大小(最好有个例子)! script参数怎样传输到applet中 怎样把jpg转换位BMP,在线急等 我要开放mssql的访问,在防火墙中是不是只要开放1433端口就可以了? 外面买的2000安装盘有的里面只有一个程序,叫什么ghost,好象运行它后就可以非常快的安装2000,请问这个ghost是用哪个软件做的? 系统初始化把所有数据库里面的内容删除,保留表的结构,这是怎么实现的? 如何将AnsiString转换成LPCWSTR? 我想请问一下,当panel显示时如果下面有<select >控件是,这个控件不被盖住,结果好象panel破了下一样,请问题怎么办!谢谢 如何把这个程序转换成java程序,我够菜的:( 高分请教如何实现本地网址过滤?就好像反黄软件,或公安的监控软件一样。 又有问题了 谁能贴一个关于TQUERY,TTABLE等控件的数据库应用的详细使用 我会jsp+servlet sql server完成小项目 找相关工作还咬什么? vs.net的问题,看看你遇到过没有? 答者有分!怎样用超链接调outlook发邮件? 怎样把不同机子上的vc++模块连到一块 关于自增自减运算符的问题-缘引老师的教案 在SCO上配置Informix遇到n多问题 急!寻解线性代数方程组的算法程序或者相关资料 假设在 MDI 程序中打开了3个文档,现在想将其中一个文档提到前面显示 php语法的一个小问题 MM,有个难题急需解决(关于 DateTimePicker控件的) 请看图,长得巨像梁朝伟的工地民工!! §§如何从Variant变量中取出有符号long型值? 关于vc++和visual prolog的接口问题 Exchange 2000 Lotus connector 怎样把<<石器时代>>游戏里的图片和动画弄出来??? 有关PHP使用相对路径访问ACCESS数据库的方法。 大版主,特别是阿信,进来看! 怎么把数字以16进制格式输出 谁给我些关于长跑的好句好段或作文啊,急啊!越多越好! 当面对死亡时,你是怎样的一种态度?这次的汶川大地震让我感触良多,人的生命是那么的脆落,我们随时都有可能像这样瞬间遭受到死亡的威胁,换位思考,如果是你,你会是以什么样的心态去面对 找个与拼音de mei(得美)发音相似的英语小弟穷就50分 大哥大姐大爷大妈 来帮帮忙咧 ,单词要有好的含义,单词可以是1个,也可以是多个 电离能大小的问题Mg的电离能为什么大于Al的,可以用钻穿效应解释么?还有,S的电离能为什么比P的稍小些? 一个人要如何面对死亡当病魔到来时,要用什么样的心情去对待它,又有几人能很好的去处理呢? 中文 王美朋Wang Mei peng 女的名字啊 冒几是什么意思 拉屎吃屎吃屎拉屎吃屎吃屎拉屎吃屎吃屎拉屎吃屎吃屎拉屎拉屎吃屎吃屎拉屎吃屎吃屎拉屎吃屎吃屎拉屎吃屎吃屎拉屎、、谁吃屎的、有赏 电子的电离能,电子的逸出能,有什么关系?电子的电离能,电子的逸出能,有什么区别?请不要重复无聊的定义.请直接剖析、评论.敬请江苏的教育工作者王佩L老师,请止步。 O和P的第一电离能如何比大小 阿尔法射线、贝塔射线能杀菌吗? 消化道中哪部分消化液最多 S,F,N,P第一电离能大小如何比较,最好能详细点 英语翻译Dolorosa,flumenosa,desolata,lacrimabilaDolorosa,flumenosa,plorata 一花一世界一叶一菩提的解释 颜色 英文怎么讲是颜色的这个词是 颜色 这个词 王安石《泊船瓜洲》的拼音 消化道中含消化液最多的器官,总量多少 骨骼肌细胞和肝细胞中表达的基因与细胞中所含的总的基因哪个多? 速求原图.快 英语翻译再增加一个:信任 Al..Na..F..Cl这四种元素第一电离能由小到大的排列顺序是? 三个100pf电容并联等效一个300pf电容不?主要是指在频率特性方面~谢谢 为什么磷的第一电离能比硫高呢? 在郊外偶然捡到一神器,这是什么枪上的?摔地上会炸吗? 我先感冒咳嗽 头发热会不会是手足口病呀 患者信息:11岁 一花一四季,一爱一人生,一花一世界,一叶一菩提 能和爱情联系起来么? 文中“被上帝咬过的苹果”是比喻“被蛀虫的烂苹果”是比喻求大神帮助 世界上有什么动物一生下来就不喝水?注意:是一生都不喝水的 一花一世界.一叶一追寻.一曲一场叹.一生爱一人.一世思一人.为他而活.为他而梦.为他而醉.在他怀中枯委有何妨? 人的手上都有什么细菌?如什么大肠杆菌什么的?这各种细菌分别会给人类带来哪些病害?各有多少呢?希望各位网友快赐教,快 生物与非生物的区别是什么?拜托各位大神 一叶一菩提,一草一木皆因果;一花一世界,一人一生皆为空. 求大神解答语文题:文中划线句的比喻把__比作 __,两者的相似点是 ______.这一比喻形象生动地阐述了作者的独特见解.(划线句:相交多年的密友,就如同沙漠中的古陶,摔碎一件就少一件,再也 用英语介绍学校,怎么办?听说你是学英语专业的, 英语作文 You're suppose to choose one of the three people to attend your New Year's Party.They'reLincoln,Michael Jackson,Einstein.Develop an article of about 150 words to explain the reason why you've chosen this particular person. 如何诊断细菌病害 涂装UV机是什么意思? 该怎样面对死亡?害怕亲人离去,害怕自己死后什么都不知道,虽然自己出生前也是一无所有,可正因为活过才知道生命的可贵,害怕一觉睡去再也醒不过来,仿佛自己没有来过这个世界? 番茄有几种细菌病害 问几句英语翻译 1.我认为学英语听说一样重要 2 今晚电视上放映什么节目?3 那些登山者救了自己 踩到狗屎意味着什么. 冒味是什么意思 点豆腐的卤水到哪里去买?化工品店里有没有? 怎么面对死亡?我爸爸得了癌症,我怎么面对爸爸将来某天的死亡?别复制,我不怕死 我不知道我爸爸是什么面对的 你们只要告诉我该什么面对就行了(我今年17岁) 冒出是什么意思 y粒子有质量吗 踩到狗屎意味着什么?急 冒称是什么意思 α粒子的质量是多少? 如何面对死亡? 冒是什么意思 为何使用氯化钙处理基因工程中的细胞的通透性而不能用氯化氢来处理,原因是什么?从高中必修二的教师参考书里可以找到说明但无详细的解释。 今天踩到狗屎了,这意味着什么?RT 多巴胺产生于脑内哪个部位? 怎么判断那个粒子质量大 怎样面对死亡?当年轻生命走到尽头! 第一电离能的大小比较?已知X、Y元素同周期,且电负性X>Y,则第一电离能:YAl,就出现了与之相反的结果) 一个氢原子发射一个光子,氢原子的运动方向如何?原子接收一个光子其运动方向...原子的运动方向与光子运动方向,会成一定角度吗,请高手给与指教. 新年踩到狗屎意味着什么新年年头我踩到狗屎意味着什么 吉议会否决吉加金矿开采合作备忘录 股马达加斯加大选民众盼稳定 中国应邀派逾2.8万人白宫网站请愿 “杀光中国联合国继续准备销毁叙化武 瑞典提供运默克尔打破沉默亲评美监听事件:朋友间韩军警在韩日争议岛演练登陆 旨在抵御贝卢斯科尼女友否认系同性恋 索赔千万伊核问题引美以分歧 美同意合法保留以俄外交官被指在美国招募间谍 美联邦调沙特表态将与美国保持距离 美官员:这奥巴马敦促国会通过移民改革法 称有利日媒:五艘中国军舰穿过日本冲绳本岛与韩媒称韩高官暗示将引进美国“萨德”反奥斯卡影后赞与查尔斯王子跳舞比“亲热韩国法院:研究低估三星芯片厂对人体的马达加斯加总统选举开始 或有望解决该美研究称已婚者比单身汉更长寿 但容易男子用数百公斤大南瓜造船 划水距离创韩国前科技官员称福岛土壤污染可通过微俄外交官被指在美国招募间谍 美联邦调外交部:中印重申双方不将其军事能力用习近平:正确把握改革大局 自觉服从服张德江会见日本日中友好议员联盟代表团安徽省教育厅外事处处长坠亡 排除他杀统一思想提升理念 更好地肩负起社会主新行政诉讼法实施首日立案数量翻番英国大选7日举行 抓住中国机遇成各政天津自贸区:加速开放助推国家战略与地王毅与新西兰外长举行会谈增强自信保持定力 坚定不移走中国特色北京警方打掉一敲诈勒索犯罪团伙北京警方打掉一敲诈勒索犯罪团伙蔡名照会见联合国副秘书长、艾滋病规划《国家自然科学基金资助项目资金管理办增强自信保持定力 坚定不移走中国特色世界为什么必须纪念二战胜利统一思想提升理念 更好地肩负起社会主中国外交部第十二届蓝厅论坛举行 讨论贾静雯修杰楷有爱的结晶 携梧桐妹共拍佛山市政协副主席廖东明被查(简历/图被打女司机父亲:女儿承受极大压力 连中国公司积极参与休斯敦国际海洋油气技
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘