架构初探 | 青训营笔记

70 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

一、本节课重点内容

1. 什么是架构

2. 单机架构

3. 单体架构和垂直应用架构

4. SOA、微服务

5. 云计算

6. 云原生

二、详细知识点介绍

1. 什么是架构

定义

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

架构的重要性

  • 地基没打好,大厦容易倒
  • 地基坚实了,大厦才能盖的高
  • 站在巨人肩膀上,才能看得远

2. 单机架构

  • 软件系统需要对外提供服务,单机就是把所有功能都实现在一个进程里,并部署在一台机器上
  • 单机服务的模式除了简单之外没有任何优点
  • 单机服务的形态一般只适合出现在预研或者初创阶段,但凡业务有发展和迭代的诉求,就应该快速做架构迭代

3. 单体架构和垂直应用架构

  • 把进程部署在多个机器上,并引入负载均衡层,经过这样的垂直切分就来到了单体架构。在单体架构的基础上,进一步地再把不同应用的代码从之前一个大的进程中拆分出来,就来到了垂直应用架构。
  • 单体架构:分布式部署
  • 垂直应用架构:按应用垂直切分的单体

优点

  • 水平扩容
  • 运维不需要停服

问题

  • 职责太多,开发效率不高
  • 爆炸半径大

4. SOA、微服务

  • 把原本包含了众多复杂逻辑的进程按照功能单元抽象成多个服务,以服务为一等公民,并为它们之间的通信定义标准,便得到了SOA架构
  • 为了服务之间更好的通信,有两个大的发展方向:中心化和去中心化。去中心化的最终形态就是微服务架构
  • 不同模块可以专心于自己的业务逻辑,开发迭代效率得到显著提高
  • 各个服务独立运维,变更操作的影响面可控,应用整体的稳定性得到了提高

SOA

  • 将应用的不同功能单元抽象为服务
  • 定义服务之间的通信标准

5. 云计算

定义

  • 云计算是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基础
  • 虚拟化技术:硬件(虚拟机)、操作系统(容器)、网络
  • 编排方案:虚拟机编排方案、容器编排方案

架构

  • IaaS(Infrastructure-as-a-Service):基础设施服务
  • PaaS(Platform-as-a-Service):平台即服务
  • SaaS(Software-as-a-service):软件即服务
  • FaaS(Function-as-a-Service):功能即服务

5. 云原生

定义

  • 云原生,实际是云原生(计算)的简称,它是元计算发展到现在的一种形态
  • 云原生技术为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能

代表技术

  • 容器化
  • 服务网格
  • 微服务
  • 不可变基础架构
  • 声明式API
  • 基于这些技术,开发者可以构建出容错性好、易于管理、具备较好观测性的云服务。结合可靠的自动化机制,服务可以轻松应对频繁和可预测的重大变更。

Snipaste_2023-01-31_15-57-59.png

  • 弹性资源:基于虚拟化容器以及灵活的编排调度机制,可以为云服务提供快速扩缩容能力,而且极大程度地提高了物理资源的利用率
  • 微服务架构:云原生的重要基石之一。依托于功能单元结构,使得云服务具备了快速迭代的可能,业务得以迅速发展;统一的通信标准能够帮助越来越多的组件加入到云原生的大家庭,同时也使得各组件之间的交互变的更容易
  • DevOps:设计->开发->测试->交付->开发->测试->交付,自动化的流程使得软件的工作流程更高效,将微服务架构的优势发挥的淋漓尽致
  • 服务网格:如果说微服务架构的重要进步,是将庞大的单体服务按照业务功能解耦开来,那么,服务网格的重要进步就是将业务逻辑与网络通信和治理解耦开来。业务不再需要关心异构系统中 RPC 中间件治理能力的不统一,也使得复杂的治理能力的落地成为可能

三、课后个人总结

经过本节课的学习,对后端架构技术有了初步的了解。明白了没有最好的架构,只有最合适的架构。在做架构之前需要先进行需求分析、调研、技术选型、异常情况等诸多问题。