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

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

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

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

48小时脑力激荡 中美青年创客大赛英特尔北京选拔赛 “微应用+大平台”推动企业软件走向碎片化 浅谈Hive vs. HBase 十款最新的JavaScript开发工具 JavaScript Promise启示录 百度携多位安全专家深入探讨安全人才快速培养机制 卡饭技术代表严佳:引入安全人才,企业应遵循S.L.E.E.P、S.T.A.R法则 百度资深研发工程师周晓波:平台+数据 百度培养安全人才的重要思路 代码审查是如何抹杀开发者积极性的? 事件分析平台EventHub开源 云计算智能交通行业论坛:李德毅院士谈智能车 多家知名企业分享应用实践 我伙呆!CRM生死对手微软及Salesforce或将联手 阿里巴巴曾鸣:数据时代来临 OpenStack企业应用之路技术培训:虚机迁移、HA、VDI、跨Hypervisor管理 云计算技术背后的那些天才程序员:KVM之父Avi Kivity 中国气象局联手阿里云:海量气象数据变“活数据” 浪潮首度公布“I2I计划” 全面接盘IBM X业务 一周消息树:Surface Pro 3想替代笔记本太难,微软正逐渐迷失方向 就是要赚钱!NativeX推自定义原生广告交易 继智能手机后的下一个战场:智能家居 鏖战云端——亚马逊的生存法则 如何保住公司的人才:创造良好的学习氛围 主宰全球的10大算法 专访Google数据科学家彭晨:大数据成为潮流走近各行各业! 强横Metal技术来袭,能否取代OpenGL? Swift横空出世,Xcode 6 Beta有了哪些新变化? 《近匠》GameMei:简单易用、快速开发商用游戏 Gartner:2014年一季度浪潮服务器出货量中国第一 【技术博客推荐】张安站:大数据时代下的商业存储 Amazon继续登顶IaaS魔力象限,榜眼是微软而非Google 友盟Q1移动互联网报告:解读三线城市移动互联网用户 c+vc+vb+java+delphi+>>>>=工作? 怎么得分呀? dos下的Tcp/Ip协议应用 白痴,笨蛋,神经病之差异(转贴) 测试(大家都不许进来,只是测试,注意,只是测试) 请大家说一下哪个代理注册的网站收费比较底,而且服务又比较好的,谢谢! 在asp中如何实现记录集与编辑框、table表等的数据绑定,给个思路也行。着急呀 [-------大虾帮忙啊--------] bcb中缺少的帮助文件能否再添加? 在哪里可以找到关于sybase的资料 哪位仁兄知道如何打包delphi开发的sybase客户程序,最高78分奉送 一个关于OnDraw()的重绘问题,急急急急急急急! 新手的问题! dll调问题???VB调用VC++的DLL需要返回值时,DLL如何定义?VB调用函数如何定义??? 各位大虾 谁能提供视频采集卡的原代码,必须要CB的,300分 在堆(heap)上与在栈(stack)上建立的对象有什么区别? 一个问题,在做元件时怎样建立TdateTimePicker 给大家看看我弟弟给我的信 求助,标题栏为“The police are investigating the robbery-"的是什么程序? 谁能将.CPP文件的代码翻译成DELPHI语言?? 有关于FLASH5.0的问题!!!请各位大吓指点! 一个问题,怎样在PC:PageControl上增加TabSheet1,TabSheet1,TabSheet1…. 标题栏为“The police are investigating the robbery-"的是什么程序? 一个弱弱的问题 一个问题,建立的 FB: TBevel没显示,好象根本没建立一样。 如何在 MDI CLIENT 中添加快捷方式??谢谢!! 55分,如何映射控件中子控件的消息? 如何选择书 关于文献数据库的一个问题-如何把一个字段和一个文件关联起来? 所有喜欢到水园来逛逛,但是从不回帖子或很少回帖子的人进来签到~~~~ 谁来救救我呀,我好惨呀。。。。 如何通过VC编程,随时关闭网络端口 诚寻对嵌入式linux感兴趣的网友 今天临走前,再灌一桶酒! 急!!!哪里可以下载到制作工具栏时用到的位图呀? 太原的在哪能买到程序员杂志 我的qq:10120129 谁找我??? xml 高手帮帮我,为什么我下面的文件,在IE5.0中什么也没有?? 请问高手:在uml类图中如何用关系表示一个实体类和一个接口间的关系。 Cathy进来~~ 请问高手们一个Delphi的一个应该是比较底层的东西。 mimi大酒店正式開業﹗先進來的有分啊﹗ 哪个高手完整地讲讲OpenWith菜单项的调用方法和函数等 关于非模态对话框中使用UpdateData(FALSE)函数的问题,朋友,帮个忙好吗? “记事本”小问题,大逻辑.大虾们,照顾照顾小弟呗. Linux下配置ISDN--期待所有的Linux高手到来?? 我是女生,哈哈 急,怎么样在打印表格时使较长的字段分两行显示,并字体变小。 在VB里做的用户控件为什么在VC不能调用啊! 不服不行(真没辙了)[不够可在加200分] 观察下列数,-1,-1/3,1/4,-1/5,1/6,…….依照这样的规律,第2013个数是_____,如果这一列数无限排列下去,越来越接近_______. 45分等于多少时?大神们帮帮忙 所有自然数相乘等于几? 有一组数:2,-3,2,-3,2,-3,2,-3,...,根据这个规律,那么第2013个数是?初中数学问题 26小时等于多少分钟大神们帮帮忙 所有自然数相乘等于几?3Q所有自然数相乘等于几?(注:这是一个准确的数!不是什么X/N/Y 之类的!) 找规律:1,-1/2,1/3,-1/4,1/5,-1/6,.,猜想第2 010个数是 多少,如果这一列数无限排列下去,与什么 分别等于多少 一个自然数它本身的各个数位上的数字之和与17相乘等于这个数,这个自然数是多少?我希望你们能给我一个解答的过程,应该怎样去说,才是有理有条的.因为那个结果是不难知道 有一列数为:—1,1/2,—1/3,1/4,1/5,1/6,…,找规律得到第2013个数是______. 4个分别等于多少 哪两个自然数相乘等于13? 7、31、37、82、( )、49 是什么 中国的面积相当于几个韩国?相当于几个英国?相当于几个日本?. 求数学大神来算下这个的面积.. 求左边的面积(包括三角) 和右边的面积 -.- 1.2.4.7.11( )( )( 韩国有中国好吗?大神们帮帮忙 这个时间还有数学大神吗 找规律填数的第2题 1、1、2、3、5_、_、_ 中国的一元相当于韩国的几元 1.已知x为整数,且2/(x+3)+2/(3-x)+2x+18/x²-9为整数,求所有符合条件的x的值2.解方程2(x²+1/x²)-3(x+1/x)-1=03.试证:对任意的正整数n,有1/1*2*3 + 1/2*3*4 + ...+1/n(n+1)(n+2) 找规律填数.求解答! 日本韩国跟中国的关系怎么样? 第9题选什么求数学大神 找规律填数, 韩国和中国现在哪个更发达些谢谢了,大神帮忙啊 第9题,数学大神来,快 找规律,填数字,求解答 10LB多少公斤啊?那就是不到5公斤喽? 第二题,求数学大神解答 1,1,2,3,5,8,( ),21,( ),55. 在三角形ABC中,角A,B,C的对边为a,b,c,点(a,b)在直线x(sinA-sinB)+ysinB=csinC上若a^2+b^2=6(a+b)-18,求三角形ABC的面积 求数学大神,第9题,只要正确,定当采纳. 找规律:15,20,12,25,9,30,( ),35,3,( ).怎么做? 一道关于数学三角函数的题,哪位数学好的朋友帮哈忙,谢 证明sin(x+y)-sinx=2cos((2x+y)\2)sin(y\2)有点急,喜欢数学的朋友来帮哈忙哈,对不起,我再查查 第十题. 1,4,9,20,35找规律能讲下为什么吗?有没有简单一点的方法呀? 关于三角函数的数学 如图在三角形abc中角bac等于70度,点d,e分别在ab ac上,且de平行bc,点f在de上,且bd=df ce=ef 则角baf等于 有一列数,按一定的规律排列成:-2,4,-8,16,...,其中某三个相邻的数的和为-384,求这三个数各为多少. 找规律 4 2 2 3 6求下一位 有关三角函数的题,求数学大神解答!具体如图:能详细解答吗? 有一列数,按一定规律排列成:-1,2,-4,8,-16,32,-64…,其中有三个相邻的和为1224,这种说法对吗?请说明理由 找规律:1,2,4,4(),8,64 A 16 B 8 C 12 D 6A 16 B 8 C 12 D 6 选一个填空 数学三角函数.算的好难过啊. 有一列数,按一定规律排列成1,-2,4 ,-8,16,-32,64……其中3个相邻数的和是-1536,这三个数是多少? 400斤等于多少升油 关于爱因斯坦的数学游戏,随便做运算可以知道起始数字的那个,请问一下怎么解的大科学家爱因斯坦小时候就特别聪明,有一次同学们在一起玩,他说:“我们做一个数学游戏怎么样?”同学们 有一列数,按一定的规律成1,-2,4,-8,16,-32,64,``````,其中某三个相邻数的和为1536,这三个数各是多少? 2吨400克等于多少克 求爱因斯坦数学题.有一条长阶,若每步跨2阶,则最后剩1阶;若每步跨阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨7阶,则最后正好一阶不剩.答;#include int main(void){int steps = 29,i = 1;while ( steps 有一列数,按一定的规律成-1,2,-4,8,-16,32,-64,``````,其中某三个相邻数的和为1536,这三个数各是多少? 400克等于多少千克? "爱因斯坦的数学游戏"大科学家爱因斯坦小时候就特别聪明,有一次同学们在一起玩,他说:“我们做一个数学游戏怎么样?”同学们说:爱因斯坦说:“你们随便想一个数,然后做一些运算,我就 观察下面一列数,根据规律填空:-1,1/2,-1/3,1/4,-1/5,1/6,···第2012个数是 400千克等于多少吨 解上来你就号称第二爱因斯坦5乘5的方格从1开始依次排列到24.1旁边的X不用写~就还剩下24个格子!两数之间不能不能跳跃!必须是两数紧靠着!也不能倾斜着写. 试题 用计算器探索以下按一定规律排列的一组数:1,根号2,-根号3,2,根号5,-根号6,根号7……,如果从1开始依此连续选取若干个数,使它们的和大于5,那么至少要选( )个数. 2400g等于多少斤 爱因斯坦 数学只有1分.据说德国的大学1分是满分.那到底爱因斯坦的1分是最高分还是最低分?从前,看故事,说爱因斯坦小时候数学不好,考试只有1分,但是努力学习后成为了最伟大的物理学家,当
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn