架构初探|青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
什么是架构
架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。架构描述语言(ADL)用于描述软件的体系架构。
通俗的讲,架构就是对如何去构建一个大型软件的规划。
架构的演进
单机架构
单机架构就是把所有的功能都实现在一个进程里,并且部署到一个服务器中。
对于一个业务量很小的系统,这种方式简单可行,但随着业务量的增加,运营与维护可能会出现问题,单机的硬件资源难以适应高需求的场景。并且,由于只有一个服务器,每次维护时都需要停服,用户体验感有待提升。
分布式部署
分布式部署也可以理解为垂直切割,将原本只在一个服务器上提供的服务复制到更多的服务器,并增加一个“负载均衡服务器”用于连接请求与其他服务器。
这种方式进一步提高了服务效率,运维时也不需要停服,当业务量增加的时候再增加服务器的数量即可。
但是,随着服务器的增加,效率会有瓶颈,仍面临效率不够高的问题,没有从根本上解决单机架构效率低的痛点。并且,由于每个服务器都是独立完成所有任务,如果一个位置出现问题,波及的范围广。
SOA架构|微服务架构
SOA架构,是一个组件模型,它将应用程序的不同功能单元称为服务,通过这些服务之间定义良好的接口和契约联系起来。
简而言之,就是将之前在每个服务器中繁琐的任务解耦开来,分成小的功能模块,成为服务,并定义接口连接起来。
而这个接口,也就是服务之间的通信标准,可能随着业务的逐渐庞大而变得复杂,难以维护。因此,微服务架构便应运而生了。
将SOA去中心化的最终结果,就是微服务架构。微服务架构中,每一个服务可以自由通信,效率很高,运维更方便。