SpringCloud五大核心组件

Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案。

服务发现——Netflix Eureka

客服端负载均衡——Netflix Ribbon

断路器——Netflix Hystrix

服务网关——Netflix Zuul

分布式配置——Spring Cloud Config

Eureka

一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。

Ribbon

Ribbon,主要提供客户侧的软件负载均衡算法。


Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略:

  • 简单轮询负载均衡

  • 加权响应时间负载均衡

  • 区域感知轮询负载均衡

  • 随机负载均衡

Ribbon中还包括以下功能:

  • 易于与服务发现组件(比如Netflix的Eureka)集成

  • 使用Archaius完成运行时配置

  • 使用JMX暴露运维指标,使用Servo发布

  • 多种可插拔的序列化选择

  • 异步和批处理操作(即将推出)

  • 自动SLA框架(即将推出)

  • 系统管理/指标控制台(即将推出)

Hystrix

断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久的。断路器模式也使应用程序能够检测故障是否已经解决。如果问题似乎已经得到纠正​​,应用程序可以尝试调用操作。欢迎大家一起学习研究相关技术愿意了解源码的朋友直接求求交流分享技术:2147775633

断路器增加了稳定性和灵活性,以一个系统,提供稳定性,而系统从故障中恢复,并尽量减少此故障的对性能的影响。它可以帮助快速地拒绝对一个操作,即很可能失败,而不是等待操作超时(或者不返回)的请求,以保持系统的响应时间。如果断路器提高每次改变状态的时间的事件,该信息可以被用来监测由断路器保护系统的部件的健康状况,或以提醒管理员当断路器跳闸,以在打开状态。

流程图


Zuul

类似nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性。

Spring Cloud Config

这个还是静态的,得配合Spring Cloud Bus实现动态的配置更新。

更多详细源码参考来源:http://minglisoft.cn/honghu/technology.html

### Spring Cloud五大核心组件功能概述 Spring Cloud 是一系列用于构建分布式系统的框架集合,其主要目标是简化分布式系统基础设施的开发。以下是五个核心组件的功能描述: #### 1. **Eureka 注册中心** Eureka 是 Netflix 开发的一个服务注册与发现组件,被集成到 Spring Cloud 中作为服务治理的核心模块之一。它的作用是在微服务架构中管理各个服务实例的位置和服务状态。 - 功能:提供服务注册和发现机制,允许客户端动态获取其他服务的信息。 - 使用方法: ```java // 启动类添加@EnableEurekaServer注解 @EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } } ``` #### 2. **Ribbon 负载均衡** Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡器,可以很好地控制 HTTP 请求的流量分发。 - 功能:通过 Ribbon 提供多种负载均衡策略(如轮询、随机等),帮助客户端在多个服务器之间分配请求。 - 使用方法: ```yaml # application.yml 配置文件 ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 设置为随机规则 ``` #### 3. **Hystrix 熔断器** Hystrix 是一种熔断器模式的实现,旨在保护应用程序免受级联故障的影响。 - 功能:当某个依赖项发生延迟或失败时,快速响应并返回默认值,防止整个系统崩溃。 - 使用方法: ```java // 添加@HystrixCommand注解定义降级逻辑 @Service public class MyService { @HystrixCommand(fallbackMethod = "fallback") public String callExternalService() { return restTemplate.getForObject("http://example.com", String.class); } public String fallback() { return "Fallback response"; } } ``` #### 4. **Feign 声明式 HTTP 客户端** Feign 是一个声明式的 Web Service 客户端,使得编写 RESTful 客户端变得更加容易。 - 功能:通过接口的方式调用远程服务,减少手动编码的工作量。 - 使用方法: ```java // 创建 Feign 接口 @FeignClient(name = "service-name") public interface MyClient { @GetMapping("/api/resource") String getResource(); } ``` #### 5. **Zuul 服务网关** Zuul 是 Netflix 开源的一款边缘服务工具,主要用于路由管理和过滤器处理。 - 功能:充当 API 网关的角色,负责将外部请求转发至内部微服务,并支持认证、限流等功能。 - 使用方法: ```java // 启动类启用 Zuul Proxy @EnableZuulProxy @SpringBootApplication public class ZuulGatewayApplication { public static void main(String[] args) { SpringApplication.run(ZuulGatewayApplication.class, args); } } // 配置路由规则 zuul: routes: service-a: path: /service-a/** serviceId: service-a-id ``` --- ### 新一代替代方案:Spring Cloud Gateway 虽然 Zuul 曾经是非常流行的网关解决方案,但现在推荐使用更高效的新一代网关——Spring Cloud Gateway[^4]。它基于 Reactor 模型实现了异步非阻塞 I/O,性能优于传统的同步模型。 ```java // Spring Cloud Gateway 示例 @SpringBootApplication public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } } # 配置路由规则 spring: cloud: gateway: routes: - id: service_a_route uri: lb://SERVICE-A-ID predicates: - Path=/service-a/** ``` --- ### 总结 以上介绍了 Spring Cloud 的五大核心组件及其基本使用方式。这些组件共同构成了一个完整的微服务体系结构,能够满足大多数企业应用需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值