浅谈架构 — 谁动了我的蛋糕 | 青训营笔记

83 阅读2分钟

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

什么是架构

围绕架构的定义和演进两部分内容展开

1. 什么是架构 — 定义

架构,又称软件架构

  • 是有关软件整体结构与组件的抽象描述
  • 用于指导软件系统各个方面的设计

常见软件架构:

  • 单机
  • 单体
  • 垂直应用
  • SOA (Service Oriented Architecture)
  • 微服务 (Microservice)

2. 什么是架构 — 单机

软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上

  • 优点:
    • 简单
  • 缺点:
    • C10K problem
    • 运维需要停服

image.png

  • 演进:如何卖更多的蛋糕? —— 多雇几个蛋糕师傅

3. 什么是架构 — 单体、垂直应用 | 垂直切分

  • 单体架构:分布式部署

image.png

  • 垂直应用架构:按应用垂直切分的单体

image.png

  • 优点:
    • 水平扩容
    • 运维不需要停服
  • 问题:
    • 指责太多,开发效率不高
    • 爆炸半径太大
  • 演进:如何提高做蛋糕效率? —— 分工协作

4. 什么是架构 — SOA、微服务 | 水平切分

  • SOA(Service Oriented Architecture)
  1. 将应用的不同功能单元抽象为服务
  2. 定义服务之间的通信标准

image.png

- **微服务架构**:SOA 的去中心化演进方向

image.png

  • 问题:
    • 数据一致性:装货台共交付了多少蛋糕?
    • 高可用:这么多师傅,如何合作?
    • 治理:烤箱坏了,怎么容灾?
    • 解耦 vs 过微:运维成本高了,值当么?

5. 什么是架构 — 小结

架构的演进初衷:好比做蛋糕

  • 需求量越来越大,终归要增加人手
  • 越做越复杂,终归要分工合作

架构的演进思路:就像切蛋糕。蛋糕越来越大,一口吃不下终归要切分

  • 竖着切 (垂直切分)
  • 横着切 (水平切分)

总结

其实架构无处不在,它不只在计算机中存在,它在我们生活当中也很常见,比如我们着手解决一些问题,首先要计划一套方案,一套流程,这些方案和流程其实就是一种架构。在软件系统中,架构是非常重要的一部分,它统领各个模块的开发和合作。可以把软件架构理解成一栋房子的框架,与现实生活中的房子有异曲同工之处,这个框架有很多个大大小小的房间,每个房间可以放各种类型的东西。框架可以做的很大,也可以做的很小,关键看你的需求。我们需要一个坚固的、多样化的、好用的、可伸缩的、容错性强的房子,这也是我们设计架构所追求的目标。

引用参考

  1. juejin.cn/post/719336…
  2. juejin.cn/course/byte…
  3. bytedance.feishu.cn/file/boxcnu…
  4. www.cn-healthcare.com/articlewm/2…
  5. zhuanlan.zhihu.com/p/510957199