`

系统架构设计和应用架构设计(整理自网络)

    博客分类:
  • Java
阅读更多

应用架构&系统架构:  系统架构差不多不都是那一套, F5+squid+nginx中层代理集群+(nginx静态文件读取)+web服务集群+db集群+mamcached集群+(异步队列集群) 差不多也就这么多了,对了还有个CDN,不过是访问量非常高且企业有实力的才会用CDN,毕竟费用也挺贵的,不过我主要还是关注,应用程序层面的高可用高 并发的开发。。。

 

 

系统架构和应用架构的区别,系统架构设计主要关注对非功能性需求的实现方式。比如数据量多大,海量数据如何处理,数据的存储、检索如何优化,数据库 是否要分区,数据库如何优化。并发性多大,并发访问的瓶颈是在IO?数据库?还是应用服务器?,是否需要集群?硬件集群还是软件集群。安全性的要求有多 高,响应时间的要求是什么等等。

       而应用架构设计则主要从业务层面考虑系统的功能边界在哪,系统需要划分成多少个模块,每个模块之间的接口和调用关系,采用什么样的技术框架等。

       应用架构设计有几个核心的原则,开放-封闭原则,即对扩展开放,对修改封闭,这也是考核一个架构是否良好的一个标准。高内聚低耦合原则,尽量将功能相关的 内容组合在一起,封装后对外提供接口。封装变化原则,越是可能发生变化的地方越要进行处理和封装,将变化的影响限制在一定范围之内。平衡性原则,因为对系 统的很多要求是相互矛盾的,因此架构设计需要平衡多方面的要求,最后折衷考虑设计方案,比如性能和灵活性就常常是一对矛盾的要求。

       比如,如果我们某个软件系统需要用到工作流,那在应用架构设计时就需要考虑以下问题:是自己独立开发工作流组件,还是使用第三方的成熟组件?是采用嵌入自 己代码的方式,还是采用远程接口调用的方式?在数据库的数据层面是否要做交互和直接访问?如果是使用第三方组件,那在架构设计时就需要考虑到封装变化的原 则,即将来如果替换成别的产品,是否需要大量改动,所以架构设计时最好是建立一个封装层,业务层调用封装层的接口,而封装层来封装调用工作流组件的接口, 可以采用Facade模式,也可以采用Adapter模式。

       我们做软件项目时经常有一个体会,就是需求总是在变化,我们通过良好的架构设计可以封装好一部分的变化,剩下的变化就需要靠可扩展性来支撑。可扩展性是软 件开发中经常遇到的一个词,我认为一个软件的可扩展性体现在两个层面,一个是设计可扩展性,一个是运行可扩展性。

       设计可扩展性指的是在架构设计的时候,根据高内聚低耦合的原则将系统充分模块化,然后在每个模块的内部,根据开放-封闭原则来设计这个模块的架构,即达到 的效果是如果将来需求扩展,那我只需要按照原有的结构样板扩展增加新的代码模块就行,而不需要修改原来已经写好的那部分代码,或者修改量很少,这就是开放 -封闭原则,对扩展开放,对修改封闭。所以,设计可扩展性能达到的效果是需求变化时,通过程序员扩展代码来实现。

       而运行可扩展性,指的是需求变化时,系统的用户可以通过配置的方式让系统支撑新的需求,不需要程序员修改任何代码。这种功能对设计的要求很高,需要在架构时做有针对性地设计,比如采用元数据,采用数据模板,采用行列变换等方式。

       举个生活中的例子,比如手机。手机有各个硬件配件,比如屏幕、键盘、电路板、摄像头、外壳等等,这些配件都做到了模块化,高内聚低耦合,手机生产商可以很 方便的把某个配件的供应商换为另一家,因为配件的接口定义好了,内部实现是可以替换的。如果手机设计得好,那用户需要新加一个功能时,比如手电筒功能,厂 商就可以直接在原来的手机型号上扩展这个功能,加上一个迷你手电灯泡配件,而不会影响其他已有的配件功能,这个就是开放-封闭原则,也达到了设计可扩展 性。另外,手机中的SIM卡插槽设计的时候就考虑到了不同用户的需求,做成了运行可扩展性,允许用户自己随意更换SIM卡,你可以从移动的换成联通的,也 可以换成别人的,这种需求的变更不需要把手机返厂修改,用户自己就可以做,就相当于实现了运行可扩展的功能。

       具体在一个项目中哪些功能遵循设计可扩展性,哪些功能遵循运行可扩展性,就需要分析各项要求了,一般来说,越支持运行可扩展性系统的灵活性越高,但性能可 能会下降,系统的可维护性可能也会下降,什么都做得那么灵活是不现实的,需要折衷考虑,这就是架构设计的平衡性原则。

分享到:
评论

相关推荐

    系统架构设计师案例分析考点整理

    系统设计包括处理流程设计、人机界面设计、文件设计、存储设计、数据库设计、网络应用系统的设计、系统运行环境的集成与设计、中间件、应用服务器、性能设计与性能评估、系统转换计划等。系统设计是系统架构设计师...

    系统架构设计师考试全程指导(已添加导航).zip

    《系统架构设计师考试全程指导》是一本...总的来说,《系统架构设计师考试全程指导》是一本全面、实用的备考指南,它将引导考生系统地学习和掌握系统架构设计的各个方面,为通过高级软考系统架构师考试打下坚实的基础。

    计算机软件资格考试高级-系统架构设计师真题整理.rar

    此压缩包文件"计算机软件资格考试高级-系统架构设计师真题整理.rar"包含了历年的考试真题和答案解析,是备考者进行考前复习的重要参考资料。通过深入研究这些真题,考生可以了解考试的题型、难度以及重点考察的知识...

    2018年下半年系统架构师真题及答案【整理版本】

    系统架构师是IT行业中至关重要的角色,他们负责设计、规划和优化复杂的计算机系统,确保系统的高效、稳定和可扩展性。这份"2018年下半年系统架构师真题及答案【整理版本】"资料,无疑是备考系统架构师资格考试或者...

    银行软件开发-需求开发和管理-系统架构设计说明书模板2整理.pdf

    银行软件开发-需求开发和管理-系统架构设计说明书模板2整理.pdf 本文档是关于银行软件开发的系统架构设计说明书模板,旨在为银行软件开发提供一个通用的架构设计指南。该文档涵盖了系统架构设计的各个方面,包括...

    软件考试系统架构设计师学习笔记(整理版)

    《软件考试系统架构设计师学习笔记(整理版)》是一份详尽的...通过这份《软件考试系统架构设计师学习笔记(整理版)》,学习者可以系统地了解和掌握系统架构设计的理论与实践,为通过考试和提升自身技能打下坚实基础。

    Tomcat系统架构与设计模式[整理].pdf

    Tomcat 系统架构与设计模式 Tomcat 系统架构是 Apache 软件基金会的一款开源的 Java Web ...通过对 Tomcat 的系统架构和设计模式的分析,我们可以更好地理解 Tomcat 的工作原理,提高自己的编程能力和设计水平。

    软考高级-系统架构师论文范文50篇(含完整目录)

    2.通过系统架构师考试的考生可以获得由人力资源和社会保障部、工业和信息化部认可的职业资格证书,本考试为高级资格认证 目录预览: 01 论混合软件架构设计 02 论信息系统的安全风险评估 03 论信息系统的安全体系 ...

    软考系统架构师案例分析知识点整理.pdf

    本篇章旨在整理软考系统架构师案例分析的知识点,涵盖了系统规划、软件架构设计、系统设计、软件系统建模、分布式系统设计、嵌入式系统设计、系统可靠性分析与设计、系统安全性和保密性设计、项目管理、虚拟化技术等...

    自己学习系统架构整理出的学习笔记

    高性能高并发服务器架构.pdf探讨了如何设计和优化处理大量并发请求的服务器架构,包括线程池管理、网络I/O优化、异步编程等关键技术。 这些资源的综合学习将使你具备构建复杂系统架构的能力,包括微服务、Web服务、...

    系统架构设计师复习精华

    描述部分反复强调“系统架构设计师复习精华”,这说明内容的重点是对于系统架构设计师的综合知识进行整理和总结,尤其强调复习的重要性。复习是学习过程中的一个关键环节,它有助于巩固现有知识,加深对系统架构知识...

    [软考在线]_[2020年下半年考试复习资料]系统架构设计师学习.pdf

    这份资料是关于系统架构设计师学习的复习资料,为软考在线会员提供,主要涉及系统架构设计相关的考点讲解和分析。以下是从资料中提取和整理出的一些知识点: 1. 软件架构基础概念:架构(Architecture)是指软件...

    系统架构师软考真题以及考点总结.rar

    在信息技术领域,系统架构师是一个至关重要的角色,他们负责设计和规划复杂的信息系统,确保其高效、稳定且可扩展。为了成为这样一位专业人士,许多人选择参加“软考”(全国计算机技术与软件专业技术资格(水平)...

    企业级应用架构实例和源码整理

    【企业级应用架构实例和源码整理】是一个包含有丰富的软件设计和开发资源的压缩包,主要关注的是“三层架构”这一重要的IT知识点。三层架构是一种广泛应用的企业级应用设计模式,它将应用程序分为三个主要部分:表现...

    系统架构设计师案例分析知识点整理.pdf

    系统架构设计师的角色主要涉及到系统规划、软件架构设计、设计模式应用、系统建模以及分布式和嵌入式系统设计等多个方面。以下是对这些知识点的详细解释: 1. **系统规划**: - 系统项目的提出预可行性分析:这是...

    软考系统架构师案例分析知识点汇总

    **软件架构风格**是描述某一类特定应用领域中软件系统组织方式和惯用方式的重要概念。它不仅涉及到软件系统的组成部分(即构件),还涉及到这些构件之间的组织关系以及它们之间的交互模式。 1. **面向对象架构风格*...

    “UML系统分析与架构设计实战”培训教材

    这本书的核心在于介绍统一建模语言(Unified Modeling Language,简称UML)的应用,以及如何通过UML来进行有效的系统分析和架构设计。UML是一种在软件工程领域广泛使用的标准化建模语言,它为软件开发人员提供了一种...

    电商大数据平台架构设计及应用

    根据提供的信息,我们可以深入探讨“电商大数据平台架构设计及应用”的关键知识点,这些知识点涵盖了电商平台如何利用大数据技术来提升业务效率、改善用户体验以及优化决策流程等方面。 ### 一、电商平台的大数据...

Global site tag (gtag.js) - Google Analytics