`

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

    博客分类:
  • Java
阅读更多

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

 

 

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

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

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

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

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

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

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

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

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

分享到:
评论

相关推荐

    软考系统架构设计师笔记资料.zip

    此外,考虑到系统架构设计需要与业务需求紧密结合,这套资料可能还包括了企业级应用架构设计的内容,比如服务导向架构(SOA)、微服务架构等。同时,对于架构师来说,掌握主流的开发技术和框架也是必备的能力,比如...

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

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

    2009-2022软考高级《系统架构设计师》真题及解析

    例如,2015年的真题可能侧重于考查考生对新兴技术的理解和应用能力,而2018年的真题可能更注重对系统架构设计理论的深入掌握。通过对比分析不同年份的真题,考生可以洞察到考试趋势的变化,及时调整学习策略。此外,...

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

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

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

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

    系统架构设计师(软考高级)备考资料

    首先,要成为一位合格的系统架构设计师,考生必须对计算机系统架构的理论和方法有全面的了解。这包括但不限于分布式系统、服务导向架构(SOA)、云计算以及大数据处理架构等。同时,系统设计的基本原则、方法和工具...

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

    - **系统的故障对策和系统的备份与恢复**: - 制定应对系统故障的策略。 - 系统备份与恢复的具体方法。 #### 九、系统安全性和保密性设计 - **系统的访问控制技术**: - 访问控制列表(ACL)、角色权限等。 - ...

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

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

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

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

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

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

    系统架构师必知的2025年高频知识点解析:涵盖架构、开发方法、云计算等

    内容概要:本文整理了2025年上半年系统架构设计师所需的50个高频知识点,全面覆盖系统开发与设计、云计算、信息安全、智能合约等多个领域的关键技术和理论。主要内容包括原型法开发方法(适用于需求不明确的情况)、...

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

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

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

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

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

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

    系统架构设计师考证资料 笔者已考试通过

    这些资料不仅仅是简单的应试指南,它们更是笔者多年实践经验的结晶和系统架构知识的总结。 在复习资料中,首先会涉及到系统架构设计师必须掌握的基础理论知识,如计算机组成原理、网络基础、操作系统原理等。这些都...

    2021软考系统架构设计师笔记.zip

    "2021软考系统架构设计师笔记"是一份针对专业技术人员技能提升的宝贵资料,它以系统架构设计师考试为核心,综合整理了考试必备的理论知识、实践技能和考试策略,为考生提供了全面的学习支持。这份笔记不仅是考生复习...

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

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

    系统架构设计师复习精华

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

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

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

    软考高级系统架构设计师:思维导图、经验总结、知识点整理、学习笔记、考前背诵等

    该考试的目的是为了鉴定和选拔在信息系统项目管理、信息安全、系统架构设计等方面具有较高理论知识和实践经验的专业人才。 由于软考高级系统架构设计师考试的难度较高,所以考生需要进行全面的准备,包括但不限于对...

Global site tag (gtag.js) - Google Analytics