简谈springCloud框架
springCloud框架
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
springCloud框架的常用组件
-
Spring Cloud Config
服务配置中心,将所有的服务的配置文件放到本地仓库或者远程仓库,配置中心负责读取仓库的配置文件,其他服务向配置中心读取配置。Spring Cloud Config使得服务的配置统一管理,并可以在不人为重启服务的情况下进行配置文件的刷新。 -
Spring Cloud Netflix
它是通过包装了Netflix公司的微服务组件实现的,也是Spring Cloud核心组件,包括Eureka,Hystrix,Zuul,Archaius。 -
Eureka
服务注册和发现组件 -
Hystrix
熔断器组件。它通过控制服务的API接口的熔断来转移故障,防止微服务系统发生雪崩效应。另外Hystrix能够起到服务限流和服务降级的作用。使用Hystrix Dashboard组件监控单个服务的熔断状态,使用Hystrix Turbine组件可以监控多个服务的熔断器的状态。 -
Zuul
智能路由网关组件。能够起到智能路由和请求过滤的作用,内部服务API接口通过Zuul网关统一对外暴露,防止内部服务敏感信息对外暴露。也可以实现安全验证,权限控制。 -
Feign
声明式远程调度组件。 -
Ribbon
负载均衡组件 -
Archaius
配置管理API组件,一个基于Java的配置管理库,主要用于多配置的动态获取。 -
Spring Cloud Bus
消息总线组件,常和Spring Cloud Config配合使用,用于动态刷新服务的配置。 -
Spring Cloud Sleuth
服务链路追踪组件,封装了Dapper,Zipkin,Kibina等组件,可以实时监控服务链路调用状况。 -
Spring Cloud Data Flow
大数据操作组件,它是Spring XD的替代品,也是一个混合计算模型,可以通过命令行的方式操作数据流 -
Spring Cloud Consul
该组件是Spring Cloud对Consul的封装,和Eureka类似,它是一个服务注册和发现组件。 -
Spring Cloud Zookeeper
该组件是Spring Cloud对Zookeeper的封装,也是用于服务注册和发现 -
Spring Cloud Stream
数据流操作组件,可以封装 Redis,RabbitMQ,Kafka等组件,实现消息的接受和发送。 -
Spring Cloud CLI
该组件是对Spring Boot CLI的封装,可以让用户以命令行方式快速搭建和运行容器。 -
Spring Cloud Task
该组件基于Spring Tsak,提供任务调度和任务管理的功能。
springCloud框架的优缺点
其主要优点有:
- 集大成者,Spring Cloud 包含了微服务架构的方方面面。
- 约定优于配置,基于注解,没有配置文件。
- 轻量级组件,SpringCloud 整合的组件大多比较轻量级,且都是各自领域的佼佼者。
- 开发简便,Spring Cloud对各个组件进行了大量的封装,从而简化了开发。
- 开发灵活,Spring Cloud 的组件都是解耦的,开发人员可以灵活按需选择组件。
主要缺点有:
- 项目结构复杂,每一个组件或者每一个服务都需要创建一个项目。
- 部署门槛高,项目部署需要配合 Docker等容器技术进行集群部署,而要想深入了解 Docker,学习成本高。
springCloud与dubbo对比
Dubbo 只是实现了服务治理,而 Spring Cloud 实现了微服务架构的方方面面,服务治理只是其中的一个方面。下面通过一张图对其进行比较:
二者区别总结:
- 可以看出,Spring Cloud 比较全面,而 Dubbo 由于只实现了服务治理,需要集成其他模块,需要单独引入,增加了学习成本和集成成本。
- Spring Cloud拥有很多的项目模块,包含微服务的方方面面,Dubbo是个十分优秀的服务治理和服务调用框架,但缺少了很多的功能模块,例如网关,链路追踪等。
- 开发风格上,Dubbo倾向于xml配置方式,而Spring Cloud基于Spring Boot,它采用基于注解和JavaBean配置方式的敏捷开发。
- 通信方式上Spring Cloud大多数基于HTTP Restful风格,服务与服务间完全耦合,因此服务无关乎语言和平台。Dubbo采用远程调用方式,对接口平台和编程语言有强依赖性。
- Dubbo和Spring Cloud各有优缺点,Dubbo更易上手,也非常成熟和稳定,Spring Cloud服务框架严格准守者 Martin Fowler 提出的微服务规范,社区活跃,未来很可能成为微服务架构的标准。
springCloud框架原理
想继续深入了解springCloud框架原理请戳这里