Spring Cloud架构设计
Service discovery(服务发现)
应用程序并不总是知道其他服务的确切位置。服务注册中心(如Netflix Eureka)或sidecar解决方案(如HashiCorp Consul)可以提供帮助。Spring Cloud为Eureka、Consul、Zookeeper甚至是Kubernetes的内置系统等流行的注册表提供了DiscoveryClient实现。还提供了一个Spring Cloud负载均衡器去分布式环境中加载服务实例。
API gateway(网关)
网关可以保护和路由消息、隐藏服务、限制负载,以及许多其他有用的功能。Spring Cloud Gateway提供了对API层的精确控制,集成了Spring Cloud服务发现和客户端负载平衡解决方案来简化配置和维护。
Cloud configuration(云配置)
在分布式环境中,配置不能简单地嵌入到应用程序中。配置必须足够灵活,以应对多个应用程序、环境和服务实例,并在不停机的情况下处理动态更改。Spring Cloud Config旨在减轻这些负担,并提供与版本控制系统(如Git)的集成,以帮助您保持配置的安全性。
Circuit breakers(熔断器)
分布式系统可能不可靠。请求可能会遇到超时或完全失败。断路器可以帮助缓解这些问题,Spring Cloud断路器为您提供了三个流行的选项:Resilience4J、Sentinel或Hystrix。
Tracing(链路追踪)
调试分布式应用程序可能很复杂,并且需要很长时间。对于任何给定的故障,您可能需要将来自几个独立服务的信息跟踪拼凑在一起。Spring Cloud Sleuth可以以可预测和可重复的方式检测应用程序。
Testing(测试)
Spring Cloud核心组件
第一代Spring Cloud | 第二代Spring Cloud Alibaba | |
---|---|---|
注册中心 | Netflix Eureka | 阿里巴巴Nacos |
客户端负责均衡 | Netflix Ribbon | 阿里巴巴Dubbo LB、Spring Cloud LoadBalancer |
熔断器 | Netflix Hystrix | 阿里巴巴Sentinel |
网关 | Netflix Zuul | Spring cloud Gateway |
配置中心 | Spring Cloud Config | 阿里巴巴Nacos、携程Apollo |
服务调用 | Netfilx Feign | 阿里巴巴Dubbo RPC |
消息驱动 | Spring Cloud Stream | |
链路追踪 | Spring Cloud Sleuth/Zipkin | |
分布式事物 | 阿⾥巴巴 seata |