【SpringCloud深入浅出系列】SpringCloud五大核心组件实例

SpringCloud 五大核心组件实例

  • 前言
  • 一、Spring Cloud 是什么?
  • 二、Spring Cloud 五大核心组件
    • 1.Netflix Eureka(服务发现)
    • 2.Netflix Ribbon(客户端负载均衡)
    • 3.Netflix Hystrix(断路器)
    • 4.Netflix Zuul(服务网关)
    • 5.Spring Cloud Config(分布式配置)
  • 三、项目实例
    • 1.Netflix Eureka(服务发现)
    • 2.Netflix Ribbon(客户端负载均衡)
    • 3.Netflix Hystrix(断路器)
    • 4.Netflix Zuul(服务网关)
    • 5.Spring Cloud Config(分布式配置)
  • 总结


前言

本文通过创建项目实例详细介绍 SpringCloud 五大核心组件的使用。

一、Spring Cloud 是什么?

Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。Spring Cloud 并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

二、Spring Cloud 五大核心组件

Spring Cloud 是微服务架构的集大成者,将一系列优秀的组件进行了整合。以下重点介绍 Netflix Eureka(服务发现)、Netflix Ribbon(客户端负载均衡)、Netflix Hystrix(断路器)、Netflix Zuul(服务网关)、Spring Cloud Config(分布式配置)五大核心组件。

1.Netflix Eureka(服务发现)

Eureka 是 Netflix 开发的服务发现框架,本身是一个基于 REST 的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。
Eureka 包含两个组件:Eureka Server 和 Eureka Client。
Eureka Server 提供服务注册服务,各个节点启动后,会在 Eureka Server 中进行注册,这样 EurekaServer 中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client 是一个java客户端,用于简化与 Eureka Server 的交互,客户端同时也就是一个内置的、使用轮询(round-robin) 负载算法的负载均衡器。

2.Netflix Ribbon(客户端负载均衡)

Ribbon是一个客户端负载平衡器,可以很好地控制HTTP和TCP客户端的行为。
Spring Cloud有两种客户端负载均衡的服务调用方式,一种是Ribbon+RestTemplate,另一种是Feign(通常在实际应用中,选择Fegin)。
通过 Spring Cloud Ribbon 的封装,我们在微服务架构中使用客户端负载均衡调用非常简单,只需要如下两步:
1.服务提供者只需要启动多个服务实例并注册到一个注册中心或是多个相关联的服务注册中心。
2.服务消费者直接通过调用被 @LoadBalanced 注解修饰过的 RestTemplate 来实现面向服务的接口调用。

3.Netflix Hystrix(断路器)

Hystrix 由 Netflix 开源,实现断路器。在微服务架构中,通常有多层服务调用。较低级别的服务的服务故障可能导致用户级联故障。当对特定服务的呼叫达到一定阈值时(Hystrix 中默认为5秒20次),断路器会被打开,向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延。
Hystrix 的主要优点之一是它收集关于每个 HystrixCommand 的一套指标。Hystrix 提供仪表盘以有效的方式显示每个断路器的运行状况。

4.Netflix Zuul(服务网关)

Zuul 是 netflix 开源的一个 API Gateway 服务器, 本质上是一个 web servlet 应用。
Zuul 的核心是一系列的 filters, 其作用可以类比 Servlet 框架的 Filter,或者AOP。
Zuul 可以通过加载动态过滤机制,从而实现以下各项功能:
验证与安全保障:
识别面向各类资源的验证要求并拒绝那些与要求不符的请求。
审查与监控:
在边缘位置追踪有意义数据及统计结果,从而为我们带来准确的生产状态结论。
动态路由:
以动态方式根据需要将请求路由至不同后端集群处。
压力测试:
逐渐增加指向集群的负载流量,从而计算性能水平。
负载分配:
为每一种负载类型分配对应容量,并弃用超出限定值的请求。
静态响应处理:
在边缘位置直接建立部分响应,从而避免其流入内部集群。
多区域弹性:
跨越AWS区域进行请求路由,旨在实现ELB使用多样化并保证边缘位置与使用者尽可能接近。

5.Spring Cloud Config(分布式配置)

Spring Cloud Config 为分布式系统中的外部化配置提供服务器和客户端支持。它包含 Server 和 Client 两个部分,Server 提供配置文件的存储、以接口的形式将配置文件的内容提供出去,Client 通过接口获取数据、并依据此数据初始化自己的应用。
通过 Config 组件我们可以快速创建一个配置中心。配置中心读取配置文件通常有两种:一是从 git 仓库读取,一是从本地物理路径读取。

三、项目实例

1.Netflix Eureka(服务发现)

详见:SpringCloud 组件之集成Eureka服务注册中心

2.Netflix Ribbon(客户端负载均衡)

详见:SpringCloud 组件之集成Ribbon实现负载均衡

3.Netflix Hystrix(断路器)

详见:SpringCloud 组件之集成Hystrix实现断路器

4.Netflix Zuul(服务网关)

详见:SpringCloud 组件之集成Zuul实现服务网关

5.Spring Cloud Config(分布式配置)

详见:SpringCloud 组件之集成Config实现分布式配置

总结

以上就是今天要讲的内容,如果大家要了解更多的相关内容,请关注本博客的后续博文。

你可能感兴趣的:(Spring,Boot深入浅出,Java,深入浅出,Spring,Cloud深入浅出,java,springcloud,zuul,eureka)