上一篇文章:

我们简单介绍了spring cloud 搭建父工程、生产者、消费者的操作,这篇文章介绍一下搭建eureka。

eureka是服务注册中心,主要用于注册服务,发现服务。 (官方已经停止更新,后期会有nacos版本)

架构图如下:

1.创建eureka

右击父工程,选择“新建”、“新模块”,参考前面创建模块的过程。

添加POM文件参考如下

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>s-cloud</artifactId>
        <groupId>site.longkui</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>s-cloud-eureka</artifactId>

    <dependencies>
        <!--eureka-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>3.1.8-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

这个地方,注意版本号,一是spring cloud 和spring boot之间版本号的匹配,另外就是本文用的是spring-cloud-netflix,不是spring-cloud-alibaba,这两个之间的版本号不完全相同。

如果程序出现报错:”无法解析 org.springframework.cloud:spring-cloud-starter-netflix-eureka-serve“ 或者版本号对应不对
可以点击下面的链接参考处理。

https://www.longkui.site/error/spring-cloud-starter-netflix-eureka-serve/5795/

然后创建配置文件

server:
  port: 7001    # 配置服务端口
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:${server.port}/eureka   # 配置eureka服务器地址
    register-with-eureka: false   #是否需要将自己注册到注册中心(注册中心集群需要设置为true)
    fetch-registry: false    #是否需要搜索服务信息 因为自己是注册中心所以为false

然后修改启动类,加上 @EnableEurekaServer 注解。参考如下:

package site.longkui.eureka;


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

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

然后,启动当前项目。

访问127.0.0.1:7001,可以看到下面的界面,表示eureka创建成功。

2.将生产者注册到Eureka服务中

我们打开前面创建的生产者,首先修改pom文件,将生产者表示为Eureka的客户端。

增加pom

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

然后,修改生产者的配置文件 application.yml,修改为

server:
  port: 9001 #服务的端口
#spring相关配置
spring:
  application:
    name: service-provider1  #服务的名称
#eureka配置
eureka:
  client:
    service-url:
      # 填写注册中心服务器地址
      defaultZone: http://localhost:7001/eureka
    # 是否需要将自己注册到注册中心
    register-with-eureka: true
    # 是否需要搜索服务信息
    fetch-registry: true
  instance:
    # 使用ip地址注册到注册中心
    prefer-ip-address: true
    # 注册中心列表中显示的状态参数
    instance-id: ${spring.cloud.client.ip-address}:${server.port}

然后把生产者的启动类加上@EnableEurekaClient

然后启动生产者,再刷新一下 eureka的地址 127.0.0.1:7001,可以看到生产者这个服务正常启动

3.将消费者注册到Eureka

跟上面的消费者操作类似,将消费者注册到Eureka

POM:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>s-cloud</artifactId>
        <groupId>site.longkui</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>s-cloud-consumer1</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>
            <version>3.1.8-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

yml配置文件

server:
  port: 8001 #服务的端口
#spring相关配置
spring:
  application:
    name: service-consumer1  #服务的名称
#eureka配置
eureka:
  client:
    service-url:
      # 填写注册中心服务器地址
      defaultZone: http://localhost:7001/eureka
    # 是否需要将自己注册到注册中心
    register-with-eureka: true
    # 是否需要搜索服务信息
    fetch-registry: true
  instance:
    # 使用ip地址注册到注册中心
    prefer-ip-address: true
    # 注册中心列表中显示的状态参数
    instance-id: ${spring.cloud.client.ip-address}:${server.port}

启动类:

package site.longkui.consumer1;

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

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

然后启动消费者,再刷新Eureka,可以看到两个服务正常启动。

最后,测试一下原来的消费者接口: localhost:8001/consumer1/getUser

发现正常收到数据