SpringCloud简介
一、SpringCloud是什么?
SpringCloud是分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶。
SpringCloud最擅长的就是集成,把其他框架拿过来集成到自己的项目中。
SpringCloud也是一样,它将现在非常流行的一些技术融合到了一起,实现了诸如:服务发现注册、配置管理、服务发现、智能路由、负载均衡、熔断器、控制总线、集群状态等功能。其主要涉及的组件包括:
- 基于Netflix实现服务治理、客户端负载均衡和声明式调用;
- 服务网关;
- 微服务容错管理;
- 整合消息中间件提供消息驱动式开发
- 基于Spring Security提供微服务安全、单点登录功能
- 分布式、版本化的统一配置管理
- 微服务调用链及追踪管理
SpringCloud架构图
二、SpringCloud组件概览
SpringCloud的组件分为两大类型
第一种是依赖其他组件并提供服务的,主要有Ribbon、Hystrix、Feign、Stream、Bus、Sleuth
Ribbon:客户端负载均衡,特性有区域亲和、重试机制
Hystrix:客户端容错保护,特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离。
Feign:声明式服务调用,本质上就是Ribbon+Hystrix
Stream:消息驱动,有Sink、Source、Processor三种通道,特性有订阅发布、消费组、消息分区。
Bus:消息总线,配合Config仓库修改得一种Stream实现。
Sleuth:分布式服务追踪,需要搞清楚TraceID和SpanID以及抽样,如何与ELK整合。
第二种是独自启动不需要依赖其他组件,主要有Eureka,Dashboard,Turbine,Zuul,Config。
Eureka:服务注册中心,特性有失效剔除、服务保护。
Dashboard:Hystrix仪表盘,监控集群模式和单点模式,其中集群模式需要收集器Turbine配合
Turbine:集群收集器,服务于Dashboard。
Zuul:API服务网关,功能有路由分发和过滤。
Config:分布式配置中心,支持本地仓库、SVN、Git、Jar包内配置等模式。
Spring核心功能组件
服务治理:SpringCloud Netflix Eureka
服务容错:SpringCloud Circuit Breaker
服务网关:SpringCloud Gateway
配置中心:SpringCloud Config
事件驱动:SpringCloud Stream
服务安全:SpringCloud Security
链路跟踪:SpringCloud Sleuth
服务测试:SpringCloud Contract
三、SpringCloud核心组件详解
SpringCloud核心组件主要包括Spring Cloud Netflix项目下的Eureka、Ribbon、Hystrix、Zuul以及Config和Feign。
1、Eureka
Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Reigstry和Service Discovery实现,也是Spring Cloud体系中最重要最核心的组件之一。Eureka提供了服务注册中心、服务发现客户端、以及注册服务的UI界面应用。
我们可以把Eureka看作是一个服务中心,所有的可以提供的服务都注册到它这里来管理,其他调用者需要的时候去注册中心获取,然后再进行调用。这样就避免了服务之间的直接调用,方便后续的水平扩展、故障转移等。服务注册中心是非常重要的组件,一旦挂掉将会影响全部服务,因此需要搭建Eureka集群来保持高可用性,生产环境中最少两台。在Eureka的实现中,节点之间相互平等,有部分注册中心"挂掉"也不会对整个应用造成影响,即使集群只剩一个节点存活,也能正常的治理服务。即使所有的服务注册节点都宕机,Eureka客户端中所缓存的服务实例列表信息,也可以让服务消费者能够正常工作,从而保障微服务之间的相互调用的健壮性和弹性。
如下图所示:
Eureka服务器(注册中心)是一个Eureka Server,提供服务注册和发现功能;
Eureka客户端(服务生产者)是一个Eureka client,从注册中心注册、获取信息,用来提供服务;
Eureka客户端(服务消费者)也是一个Eureka Client,从注册中心注册、获取信息和进行服务查找,用来消费服务。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)