企业级后端框架 | 青训营笔记

110 阅读4分钟

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

企业级后端框架 | 青训营笔记

架构演进历史

  • 单体架构
  • 垂直应用架构
  • 分布式架构
  • SOA架构
  • 微服务架构

单体架构

 单体架构是一个程序里包含了一个系统/产品的所有业务功能,比如一个ERP系统,就包含了商品模块、订单模块、采购模块、销售模块、库存模块、报表模块等等,这个程序在部署时就是一个进程,比如把war包部署到tomcat中。

image.png

单体架构优缺点

  • 优点
    • 小项目开发快成本低
    • 架构简单
    • 易于测试
    • 易于部署
  • 缺点
    • 大项目模块耦合严重,不易开发,维护,沟通成本高
    • 新增业务困难
    • 核心业务与边缘业务混合在一块,出现问题互相影响

垂直架构

根据业务把项目垂直切割成多个项目,因此这种架构称之为垂直架构。

垂直架构优缺点

  • 垂直架构的优点
    • 系统拆分实现了流量分担,解决了并发问题。
    • 可以针对不同的模块进行优化
    • 方便水平扩展,负载均衡,容错率提高
    • 系统间相互独立,互不影响,新的业务迭代时更加高效
  • 垂直架构的缺点
    • 服务之间相互调用,如果某个服务的端口或者IP地址发生改变。调用的系统得手动变化
    • 搭建集群之后,实现负载均衡比较复杂。比如:内网负载,在迁移得时候会影响调用方的路由,导致线上故障·服务之间调用方式不统一,基于httpclient,webservice,接口协议不统一
    • 服务监控不到位

SOA架构

分层:按照业务性质分层,每一层要求简单和容易维护

  • 应用层(展示层)︰距离用户最近的一层也称为接入层,可以使用Tomcat作为web容器。接受用户请求,使用下游的服务提供的接口来返回数据,并且该层禁止访问数据库
  • 业务服务层:根据具体的业务场景演变而来的模块,为应用层提供接口
  • 基础业务层:业务的核心
  • 存储层:存储数据实体,或者数据记录

SOA架构优缺点

  • 优点
    • 实现服务注册和服务发现
    • 服务以接口为粒度,为开发者屏蔽远程调用底层细节,使用面向接口远程方法调用,屏蔽了底层调用细节
    • 业务分层以后架构清晰,并且每个业务模块职责单一,扩展性更强
    • 服务责任易确定,每个服务可以确定责任人,这样更容易保证服务质量和稳定
  • 缺点
    • 粒度控制复杂,如果没有控制好服务的粒度,服务的模块就会越来越多,就会引发请求超时
    • 服务接口数量不宜控制,容易引发接口爆炸,所以服务接口建议以业务场景进行单位划分,并对相近的业务做抽象,防止接口爆炸
    • 调用链路长,服务质量不可监控,调用链路变长,下游抖动可能会影响到上游业务,易产生"雪崩"效应

微服务架构

微服务架构是SOA架构的一种拓展,这种架构模式下它拆分粒度更小,服务更独立,把应用拆分一个个微小的服务,微服务的关键在于微小、独立、轻量级通信。

微服务架构优缺点

  • 优点

    • 微服务便于特定业务功能的聚焦
    • 每个微服务都可以被⼀个⼩团队单独实施(开发、测试、部署上线、运维),团队合作⼀定程度解耦,便于实施敏捷开发
    • 微服务便于重⽤和模块之间的组装
    • 微服务的独⽴性,使得不同的微服务可以使⽤不同的语⾔开发,松耦合
    • 微服务架构下,我们可以更好的实现DevOps 开发运维一体化
  • 缺点

    • 分布式微服务架构复杂难以管理,当服务量增加时,管理越加复杂
    • 微服务架构下,分布式链路跟踪难

引用参考