- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
针对架构设计的几个痛点,我总结出的架构原则和模式本文章来自于阿里云云栖社区摘要:?【编者的话】本文来自FiratAtagun的《架构演化中的软件设计原则》,文中给出了软件架构演化过程中出现的4种经典架构,就每种架构,分析了其主要特点并在几个度量维度给出结论。在文章的最后,FiratAtagun给出了4种架构的多维对比。【编者的话】本文来自FiratAtagun的《架构演化中的软件设计原则》,文中给出了软件架构演化过程中出现的4种经典架构,就每种架构,分析了其主要特点并在几个度量维度给出结论。在文章的最后,FiratAtagun给出了4种架构的多维对比。本文的完整演讲稿是架构演化中的软件设计原则。1 分层架构分层架构是最常见的架构,也被称为n层架构。多年以来,许多企业和公司都在他们的项目中使用这种架构,它已经几乎成为事实标准,因此被大多数架构师、开发者和软件设计者所熟知。分层架构中的层次和组件是水平方向的分层,每层扮演应用程序中特定的角色。根据需求和软件复杂度,我们可以设计N层,但大多数应用程序使用3-4层。有太多层的设计会很糟糕,将导致复杂度的上升,因为我们必须维护每一层。在传统的分层架构中,分层包括表现层、业务或者服务层,以及数据访问层。表现层负责应用程序的用户交互和用户体验(外观和视觉)。通常我们会使用数据传输对象(Data Transfer Object)将数据带到这一层,然后使用视图模型(View Model)渲染到客户端。业务层接收请求并执行业务规则。数据访问层负责操作各种类型的数据库,每个访问数据库的请求都要经过这一层。分层无需知道其他层如何去做,比如业务层无需知道数据访问层是如何查询数据库的,相反,业务层在调用数据层的特定方法时,只需关注需要部分数据还是全部数据。这就是我们所说的关注点分离(原文链接:/wiki/Separation_of_concerns?spm=5176.100239.blogcont26628.4.Hy3N6z)。这是非常强大的功能,每层负责其所负的责任。分层架构中的核心概念是管理依赖。如果我们使用依赖倒置原则和测试驱动开发(Test Driven Development),我们的架构会有更好的健壮性。因为,我们要保证所有可能的用例都有测试用例。我们需要这样的冗余,即使业务层没有处理业务规则,也要通过业务层来调用数据层,这叫分层隔离。对于某些功能,如果我们从表现层直接访问数据层,那么数据层后续的任何变动都将影响到业务层和表现层。分层架构中的一个重要的概念就是分层的开闭原则。如果某层是关闭的,那么每个请求都要经过着一层。相反,如果该层是开放的,那么请求可以绕过这一层,直接到下一层。分层隔离有利于降低整个应用程序的复杂度。某些功能并不需要经过每一层,这时我们需要根据开闭原则来简化实现。分层架构是SOLID原则的通用架构,当我们不确定哪种架构更合适的时候,分层架构将是一个很好的起点。我们需要注意防止架构陷入污水池反模式。这种反模式描述了请求经过分层,但没做任何事或者只处理了很少的事。如果我们的请求经过所有分层而没有做任何事,这就是污水池反模式的征兆。如果20%的请求只是经过各层,而80%的请求实际做事,这还好,如果这个比率不是这样的,那么我们已经患上反模式综合征。此外,分层架构可以演变为巨石应用(Monolith),导致代码库难以维护。分层架构分析:敏捷性:总体敏捷性是指对不断变化的环境作出反应的能力。由于其整体风格(Monolith)的性质,可能会变得难以应对通过所有层的变化,开发者需要注意依赖性和分层分离。易于部署:大型应用程序的部署会是个麻烦。一个小要求,可能需要部署整个应用程序。如果能做好持续交付,可能会有所帮助。可测试性:使用Mocking和Faking,每一层可以独立测试,因此测试上很容易。性能:虽然分层应用程序可能表现良好,但是因为请求需要经过多个分层,可能会存在性能问题。可伸缩性:因为耦合太紧以及整体风格(Monolith)的天生特质,很难对分层应用程序进行伸缩。然而,如果分层能够被构建为独立的部署,还是可以具备伸缩能力的。但是,这样做的代价可能很昂贵。易于开发:这种模式特别易于开发。许多企业采用这种模式。大多数开发者也都知道、了解,并且可以轻松学习如何使用它。2 事件驱动架构事件驱动架构(Event Driven Architecture)是一种流行的分布式异步架构模式,用于创建可伸缩的应用程序。这种模式是自适应的,可用于小规模或者大规模的应用程序。事件驱动架构可以与调停者拓扑(Mediator Topology)或者代理者拓扑(Broker Topology)一起使用。理解拓扑的差异,为应用程序选择正确的拓扑是必不可少的。调停者拓扑调停者拓扑需要编排多种事件。比如在交易系统中,
您可能关注的文档
- 上译电影目录和部分影片配音演员年表(二).docx
- 大连耳膜穿孔治疗.doc
- 第八章-智力及创造力的关系.doc
- 二胡揉弦技术.doc
- 成语大全和解释造句.docx
- 向阳区代理发表职称论文发表-畅通渠道与谐环境论文选题题目.docx
- 2011年中学教育心理学章节习题答案及解析:第七章:技能的形成.doc
- 毕明辉20世纪西方音乐篇节答案参考.doc
- 研究性学习是一种培养学生发散思维新方式.doc
- 浅析体育道德教育在未成年罪犯德育思维矫正过程中的意义、作用和操作方式.doc
- 专题06 经济体制(我国的社会主义市场经济体制)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题11 世界多极化与经济全球化-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 专题03 经济发展与社会进步-5年(2020-2024)高考1年模拟政治真题分类汇编(浙江专用)(解析版).docx
- 专题09 文化传承与文化创新-5年(2020-2024)高考1年模拟政治真题分类汇编(北京专用)(原卷版).docx
- 5年(2020-2024)高考政治真题分类汇编专题08 社会进步(我国的个人收入分配与社会保障)(原卷版).docx
- 专题07 探索世界与把握规律-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 5年(2020-2024)高考政治真题分类汇编专题06 经济体制(我国的社会主义市场经济体制)(原卷版).docx
- 专题11 全面依法治国(治国理政的基本方式、法治中国建设、全面推进依法治国的基本要求)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题17 区域联系与区域协调发展-【好题汇编】十年(2015-2024)高考地理真题分类汇编(解析版).docx
- 专题01 中国特色社会主义-5年(2020-2024)高考1年模拟政治真题分类汇编(原卷版).docx
最近下载
- 高同型半胱氨酸血症的诊断、治疗与预防专家共识.docx VIP
- 人教版高中英语必修第二册《UNIT 3 THE INTERNET》大单元整体教学设计.pdf
- 微型消防站工作职责(标准版).docx VIP
- 呼唤-快车上玩家地图1 plmap演示版.pdf
- 德邦零担业务诊断及新产品开发项目建议书-2014.pptx VIP
- 人教版高中英语必修第二册《UNIT 4 HISTORY AND TRADITIONS》大单元整体教学设计.docx
- 高同型半胱氨酸血症的诊断、治疗与预防.pptx VIP
- 附件2:汽车专访.pdf VIP
- 2024年食品安全生产经营大比武理论考试题库资料-下(多选、判断题汇总).pdf
- 快车上的恐怖旅行手册.pdf
文档评论(0)