架构初探| 青训营笔记

100 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记。因为个人平时写markdown笔记比较随意,挑出来一些相对比较系统的,加上回顾以前的ppt和材料,到这里基本就整理完毕了。这里感谢兰老师,讲的非常清楚,孩子学的很高兴。

所谓架构,就是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。最简单的架构就是单机,把所有功能都实现在一个进程里,部署在一台机器上,相当于一个人开店。

但是单台机器能够满足的需求毕竟有限。这时我们可以采用单体架构,把进程部署在多个机器,引入负载均衡层。这就相当于由一个人开店转向多个人开店,每个人都能独当一面,最后有一个前台经理面向用户,引导用户选择服务员,平衡工作量。

在单体架构的基础上把不同应用的代码从大进程中垂直拆分出来,就是垂直应用架构,相当于再让每个人各自承担一整块的职责。

在单体架构和垂直应用架构的基础上,根据模块、职责对架构进行水平拆分,把原本包含了众多复杂逻辑的进程按照功能单元抽象成多个服务,以服务为基本单元,并为它们之间的通信定义标准,就是SOA架构。这相当于把职责再拆分成销售和生产,通信机制就是销售和生产之间的协作。目前的微服务架构就是SOA去中心化的演进方向,相当于把销售和生产再细分成多层,每个层有多个单元,各个有业务相关关系的层两两独立进行通信。目前,微服务架构也带来了数据一致性问题、高可用问题、治理问题、“过微”导致运维成本过高的问题等等。