后端架构 | 青训营笔记

258 阅读3分钟

一、什么是架构

1.1 架构的定义

架构是指有关软件整体结构和组件的抽象描述,用于指导软件系统各个方面的设计。实现软件有很多种方法,架构在方法选择上起着至关重要的指导作用。

1.2 架构的重要性

  • 地基没打好,大厦容易倒,换言之,架构没设计好,软件可维护性差

  • 地基坚实,大厦才能盖得高,换言之,架构没设计好,软件可扩展性差

  • 站在巨人的肩膀上,才能看得远,换言之,优秀的架构能极大帮助软件开发

1.3 单机架构

单机是指把所有功能放在都在一个进程里,部署在一个机器上。

  1. 优点:
  • 非常简单
  1. 缺点:
  • 承载能力有限

  • 运维需要停服

1.4 单体架构

单体架构是在单机架构的基础上,将进程部署到多个机器上,即分布式部署。

  1. 优点:
  • 可以水平扩容

  • 运维不需要停服

  1. 缺点:
  • 进程职责太多,开发效率不高

  • 爆炸半径较大

1.5 垂直应用架构

垂直应用架构是在单机架构基础上,将 A 和 B 的后端拆分为 A、B 两个进程,再按照部署在多个机器上。

  1. 优点:
  • 减少了单体的后端进程职责

  • 缩小爆炸半径

  1. 缺点:
  • 没有根本解决单体架构的问题

1.6 SOA

SOA(Service-Oriented Architecture,面向服务架构)将进程按照不同的功能单元进行抽象,拆分为服务并为服务之间的通信定义了标准,保证各个服务之间通讯体验的一致性。

  1. 优点:
  • 各服务的职责更清晰

  • 运维粒度减小到服务,爆炸半径可控

  1. 缺点:
  • 方案形态较重,扩展性不佳

  • 可用性不高,不普及

1.7 微服务架构

微服务架构是SOA去中心化演进出的一种架构。

  1. 优点:
  • 兼具 SOA 解决的问题

  • 服务间的通信更敏捷、灵活

  1. 缺点:
  • 需要解决数据一致性、灾容等问题

  • 依赖复杂,运维成本增加

二、企业级后端架构剖析

2.1 云计算

云计算是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模分析和存储的基石。

  1. 基础:
  • 虚拟化技术

  • 编排方案

  1. 架构:
  • IaaS (Infrastructure as a Service),云基础设施,对底层硬件资源池的抽象

  • PaaS (Platform as a Service),基于资源池抽象,对上层提供的弹性资源平台

  • SaaS (Software as a Service),基于弹性资源平台构建的云服务

  • FaaS (Function as a Service),基于功能的抽象,提供更轻量级的函数服务

2.2 云原生

云原生为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。

云原生代表技术:

  • 弹性资源

  • 微服务架构

  • DevOps

  • 服务网格

  • 容器化

  • 不可变基础架构

  • 声明式 API

2.2.1 弹性计算资源

image.png

2.2.2 弹性存储资源

将存储资源当成一种服务一样

image.png

2.2.3 DevOps

image.png

2.2.4 微服务架构

image.png

2.2.5 服务网络

image.png

三、企业级后端架构挑战

3.1 问题

企业级后端架构的挑战来自基础设施和用户两个层面。

image.png

3.2 离在线资源并池

image.png

3.3 自动扩缩容

image.png

3.4 微服务亲和性部署

image.png

3.5 流量治理

image.png

四、后端架构实战

4.1 问题提炼

关键点是如何实现紧急回滚、如何适应大规模、如何应对极端场景。

image.png

4.2 自适应静态权重

image.png

4.2.1 α方案

image.png

4.2.2 β方案

image.png

4.2.3 Release方案

image.png