Spring Cloud架构设计

image.png

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