架构初探|青训营笔记

46 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第6天。

本节课中以蛋糕店为例,按照不同架构不断优化迭代,初步介绍了各种架构的概念。

什么是架构:

架构是软件系统整体架构的抽象描述,用来指导软件系统的设计,类似于建筑的设计图。

1.单机架构:

将所有功能放在一个进程中,部署在一部机器上。在学校的作业等项目基本都属于单机架构。

优点:实现简单,部署也简单。

缺点:因为只有一个进程一个实例,维护需要停服,此期间用户无法访问。

之前有C10k(concurrent 10000 connection)问题,即如何处理10k并发请求。如今C10K问题解决了,但随着网络发展又产生了C10M、C10B等问题,单机架构有性能瓶颈。单机架构是最基本的架构,简单粗暴,除了简单基本无优点。

2.垂直切分:单体&垂直应用

引入了分布式部署,将业务进程部署在不同机器上。再垂直切分,加入一个负载均衡层,统筹调度,用户的请求会先经过负载均衡层,再分配到各个机器上。

单体架构:只是将功能一样的机器进行分布式部署。

垂直应用架构:单体架构基础上拆分功能,不同机器可以分工运行不同功能。

优点:可以水平扩容,解决了单机维护时不能访问的问题,也能通过扩容来一定程度解决性能问题

缺点:职责切分的不够细,开发维护比较麻烦。出错时牵一发动全身,一台机器出问题会影响很多功能,甚至系统瘫痪。

3.水平切分:SOA&微服务

SOA(Service-Oriented Architechture): 把进程按功能拆分成服务,如登录、读写缓存、读写数据库等。

微服务:SOA的去中心化演化方向,比中心化的更加普适和可拓展。

优点:职责分的更细,开发维护更简单,出问题的爆炸半径减小。

缺点:引入了麻烦的问题——数据一致性需要保证、高可用(服务变多变复杂)、容灾治理(机器变多必然出错)、解耦过微运维成本过高

架构小结

  • 背景:需求量大、任务复杂
  • 目的:增加人手、细化分工
  • 思路:垂直切分、水平切分