首页
学习
活动
专区
圈层
工具
发布

告别JDK8,拥抱JDK17,使用 Eureka 快速搭建服务注册中心和服务客户端

从2015年开始使用Java8,时至今日已有10年,为了跟进JDK发展的步伐,不得不放弃使用十年的老伙计,拥抱新欢JDK17。

先来个简单的项目,会一会 Ta。

在微服务架构中,服务之间需要相互通信,而服务的动态发现和注册是非常重要的一部分。

Eureka 是一个非常流行的服务注册与发现工具,它可以帮助我们快速搭建一个服务注册中心,让不同的微服务可以相互发现并通信。

本文将介绍在 JDK17 下如何使用 Eureka 搭建服务注册中心和服务客户端。

JDK使用17,Spring-Boot和Spring-Cloud依赖也要跟上来。

Spring Boot 依赖版本:

  <groupId>org.springframework.boot</groupId>

  <artifactId>spring-boot-starter-parent</artifactId>

  <version>3.4.3</version>

  <relativePath/>

Spring Cloud 依赖管理:

  <dependencies>

  <!--spring cloud 依赖管理-->     

  <dependency>

    <groupId>org.springframework.cloud</groupId>

     <artifactId>spring-cloud-dependencies</artifactId>

     <version>2024.0.0</version>

     <type>pom</type>

    <scope>import</scope>

  </dependency>

</dependencies>

</dependencyManagement>

一、什么是 Eureka?

Eureka 是一个由 Netflix 提供的服务注册与发现框架。服务注册中心用于管理所有微服务实例的信息,当一个微服务启动时,它会将自己的信息注册到 Eureka 服务注册中心。其他微服务客户端可以从 Eureka 服务注册中心查询到已注册的服务并进行通信。

在 Eureka 中,包含两个核心组件:

1、Eureka Server(服务注册中心)

所有服务都会将自己的信息注册到这里,其他服务可以从这里获取服务信息。

2、Eureka Client(服务客户端)

微服务作为客户端,注册到 Eureka Server,并且可以从 Eureka Server 获取其他服务的地址进行调用。

二、搭建 Eureka 服务注册中心

首先,我们需要创建一个 Eureka Server,它负责管理所有微服务的注册信息。

1. 创建 Spring Boot 项目

使用 Spring Initializr 创建一个新的 Spring Boot 项目,选择Eureka Server作为依赖,JDK 版本选择 JDK 17。

下载并解压生成的项目,打开pom.xml文件,确保其中包含spring-cloud-starter-netflix-eureka-server依赖,如下所示:

  <groupId>org.springframework.cloud</groupId>

  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>

2. 启动 Eureka Server

在项目的主类中,添加@EnableEurekaServer注解,启用 Eureka 服务注册功能。

例如:

package com.example.eurekaserver;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication

@EnableEurekaServer // 启用 Eureka Server

public class EurekaServerApplication {

  public static void main(String[] args) {

      SpringApplication.run(EurekaServerApplication.class, args);

  }

}

3. 配置application.yml

在src/main/resources目录下,打开或创建application.yml配置文件,配置 Eureka 服务注册中心的基本信息:

server:

port:8761# 设置服务注册中心的端口

eureka:

client:

  registerWithEureka:false# 不注册自己为服务

  fetchRegistry:false# 不从其他服务拉取注册信息

server:

  enableSelfPreservation:false# 禁用自我保护模式

如果是集群模式,增加 eureka.client.serviceUrl.defaultZone 指定其他服务注册中心地址,使用 Eureka 实例之间能够正确通信。

eureka.client.serviceUrl.defaultZone=http://localhost:8762/eureka

4. 运行 Eureka Server

运行EurekaServerApplication类中的main方法,启动应用,Eureka 服务注册中心会在http://localhost:8761上启动,打开浏览器访问该地址,我们会看到 Eureka 注册中心的控制台界面。

三、搭建 Eureka 服务客户端

接下来,我们创建一个简单的服务客户端,让它注册到 Eureka 服务注册中心。

1. 创建客户端项目

使用 Spring Initializr 创建一个新的 Spring Boot 项目,选择Spring Web和Eureka Client作为依赖,JDK 版本选择 JDK 17。

下载并解压生成的项目,打开pom.xml文件,确保其中包含spring-cloud-starter-netflix-eureka-client依赖,如下所示:

  <groupId>org.springframework.cloud</groupId>

  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

2. 启动 Eureka Client

在项目的主类中,添加@EnableDiscoveryClient注解,启用 Eureka 客户端功能。

例如:

package com.example.eurekaclient;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication

@EnableDiscoveryClient // 启用 Eureka Client

public class EurekaClientApplication {

  public static void main(String[] args) {

      SpringApplication.run(EurekaClientApplication.class, args);

  }

}

3. 配置application.yml

在src/main/resources目录下,打开或创建application.yml配置文件,配置 Eureka 客户端的基本信息:

server:

port:8101# 设置服务的端口

spring:

application:

  name:api# 服务名称

eureka:

client:

  serviceUrl:

    defaultZone:http://localhost:8761/eureka/# Eureka 服务注册中心地址

4. 运行 Eureka Client,验证服务注册与发现

运行EurekaClientApplication类中的main方法,启动客户端应用。

启动后,它会自动注册到 Eureka 服务注册中心。

访问http://localhost:8761,我们可以看到服务注册中心的控制台,那里会列出已注册的服务。

如果启动多个 Eureka Client 实例,确保它们都能注册到 Eureka Server。

如果我们希望使用服务发现来调用其他服务,可以通过 Feign 客户端或者 Ribbon 来实现。

四、新版本变化

和以前老版本的代码对比,服务端几乎没有变化,包括配置文件、注解等。

但客户端有一个新变化:

注解@EnableEurekaClient变更为@EnableDiscoveryClient。

@EnableEurekaClient注解已经在某个版本被弃用了。

@EnableDiscoveryClient 成了注册服务的新秀。

@EnableDiscoveryClient 这个注解是一个更通用的注解,用于启用 Spring Cloud 的服务发现功能。它不仅支持 Eureka,还可以与其他服务发现组件(例如 Consul、Zookeeper)一起使用。

如果我们希望应用能够与多个服务发现机制进行兼容,或者以后有可能切换服务发现的实现(比如从 Eureka 切换到 Consul),使用@EnableDiscoveryClient会更加灵活,因为它不依赖于特定的服务发现实现。

五、最后总结

通过以上步骤,我们成功地使用 Eureka 快速搭建了一个服务注册中心和服务客户端。

Eureka 不仅可以帮助我们实现服务的自动注册和发现,还能提升微服务架构中的灵活性和可扩展性。使用 Spring Boot 和 Spring Cloud,我们可以轻松地集成 Eureka,让微服务之间的通信变得更加简单和高效。

至此一个简单的服务注册中心和服务客户端项目就这样搭建好了!

一定要注意版本间的变化,以便能更好地使用框架。换个马甲咱也能认识!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Ol6vze5h8De-PJ78P5bRVflw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券