云原生应用
Spring Cloud 是在非限制性的 Apache 2.0 许可证下发布的。如果您想为文档的这一部分做出贡献,或者如果您发现了一个错误,您可以在 github 上找到该项目的源代码和问题跟踪器。
章节总结
📄️ 介绍
云原生(Cloud Native)是一种应用开发风格,它鼓励在持续交付和价值驱动开发领域轻松采用最佳实践。与之相关的学科是构建十二要素应用(12-factor Applications),其中开发实践与交付和运维目标保持一致——例如,通过使用声明式编程以及管理和监控。Spring Cloud 通过多种具体方式促进了这些开发风格。其起点是一组分布式系统中所有组件都需要轻松访问的特性。
📄️ Spring Cloud Context: 应用上下文服务
Spring Boot 对如何使用 Spring 构建应用程序有一种约定俗成的看法。例如,它为常见的配置文件提供了约定俗成的位置,并为常见的管理和监控任务提供了端点。Spring Cloud 在此基础上构建,并添加了一些系统许多组件会使用或偶尔需要的功能。
📄️ Spring Cloud Commons:通用抽象
诸如服务发现、负载均衡和断路器之类的模式适用于一个通用的抽象层,所有 Spring Cloud 客户端都可以使用该抽象层,而无需依赖具体的实现(例如,使用 Eureka 或 Consul 进行服务发现)。
📄️ Spring Cloud 负载均衡器
Spring Cloud 提供了自己的客户端负载均衡抽象和实现。对于负载均衡机制,新增了 ReactiveLoadBalancer 接口,并为其提供了基于轮询(Round-Robin)和随机(Random)的实现。为了获取可供选择的实例,使用了 Reactive 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 的特性。)