Spring Cluod介绍
Spring Cloud是一个中间件。由Spring官方开发维护,基于Spring Boot开发。
Spring Cloud提供了一套完整的微服务解决方案。包括服务API网关、注册与发现、配置中心、全链路监控、熔断器等中立和可替换(扩展)的开源组件。
Spring Cloud项目模块
Spring Cloud组件列表如下:
组件名称 | 所属项目 | 组件分类 |
---|---|---|
Eureka | spring-cloud-netfix | 注册中心 |
Zuul | spring-cloud-netfix | 网关(第一代) |
Sidecar | spring-cloud-netfix | 多语言 |
Ribbon | spring-cloud-netfix | 负载均衡 |
Hystrix | spring-cloud-netfix | 熔断器 |
Turbine | spring-cloud-netfix | 集群监控 |
Feign | spring-cloud-openfeign | 声明式HTTP客户端 |
Consul | spring-cloud-consul | 注册中心 |
Gateway | spring-cloud-gateway | 网关(第二代) |
Sleuth | spring-cloud-sleuth | 链路追踪 |
Config | spring-cloud-config | 配置中心 |
Bus | spring-cloud-bus | 总线 |
Pipeline | spring-cloud-pipelines | 部署管道 |
Dataflow | spring-cloud-dataflow | 数据处理 |
一般使用到的相关模块结构如下:
服务治理中间件(注册中心)
服务治理中间件包含服务注册与发现、服务路由、负载均衡、自我保护、治理管理机制等功能。
在Spring Cloud框架的服务治理体系中,可以使用Eureka或者Console作为注册中心,通过Hystrix进行熔断自我保护Fallback,通过Ribbon进行负载均衡。
关于注册中心的选型比较如下:
特性 | Eureka | Consul | Zookepper |
---|---|---|---|
服务健康检查 | 可配支持 | 服务状态,内存,硬盘等 | (弱)长连接,keepalive |
多数据中心 | - | 支持 | - |
kv存储服务 | - | 支持 | 支持 |
一致性 | - | raft | paxos |
cap | ap | ca | cp |
使用接口 | http(sider) | http、dns | 客户端 |
watch支持 | 支持long polling / 大部分增量 | 全量 / 支持long polling | 支持 |
自身监控 | metrics | metrics | - |
安全 | - | acl / https | acl |
网关中间件
网关至少需要具备4大功能:统一接入功能、协议适配功能、流量管控功能、安全防护功能。
在Spring Cloud框架的网关体系中,主要有第一代网关Zuul和第二代网关Gateway。
第一代网关Zuul可以做到开箱即用,缺点是最多能达到1000至2000的QPS。不适用于高并发场景。
第二代网关Gateway底层基于Netty实现,支持高并发。
配置中心中间件
配置中心支持各种复杂的配置场景,与公司的运维体系和权限管理体系集成,各种配置兼容支持。
在Spring Cloud框架的配置中心体系中,使用Spring Cloud Config把原本放在本地文件的配置抽取出来放在中心服务器,提供更好的管理、发布能力,。
Spring Cloud Config基于应用、环境、版本三个维度管理。配置存储支持其他扩展存储,无缝支持Spring里Environment和PropertySource的接口,缺点是没有可视化的控制平台。
全链路监控中间件
全链路监控用于收集、汇总并分析日志信息,进行可视化展示和监控告警。
包含定位慢调用、定位各种错误、定位各种异常、展现依赖和拓扑、Trace调用链、应用告警灯。