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

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

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

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

疑因竞争 谷歌有意让地图与WP手机不兼容 移动游戏开者必看:海外VC最关心什么? 淘宝UED:随侃设计师的个人素养 TIOBE 2013年1月:不负重望 Objective-C再次赢得桂冠! 大数据:商业或技术的挑战? 开源移动统计:Cobub Razor近期版本大升级 无人机应用,为何屡遭苹果拒绝 2013年Java继续火的五大理由 Rails所有版本都有SQL注入漏洞?其实没那么严重 如何设置Windows Server 2012 NTFS权限 智能手机大局已定 HTC难扭转乾坤? 比谷歌手表更酷!基于大数据分析的睡衣 众投资金:改变了移动游戏开发的一切一切 这些科技产品和革新或在今年“横空出世”?! 现代Objective-C七宗罪 Google工程总监Ray Kurzweil意欲打造“虚拟朋友” 惠普开源JavaScript框架Enyo更新:支持桌面和移动平台 分析:三星或将成为科技行业第五巨头 是真的 诺基亚真有可能推Android手机 如何打造IE10的指尖触碰式用户体验 SUSE全球OEM联盟总监:为何SAP HANA只选择SUSE? 推荐2013年最佳PHP开发框架 Patrick Wyatt:代码没问题 程序却有bug? NoSQL的可靠性及扩展操作 最新Skype加密技术:“无声”通话能躲过FBI监听 谷歌锁死SDK,能阻止Android碎片化吗? KitCam团队专访:为应用做加法也能雄踞榜首 谷歌哭了:Replicant 4.0 SDK发布搅乱大局 忍者神龟与禅宗启示:如何突破移动广告困境 Linux会是更好的游戏平台?暴雪是这么认为的! 新型恶意软件瞄准Java服务器 有没有好的远程服务器监控软件 主细表类型的报表问题,希望有人帮我!先谢谢了!(急) 大家救救我得机子吧~~ 极度深奥的问题!!有没有谁知道“xp_logattach ”这个存储过程的实际作用与用法。 ADO 错误代码 (能否置顶啊..斑主) ini文件的保存 智能卡读写设备(成熟技术)== 想借鉴请进 提问?关于用DreamweaverMX处理网页参数问题? ping命令的奇怪问题,你遇到过没? 有谁知道windows一共出了多少版本(包括不同语言,不同版本) 有谁知道windows一共出了多少版本(包括不同语言,不同版本) 初学者,请教小问题~~~ 用opengl写的一个屏保,有些问题想和大家讨论 帮我看看 有谁知道windows一共出了多少版本(包括不同语言,不同版本) 想暴力解决点问题,大家给点意见! 熟悉J2EE和Web,但是英语四级没过,郁闷呀!散分讨论 怎样使用一个窗体总是显示在最后面和怎样在windows桌面上写上文字。 如果全世界只有一个男人... .net组件有没有对象池的功能? 编程男友和淘气女友!绝配!!!! 企业管理器很慢? 关于窗体的问题 我明年打算考中程,到底难吗? 网络编程 为什么我的mdb数据库不能设置对象指针可以移动啊? 急啊!!!有没有做过论坛发帖机啊能否帮我一下就是怎样提交CSDN论坛的注册信息然后得到左边的树列表和右边的列表 本人做系统时有一个操作员列表,为使每个操作员的密码保密,想在数据表据中将密码用*号代替,怎么办? 怎么檢測一個線程是否已經創建? 解密软件,哪里找 美萍VOD是怎么实现不用网络共享而完成点播的呢? com入门问题2 jb8+Weblogic配置后,在jb8中不能编译jsp文件,但java文件可以编译 哪里有好的控件下载,介绍几个好的网站!!! 一个很久没有解决的问题,请各位指教。 高分求救程序 我装RASPPP软件的时候,他要我的数字签名怎么办? javaBean 是否能在应用程序里面调用??怎么调用?? 企业管理器很慢? 100分求解,急!请大家帮忙 请教:新建论坛在客户机上能访问,在服务器上却报“Microsoft VBScript 编译器错误 错误 '800a03f6'” 怎么把别人的代码窗体文件,加到自己的工程里? 权限问题 怎么用一控件去调用另一控件? 请教~~~~ Struts中的事件 如何在点击鼠标左键的时候,弹出一个弹出菜单? 求JBuilder8的下载地址,下完给分! Help!各位大俠,關于SQL查詢專業性的問題.....多多指教,在線送分! 两个菜鸟问题 急!急!急! loyalty和allegiance的区别 Things l can do:jobs:请列出来 restoration是什么意思 potentail restoration 打错了一点,应是potential restoration restoration solution 今天看到了一句话 Check if there is the procedure to control the restoration solution test and performed by this procedure 应该是个检查项目, “最爱的”单词是dearest,那“最恨的”单词是什么? he paid 20percent down for it (指watch)是什么意思 简述“宴长江曹操赋诗”的经过100字左右 一个矩阵4行4列,每一行分别是1、2、3、4;0、1、2、3;0、0、1、2;0、0、0、1,求特征向量,书上有答案是【8 0 0 0】,但我没理解8是哪里来的? 清秋活在我壶里了, 活在社会的意义是什么? TCL与IMAX合作研发高端家庭影院印度一客车30日因油箱起火发生爆炸,土耳其称若与中国磋商失败 将重招标反黑龙江肇东一市民30余万征地补偿款被宁国就“副市长看望百岁老人PS照片”范长龙会见马来西亚国防部长“桑迪”吹袭一周年 纽约仍致力重建肯尼亚将起诉“9.21”恐怖袭击案嫌日爱子公主学习成绩优异 有望进东京大欧盟向安第斯国家提供控毒援助日本京都净福寺时隔近百年展示秘藏佛像高跟鞋砸中汽车车主劝回跳桥女“麻雀小学”的独臂教师之困合肥“尝鲜”引入民资建地铁物业服务不周,业主交不交费?北一环商圈拟引五星级酒店合肥发布网万元征LOGO榕商户卖窃听器被判刑 罪名是“销售间省定价目录 缩减七成多小升初 对口直升或派位项南与福建改革开放暨《项南画传》出版谁说“互联网+”只是概念?!求魔灭神雪狼出击灵道师庆丰年林夏的重生日子网游之兰湖仙缘无限总裁的糊涂小妻子小小童养媳小霸王孙策擦身而过药王殿旅游南天门旅游苏州民俗博物馆旅游怡园旅游文庙旅游枫桥旅游丹霞山旅游南华寺旅游湘江旅游南丫岛旅游阿里山神木旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘