Eureka

Spring Cloud Netflix 教程 - Eureka

1、概览 本文将带你了解如何通过 Spring Cloud Netflix Eureka 来实现客户端服务发现。 客户端服务发现允许服务相互查找和通信,而无需硬编码主机名和端口。在这种架构中,唯一的 “固定点” 是服务注册中心(service registry,),每个服务都必须在注册中心中注册。 一个缺点是所有客户端必须实现特定的逻辑与这个注册中心进行交互。这就需要在实际请求之前进行一次额外的网络请求。 有了 Netflix Eureka,每个客户端都可以同时充当服务器,将自己的状态复制给已连接的对等服务。换句话说,客户端在服务注册中心中检索所有已连接对等服务的列表,并通过负载均衡算法向其他服务发出所有进一步请求。 要获知客户端的存在,它们必须向注册中心发送心跳信号。 为了实现本文的目标,需要实现三个微服务: 注册中心(Eureka Server) REST 服务,在注册中心中注册(Eureka Client) Web 应用,作为客户端(Spring Cloud Netflix Feign Client)来消费 REST 服务(从注册中心获取到服务) 2、Eureka 服务器 使用 Eureka Server 实现一个注册中心,很简单: 在依赖中添加 spring-cloud-starter-netflix-eureka-server 用 @EnableEurekaServer 对 @SpringBootApplication 进行注解,从而启用 Eureka 服务器 配置一些配置属性 一步步来: 首先,创建一个新的 Spring Boot 项目,并添加相应的依赖。 通过 spring-cloud-starter-parent Bom 管理组件的依赖版本。 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <version>2021.0.3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> 你可以在 Spring 的官方文档中查看 最新的 Spring Cloud 版本。

Eureka Server 集群部署教程

在本教程中,你将学习到如何在本地计算机上设置 Eureka Cluster(集群)。虽然本文是在本地计算机上设置的 Eureka Cluster,但你仍然可以学到如何让 Eureka 在远程服务器上运行。 什么是 Eureka 服务器集群? Eureka 服务器集群又称 Eureka 节点感知(Peer Awareness)系统,是一组相互通信的 Eureka 服务器。不过,这不是普通的服务器群。它们可以相互通信,共享注册服务的相关信息。这意味着即使其中一台服务器宕机,其他服务器仍能提供必要的服务信息,确保高可用性和容错性。这是一项关键功能,使 Eureka 服务器集群成为大型系统的绝佳选择,在这种系统中,宕机的代价可能很高。 现在,你可能会问,为什么我们需要这样的设置。好吧,把它想象成一个图书管理员团队,他们总是相互通报庞大图书馆中书籍的最新情况。如果其中一个人不在,其他人仍然可以为你找到你要的书提供指导。同样,Eureka 服务器集群可确保你的微服务始终能找到彼此,即使在服务器出现故障的情况下也是如此。正是它们的团队合作使你的微服务架构变得稳健而富有弹性。 在接下来的章节中,我将指导你建立自己的 Eureka 服务器集群。 创建 Eureka Server 项目 我们首先要做的是创建一个新的 Spring Boot 项目。为此,我们将使用 Spring Initializr 来快速创建我们的项目。创建项目时,我们需要确保添加一个名为 Eureka Server 的重要依赖项。该依赖将把我们的普通 Spring Boot 项目转变为 Eureka Server。如果你现在还不清楚如何操作,也不用担心。我们将在下一步了解详情。 必须的 Maven 依赖 如果使用 Spring Initializr 工具创建了项目,并添加了 Eureka Server 依赖,则应在项目的 pom.xml 文件中看到以下依赖。 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> 在我的案例中,完整的 pom.xml 文件是这样的: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.