glmapper

SpringCloud-Eureka 服务注册

字数统计: 1.5k阅读时长: 7 min
2018/12/31 Share

简介

Spring Cloud Netflix Eureka 是 Spring Cloud 提供的用于服务注册和发现的基础组件,在 Spring Cloud 微服务体系中承担着相当重要的角色。Eureka 作为一个开箱即用的基础组件,其屏蔽了底层 Client 和 Server 交互的细节,使得开发者能够快速入手,将更多的精力投入到业务逻辑上去。

Eureka 是基于 Rest 实现的,及底层客户端和服务端之间的交互是通过 Rest 服务进行交互的。Eureka 包括两个部分,即服务端可客户端。

  • 服务端:Eureka Server ,提供服务注册和发现的功能
  • 客户端:Eureka Client ,将自己的信息注册到 Eureka Server ,并从 Eureka Server 中发现其他服务。

Eureka 本篇将先来搭建一个服务端,以作为后续篇幅的注册中心来使用。

环境准备

类别
JDK
1.8.0_162
SOFABoot/SpringBoot
3.0.0/2.0.x.RELEASE
SpringCloud
Finchley.RC1
IDE
IDEA

工程背景

本案例使用 SOFABoot 3.0.x 版本集成 SringCloud F版。工程如下:

  • sofa-eureka-server 服务注册中心
  • sofa-eureka-provider 服务提供方
  • sofa-eureka-comsumer 服务消费方

本工程都是在同一个父工程下面的,因此工程构建开始会新建一个 SOFABoot 工程作为父工程。

新建父工程

这里父工程直接新建一个SpringBoot 工程。可以使用 IDEA 的生成,也可以通过 SOFABoot 快速开始 新建一个 SpringBoot 工程,删除 src 目录,然后修改 pom.xml 文件。

  • gourpId : com.alipay.sofa
  • artifactId : sofa-eureka-parent

parent 依赖修改

1
2
3
4
5
6
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/>
</parent>

替换为:

1
2
3
4
5
<parent>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofaboot-dependencies</artifactId>
<version>3.0.0</version>
</parent>

管控 SpringCloud 依赖

在主 pom 里面加入 SpringCloud 的依赖管控。版本为 Finchley.RC1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<properties>
<spring-cloud.version>Finchley.RC1</spring-cloud.version>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

配置 SpringCloud 仓库

在主pom.xml 中添加如下配置

1
2
3
4
5
6
7
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>

OK,到这里,父工程创建完毕。

新建 sofa-eureka-server-center

sofa-eureka-server-center 作为注册中心的服务端。

右击 sofa-eureka-parent 父工程 -> New -> Module,这里选择 Maven 工程;

  • artifactId:sofa-eureka-server-center。

pom 文件修改

引入 spring-cloud-starter-netflix-eureka-server 依赖,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 <parent>
<artifactId>sofa-eureka-parent</artifactId>
<groupId>com.alipay.sofa</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>sofa-eureka-server-center</artifactId>

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>

新建资源文件 application.yml

在 /src/main/resources 目录下新建 application.yml 或者 application.properties。这里以.yml文件为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
server:
port: 8761 #指定服务端口
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
application:
name: sofa-eureka-server

配置文件后面统一说明

启动类

在 /src/main/resources 目录下新建 com.alipay.sofa.cloud 包目录,并且在当前包路劲下新建 SofaEurekaServerApplication 类,并且类上加上 @EnableEurekaServer 注解。

1
2
3
4
5
6
7
@SpringBootApplication
@EnableEurekaServer
public class SofaEurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(SofaEurekaServerApplication.class, args);
}
}

启动程序 & 验证

启动当前应用。并且浏览器中输入:http://localhost:8761/

image.png

服务正常运行,界面如上图所示;此时还没有服务注册进来,因此红色框内显示 :No instances available

新建 sofa-eureka-provider

sofa-eureka-provider 作为服务提供方,将会向注册中心 sofa-eureka-server-center 上注册服务。

右击 sofa-eureka-parent 父工程 -> New -> Module,这里选择 Maven 工程;

  • artifactId:sofa-eureka-provider。

pom 文件修改

引入 spring-cloud-starter-netflix-eureka-client 和 spring-boot-starter-web 依赖,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<parent>
<artifactId>sofa-eureka-parent</artifactId>
<groupId>com.alipay.sofa</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>sofa-eureka-provider</artifactId>

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

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>

新建资源文件

在 /src/main/resources 目录下新建 application.yml 或者 application.properties。这里以.yml文件为例:

1
2
3
4
5
6
7
8
9
server:
port: 8082
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/ #指定注册中心地址
spring:
application:
name: HelloSOFAService #服务名称

启动类

在 /src/main/resources 目录下新建 com.alipay.sofa.cloud 包目录,并且在当前包路劲下新建 SofaEurekaProviderApplication 类,并且类上加上 @EnableEurekaClient 注解。

1
2
3
4
5
6
7
@SpringBootApplication
@EnableEurekaClient
public class SofaEurekaProviderApplication {
public static void main(String[] args) {
SpringApplication.run(SofaEurekaProviderApplication.class, args);
}
}

服务提供类

这里在 com.alipay.sofa.cloud.controller 包下新建 SofaController 类。

1
2
3
4
5
6
7
8
9
10
11
12
@RestController
public class SofaController {
@Value("${server.port}")
private String port;
@Value("${spring.application.name}")
private String hostname;

@RequestMapping("/hello")
public String hello() {
return "Hello SOFA! Now Port is "+port +" And hostname is " +hostname;
}
}

这里在接口中返回 hostname 和 port ,方便后面验证负载均衡测试使用。

启动程序 & 验证

在启动 sofa-eureka-provider 之前,需要先启动 sofa-wureka-server-center 。两个都启动成功之后,浏览器输入:http://localhost:8761/

image1.png

此时我将 sofa-eureka-provider 中的配置文件的端口修改为 8081,再注册一个。

image2.png

可以看到 服务为 HELLOSOFASERVICE 的有两个服务提供方。

原文作者:GuoLei Song

原文链接:http://www.glmapper.com/2018/12/31/springboot/springcoud-eureka-register/

发表日期:December 31st 2018, 12:05:40 am

更新日期:October 28th 2020, 7:02:41 pm

版权声明:转载请注明出处

CATALOG
  1. 1. 简介
  2. 2. 环境准备
  3. 3. 工程背景
  4. 4. 新建父工程
    1. 4.1. parent 依赖修改
    2. 4.2. 管控 SpringCloud 依赖
    3. 4.3. 配置 SpringCloud 仓库
  5. 5. 新建 sofa-eureka-server-center
    1. 5.1. pom 文件修改
    2. 5.2. 新建资源文件 application.yml
    3. 5.3. 启动类
    4. 5.4. 启动程序 & 验证
  6. 6. 新建 sofa-eureka-provider
    1. 6.1. pom 文件修改
    2. 6.2. 新建资源文件
    3. 6.3. 启动类
    4. 6.4. 服务提供类
    5. 6.5. 启动程序 & 验证