版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
林仕鼎:架构设计与架构师发表于14小时前|1454次阅读|来源CSDN|1条评论|作者包研架构师林仕鼎百度云计算大会第五届云计算大会讲师秀摘要:他自称“西二旗跨界架构师”,又戴上了百度基础体系首席架构师的封号,喜欢在微博和博客上讨论技术、诗歌和社会热点,他是林仕鼎。他在博客中分享了《系统架构领域的一些学习材料》,不断对架构师这份工作做着总结。【CSDN综合】林仕鼎自称是个“喜欢厘清概念的人”,在他的博客、CSDN举行的TUP活动中以及QCon中一次一次进行了剖析。架构是什么?代码=算法+数据结构软件=代码+架构1_ ILi_>JlJ.J-JLIL¥系统=软件+资源Multiplexing林仕鼎在博客中写道,系统架构是一个工程和研究相结合的领域,既注重实践又依赖理论指导,入门容易但精通很难,有时候还要讲点悟性,很具有“伪科学”的特征。要在此领域进阶,除了要不断设计并搭建实际系统,也要注意方法论和设计理念的学习和提炼。对于工程师来说,到一定阶段后往往会遇到成长瓶颈。要突破此瓶颈,需要在所属技术领域更深入学习,了解本领域的问题本质、方法论与设计理念、发展历史等。架构是一种组织方式结构 交互方式Model Pattern发布与部署形态Library(嵌入、被动)Runtime(嵌入、主鬲)Platform(独立、多实例)Service(曜一实例)架构(architecture)这个概念确实不好定义。首先,它很虚,不像代码可以用源文件“自证”。其次,它很泛,好像跟什么都相关,开发、测试、部署甚至运营等各阶段都有其影子。然后,它好像还在变,在计算机发展的各个阶段(Mainframe/PC/Cloud)都感觉不太一样。而且,在不同的领域也都有不同的反映。所以,一千个人心中有一千个哈姆雷特,一千个工程帅眼里也能有一千种架构。以建筑为例,设计师想方案,建筑师出图纸,工人施工同时项目管理贯穿始终,那图纸就是架构。如果说到烤鸭,骨头和肉是代码,鸭架子就是架构,而过程管理将其变成烤鸭。如果要更正式点定义,架构就是model和pattern,从而把code串成system。而其中最重要的就是designprinciples(设计原则),即为什么这个问题要用这个而非那个。更文艺点,再结合点美学,也可以叫作designphilosophy(设计哲学或理念)。然后我们来看什么是model和pattern,这两个具体的定义我还没想出来。先说一下比较,model偏宏观,而pattern偏微观;model重抽象描述,而pattern重具体实现。比如,你的系统有一个服务端和一个客户端,那么client/server就是model,而client与server之间的交互方式则是pattern,比如RPC/message、同步/异步,比如用滑动窗口来组织请求与应答等等。当然,这和系统的尺度有关。如果你zoomin到服务端,此时的model可能就是模块的组织关系,而pattern则是调用方式,比如用functioncall还是event等。存储•结构•数据特点_OFileOMutableorNot0ObjectSize0Thble0DataLayout•访问模式•“实时性”0实时读写0Realtimeness0批量写*实时读OFreshnessO流式读OConsistencyOScan/RangeQuery具体到领域上,我觉得主要有三类架构问题(不包括硬件):•软件架构,其典型用例是企业级软件,通过合理的功能抽象,提取出公共组件和通用流程,进行最大化的功能复用(reuse)。我称其为软件的可维护性问题。•系统架构,其巅峰是OS,重点是解决资源的分配与复用(multiplexing)。•大规模分布式架构,主要应用在Cloud中,重点是大规模系统的资源整合、快速交付和运维问题。那为什么架构会很泛又多变呢?这就牵扯到开发过程了。我们再引入一个方法论(methodology)的概念。传统软件工程那一套不必说了,互联网服务常用迭代式的开发方法(现在又叫敏捷),这就是方法论。我个人的做法通常有三种:divideandconquer,modelinganditerate,back-of-envelopcalculationandsimulation,按问题的规模、难易程度、熟悉程度、项目的组织方式等等选择不同做法。存储和分布式林仕鼎认为程序组织非常重要,对于存储这部分来说,它需要考虑包括结构、数据特点、访问模式、接口性质四大方面的问题。林仕鼎对这四大方面的问题作了详细阐述,指出每一个问题都面临若干选择,比如结构问题就有:File、Object、Table的选择,然后在同样一个结构中,还要面临是实时读写、批量写实时读之类的访问模式的选择,接下来不同访问模式对系统带来的影响,数据大小的分布、布局等。林仕鼎表示,正是因为有这么多因素的影响,导致开发者在设计系统时,必需要考虑很多方面。只有在全面掌握这些信息的情况下,才能设计出符合实际要求的系统。存储带来的一些矛盾包括:延迟与吞吐、随机与顺序、规模与实时性。一般来说,系统的规模越大,实时性的保证难度也就越大。要化解矛盾,需要在包括B+tree、Log-based两类模型建设的基础上做到弱化需求、发掘局部性、组合模型。在谈到分布式时,林仕鼎表示其实分布式的目标很简单,只有两个:扩容和容错。要实现这些目标需要采用Partition和Replication两种方法,而协议设计、调试是难点。服务架构和计算模型在进行系统设计时,所有系统都会面临一个极限值,即在给定系统资源情况下,所能提供的最大请求数,这里需要做一个特别设计,以防请求数突破极限值。如果没有作特别设计,在极端情况下,吞吐量超过一个点,那整个系统将崩溃。
服务架构的目标包括系统的高吞吐能力和在极限压力下的稳定输出。要实现这两个目标离不开服务架构的两类模型:属于基本类型的threadpool+queue和属于复杂类型的event-driven。为了保证整个系统的稳定性,还需要注意:减小资源分配粒度并主动调度、FlowControl、负载反馈,Throttling和延迟截断这四个方面。计算模型包含很多不同特点,一般来讲分为三类:数据密集型、计算密集型、通讯密集型(即传统HPC)。林仕鼎表示,首先要分析系统的特点,找到适合的模型。架构师的三板斧林仕鼎认为,在很多情况下,在怎么做系统、服务、数据仓库等问题上,开发者面临的具体问题都千差万别。此时,需要建立一些模型,或者有比较好的实践原则。作为一个架构师,首先是要非常深入地了解自己的业务,再根据业务特点运用一些现行做法。林仁鼎总结了“架构师三板斧”,作为本次演讲总结与各位分享。架构师三板斧•看清需求OTradeoff•无法满足所有需求•无须同等对待所有需求°发现根本需求 对不合理需求sayNOI*塑、抽象、瞥-m但给^end-to-end解决•定义primitives和组合规则方窒O了解需求随时间的变化力茱'选择方法架构师三板斧旨清需求选择方法MediocreQuick&架构师三板斧旨清需求选择方法MediocreQuick&Dirty•把握节奏规划可达路径。定期产出架构师三板斧内容如下:•看清需求:Tradeoff、无法满足所有需求、无须同等对待所有需求、发现根本需求、抽象、降维、了解需求随时间的变化、选择方法、把握节奏。•
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论