中间件作用属于承上启下中间层,本质上归属于技术架构。常见的中间件分为:服务治理中间件、配置中心、全链路监控、分布式事务、分布式定时任务、消息中间件、API网关、分布式缓存、数据库中间件等。
spring-cloud是一个中间件,是由spring官方开发维护,基于spring-boot开发,提供了一套完整的微服务解决方案。其中包含:服务注册与发现、配置中心、全链路监控、API网关、熔断器等选型中立开源组件、可以按需扩展和替换组装。
spring-cloud是一个开源的项目集合。具体项目地址GITHUB 。spring-cloud主要组件汇总表如下:
组件名称 | 所属项目 | 组件分类 |
---|---|---|
Eureka | spring-cloud-netflix | 注册中心 |
Zuul | spring-cloud-netflix | 第一代网关 |
Sidecar | spring-cloud-netflix | 多语言 |
Ribbon | spring-cloud-netflix | 负载均衡 |
Hystrix | spring-cloud-netflix | 熔断器 |
Turbine | spring-cloud-netflix | 集群监控 |
Feign | spring-cloud-openfeign | 声明式HTTP客户端 |
Consul | spring-cloud-consul | 注册中心 |
Geteway | spring-cloud-getaway | 第二代网关 |
Sleuth | spring-cloud-sleuth | 链路追踪 |
Config | spring-cloud-config | 配置中心 |
Bus | spring-cloud-bus | 总线 |
Pipeline | spring-cloud-pipeline | 部署管道 |
Sataflow | spring-cloud-sataflow | 数据处理 |
服务治理中间件包括:服务注册与发现、服务路由、负载均衡、自我保护、丰富的智力管理机制等功能。其中服务路由包含服务上下线、在线测试、机房就近选择、A/B测试、灰度发布等;负载均衡:支持根据目标状态和目标权重进行负载均衡;自我保护:包括服务降级优雅降级和流量控制。
spring-cloud目前支持使用Eureka、Zookeeper、Consul作为注册中心,并预留了拓展接口,可以无缝替换可以通过Hystrix进行熔断自我保护Fallback,通过Ribbon进行负载均衡。
分布式系统中的配置信息抽取出来统一管理,这个管理的中间件就叫做配置中心。应具有的功能:支持各种复杂的配置场景;与公司运维体系和权限管理体系集成;各种配置兼容支持。
spring-cloud-config是spring-cloud生态圈中的配置中心中间件,其中基于应用、环境、版本三个维度进行管理配置存储支持Git和其他存储。且无缝支持spring的Environment和PropertySource接口。缺点是:没有可视化管理界面。因此会用其他配置中心取代他的管理配置。
API Getaway出现在系统边界撒谎那个的一个面向API的串行集中式强管控服务,主要起到隔离外部访问与内部系统的作用。
网管中心具有的四大功能:
spring-cloud一共有两代网关:
第一代网管Zuul:是基于Netflix公司开源的Zuul上基于spring-boot注解进行二次封装的。目前Zuul融合了spring-cloud提供的服务治理体系,根据配置的路由规则或默认的路由规则进行路由转发和负载均衡。spring-cloud-zuul如果实现一些灰度、降级、标签路由、限流、WAF封禁,就需要自定义Filter做一些定制化实现。
第二代网关Geteway:第一代网关Zuul处理每个请求的方式是对每个请求分配一个线程处理,在高并发的场景下不适合使用,因此出现第二代网关Geteway。其底层是基于Netty实现的。出现的目的是:替代Zuul。提供了:统一的路由方式并且给予Filter链的方式提供了网管脊背的功能。例如:安全、监控/埋点、限流等。
全链路监控中间件收集、汇总并分析日志信息,进行可视化展示和监控告警。主要功能包括:
主要包括:
ps:增强生态这还不是很清楚,回头进入学习的时候在仔细介绍