“我们发现[Spring Cloud Gateway]的性能非常吸引人。在我们的用例中,低延迟,良好的吞吐量和[很少]的超时。”
云
开发分布式系统可能具有挑战性。复杂性已从应用程序层转移到网络层,并要求服务之间进行更大的交互。将代码设为“云原生”意味着要处理12个因素,例如外部配置,无状态,日志记录以及连接到后备服务。Spring Cloud项目套件包含使您的应用程序在云中运行所需的许多服务。
Spring Cloud架构亮点
服务发现
在云中,应用程序不能总是知道其他服务的确切位置。诸如Netflix Eureka之类的服务注册表或诸如HashiCorp Consul之类的sidecar解决方案都可以提供帮助。Spring CloudDiscoveryClient
为流行的注册表提供了实现,例如Eureka,Consul,Zookeeper甚至Kubernetes的内置系统。还有一个Spring Cloud Load Balancer可以帮助您在服务实例之间仔细分配负载。
API网关
由于有如此众多的客户端和服务器,在您的云体系结构中包括一个API网关通常会很有帮助。网关可以负责保护和路由消息,隐藏服务,限制负载以及许多其他有用的事情。Spring Cloud Gateway为您提供对API层的精确控制,集成了Spring Cloud服务发现和客户端负载平衡解决方案,以简化配置和维护。
Spring Cloud Gateway入门云配置
在云中,配置不能简单地嵌入到应用程序内部。配置必须足够灵活,以应对多个应用程序,环境和服务实例,并应对动态变化而不会停机。Spring Cloud Config旨在减轻这些负担,并与Git等版本控制系统集成,以帮助您确保配置安全。
现在就试试断路器
分布式系统可能不可靠。请求可能会遇到超时或完全失败。断路器可以帮助缓解这些问题,Spring Cloud Circuit Breaker为您提供了三种流行的选择:Resilience4J,Sentinel或Hystrix。
追踪
调试分布式应用程序可能很复杂并且需要很长时间。对于任何给定的故障,您可能需要将来自几个独立服务的信息痕迹拼凑在一起。Spring Cloud Sleuth可以以可预测和可重复的方式来检测您的应用程序。当与Zipkin结合使用时,您可以解决可能存在的任何延迟问题。
测验
在云中,拥有可靠,可信赖,稳定的API可以为您带来额外的好处-但是要经历一段旅程。基于合同的测试是高绩效团队经常使用的一种技术。通过形式化API的内容并围绕它们进行测试以确保代码始终处于检查状态,它可以提供帮助。
Spring Cloud Contract使用Groovy,Java或Kotlin编写的合同为REST和基于消息传递的API提供基于合同的测试支持。