本文的主要目的是指导你使用新的 Spring Cloud 组件构建微服务架构,替换废弃的 Netflix 项目。示例应用的源码可以在GitHub上的仓库中找到。
架构
下图展现了我们样例系统的架构。在这里,我们包含了微服务的特征元素,如 API 网关、服务发现 server 以及配置 server。接下来,我会展示如何使用提供了这些模式的 Spring Cloud 组件。目前,向系统中添加 API 网关的主要组件是?Spring Cloud Gateway。
Spring Cloud 提供了与多个可用作服务发现服务器的方案的集成,包括 Netflix Eureka、HashiCorp Consul、Alibaba Nacos 和 Apache ZooKeeper。其中,最流行的是前两者。Spring Cloud Netflix Eureka?专门用于服务发现,而?Spring Cloud Consul?可同时通过 Consul Services 实现服务发现,通过 Consul Key/Value 引擎实现分布式跟踪特性。
Spring Cloud Config 只负责提供一个配置管理的机制。但是,它也可以与第三方工具集成,如来自 HashiCorp 的 Vault。以两个简单的 Spring Boot 应用?callme-service?和?caller-service?为例,我们阐述如何将应用与服务发现和配置服务器进行集成。我们还会在?caller-service?上使用 Spring Cloud Load Balancer 启用客户端负载均衡,并使用基于 Resilience4J 构建的?Spring Cloud Circuit Breaker?启用断路器功能。
服务发现
借助 Spring Cloud 的 DiscoveryClient 抽象,在客户端切换不同的服务发现服务器非常容易。这种切换只需要替换 Maven?pom.xml文件中的一个依赖项。如果你想要使用 Eureka 的话,只需要添加如下的 starter 到微服务中。