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

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

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

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

一组VB应用技巧 隐藏和显示任务栏-VB资料 应用 WSH 读写注册表和建立快捷方式 -VB资料 VB用 IIF 和 SWITCH 以精减代码 VB用BASIC语言设计Windows风格的用户接口 VB用Form 的 Mouse_Move事件来检查鼠标是否在窗口内: VB用RND()函数加密 VB用SendKeys来捉屏 用VB4.0制作软件封面 用VB5 对Windows 95 任务栏提示区进行编程 用VB5读写注册表实例 用VB5开发商品软件的经验谈 用VB5设计多功能计时器 用VB5制作文字上卷效果 用VB6.0实现打字效果 用VB编写DirectX7.0游戏(上) 用VB创建Excel报表 用VB读取和控制Windows的中文输入法 用VB将命令行软件Windows化 用VB进行移位操作 用VB开发CAI软件的小经验 用VB开发分布式应用 用VB切换三个特殊键 用VB生成EXE文件后,如何在后面加上参数?这个参数怎样传给VB 用VB实现动态显示操作进度程序 用VB实现双向循环链表 用VB实现用户登录密码的修改 用VB与MS-Draw开发通用作图软件 用VB制作TopMost类型窗口 用VB制作Windows风格安装盘 用Visual Basic 6创建基于MTS的商务组件 c语言的源代码!哪里有? 如何在正在运行的窗体中实例化一个控件。 关于向文件中写入表格的问题!谢谢! 爽,两天来在VC版得分2205分,现在偶的专家分有3406了,希望明天能达到5000,这样我就有一个星星了 有人能给我详细解释一下GDI位图和DIB位图的区别吗 smilejiangjun(smile将军)请进 打印问题!! 快来啊,哥哥! 请问,怎样将.fox的文件变成.prg程序 各位前辈,如果在公司的试用期觉得工资低了,怎么样和公司谈好一点?谢谢! 在安装好的机器中提取声显卡驱动吗? 大家有没有兴趣在北京举办一次聚会,大家探讨Java技术? 数据库中的某个字段的数据中包含  ,当把该字段绑定到dropdownlist后,  就显示不出来了.? vb怎么处理导出的历史文件 用户控件问题?急、急、急??? 原文:文字接龙---喜欢玩的请接下去!(转) CInternetSession.OpenURL()打开这个网面,只能得到93字节,怎么处理??? 求救:如何低级格式化硬盘,用什么dos命令? delphi+mapx的问题,求救! 读取数据库怎么这么慢?是不是我的方法不正确? form提交数据后,另一页取值为空?200分相送!! 关于windows.net server的安装 打印问题!!(50) 如何编程获得win2000本机的MAC地址?不用Netbios的方法阿,谢谢 讨论一下,对于个人来讲计算机可以帮助我们做什么? 谁有WS-FTP pro 7.5的注册码! 怎样改变MENU的字体? 请问有谁愿意转让《Object-Oriented Software Engineering: A Use Case Driven Approach》一书 讨论一下,对于个人来讲计算机可以帮助我们做什么? 谁用C++ BUilder写过类似sql 语句生成器的东西。 有谁知道 NetBoy 3.0.1 的序列号?第一个答对者20分全给!本人说话绝对算数。 ADO,如何判断一个连接对象(_ConnectionPtr)是否已经打开? IIS 5.0 & exchange server 有沖突? 修改数据库问题,急,在线等待! 讨论一下,对于个人来讲计算机可以帮助我们做什么? 怎样实现c语言对数据库的操作?(查询,添加,删除,排序。。。) 建立ActiveX控件的问题 求救:java的‘主要类型’本质上是不是对象? 如何编程实现改变显示器的分辩率? 有谁知道 NetBoy 3.0.1 的序列号?第一个答对者20分全给!本人说话绝对算数。 请大家给个方案:关于中文词法分析? 请 newly_ignorant(不学无术) 兄进来领分 怎样控SourceSafe的物理权限 ? 向各位高手求助!简单goto转变成没有goto的语句· 怎么改变DataGrid页导航条数字颜色 谁有IPX在局域网里收发和解析IPX包的例子! 释放连接,在线等待 我想将一个表中的所有字段的内容送入word中规定的表格中,请问谁能给出一个例子??? 如何删除folder.htt,和desktop.ini文件? ADO问题 为什么用 filelistbox 写完的程序换到其他的机器上就不好用了? cos指的是功率因数,那sin指的是什么啊? 怎么用YEAR函数计算工龄 一道简单的线性代数证明题设A是n阶方阵,x是n维列向量.若对某一自然数m,有[A^(m-1)]x≠0,(A^m)x=0.证明向量组x,Ax,……[A^(m-1)]x线性无关.证明:设有数组k1.k2,...,km,使得k1x+k2Ax+...+km[A^(m-1)]x=0上式两端 一次函数y=-x+a与一次函数y=x+b的图像交点坐标为(m,8)如题.则a+b=? 说明细胞分化中细胞核、质间的相互关系 由一个受精卵形成复杂的生物体,发生的生理过程有?有这么几个可以参考:细胞分裂,细胞生长,细胞分化,细胞死亡 4950乘以一个自然数a,乘积是某个数的平方,a最小是多少? 细胞分裂的一道选择题》》》某二倍体动物的细胞内含14条染色体,14个DNA分子,且细胞膜开始从正中部凹陷,则该细胞( )(A)处于有丝分裂后期(B)正在进行有关蛋白质的合成(C)将形成 拦河大坝修成上窄下宽的形状,是不是为了减小压强? 某配电网的平均有功功率为Pav,功率因数角正切值为tanφ1,安装无功补偿装置后,功率因数角正切值为tanφ2,计算补偿容量Qc是多少 正常细胞的细胞核和细胞质之间的关系是什么? 拦河大坝修成上窄下宽的型状是为什么?根据初3物理书中液体压强的知识来回答,急! 功率因数的正切值如何计算cosA=0.6 tanA=? 有丝分裂过程中,姐妹染色单体着丝粒的分开发生于 .A.前期 B.中期 C.后期 D.末期 工程师们为什么把拦河大坝设计成上宽下窄的形状 用1016乘一个数、乘积是一个完全平方数、求满足条件的最小自然数是( )、 三棱柱ABC﹣A1B1C1中,底面边长和侧棱长都相等,∠BAA1=∠CAA1=60°.则异面直线AB1与BC1所成角的余弦值为_____. 几道填空题.答对必采纳. 正常细胞核和细胞质之间的关系是 要想判断一种生物是否为纯合子,最好的交配对象应该是什么? 两道填空题和一道证明题.答对必采纳.急用. 生物中细胞质和细胞核的区别,就是有什么特点?是遗传上的,不是他们本质.意思就是细胞质遗传和细胞核遗传有什么特点?因为新教材上已经省略了,当题目还是有出现! 判断一种生物的遗传因子是杂合子还是纯合子,最好的办法 几道填空题.除了第十二题.答对必采纳.急用.本人不是贪小便宜.只是想对下答案. 我要100道一元二次方程计算题,不要什么填空和选择,还有解答也不要,只要计算题,有多少先给我发过来,谢了抓紧时间,我们老师布置的作业,谁都不想做,可没办法啊~ 算纯合子比例时,性染色体要算么?比如AAXBXB才是纯合子,AAXBXb不是么?因为答案是这样算的,但我看有些问问说纯合子与性染色体无关, 【高中生物】细胞分裂的一个问题做到选择题里的一个选项...【能进行细胞增值过程的细胞都具有细胞周期】求问这个选项为什么错了?最好有例子> 帮忙算一道一元二次方程7n^2-71n-25806=0 正常细胞的细胞核和细胞质的关系 一道高中生物关于细胞分裂和半保留复制的题目现将含有两对同源染色体且核DNA都已用32P标记的一个细胞,放在不含32P的培养基中培养,若该细胞连续进行4次有丝分裂,则含32P的子细胞数量最少 P=250Kw 当前的功率因数是cos¢1=0.65 目标是想要cos¢2=0.9 cos¢1=P/S1=0.65 cos¢2=P/S2=0.9 tan¢1-taP=250Kw 当前的功率因数是cos¢1=0.65目标是想要cos¢2=0.9cos¢1=P/S1=0.65cos¢2=P/S2=0.9tan¢1-tan¢2=0.685怎么算 一道细胞分裂的生物题用显微镜在同一个视野观察到细胞数目最多的是:1.间期 2.前期 3.末期 C语言 求100—200之间的全部素数,并且输出每10个换一行#includemain(){int m,i,k,n=0;for(m=101;m b^3n-1 c^2/a^2n+1×a^2n-1/b^3n-2= 时间函数YEAR(TODAY())和YEAR(NOW())有什么区别?请各位Excel高手说得通俗一些吧,也可举例说明, 正常细胞中细胞核与细胞质的关系怎样单独的细胞核为什么不能生存无核的细胞可以短期生存 但无法繁殖后代 为什么 分式计算:(b^3n-1 )*c/(a^2n+1)除以 (b^3n-2)/(a^2n) 已知一次函数y=(m-2)x+㎡-6的图像与y轴相交,交点的坐标是-2,求m的值 正常细胞的细胞核与细胞质的关系是【 】的关系,就一个空,别跑出一段话来! {a+b}^{3n+1}/0.5{b-a}^2n 已知一次函数y=(m-2)x+m²6的图像与y轴相交,交点的坐标是-2,求m的值 下图中,OABC为正方形.AC为4厘米,求阴影部分的面积 如图已知圆o的直径AB=40cm,点c,d,是直径AB所对的半圆三等分点,求弦AC,AD和弧CD所围成的图形面积. 求土方的工程量甲方要求挖出一条长357米,宽0.8米,深1.5米的工作坑,但是为了防止塌方实际挖出的工作坑为长357米,上宽3.5米,下宽1.2米,深2米的梯形.那么多出的工程量土方应该是多少立方米呢? 下图中,OABC是正方形,求阴影部分的面积我不会画图,大概是一个圆的四分之一的一脚,中间有个正方形,阴影部分是那个图形中除正方形外的部分,OABC是那个正方形, 289:170化简 一次函数y=(m-1)x+m-1的图像与y轴交于点(0,-1)那么m的值为 大多数细胞都是由受精卵发育来的,受精卵不断分裂 最初产生的细胞都是相同的,都具有分裂能力,在后来的生长发育中除小一部分继续保持分裂外,大部分细胞发生了分化.请问小部分细胞为什 200分之170化简 细胞有丝分裂之前是否存在姐妹染色单体 有以下几道数学填空题求解(100分钟,满分100分)一、填空题(每小题2分,共20分)1.42和63的最大公约数是.2.一个数的91是8的一半,这个数的是.3.《数学百科全书》实行八五折优惠后每套340元 COS∮谢谢指教如果功率因数底到底是怎么回事 是不是电容坏了 一个直棱柱有16个顶点,它是几棱柱,有多少条棱,多少个面 关于细胞分裂B为什么不可以呢?答案说由于该植物是四倍体植物,所以该细胞不能处于有丝分裂后期,为什么呢? 功率因数那单位怎么念的?cos& 如果一个棱柱一共有12顶点,底边长是侧棱长的一半,并且所有的棱长的和是120cm,那么每条侧棱长是 cm . 在高等生物受精卵的形成过程中( ) 每个选项回答详细点!A同源染色体配对B非非同源染色体自由组合C合子中染色体数目是精子和卵细胞中的染色体数目之和D会发生DNA复制 WP4000的λ与cosφ哪个表示功率因数? (1).五棱柱共有()条棱,()个顶点 (2).有十一个面的棱柱有( )个顶点,( )条棱 受精卵的形成过程人的来历相信大家都知道一些,那么具体追述到最小话受精卵的形成呢,当成千上万上亿个精子细胞进入卵巢与卵细胞相遇,最终却只有1个或者2个等很少很少的精细胞才能与
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘