云原生应用
Spring Cloud 是在非限制性的 Apache 2.0 许可证下发布的。如果您想为本文档的此部分做出贡献,或者发现错误,可以在 github 上找到项目的源代码和问题跟踪器。
章节总结
介绍
云原生是一种应用程序开发风格,它鼓励轻松采用持续交付和价值驱动开发领域的最佳实践。一个相关的学科是构建十二要素应用程序,其中开发实践与交付和运维目标保持一致——例如,通过使用声明式编程以及管理和监控。Spring Cloud 通过多种具体方式促进了这些开发风格。起点是一组分布式系统中所有组件都需要轻松访问的特性。
Spring Cloud Context:应用上下文服务
Spring Boot 对如何使用 Spring 构建应用程序有着自己的见解。例如,它为常见的配置文件提供了约定俗成的位置,并为常见的管理和监控任务提供了端点。Spring Cloud 在此基础上构建,并添加了一些系统中许多组件会使用或偶尔需要的功能。
Spring Cloud Commons:通用抽象
服务发现、负载均衡和断路器这类模式适用于一个通用的抽象层,该抽象层可以被所有Spring Cloud客户端使用,且独立于具体实现(例如,使用Eureka或Consul进行服务发现)。
Spring Cloud LoadBalancer
Spring Cloud 提供了自己的客户端负载均衡器抽象和实现。对于负载均衡机制,我们新增了 ReactiveLoadBalancer 接口,并为其提供了基于轮询和随机的实现。为了获取可供选择的实例,我们使用了响应式 ServiceInstanceListSupplier。目前,我们支持基于服务发现的 ServiceInstanceListSupplier 实现,该实现使用类路径中可用的 Discovery Client 从服务发现中检索可用实例。
CachedRandomPropertySource
Spring Cloud Context 提供了一个基于键缓存随机值的 PropertySource。除了缓存功能外,其工作方式与 Spring Boot 的 RandomValuePropertySource 相同。当您需要一个即使在 Spring 应用上下文重启后仍保持一致的随机值时,这个随机值可能很有用。属性值的格式为 cachedrandom.\[yourkey].\[type],其中 yourkey 是缓存中的键。type 值可以是 Spring Boot 的 RandomValuePropertySource 支持的任何类型。
安全
如果你的应用是一个面向用户的OAuth2客户端(即已声明@EnableOAuth2Sso或@EnableOAuth2Client),那么它会在请求作用域中拥有一个来自 Spring Boot 的 OAuth2ClientContext。你可以基于此上下文和一个自动装配的 OAuth2ProtectedResourceDetails 来创建你自己的 OAuth2RestTemplate,这样上下文将始终向下游转发访问令牌,并在令牌过期时自动刷新。(这些是 Spring Security 和 Spring Boot 的功能。)