springcloudeureka怎么用(SpringCloud第一篇服务注册与发现Eureka)
springcloudeureka怎么用(SpringCloud第一篇服务注册与发现Eureka)右键工程-New-Model开始新建EurekaService模块:File-New-Project这里可以什么都不选springboot父工程新建完成后结构
一、SpringCloud简介
Spring Cloud是一系列框架的有序集合提,供了快速构建分布式系统的一些工具,它利用springboot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。所以需要开发中对springboot有一定的了解,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
二、创建服务注册中心
2.1EurekaService注册中心
srpingCloud Eureka是SpringCloud Netfix组件中的一部分,是服务注册和发现模块,所有服务都需要在这里注册;
2.2创建EurekaService
首先创建一个springboot父工程,后面其他所有小模块全部在这基础上创建;
File-New-Project
这里可以什么都不选
springboot父工程新建完成后结构
开始新建EurekaService模块:
右键工程-New-Model
这里我的springboot版本是2.2.7,勾选Eureka Server 点击next
Eureka Server模块新建完成后目录结构:
Eureka Server的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.firstwave</groupId>
<artifactId>sf-server-eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>sf-server-eureka</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR4</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
以上就是创建工程步骤,下面做一些必要的配置信息;
2.3启动EurekaServer
在Eureka Server模块的启动类中添加@EnableEurekaServer注解
package com.firstwave.sfservereureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class SfServerEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(SfServerEurekaApplication.class args);
}
}
配置文件application.properties
# server
server.port=8761
# application
spring.application.name=server-eureka
# eureka
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
# eureka
eureka.instance.hostname=localhost
# 设置不注册自身
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
默认注册中心会注册自身,设置eureka.client.register-with-eureka:false和eureka.client.fetch-registry:false来表明自己是一个eureka server,不注册自己。
执行SfServerEurekaApplication启动注册中心;
2.4访问注册中心
eureka server 是有界面的,打开浏览器访问:http://localhost:8761 界面如下:
2.5创建服务提供者(EurekaClient)
当EurekaClient注册到服务中心时,他会提供一些元数据,比如主机、端口等,EurekaServer 从每个EurekaClient实例接收心跳消息,如果发生超时,则注册中心会删除超时的实例。
创建过程与EurekaServer类似,选择依赖包时勾选Discovery Client
创建EurekaClient后结构如下:
对应pom.xml文件:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.firstwave</groupId>
<artifactId>sf-eureka-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>sf-eureka-client</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR4</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
在启动类中添加注解@EnableEurekaClient表明自己是一个EurekaClient
仅仅@EnableEurekaClient是不够的,还需要在配置文件中注明自己的服务注册中心的地址
spring.application.name=eureka-client
server.port=8762
# eureka
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
spring.application.name很重要,后面服务与服务之间的相互调用都是通过这个名字去映射的
先启动刚刚创建的EurekaServer 再启动EurekaClient 顺序不能错,要不然注册不了;
启动工程成功后,打开http://localhost:8761
源码:https://gitee.com/shafeipersional/sf-springcloud-learning/tree/master/chapter1/sf-springcloud-learning