软件架构初探 | 青训营笔记

50 阅读2分钟

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

内容受本人水平限制,若有错误还望各位看官不吝赐教。

啥是架构

软件架构:

  1. 关于软件整体结构之于组件的抽象描述
  2. 指导系统各方面设计

常见的软件架构

  1. 单机架构

    • 所有功能都在同个进程,部署在单个机器

    • 架构简单

    • 运维需要停服,承载能力有限(C10k问题)

    爱思考的实践者的博客-CSDN博客_c10k问题简述

  2. 单体架构

    • 在单机架构的基础上,将进程部署到多个机器上
    • 具备水平扩容能力
    • 无需停服运维
    • 进程职责过多,臃肿
  3. 垂直应用架构

    • 将进程的职责切分后按照单体模式思路进行多机器部署
  4. SOA (面向服务架构)

    • 功能单元被切分为服务
    • SOA为服务间通信定义标准
    • 总的架构拓扑更像是一个集中式的模块
  5. 微服务

    • SOA变体,提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合
    • 轻量级的服务通信协议

云计算的基础技术

  • 虚拟化技术

    • 硬件层面(VM 虚拟机)- KVM/Xen/VMware
    • 操作系统层面(Container 容器)- LCX/Docker/Kata Container
    • 网络层面 - Linux Bridge/Open v Switch
  • 编排方案

    • VM 虚拟机
    • Container 容器

云原生

云原生,实际是云原生(计算)的简称,它是云计算发展到现在的一种形态。

代表技术:

  • 弹性资源
  • 微服务架构
  • DevOps
  • 服务网格 service Mesh

企业后端架构挑战

物理资源有限

  1. 机器(异构)
  2. 带宽

常见场景

挖个坑,以后有机会补

最好的架构?

没有最好的架构,只有最适合的。

  1. 以需求为输入
  2. 分析
  3. 调研类似需求的解决方案
  4. 确定基本架构
  5. 组件的技术选型
  6. 考虑极端情况
  7. 必要时重构