简介
Spring Cloud是一系列框架的有序集合。目的是协调各个微服务,简化分布式系统开发。这里做一个有关于Spring Cloud知识的汇总,包括Spring Cloud核心组件、Spring Cloud Alibaba及分布式事务Seata,使用的版本是Spring Cloud Hoxton及SpringBoot 2.2.x。
应用场景
注册中心
注册中心主要用于服务治理,提供了服务的注册与发现功能,微服务架构中的服务可以注册到注册中心,也可以通过注册中心获取到其他服务的信息。这里提供了Eureka、Consul、Nacos三种解决方案。
配置中心
配置中心主要用于提供统一的外部配置管理,微服务架构中的服务可以从配置中心获取配置信息,同时支持动态刷新配置。这里提供了Spring Cloud Config、Consul、Nacos三种解决方案。
服务网关
API网关主要用于为微服务架构中的服务提供统一的外部访问入口,实现请求的路由与过滤功能。这里提供了Zuul和Gateway两种解决方案。网关的理解:保护一些服务地址端口不暴露给外部,对外暴露网关端口;外部想访问某个服务访问网关端口,由网关调用响应的服务;网关好比看门的保安,对外阻止攻击等;
服务调用
微服务架构中有的服务会部署多个,Ribbon提供了服务间调用的客户端负载均衡功能,OpenFeign基于Ribbon提供了声明式的服务间调用。
熔断与限流
熔断与限流是对微服务架构中服务的一种保护措施,当系统中有故障发生时,可以防止故障的蔓延。这里提供了Hystrix和Sentinel两种解决方案。
安全保护
Spring Cloud Security 为构建安全的SpringBoot应用提供了一系列解决方案,结合Oauth2可以实现单点登录、服务安全保护等功能,可以很好地保护微服务架构中的服务。
Spring Security OAuth2是对OAuth2.0协议的一种实现,并且和Spring Sercurity相辅相成,属于Spring Cloud的体系,与Spring Boot的集成相当便利。在OAuth2.0的协议里包括两个服务提供方,授权服务(也叫认证服务)、资源服务。使用Spring Security OAuth2的时候可以把这两个服务放到同一个应用里面(生产环境不会这样干),也可以建立一个授权服务,对多个资源服务进行授权。
OAuth2主要用于校验客户端合法性、产生token、校验token
Sercurity主要用于用户名密码校验、接口权限控制
因此OAuth2与Sercurity整合之后,校验顺序:
校验客户端合法性——校验用户名密码——产生token——校验token——校验接口权限
监控中心
Spring Boot Admin 结合 Spring Cloud的注册中心使用可以用来监控微服务架构中的服务。
分布式事务解决
微服务架构中,当一次业务操作需要操作多个数据源或需要进行远程调用时就会产生分布式事务问题,Seata可以很好地解决该问题。