微服务架构概述

时间:2023-01-15 08:56:17


一、架构演变

1.1 单体架构

讲业务的所有功能集中在一个项目中开发,打成一个包部署。
优点:架构简单,部署成本高。
缺点:耦合度高。
微服务架构概述

1.2 分布式架构

根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,成为一个服务。
优点:降低耦合度,有利于服务升级拓展。
缺点:运营成本增加了,架构复杂难度大。需要考虑的问题变多。

  • 服务拆分的粒度
  • 服务集群地址的维护
  • 服务之间如何实现远程调用
  • 服务健康状态的感知

微服务架构概述

1.3 微服务

微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。面向服务:微服务对外暴露业务接口。
  • 自治:团队独立、技术独立、数据独立、部署独立。
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题。

微服务技术栈
微服务架构概述
微服务技术对比
微服务架构概述

二、SpringCloud

2.1 简介

SpringCloud是目前国内使用最广泛的微服务框架。官网地址: https://spring.io/projects/spring-cloud,
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:
微服务架构概述

3.2 痛点

  • SpringCloud部分组件停止维护和更新,给开发带来不便;
  • SpringCloud部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制;
  • SpringCloud配置复杂,难以上手,部分配置差别难以区分和合理应用。

三、SpringCloud Alibaba

3.1 简介

  • Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。中文文档:GitHub

  • 依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

3.2 优点

  • 阿里使用过的组件经历了考验,性能强悍,设计合理,现在开源出来大家用;
  • 成套的产品搭配完善的可视化界面给开发运维带来极大的便利;
  • 搭建简单,学习曲线低。

3.3 主要组件

  • Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  • Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  • RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  • Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

3.4 版本对应

  • 2022.x分之对应的是 Spring Cloud 2022 与 Spring Boot 3.0.x,最低支持 JDK 17。
  • 2021.x 分支对应的是 Spring Cloud 2021 与 Spring Boot 2.6.x,最低支持 JDK 1.8。
  • 2020.0 分支对应的是 Spring Cloud 2020 与 Spring Boot 2.4.x,最低支持 JDK 1.8。
  • 2.2.x 分支对应的是 Spring Cloud Hoxton 与 Spring Boot 2.2.x,最低支持 JDK 1.8。
  • greenwich 分支对应的是 Spring Cloud Greenwich 与 Spring Boot 2.1.x,最低支持 JDK 1.8。
  • finchley 分支对应的是 Spring Cloud Finchley 与 Spring Boot 2.0.x,最低支持 JDK 1.8。
  • 1.x 分支对应的是 Spring Cloud Edgware 与 Spring Boot 1.x,最低支持 JDK 1.7。