[架构学习|青训营笔记]

181 阅读4分钟

[架构学习|青训营笔记]
这是我参加「第五届青训营」伴学笔记创作活动的第三天

前言

记录青训营后端专场学习过程,有不足的地方还请大佬指正。 由于本人基础较为薄弱,所以笔记尽可能详细。


一、简述架构

该篇幅将用面包店的例子来简述架构

架构的定义:

  • 是有关软件整体结构和组件的抽象描述
  • 用于指导软件系统各个方面的设计
    实现一个软件的方法有很多种,架构在方法选择上起着至关重要的指导作用。

通过对面包店的设计迭代过程来简述架构

单机架构 :

单机:单机就是把所有的功能都实现在一个进程里,并部署在一台机器上。
用面包店来解释单机架构就是蛋糕店里的兰师傅包揽了所有活,如售卖面包、制作面包等。

截屏2023-02-01 23.33.57.png

单机架构的优点:

  • 简单

缺点:

  • 如果需要运维,则需要停止该服务器,即需要停服。

随着用户量的增加,单机架构会出现应付不过来的情况。在10K个客户同时访问服务器的情况下,随着epoll、kueue等技术的不断发展,高性能网络编程逐渐回答了C10K的问题。但是随着互联网快速发展,终端用户的极速增加,我们会面临C10M、C10B等问题。也就是说,单体服务是有架构瓶颈的。

形象地说,面包店的例子中,仅靠兰师傅一个人自己卖蛋糕、做蛋糕等。无论兰师傅怎么磨练手速,每天能卖出去的量也是有上限的。

单体、垂直应用架构|垂直切分

单体架构:分布式部署 垂直应用架构:按应用垂直切分的单体

优点:

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

问题:

  • 职责太多,开发效率不高
  • 爆炸半径大

解释局限:随着业务场景越来越复杂,服务的职责也越来越多。开发者不但要关心web后端的业务逻辑,还要关心缓存、持久化存储,甚至跟机器打交道。长此以往,开发者很难分出精力专注于业务逻辑的开发。 截屏2023-02-04 16.31.54.png

SOA、微服务架构|水平切分

SOA(Service-oriented Architecture):
1、将应用的不同功能单元抽象为服务。 2、定义服务之间的通信标准
微服务架构:SOA的去中心化发展

服务:是根据功能抽象出来的概念,比如说,处理用户登录信息的passwd的服务,负责持久化存储的数据库服务,为了加快查询速度的的缓存服务。
通信标准:是服务之间通信的基石。没有定义好的通信标准,就好比多个做蛋糕的师傅语言不通,难以协作。

在该架构下,我们获得了如下好处:

  • 不同模块的开发人员可以专心于自己的业务逻辑了,开发迭代效率得到了显著提升。
  • 各个服务独立运维,变更操作的影响面可控,应用整体的稳定性得到了提高。

截屏2023-02-04 16.51.03.png

需解决经过水平切分、竖直切分所产生的一系列问题:

1、由单机部署演进来的分布式架构,如何解决数据一致性问题?
2、服务越来越多,依赖越来越复杂,如何做到高可用?
3、一个团队甚至一个人可能同时管理多个微服务,如何运维?
4、微服务的目标是强化单一职责,控制爆炸半径,如何在解耦和「过微」之间取舍?

架构总结:

架构的演进初衷:好比做蛋糕。

  • 需求量越来越大,终归要增加人手。
  • 越多越复杂,终归要分工合作。

架构的演进思路:就像切蛋糕。蛋糕越来越大,一口吃不下终归要切分。

  • 竖着切(垂直切分)
  • 横着切(水平切分)