微服务架构|青训营笔记

61 阅读2分钟

一、微服务架构的由来

在微服务架构出现之前,最常用的架构就是单体架构,俗称"一个jar(war)包打天下"。在一个jar包工程中,采用MVC架构,分为表现层,业务层,数据访问层,所有的业务模块,都放在这个工程中集成

随着软件行业规模的增长,这种单体架构的弊端也越来越多,包括:

  1. 耦合性高,某个地方出问题,很可能影响其他业务模块的使用
  2. 代码管理成本高,项目沉重,并会随着需求的增加越来越重
  3. 随着访问量的增多,这种架构的工程并发力不够

二、微服务架构优势与劣势

优势: 复杂的业务拆分成多个业务,每个业务是一个独立的微服务,彻底的去耦合,利于分工,当需要增加业务的时候,可以方便创建新的微服务扩展业务,而不用担心有没有别的地方耦合 每个微服务都是独立部署的,如果其中一个宕机了,不会影响整个系统;也方便功能变更时,服务的部署;当流量增大后,可以将服务集群化部署,增强抗击高并发的能力 每个微服务之间可以使用不同的编程语言和不同的数据库

劣势: 在复杂程度上来说,微服务比单体建构要更为复杂些 部署比单体项目复杂 服务之间是用HTTP协议通信的,通信成本比单体项目高 数据一致性问题。

三、适用场景

通过上面的描述可以看出,微服务在解决了单体架构带来的问题的同时,也出现了部署复杂,需要增加中间件联络各服务的问题。所以,不是所有的场景都推荐使用微服务架构,具体如下: 适用场景:

①:大型复杂的项目…(来自单体架构200W行代码的恐惧)

②:快速迭代的项目…(来自一天一版的恐惧)

③:并发高的项目…(考虑弹性伸缩扩容的恐惧)