Spring Cloud的目标是微服务架构的一站式解决方案。
Spring Cloud 可以说是 Spring 社区为微服务架构提供的一个“全家桶”套餐。
由于“套餐”中的组件通过一个社区进行包装与整合,使得“套餐”中各个组件之间的配合变得更加和谐,这可以有效减少我们在组件的选型和整合上花费的精力,所以它可以帮助我们快速构建起基础的微服务架构系统。

springboot官网
springcloud官网

第一代 Spring Cloud(Netflix,SCN) 第二代 Spring Cloud(Spring Cloud Alibaba,SCA)
注册中心 Netflix Eureka(2.0孵化失败) 阿里巴巴 Nacos
客户端负载均衡 Netflix Ribbon 阿里巴巴 Dubbo LB、Spring Cloud Loadbalancer
熔断器 Netflix Hystrix 阿里巴巴 Sentinel
网关 Netflix Zuul 官方 Spring Cloud Gateway
配置中心 官方 Spring Cloud Config 阿里巴巴 Nacos、携程 Apollo
服务调用 Netflix Feign 阿里巴巴 Dubbo RPC
消息驱动 官方 Spring Cloud Stream
链路追踪 官方 Spring Cloud Sleuth/Zipkin
阿里巴巴 seata 分布式事务方案

Spring Cloud Netflix

Spring Cloud Netflix的五大组件(神兽)

  • Eureka:服务注册和发现,它提供了一个服务注册中心、服务发现的客户端,还有一个方便的查看所有注册的服务的界面。 所有的服务使用Eureka的服务发现客户端来将自己注册到Eureka的服务器上。
  • Zuul:网关,所有的客户端请求通过这个网关访问后台的服务。他可以使用一定的路由配置来判断某一个URL由哪个服务来处理。并从Eureka获取注册的服务来转发请求。
  • Ribbon:即负载均衡,Zuul网关将一个请求发送给某一个服务的应用的时候,如果一个服务启动了多个实例,就会通过Ribbon来通过一定的负载均衡策略来发送给某一个服务实例。
  • Feign:服务客户端,服务之间如果需要相互访问,可以使用RestTemplate,也可以使用Feign客户端访问。它默认会使用Ribbon来实现负载均衡。
  • Hystrix:监控和断路器。我们只需要在服务接口上添加Hystrix标签,就可以实现对这个接口的监控和断路器功能。

Spring Cloud Alibaba

停更的组件

服务注册中心

  • Eureka:官方停止更新,并且已经有更好的替代产品了,可以使用,但是官方已经不建议使用了(重度患者)。
  • Zookeeper:某些老系统,以前是用的Zookeeper + Dubbo,后来做技术升级,结果发现SpringCloud的Eureka停更了,然后就用了最少的技术切换,那么就用了Zookeeper做注册中心。
  • Consul:go语言开发的,也是一个优秀的服务注册框架,但是使用量较少,风头都被Nacos抢了。
  • Nacos:来自于SpringCloudAlibaba,在企业中经过了百万级注册考验的,不但可以完美替换Eureka,还能做其他组件的替换,所以强烈建议使用,是学习的重点。

服务调用

  • Ribbon:也进入了维护状态,停止更新了,但是Spring官方还在使用(轻度患者)。
  • LoadBalancer:Spring官方推出的一个新的组件,打算逐渐取代掉Ribbon。

服务调用2

  • Feign:Netflix 公司产品,也停止更新了。
  • OpenFeign:Spring社区等不了Netflix更新了,然后就自己做了一个组件,不用Feign了。

服务降级

  • Hystrix:官网不推荐使用,但是中国企业中还在大规模使用。
  • Resilience4J:官网推荐使用,但是国内很少用这个。
  • Sentienl:来自于SpringCloudAlibaba,在中国企业替换Hystrix的组件,国内强烈建议使用。

服务网关

  • Zuul:Netflix 公司产品,公司内部产生分歧,有的人想自己出一个Zuul2。
  • Zuul2:也是Netflix 公司准备出的产品,但是由于内部分歧,所以Zuul2已经胎死腹中了。
  • gateway:Spring社区自己出的网关组件,官方隆重介绍和极度推荐的网关服务组件。

服务配置

  • Config:目前也在使用,风头被Nacos抢了。
  • Nacos:来自于SpringCloudAlibaba,后来居上,把Config给替换了。