上一篇文章:
我们简单介绍了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
发现正常收到数据