架构初探-谁动了我的蛋糕|青训营笔记

124 阅读2分钟

这是我参与「第三届青训营 - 后端场」笔记创作活动的的第 2 篇笔记。

一、什么是架构?

即软件架构,是有关软件整体结构与组件的抽象描述。实现一个软件有很多种方法,架构在方法选择上有至关重要的作用。

万丈高楼平地起,对于一座高楼而言,首先要设计好图纸,然后打好地基,再搭建好钢架。软件架构就如建楼中的打地基步骤,地基不稳,高楼易塌。

二、架构的演进

2.1 巨石架构(单机架构)

  1. 定义:将所有功能都实现在一个进程中,并部署在一台机器上。
  2. 优点:简单
  3. 问题:
  • C10K problem1
  • 运维需要停服
  • 性能易出现瓶颈

2.2 单体、垂直应用|垂直切分

解决方案: 1、分布式部署(分布式操作复杂,运维成本高) 2、按应用垂直切分(划分不易,容易耦合) 其他问题: 对于分布式架构或垂直切分而言,开发效率低,而且容易产生连锁故障。

2.3 SOA、微服务|水平切分

SOA(Service-Oriented Architecture)

  1. 将应用的不同功能单元抽象成服务
  2. 定义服务之间的通信标准

问题: 数据一致性、高可用、治理容灾、解耦/过微

三、云计算

3.1 云计算

云计算:是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石。 基础:虚拟化(Docker容器),编排方案(K8S) 架构:

  • laas (Infrastructure as a Service)
  • Paas (Platform as a Service)
  • Saas (Software as a Service)
  • FaaS (Function as a Service)

3.2 云原生

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

  • 虚拟化容器
  • 快速扩缩容 微服务架构:
  • 业务功能单元解耦
  • 统一的通信标准 DevOps:
  • 敏捷开发
  • CI/CD 服务网格:
  • 业务与实例解耦
  • 异构系统治理统一化
  • 复杂治理能力

cite

  1. 服务端经典的C10k问题(译) - 知乎 (zhihu.com)