Spring Cloud 核心组件

Posted by icoding168 on 2020-04-05 22:10:54

分类: Java  

Spring Cloud 是 Spring 社区打造出的一款基于 Spring Boot 用于快速构建分布式系统的微服务框架,它提供了分布式配置、服务注册和发现、服务路由、服务调用、负载均衡、服务熔断、分布式消息等功能。

Spring Cloud 第一代的核心组件基本是用了 Netflix 的开源项目,虽然 Netflix 从 2018 年开始逐渐停止维护这些项目,但 Spring Cloud 还有其他组件可以替代使用。

Eureka

Eureka 主要负责完成微服务架构中的服务治理功能。

Eureka Server : 服务注册中心

Eureka Client : 每个注册到 Eureka Server 的服务都是 Eureka Client

可以替代 Eureka 的组件有 Zookeeper、Consul、Nacos 等。

Ribbon

Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具,Ribbon 可以自动从服务注册中心获取所有服务列表,也可以手动配置服务列表。

Spring Cloud Load Balancer 可以替代 Ribbon。

Feign

Spring Cloud 服务之间互相调用默认的传输协议是 HTTP,默认的序列化协议是 JSON。Spring Cloud Web 提供了一个方便调用 HTTP 接口的 RestTemplate 类,Feign 比 RestTemplate 更方便,用 Feign 可以减少大量重复代码,轻松完成对 http 接口的请求和响应的处理。

Spring Cloud OpenFeign 可以替代 Feign。

Hystrix

Hystrix 实现了断路器、线程隔离等一系列服务保护功能,可以不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。

可以用阿里巴巴的 Sentinel 替代 Hystrix。

Zuul

Spring Cloud Zuul 是一个 API 网关组件,前端、移动端要调用后端系统,统一从 Zuul 网关进入,由 Zuul 网关转发请求给对应的服务。

Spring Cloud Gateway 可以替代 Zuul。

Spring Cloud Netflix 核心组件关系图