什么是SpringCloud
简单来说,微服务是一种架构模型,就是把系统中的各个功能点都拆开为一个个的小应用然后单独部署,同时因为这些小应用多,所以需要一些办法来管理这些小应用。
Spring Cloud只是一个微服务框架的规范,注意,只是规范,并不是任何具体法人框架。主要大概有以下几种功能
- eureka(提供服务的注册和发现功能)
- ribbon(提供负载均衡功能)
- Feign(整合了ribbon和Hystrix,具有负载均衡和熔断限流等功能)
- Hystrix(提供了熔断限流,合并请求等功能)
- Zuul(提供了智能路由的功能)
- Hystrix Dashboard(提供了服务监控的功能,提供了数据监控和友好的图形化界面)
- Hystrix Turbine(Hystrix Turbine将每个服务Hystrix DashBoard数据进行了整合,也是监控系统的功能)
- Spring Cloud config(提供了统一配置的功能)
- Spring Cloud(提供了配置实时更新的功能,控制总线)
- ...
注意:需要注意的是这些组件并不是一体化的,也可以用NCOS或Zookeeper来替换eureka
目前主流并且恰好能够满足上面的需求,就是Spring Cloud Netflix,当然Spring Cloud的实现产品不止这一个,还有最近由阿里新起的Spring Cloud Alibaba等。
Spring Cloud和Spring boot的关系
其实它们之间并没有什么特殊的关系,只不过当下流行微服务,而实现一个服务最快的办法就是用Spring boot,仅此而已。
Spring Cloud和dubbo的关系
dubbo是阿里搞得一套框架,是基于RPC调用的,而Spring Netflix是基于HTTP的,所以效率上应该dubbo更快,但是dubbo的组件不是很齐全,它的很多功能比如服务注册于发现你需要借助于类似Zookeeper等组件才能实现,而Spring Cloud Netflix则是提供了一站式解决方案。
如何学习Spring Cloud
在此贴出以为大牛的Spring Cloud入门,真的通俗易懂。
https://www.fangzhipeng.com/spring-cloud.html
构建分布式系统不应该是复杂的,Spring Cloud对常见的分布式系统模式提供了简单易用的编程模型,帮助开发者构建弹性、可靠、协调的应用程序。Spring Cloud是在Spring Boot的基础上构建的,使开发者可以轻松入门并快速提供效率,SpringCloud为开发人员提供了快速构建分布式系统架构的工具,例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁定、领导选举、分布式会话、集群状态等。
SpringCloud子项目简介
Spring Cloud config
集中管理工具,分布式系统中统一的外部配置管理,默认使用Git来存储配置,可以支持客户端配置的刷新及加密、解密操作。
Spring Cloud Netflix
Netflix OSS开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。
- Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制。
- Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略。
- Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力。
- Feign:基于Ribbon和Hystrix的声明式服务调动组件。
- Zuul:API网关组件,对请求提供路由和过滤功能。
Spring Cloud Bus
用于传播集群状态变化的消息总线,使用轻量级消息代理链接分布式系统中的节点,可以用来动态刷新集群中的服务配置。
Spring Cloud Consul
基于Hashicorp Consul的服务治理组件。
Spring Cloud Security
安全工具包,对Zuul代理中的负载均衡OAuth2客户端及登录认证进行支持。
Spring Cloud Sleuth
Spring Cloud应用程序的分布式请求链路跟踪,支持使用Zipkin、Htrace和基于日志(例如ELK)的跟踪。
Spring Cloud Stream
轻量级事件驱动微服务框架,可以使用简单的声明式模型来发送及接收消息,主要实现为Apache Kafka及RabbitMQ。
Spring Cloud Task
用于快速构建短暂、有限数据处理任务的微服务框架,用于向应用中添加功能性和非功能性的特性。
Spring Cloud Zookeeper
基于Apache Zookeeper的服务治理组件。
Spring Cloud Gateway
API网关组件,对请求提供路由及过滤功能。
Spring Cloud OpenFeign
基于Ribbon和Hystrix的声明式服务调用组件,可以动态创建基于Spring MVC注解的接口实现用于服务调用,在SpringCloud 2.0中已经取代Feign成为了一等公民。