开发分布式系统可能具有挑战性。复杂性从应用层转移到网络层,需要服务之间进行更多的交互。使您的代码成为“云原生”意味着处理12要素诸如外部配置、无状态、日志记录和连接到支持服务等问题。Spring Cloud 项目套件包含使应用程序在云中运行所需的许多服务。

Spring Cloud 架构亮点

服务发现

在云中,应用程序无法始终知道其他服务的确切位置。服务注册中心,例如Netflix Eureka,或 sidecar 解决方案,例如 HashiCorp Consul就可以帮上忙了。Spring Cloud为流行的注册表提供了DiscoveryClient应用,例如Eureka, Consul,Zookeeper, 乃至 Kubernetes'内置系统。还有一个Spring Cloud Load Balancer 帮助您在服务实例之间仔细分配负载。

Get started with this simple guide

API网关

由于有如此多的客户端和服务器在运行,在您的云架构中包含一个 API 网关通常很有帮助。网关可以负责安全和路由消息、隐藏服务、限制负载以及许多其他有用的事情。Spring Cloud Gateway为您提供对 API 层的精确控制,集成 Spring Cloud 服务发现和客户端负载均衡解决方案以简化配置和维护。

Getting Started with Spring Cloud Gateway
“We found that the performance of [Spring Cloud Gateway] was very appealing. Low latency, good throughput, [and] a very small percentage of timeouts in our use cases.”
Chris Jackson, Senior Developer, TD Ameritrade

云配置

在云中,配置不能简单地嵌入到应用程序中。配置必须足够灵活,以应对多个应用程序、环境和服务实例,并在不停机的情况下处理动态变化。Spring Cloud Config旨在减轻这些负担,并提供与 Git 等版本控制系统的集成,以帮助您确保配置安全。

Try it now

熔断器

分布式系统可能不可靠。请求可能会遇到超时或完全失败。熔断器可以帮助缓解这些问题,并且Spring Cloud 断路器为您提供三种流行的选择: Resilience4J, Sentinel或者 Hystrix.

Try this guide to get started

追踪

调试分布式应用程序可能很复杂并且需要很长时间。对于任何给定的故障,您可能需要将来自多个独立服务的信息痕迹拼凑在一起。Spring cloud Sleuth可以以可预测和可重复的方式检测您的应用程序。并且与Zipkin一起配合使用 ,您可以将可能遇到的任何延迟问题归零

测试

在云中,您需要一段时间可以获得可靠、值得信赖、稳定的 API。基于合同的测试是高绩效团队经常用来保持正轨的一种技术。它有助于规范 API 的内容并围绕它们构建测试,以确保代码处于检查状态。


Spring Cloud Contract使用 Groovy、Java 或 Kotlin 编写的合约,为 REST 和基于消息的 API 提供基于合约的测试支持。

Try this guide to get started