架构的定义:
1、架构体现在组件中的一个系统的基本组织、彼此的关系和环境的关系及指导它的设计和发展的原则
2、系统是组织起来完成某一特定功能或一组功能的组件集
3、环境或者上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的环境和设置
4、任务是由一个或多个利益相关者通过系统达到一些目标的一个用途或操作
架构设计的作用:
1、解决相对复杂的需求分析问题
2、解决非功能属性在系统占据重要位置的设计问题
3、解决生命周期长、扩展性需求高的系统整体结构问题
4、解决系统基于组件需要的集成问题
5、解决业务流程再造难的问题
典型架构分类
1、分层架构(Layered Architecture):最常见的软件架构、事实上的标准架构,最常见分层:表现层(Presentation Layer)、业务层(Business Layer)、持久层(Persistence Layer)、数据库(Database Layer)
2、事件驱动架构:通过事件进行通信的软件架构,分成4个部分:事件队列,分发器、事件通道、事件处理器
3、微核架构:又称为插件架构,指软件的内核相对较小,主要功能和业务逻辑都通过插件实现
4、微服务架构:是服务导向架构,每个服务是一个独立的部署单元,这些单元都是分布式的,互相解耦,通过远程通行协议联系,分成三种模式:RESTful API模式、RESTful 应用模式、集中消息模式
5、云架构:主要解决扩展性和并发的问题,最容易扩展的架构,分成两部分:处理单元、虚拟中间件
架构常用建模方法
根据建模侧重点不同,可以讲软件架构模型分成:结构模型、框架模型、动态模型、过程模型
架构设计师应具备的专业素质
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、具备良好的沟通能力
总结自:系统架构设计师教程(第2版)
作者其他要推荐的文章,欢迎来学习: 基于Spring Boot 3.1.0 系列文章
- Spring Boot 源码阅读初始化环境搭建
- Spring Boot 框架整体启动流程详解
- Spring Boot 系统初始化器详解
- Spring Boot 监听器详解
- Spring Boot banner详解
- Spring Boot 属性配置解析
- Spring Boot 属性加载原理解析
- Spring Boot 异常报告器解析
- 使用GraalVM 构建 Spring Boot 3.0 原生可执行文件
- Spring Boot 3.x微服务升级经历
Prometheus 系列文章
- Prometheus 的介绍和安装
- 直观感受PromQL及其数据类型
- PromQL之选择器和运算符
- PromQL之函数
- Prometheus 告警机制介绍及命令解读
- Prometheus 告警模块配置深度解析
- Prometheus 配置身份认证
- Prometheus 动态拉取监控服务
- Prometheus 监控云Mysql和自建Mysql
Grafana 系列文章,版本:OOS v9.3.1
- Grafana 的介绍和安装
- Grafana监控大屏配置参数介绍(一)
- Grafana监控大屏配置参数介绍(二)
- Grafana监控大屏可视化图表
- Grafana 查询数据和转换数据
- Grafana 告警模块介绍
- Grafana 告警接入飞书通知
Spring Boot Admin 系列
- Spring Boot Admin 参考指南
- SpringBoot Admin服务离线、不显示健康信息的问题
- Spring Boot Admin2 @EnableAdminServer的加载
- Spring Boot Admin2 AdminServerAutoConfiguration详解
- Spring Boot Admin2 实例状态监控详解
- Spring Boot Admin2 自定义JVM监控通知
- Spring Boot Admin2 自定义异常监控
- Spring Boot Admin 监控指标接入Grafana可视化