2.2.5.1.4 Spring Cloud

Spring Cloud #

TarsCloud/Tars Github stars

国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言。

  • Eureka:各个服务启动时,Eureka Client 都会将服务注册到 Eureka Server,并且 Eureka Client 还可以反过来从 Eureka Server 拉取注册表,从而知道其他服务在哪里
  • Ribbon:服务间发起请求的时候,基于 Ribbon 做负载均衡,从一个服务的多台机器中选择一台
  • Feign:基于 Feign 的动态代理机制,根据注解和选择的机器,拼接请求 URL 地址,发起请求
  • Hystrix:发起请求是通过 Hystrix 的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
  • Zuul:如果前端、移动端要调用后端系统,统一从 Zuul 网关进入,由 Zuul 网关转发请求给对应的服务

Eureka #

Eureka 是微服务架构中的注册中心,专门负责服务的注册与发现。

  • Eureka Client:负责将这个服务的信息注册到 Eureka Server 中
  • Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号

Feign #

Feign 的一个关键机制就是使用了动态代理。

Ribbon #

负载均衡

Ribbon 的负载均衡默认使用的最经典的 Round Robin 轮询算法

Hystrix #

Hystrix 是隔离、熔断以及降级的一个框架。

Hystrix 会搞很多个小小的线程池, 比如订单服务请求库存服务是一个线程池,请求仓储服务是一个线程池,请求积分服务是一个线程池。 每个线程池里的线程就仅仅用于请求那个服务。

解决服务雪崩

  • 熔断

    比如在 5 分钟内请求积分服务直接就返回了,不要去走网络请求卡住几秒钟。 这个过程,就是所谓的熔断!

  • 降级

    每次调用积分服务,你就在数据库里记录一条消息,说给某某用户增加了多少积分,因为积分服务挂了,导致没增加成功!这样等积分服务恢复了,你可以根据这些记录手工加一下积分。 这个过程,就是所谓的降级。

Zuul #

Netflix/zuul Github stars Language Last Tag Last commit

微服务网关

可以做统一的降级、限流、认证授权、安全等等


本文访问量

本站总访问量

本站总访客数