👒 [架构]从零开始学软件架构:架构设计分层实现

SEO:
77 / 100

本文是从零开始学软件架构系列文章的第一篇,主题为架构设计分层实现。本文的主要内容包括:课程简介、分层的意义、分层思想的应用、以 Java 为例的分层模型的演进过程、分布式分层架构等内容。学习目的是了解分层模型的演进过程,学习如何利用分层思想设计现代高可用的亿级流量平台的软件架构。

简介

什么是架构

架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。

优秀的性能、超强TPS/QPS的承载能力、高可用决定了你的能够支撑多少 PV 的流量。

Balance,选择一个投入产出比最优的方案。

项目中的角色

客户、产品经理、开发人员、测试人员、运维人员、系统架构师、系统负责人、项目经理、用户。

构架师的职责

  • 明确需求:理解和把握需求。
  • 系统能力分解:将需求指标分解为系统能力。
  • 技术选型
  • 制定架构说明书并主导执行落地

架构师成长路径

1648054288 image
架构师成长路径

架构师必备能力

架构师必备的能力如下:

  • 设计能力
  • 管理能力
  • 技术实力
  • 沟通能力
  • 应急能力
  • 抽象能力

课程大纲

本系列课程包括如下的知识脉络:

  • 架构设计分层实现
  • 访问层架构知识
  • API 网关层架构知识
  • 核心服务层架构知识
  • 数据存储及接入层知识
  • 监控,限流,降级知识

学习收获

  • 掌握主流互联网高性能后端服务平台的系统分层模型及设计思想;
  • 掌握 Web 接入层负载均衡,前置缓存等设计技术;
  • 掌握 Dubbo 服务治理、异步 MQ、任务调度、缓存、隔离队列等核心服务层设计技术;
  • 掌握 Redis、SQL 数据库、NoSQL 数据库以及代理接入,分库分表等技术;
    掌握服务监控、应急限流降级等相关技术。

架构设计分层实现

为什么分层

架构分层的主要目的:

  • 分而治之
  • 各司其职
  • 有条不紊的结合

常见的分层设计:

  • 计算机网络 OSI 七层模型
  • Web 系统 MVC 模型分层设计
  • 基于领域模型的分层设计

分层模型演进(Java)

分层模型v0.1时代:Servlet JSP 时代

1648271611 image
Servlet JSP 时代

模型步骤:

  1. Servlet+Tomcat 容器完成 Web 接入
  2. 使用 JavaBean+JDBC 完成数据层接入
  3. 使用 JSP 完成页面展示

分层模型v1.0时代:MVC 分层

分层:web 层、业务层、数据访问层、数据持久层

SSH 时代:

1648271927 image
SSH 时代

模型步骤:

  1. Structs 解决接入及表示层
  2. Spring 解决业务服务、事务处理、会话管理等问题
  3. Hibernate 解决数据存储接入问题

缺点:

  1. Hibernate:面对对象的过度封装在复杂的业务场景下缺乏灵活性;Java模型处理的状态跟数据库的状态做绑定。
  2. Structs:表示层过于复杂,每个请求对应一个 Action Servlet 类做实现。
  3. JSP:不符合前后端分离的趋势。

分层模型v1.5时代:SSM 时代

1648272141 image
SSM 时代

模型步骤:

  1. SpringMVC 解决接入及表示层
  2. Spring 解决业务服务、事务处理、会话管理等问题
  3. MyBatis 解决数据接入层

分层模型 v2.0 时代: SpringBoot all in one

1648297314 image
SpringBoot all in one
SpringBootBucket
spring 全家桶

优点:

  • 整合了所有 Spring 的框架功能
  • 提供了简单的配置及注解的接入方式
  • 提供 All in one 的服务

缺点:

  • 解决了单一应用内的软件分层,却没有解决整体应用的分层
  • 单一应用性能瓶颈,无法支撑亿级流量
  • 团队协作问题

参考:

分层模型 3.0 时代:分布式分层

特点:

  • 水平扩展:增加节点数有效解决流量增加
  • 负载均衡:流量均衡负载到可用服务器上
  • 高可用
  • 数据一致性:数据存储在分布式环境下的一致性

亿级流量平台分层架构

分布式分层

WEB 概念层:

1648298433 image
WEB 概念层

业务概念层:

1648298516 image
业务概念层

数据访问和存储层:

1648298694 image
数据访问和存储层

总结

  • 访问层:用于 Web 接入、反向代理、负载均衡等
  • 接口层:用于负责业务 API 网关处理
  • 服务层:业务服务的核心处理模块,具备服务治理、调度、异步通信等核心服务能力
  • 存储接入层:用于提供透明的存储结构的访问代理层
  • 存储层:最终数据的落地及提供数据的能力
avatar

Jonsam

一个理科IT宅男,喜欢旅游、分享和美食,做点想做的事情,遇见想见的人。

🍒 美食 | 🌐 FE | 🕌 旅行 | 💻 加班 | ♍ 处女座