一、系统架构概述

系统架构的定义和发展历程

  定义:架构是体现在组件中的一个系统的基本组织、彼此间的关系、与环境的关系及指导它的设计和发展原则

  架构设计作用:

  • 1、解决相对复杂的需求问题.
  • 2、解决非功能属性在系统占据重要位置的设计问题。
  • 3、解决生命周期长、扩展性需求高的系统整体结构问题。
  • 4、解决系统基于组件需要的集成问题。
  • 5、解决业务流程再造困难的问题。

  发展阶段:

  • 1、基础研究阶段【1968~1994年】:
  • 1968年:北大西洋公约组织会议首次提出“软件架构”的概念。
  • 20世纪80年代起:形成软件架构的雏形,为后续发展奠定基础。
  • 20世纪90年代左右:首次对软件架构进行了定义;模块化思想兴起,推动软件架构快速发展。
  • 2、概念体系和核心技术形成阶段【1999~2000年】:
  • 1999年:召开第一届IFIP软件架构会议,成立IFIP工作组2.0和全球软件架构师协会。
  • 2000年:发布第一次定义了软件架构的形式化标准。(标志着软件架构理论体系基本建立,并已具备普及应用的基础)
  • 3、理论体系完善与发展阶段【1996年至今】:
  • 1996年至今:随着组件软件架构理论的建立,与之相关的一些研究方向逐渐成为软件工程领域的研究重点。
  • 4、普及应用阶段【2000年至今】:
  • 2000年至今:软件架构思想逐渐深入人心,软件架构是软件生命周期中的重要产物,影响软件开发的各个阶段。(需求、设计、实现、维护)

软件架构常用分类

分层架构

  含义:最常见的架构,也是标准架构。

  最常见的是四层架构:

  • 表现层:用户界面,负责视觉和用户互动
  • 业务层:实现业务逻辑
  • 持久层:提供数据(SQL就放在这一层)
  • 数据库层:保存数据

  PS:用户的请求一次通过这4层处理,不能跳过其中任何一层。(部分项目会在业务层和持久层之间加入一个服务层)

系统架构设计师学习(二)系统架构设计师绪论_架构设计

事件驱动架构

  含义:状态发生变化时软件发出通知,触发相应行为。

  组成:

  • 事件队列:接收事件的入口。
  • 分发器:将不同的事件分发到不同的业务逻辑单元。
  • 事件通道:分发器与处理器之间的联系渠道。
  • 事件处理器:实现业务逻辑,处理完成后会触发事件,触发下一步操作。

  PS:简单的项目可以把事件队列、分发器和事件通道合为一体,分成事件代理和事件处理器两部分。

系统架构设计师学习(二)系统架构设计师绪论_软件架构_02

微核架构

  含义:软件内核相对较小,主要功能和业务逻辑都通过插件实现。【又称为“插件系统”】

系统架构设计师学习(二)系统架构设计师绪论_软件架构_03

微服务架构

 含义:服务导向架构。每一个服务就是一个独立的部署单元。

  三种实现模式:

  • Resful API模式:服务通过API提供。【云服务】
  • Resful应用模式:服务通过应用程序暴露接口的方式提供。【企业应用】
  • 集中消息模式:消息代理模式。通过消息控制行为。【分布式事务】

系统架构设计师学习(二)系统架构设计师绪论_系统架构_04

云架构

  含义:主要解决扩展性和并发的问题。数据都复制到内存中,变成可复制的内存数据单元,将业务处理能力封装成梳理单元,没有中央数据库,需要进行数据持久化

系统架构常用的建模方法

  • 结构模型:以架构的构件、连接件和其他概念来刻画结构。
  • 框架模型:不太侧重描述结构和细节,更侧重于整体的结构。
  • 动态模型:主要研究系统大方向的调整。(如:系统的重新配置或演化)
  • 过程模型:研究构造系统的步骤和过程。

二、系统架构设计师概述

架构设计师的定义、职责和任务

  定义:执行一系列活动来实施架构设计

  成果:创建架构

  职责:进行技术决策的权威。同时应该为他人树立榜样并在制定方向方面表现出自信。

  任务:

  • 1、领导与协调整个项目中的技术活动。
  • 2、推动主要的技术决策,并最终表达为系统架构。
  • 3、确定系统架构,并促使其架构设计的文档化。

架构设计师应具备的专业素质

  • 1、掌握业务领域的知识
  • 2、掌握技术知识
  • 3、掌握设计技能
  • 4、具备编程技能
  • 5、具备沟通能力
  • 6、具备决策能力【决策时咨询其他人并制造共同参与决策环境的同时,也要适当的决策】
  • 7、知道组织策略
  • 8、应是谈判专家

架构设计师的知识结构

  • 1、战略规划能力
  • 2、业务流程建模能力
  • 3、信息数据架构能力
  • 4、技术架构设计和实现能力
  • 5、应用技术架构的解决和实现能力
  • 6、基础IT知识及基础设施、资源调配的能力
  • 7、信息安全技术支持与管理保障能力
  • 8、IT审计、治理与基本需求的分析和获取能力
  • 9、面向软件系统可靠性与系统生命周期的质量保障服务能力
  • 10、对新技术与新概念的理解、掌握和分析能力

三、如何成为一名好的系统架构设计师

如何衡量一名优秀架构设计师

  • 1、作为领导者【具备讲故事、影响力、引导冲突、构建信任等领导技能】
  • 2、作为开发人员
  • 3、聚焦系统
  • 4、具备企业家思维【不但会寻求快速学习的机会和方法,也要学会做好接受失败的心理准备】
  • 5、权衡策略思维和战术思维
  • 6、良好的沟通【最重要的不一定是架构师的能力,而是他们在每个不同领域都有足够专业的知识】

从工程师到系统架构设计师的演化

  • 主要区别体现在技术、组织和个人成长上。
  • 不只是口头沟通能力,也要锻炼使用标准化图表来表达设计思路的能力。
  • 架构的工作主题就是权衡
  • 习惯于不完美和一定条件下的不精确
  • 10000小时定律。
  • 对技术的热情以及持续不断地投入,包括学习、实践、思考和总结等。