SpringCloud1️⃣应用架构 & 微服务组件

1、应用架构

1.1、单体应用

所有业务功能集中在一个项目中开发。

  1. 优点:架构简单,开发效率高,运维成本低。

  2. 缺点

    1. 项目臃肿:整个项目打成一个包,部署在一个容器中运行。

    2. 耦合度高:所有功能都依赖相同的数据库、内存等资源。

    3. 扩展性差:支持水平扩展(部署多台服务器),不支持垂直扩展(单个模块)。

      image-20210713202807818

1.2、分布式集群

将系统根据业务垂直拆分为若干个子系统

基于通讯网络进行数据交互。

  1. 优点

    1. 独立部署:每个子系统是独立的业务功能模块,可部署在不同服务器上。
    2. 耦合度低:每个组件可依赖独立的数据库、内存等资源。
    3. 扩展性良好:支持水平扩展,也支持垂直扩展。
  2. 缺点:调用关系复杂,多个子系统的功能存在较多冗余。

    image-20210713203124797

1.3、SOA

面向服务架构(Service-Oriented Architecture):基于分布式集群的优化

将系统根据服务拆分为若干个模块

子系统和服务之间通过 ESB 消息总线通信。

  1. 优点:提高系统的可重用性和可维护性,降低耦合度。
  2. 缺点:系统与服务的界限模糊,服务拆分的粒度较粗。

1.4、微服务 (❗)

服务治理:若业务系统复杂,服务之间的关系会变得混乱,需要服务进行管理。

主要包括以下方面

  1. 拆分粒度
  2. 远程调用
  3. 集群地址维护
  4. 健康状态感知

微服务(Microservice):基于 SOA 的优化

是一种具有良好设计的分布式架构方案。

  1. 实现

    • 将系统根据功能划分为一组细粒度的微服务
    • 服务之间采用轻量级通信机制(如 HTTP, RPC)进行数据交互。
  2. 优点

    1. 单一职责:微服务拆分粒度更小,每个服务对应唯一的业务能力。

    2. 自治:团队独立、技术独立、数据独立,独立部署和交付。

    3. 面向服务:服务提供统一标准的接口。

    4. 隔离性强:服务具有良好的隔离、容错、降级机制,避免出现级联问题。

      image-20220602152155990

2、微服务组件

组件

  1. 服务集群:多个服务组成的一个完整应用。
  2. 注册中心:注册服务信息,管理微服务集群。
  3. 配置中心:对微服务应用的统一配置管理。
  4. 服务网关:微服务应用的入口,可实现请求路由和负载均衡。
  5. 服务监控:对微服务进行监控,发生故障时可及时排查和处理。

技术对比

  • Dubbo:阿里巴巴早期实现的 RPC 框架,不算真正意义上的微服务。

  • Spring Cloud:基于 Spring Boot 对已有服务框架的整合。

  • Spring Cloud Alibaba:在兼容 Spring Cloud 的基础上进行扩展,更符合国内微服务架构。

    Dubbo Spring Cloud Spring Cloud Alibaba
    注册中心 ZooKeeper、Redis Eureka、Consul Nacos、Eureka
    服务远程调用 Dubbo 协议 Feign(HTTP 协议) Dubbo、Feign
    配置中心 Spring Cloud Config Spring Cloud Config、Nacos
    服务网关 Spring Cloud Gateway、Zuul Spring Cloud Gateway、Zuul
    服务监控和保护 dubbo-admin(弱) Hystix Sentinel

3、Spring Cloud

Spring Cloud 官网

  • 集大成者:集成已有的成熟的服务框架。

    image-20210713204155887

  • 开箱即用:基于 Spring Boot 实现组件的自动装配,做到一键启动和部署。

    image-20220602153848789

Hint:Spring Cloud ≠ 微服务

Spring Cloud 解决了服务治理问题,但微服务中还包括其它组件。

posted @ 2022-06-02 15:49  Jaywee  阅读(45)  评论(0编辑  收藏  举报

👇