【JavaEE】【SpringCloud】概述

目录

  • 一、认识微服务
    • [1.1 单体架构](#1.1 单体架构)
    • [1.2 集群和分布式](#1.2 集群和分布式)
  • 二、微服务架构
  • [三、Spring Cloud 介绍](#三、Spring Cloud 介绍)
  • [四、SpringCloud 实现⽅案](#四、SpringCloud 实现⽅案)
    • [4.1 Spring Cloud Netflix](#4.1 Spring Cloud Netflix)
    • [4.2 Spring Cloud Alibaba](#4.2 Spring Cloud Alibaba)

一、认识微服务

1.1 单体架构

单体架构:将业务的所有功能实现都打包在一个项目中

例如电商系统,将所有功能都实现在一个Web项目中,统⼀部署到⼀个Web服务器中属于单体架构:

⽤⼾量越来越⼤,需求也会越来越多,流量也会越来越⼤,单体架构服务可能就会⾯临以下问题:

  • 后端服务器的压⼒就会越来越⼤, 负载越来越⾼, 甚⾄出现⽆法访问的情况
  • 业务场景逐渐复杂. 为了满⾜⽤⼾的需求, 单体应⽤也会越来越⼤. 各个业务代码之间的耦合度也会越来越⾼. 任何⼀个问题, 都需要整个项⽬重新构建, 发布.
  • ⼀个微⼩的问题, 可能会导致整个应⽤挂掉

优化方案:

  • 横向: 添加服务器, 把单台机器变成多台机器的集群.
  • 纵向: 按照业务进⾏拆分, 把⼀个应⽤, 拆分为多个项⽬. 此架构也称为垂直架构.

将上面的电商系统就优化为:

1.2 集群和分布式

  • 集群(cluster):是将⼀个系统完整的部署到多个服务器上, 每个服务器都能提供系统的所有服务, 多个服务器通过负载均衡调度完成任务. 每个服务器称为集群的节点(node)
  • 分布式:是将⼀个系统拆分为多个⼦系统,多个⼦系统部署在多个服务器上,多个服务器上的⼦系统协同合作完成⼀个特定任务.

集群与分布式联系与区别:

  1. 概念:集群是多台计算机做同一件事,分布式是多台计算机做不同的事
  2. 功能:集群的每⼀个节点功能是相同的 , 并且可以替代的。 分布式也是多个节点组成的系统,但是每个节点完成的业务是不同的, ⼀个节点出现问题, 这个业务就不可访问了。
  3. 关系:分布式和集群在实践中, 很多时候是互相配合使⽤的. ⽐如分布式的某⼀个节点, 可能由⼀个集群来代替. 分布式架构⼤多是建⽴在集群上的. 所以实际的分布式架构设计中并不会把分布式和集群单独区分, ⽽是统称: 分布式架构.

二、微服务架构

微服务:把⼀些通⽤的, 会被多个上层服务调⽤的共享业务, 提取成独⽴的基础服务, 组成⼀个个微⼩的服务. 这就是微服务. ⼀个服务只对应⼀个单⼀的功能, 只做⼀件事. 这个服务可以单独部署运⾏。

微服务是⼀种经过良好架构设计的分布式架构⽅案。

分布式架构与微服务架构:

  • 分布式: 服务拆分, 拆了就⾏。
  • 微服务: 指⾮常微⼩的服务, 更细粒度的垂直拆分, 通常指不能再拆的服务。

分布式架构侧重于压⼒的分散, 强调的是服务的分散化.

微服务侧重于能⼒的分散, 更强调服务的专业化和精细分⼯.

微服务优势与挑战

三、Spring Cloud 介绍

Spring Cloud提供了⼀些可以让开发⼈员快速构建分布式服务的⼯具, ⽐如配置管理, 服务发现, 熔断, 智能路由等.他们可以在任何分布式环境中很好的⼯作.

Spring Cloud就是分布式微服务的一站式解决方案。

  • Distributed/versioned configuration 分布式版本配置
  • Service registration and discovery 服务注册和发现
  • Routing 路由
  • Service-to-service calls 服务调⽤
  • Load balancing 负载均衡
  • Circuit Breakers 断路器
  • Distributed messaging 分布式消息

Spring Cloud并不是Spring团队研发的框架,它只是把一些比较优秀的解决微服务架构中常见问题的开源框架基于SpringCloud规范进行了整合,并基于SpringBoot的风格,对这些组件进行封装,屏蔽掉了复杂的配置和实现原理.为开发者提供了开箱即用的微服务开发体验。\这些开源技术的框架是由各个公司来维护的.Spring Cloud就是这些微服务的大管家.

版本:我们使用SpringCloud版本,要与SpringBoot版本,组件版本要对应。

  • SpringCloud版本与SpringBoot对应版本:
  • 对应组件版本概览:
  • 最新 SpringCloud版本 与 组件版本对应:

四、SpringCloud 实现⽅案

在Spring Cloud的规范下, 有很多实现, 其中最为出名的是:

  • Spring Cloud Netflix
  • Spring Cloud Alibaba

4.1 Spring Cloud Netflix

包含的组件及其主要功能⼤致如下:

  • Eureka: 服务注册和发现
  • Zuul: 服务⽹关
  • Ribbon: 负载均衡
  • Feign: 服务调⽤组件
  • Hystrix: 断路器, 提供服务熔断和限流
  • Hystrix Dashboard: 监控⾯板

Netflix公司在2018年前后宣布其核⼼组件Hystrix、Ribbon、Zuul等均进⼊维护状态.

spring-cloud-netflix 并没有从Spring Cloud的依赖中完全删除, 只是从2020.0版本起, 他只管理Eureka.

Netflix 推荐替代品 说明
Hystrix Resilience4j Hystrix也推荐⼤家使⽤Resilience4j代替⾃⼰
Hystrix Dashboard / Turbine Micrometer + Monitoring System 说⽩了,监控这件事交给更专业的组件去做
Ribbon Spring Cloud Loadbalancer 忍不住了,Spring终究亲⾃出⼿
Zuul Spring Cloud Gateway 忍不住了,Spring终究亲⾃出⼿
Archaius Spring Boot外部化配置 + Spring Cloud配置 ⽐Netflix实现的更好、更强⼤

4.2 Spring Cloud Alibaba

Spring Cloud Alibaba

SpringCloud官⽅ Spring Cloud Netflix Spring Cloud Alibaba
服务注册/发现 Eureka Eureka Nacos
服务调⽤ OpenFeign Feign Dubbo
配置中⼼ SpringCloudConfig Archaius Nacos
服务⽹关 SpringCloudGateway Zuul SpringCloudGateway
负载均衡 SpringCloud LoadBalance Ribbon Dubbo
相关推荐
计算机学姐2 小时前
基于SpringBoot的共享单车管理系统【2026最新】
java·spring boot·后端·spring·java-ee·intellij-idea·mybatis
Coder_Boy_2 小时前
Spring AI 源码核心分析
java·人工智能·spring
、BeYourself2 小时前
Spring AI ChatClient -Prompt 模板
java·后端·spring·springai
专注于大数据技术栈2 小时前
java学习--第三代日期时间
java·学习
Yang-Never2 小时前
Android 内存泄漏 -> LiveData如何解决ViewMode和Activity/Fragment之间的内存泄漏
android·java·开发语言·kotlin·android studio
ZLZQ_Yuan2 小时前
线程池使用
java
不爱吃糖的程序媛2 小时前
鸿蒙PC端Java应用开发实战:从环境适配到系统信息采集
java·华为·harmonyos
鹿角片ljp2 小时前
深入理解Java集合框架:核心接口与实现解析
java·开发语言·windows
小贝IT~2 小时前
基于SpringBoot的网页时装购物系统-049
java·spring boot·后端