后端架构的介绍 | 青训营笔记

90 阅读2分钟

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

架构的定义

全程软件架构。

  • 是整体结构的抽象描述
  • 用于指导系统各个方面的设计

由于一个软件的实现有很多种方法, 架构的重要性体现在对这些方法的选择起关键的指导作用。 所以说它是软件的「地基」。

架构的演进

单机

把所有功能实现在一个进程内,部署在一台机器上。

优点

  • 简单。 现实应用中的应用需求不会非常简单, 而单机的服务模式除了简单以外没有任何优点。 所以单机的服务模式一般只会出现在初创阶段, 只要业务需要发展,这个架构就应该被迭代。

产生的问题

  • C10K problem。 尽管高性能网络编程的技术发展相当迅速, C10K 问题已经逐渐得到解决, 然而互联网的发展也更加迅速, 我们正面临 C10M、C10B 等问题。 这说明了单机架构有性能瓶颈。
  • 运维需要停服。 因为服务只由唯一的机器上面的唯一进程提供, 一旦有用户在使用服务,技术人员就没办法进行运维。
  • 单机处理能力有限。 随着业务的不断增长, 单机的硬件资源很有可能不再满足要求

演进

如何提供更多的服务

单体、垂直应用/垂直切分

单体架构:分布式部署

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

优点

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

产生的问题

  • 指责太多,开发效率低
  • 爆炸半径大

演进

如何提高服务的效率

SOA、微服务/水平切分

SOA(Service-Oriented Architecture):

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

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

产生的问题

  • 数据一致性
  • 高可用
  • 治理
  • 解耦与过微的平衡