这是我参与「第五届青训营 」伴学笔记创作活动的第 17 天
历史架构
互联网需求的爆炸式增长催生了互联网服务架构的不断演化,当然不管架构如何演化,其趋势是向着高可用,易维护,低延迟,智能扩缩容等靠近。本节简要介绍架构发展过程中,所涉及的主要架构的特征与优劣:
单体架构
- 特征: 简称All in one, 特征即所有的服务都在一台机器上运行。
- 优势:
- 由于涉及到的服务间的信息传递最多也就是本机的程序间通过特定的方式在本地完成信息传输(例如Linux的通道),所以没有信息的传递成本,因此也几乎不会出现在网络中传输所可能出现的问题,降低了服务间信息传输的复杂度。
- 单机架构避免了利用多余的冗余来保证系统的高可用性和强一致性。
- 劣势:
- 由于单机的服务模块耦合程度高,debug涉及的组件模块过多,会导致debug相当困难。
- 单一服务出现问题,可能导致整个系统的崩溃,服务模块间的高度耦合导致了单一模块的内部错误很容易传递到整个系统,降低系统的可行性。
- 由于模块之间存在耦合,所以如何进行系统的协同开发也是一个比较复杂的问题。
垂直应用架构
- 特征: 服务模块按照业务线进行垂直划分,举个生活中的例子:有家饭馆业务包括烧烤,火锅,家常菜三个部分,饭馆的经营模式是为这三个业务各安排一套工作人员,各自独立运行互不干扰。类似这样的模式就是垂直应用架构。
- 优势:
- 很显然这种模式保证了业务的独立运行,单个业务出现问题不会导致整个系统的崩溃。
- 劣势:
- 由于业务间的通信利用系统数据库完成的,因此各个垂直业务内部一定存在冗余。
- 每个垂直业务在内部还是单体架构,还存在单体架构的问题。
分布式架构
- 特征: 将垂直切分的业务模块中与业务无关的业务逻辑抽出单独组成一个基础服务层。
- 优势:
- 部分服务与具体的业务解耦合,降低了系统的冗余。
- 服务层的独立增强了系统的可扩展性。
- 劣势:
- 由于服务层被独立出来,所有的业务进程有可能都在调用相同的服务,一旦某个服务出现问题,会直接导致整个系统的不可用。
- 业务层对服务层有复杂的调用关系,一旦出现错误,可能比较难去复现错误出现的场景。
- 业务层仍然存在一定的冗余。
SOA(Service Oriented Structure)架构
- 特征:面向服务开发。
- 优势:
- 引入服务注册中心,将业务层和服务层进行进一步的解耦合,有利于系统维护。
- 劣势:
- 服务中心的存在是中心化的,可能的单点故障会导致系统的彻底瘫痪。
- 设计过程是从上至下的,这会导致功能的遗失以及冗余。
- 自上而下的设计注定了该系统的重构是困难的。