Spring Cloud核心组件

目录

一、服务注册发现——Eureka

二、远程调用——Feign

 三、负载均衡——Ribbon

 四、熔断器——Hystrix

 五、网关服务——Zuul/Gateway

 六、总结


       Spring Cloud 的一个微服务架构技术栈,一套完整的一站式微服务解决方案。基于Spring Boot 框架简化分布式系统基础设施开发,如服务发现注册、配置中心、消息总线、负载均衡、熔断器、数据监控等,Spring Boot 开发风格能做到一键启动和部署。

       准确的说,Spring Cloud 是一个容器,将市面上较好的微服务框架集成起来,通过Spring Boot 风格进行再次封装屏蔽掉复杂的配置和实现原理,从而得到一套简单易懂、易于部署和维护的分布式系统开发工具,达到简易开发的作用。

一、服务注册发现——Eureka

Eureka是Spring Cloud 的注册服务中心,实现服务注册与服务发现。存储服务提供者和消费者的地址信息、服务发布相关属性信息等内容。当消费者需要调用服务时,可直接在注册中心拉去提供者的地址、端口号、服务名称等内容。

Eureka服务端:服务的注册中心,用来提供服务注册,支持集群部署

Eureka客户端:将服务注册到服务端,  同事将服务端的信息缓存到本地, 客户端和服务端定时交互

Eureka-Server:对外暴露自己地址

二、远程调用——Feign

微服务与微服务之间相互调用时,基于动态代理机制,根据注解调用http请求,拼接url地址,发起远程请求。 Feign组件集成了Ribbon负载均衡策略和Hystrix熔断器。

 三、负载均衡——Ribbon

 Ribbon是一个基于HTTP和TCP客户端负载均衡器,底层还是基于RestTemplate实现。当Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。

 四、熔断器——Hystrix

在微服务架构中,⼀个应用可能会有多个微服务组成,微服务之间的数据交互通过远程过程调⽤完成。当某个服务出现故障时,由于故障原因引发故障蔓延,导致整个系统瘫痪。

Hystrix就是一种为了解决此类问题的服务保护机制。在分布式架构中,当某个服务单元发生故障之后,通过断路器的故障监控,向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延。

Hystrix具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能

Hystrix使用舱壁模式实现线程池的隔离,它会为每一个依赖服务创建一个独立的线程池,不同的服务走不同的线程池,实现不同服务调用隔离,避免服务雪崩问题


 五、网关服务——Zuul/Gateway

Spring Cloud Zuul通过与Spring Cloud Eureka进行整合,将自身注册为Eureka服务治理下的应用,同时从Eureka中获得了所有其他微服务的实例信息,Zuul默认会将通过以服务名作为ContextPath的方式来创建路由映射,Zuul提供了一套过滤器机制,可以支持在API网关无附上进行统一调用来对微服务接口做前置过滤,已实现对微服务接口的拦截和校验

 那我们常使用的网关服务还有Gateway,那么Gateway和Zuul有什么区别呢?

1、gateway对比zuul多依赖了spring-webflux,内部实现了限流、负载均衡等,扩展性也更强,但同时也限制了仅适合于Spring Cloud套件。zuul则可以扩展至其他微服务框架中,其内部没有实现限流、负载均衡等。
  
2、zuul仅支持同步,gateway支持异步。

3、gateway线程开销少,支持各种长连接、websocket,spring官方支持,但运维复杂,
zuul编程模型简单,开发调试运维简单,有线程数限制,延迟堵塞会耗尽线程连接资源。

 六、总结

Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里

Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台

Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求

Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题

Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值