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