4.5 总结

本章讲述了Spring Core以及几个常用组件的使用。除了这些之外Spring中还有其他非常多的组件都提供了各个方面的功能封装,如:

  • Spring Security: 安全、权限控制。

  • Spring Retry: 重试机制的封装框架。

  • Spring OAuth:OAuth实现框架。

  • Spring JMS:JMS的封装。

  • Spring AMQP: AMQP的使用封装框架。

  • Spring Rabbit: RabbitMQ的使用封装框架。

额外地,这里对目前非常火热的Spring Cloud做一下简单介绍。

Spring Cloud给我们构建分布式系统提供了一整套开发工具和框架。现在很多公司和团队都是基于Spring Cloud这一套东西在做微服务实现。不过,Spring Cloud包含很多子项目,想要吃透这些得花不小的成本。

Spring Cloud的主要子项目如下:

  • Spring Cloud Config: 统一配置中心,类似于前文说过的Disconf, 不过其配置文件是存储在版本管理系统如Git、SVN上的。其配置的实时在线更新则需要依赖Spring Cloud Bus。

  • Spring Cloud Security: 提供了OAuth2客户端的负载均衡以及认证header等安全服务,可以做为API网关的实现。

  • Spring Cloud Consul/Zookeepr: 服务统一发现、注册、配置服务。类似于Dubbo。

  • Spring Cloud Bus: 提供了服务之间通信的分布式消息事件总线,主要用来在集群中传播状态改变(如配置改动)。

  • Spring Cloud Sleuth: 分布式跟踪系统, 能够追踪单次请求的链路轨迹以及耗时等信息。

此外,使用Spring Cloud Netflix则能够集成使用Netflix的各个组件构建服务。Netflix的主要组件如下:

  • Zuul:这是Netflix所有后端服务最前端的一道门,也就是我们上面说的API网关, 主要包含了以下功能:

    • 认证授权和安全:识别合法的外部请求,拒绝非法的。

    • 监控:跟踪记录所有有意义的数据以便于给我们一个精确的产品视图。

    • 动态路由:根据需要动态把请求路由到合适的后端服务上。

    • 压力测试:渐进式的增加对集群的压力直到最大值。

    • 限流:对每一种类型的请求都限定流量,拒绝超出的请求。

    • 静态响应控制:对于某些请求直接在边缘返回而不转发到后端集群。

    • 多区域弹性:在AWS的多个region中进行请求路由。

  • Eureka: 是Netflix的服务注册发现服务,类似于Dubbo的功能。包括负载均衡和容错。

  • Hystrix:Hystrix是一个类库。基于命令模式,实现依赖服务的容错、降级、隔离等。在依赖多个第三方服务的时候非常有用。此外,还可以通过自定义实现Dubbo的filter来给Dubbo添加Hystrix的特性支持。

Last updated