这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
本文主要是为了对架构进行一个初步了解
定义
架构,又称软件架构。是有关软件整体结构额组件的抽象描述,由于指导软甲系统各个方面的设计。通俗来讲,实现一个软甲有很多方法,架构在方法选择上起着至关重要的指导作用。
重要性
架构相当于建房子时的地基,地基打得好大厦才能建得高。站在巨人的肩膀上才能看得更远。
单机
软件系统需要具备对外提供服务。单机就是将所有的功能都实现在一个进程里并部署在一台机器上。
优点:
结构简单,易部署。
问题:
- C10K 问题
- 运维需要停服。
单体架构
分布式部署。每个进程还是做全部的工作,但是使用多个进程。
垂直应用架构(垂直切分)
按应用垂直切分的单体
优点:
- 水平扩容
- 运维不需要停服
问题
- 每个进程职责还是 太多,开发效率不高
- 爆炸半径大
因此想到应该分工协作。
SOA、微服务
定义:
SOA:(Service-Oriented Architecture)。将应用的不同功能单元抽象为服务,同时它需要定义服务之间的通信标准。
微服务架构:SOA 的去中心化演进方向。 服务拆分得更加细微。
问题:
- 数据一致性:怎么在不同的服务之间保证数据传递的一致性。
- 高可用:这么多服务如何进行合作。
- 解耦vs过微:服务拆分得过多会使得成本增加,这样是否值得。
总结
架构的演化是由于需求量越来越大,需要更多的服务,同时功能越来越复杂,需要分工合作。因此产生了先竖着切使得服务能力增加。后面又横向切,使得服务越来越独立丰富。