Spring Cloud中使用Eureka

在微服务架构中,服务的注册与发现是至关重要的。Spring Cloud 提供了一个强大的服务注册与发现组件——Eureka。Eureka 是 Netflix 提供的一个服务治理框架,采用了 REST 风格的 API,使得微服务之间可以相互发现和调用。

一、Eureka的基本概念

Eureka 由两个主要组件构成:Eureka Server(注册中心)和 Eureka Client(服务提供者和消费者)。Eureka Server 用于服务的注册和服务的发现,而 Eureka Client 则是服务提供者和消费者向注册中心注册和查询服务的组件。

二、搭建Eureka Server

首先我们需要创建一个 Eureka Server 来处理服务的注册。

1. 创建Eureka Server项目

可以使用 Spring Initializr 创建一个新的 Spring Boot 项目,选择以下依赖:

  • Eureka Server
  • Spring Web

以下是一个简单的 pom.xml 示例:

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>eureka-server</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>17</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2. 配置Eureka Server

application.ymlapplication.properties 中,我们需要添加如下配置:

spring:
  application:
    name: eureka-server
server:
  port: 8761
eureka:
  client:
    register-with-eureka: false # 不需要注册自己
    fetch-registry: false # 不需要从其他地方获取注册信息
  server:
    enable-self-preservation: false # 禁用自我保护

3. 启动Eureka Server

在主应用类上添加 @EnableEurekaServer 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

启动这个应用后,访问 http://localhost:8761 就可以看到 Eureka 注册中心的界面。

三、搭建Eureka Client

接下来我们需要创建一个 Eureka Client。

1. 创建Eureka Client项目

同样可以使用 Spring Initializr 创建一个新项目,添加以下依赖:

  • Eureka Discovery Client
  • Spring Web

2. 配置Eureka Client

application.yml 中添加 Eureka Client 的配置:

spring:
  application:
    name: my-service # 服务名称
server:
  port: 8080
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/ # Eureka Server 地址

3. 启动Eureka Client

在主应用类上添加 @EnableEurekaClient 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class MyServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyServiceApplication.class, args);
    }
}

四、服务发现与调用

在其他微服务中,可以通过 @LoadBalanced 注解和 RestTemplate 来进行服务调用。例如:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@Configuration
public class AppConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

// 使用RestTemplate调用服务
@Autowired
private RestTemplate restTemplate;

public String callOtherService() {
    return restTemplate.getForObject("http://my-service/some-endpoint", String.class);
}

结语

通过以上步骤,我们成功地搭建了一个包含 Eureka Server 和 Eureka Client 的微服务架构。这为我们更好地管理和调用各个服务打下了基础。Eureka 的服务注册与发现机制让微服务系统可以更加灵活与高效地运行。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部