一、前言:
本文主要搭建Spring Cloud Eureka服务注册中心(单节点),不过一般生产环境都是多节点负载均衡,形成一个服务注册中心集群,这样一个注册中心崩了不会影响整个系统的运行以及接口的调用。本文基于SpringBoot 1.5.2,Spring Cloud Camden.SR6版本编写,版本不一致可能会有差异。下面就学习总结记录一下:
二、新建一个Eureka-Server:
首先引入依赖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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springcloud.wsh</groupId>
<artifactId>springcloud_eureka_server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springcloud_eureka_server</name>
<description>Spring Cloud Eureka服务提供者</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Camden.SR6</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</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>
三、启动类加上@EnableEurekaServer注解,开启Eureka服务发现的功能。
@SpringBootApplication
//@EnableEurekaServer注解的作用: 开启Eureka服务发现的功能
@EnableEurekaServer
public class SpringcloudEurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudEurekaServerApplication.class, args);
}
}
四、编写application.yml文件:主要配置一些端口号、应用名称、以及服务注册中心地址等等。
server:
port: 1111 #服务端口号
eureka:
client:
fetch-registry: false #是否检索服务
register-with-eureka: false #表示不向Eureka注册自身服务
service-url: #服务注册中心地址,其他服务可以通过指定eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/注册到Eureka上
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
instance:
#主机名
hostname: localhost
spring:
application:
#服务名称
name: eureka-server
到此,Eureka服务发现者已经搭建好。
五、搭建Eureka Client服务提供者
首先引入依赖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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springcloud.wsh</groupId>
<artifactId>springcloud_eureka_client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springcloud_eureka_client</name>
<description>Spring Cloud Eureka服务提供者</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Camden.SR6</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</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>
六、启动类加上@EnableDiscoveryClient注解,使其成为Eureka的一个服务提供者。
@SpringBootApplication
//@EnableEurekaClient
@EnableDiscoveryClient //注册Eureka客户端
public class SpringcloudEurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudEurekaClientApplication.class, args);
}
}
七、编写application.yml配置文件:
主要是要指定服务注册中心的地址,端口号等等
server:
port: 2222 #服务端口号
spring:
application:
#服务名称,对应注册到Eureka的实例名称,后续Zuul路由映射的serviceId也是根据这个
name: eureka-client
eureka:
instance:
#主机名
hostname: localhost
client:
serviceUrl:
#服务注册中心的地址,指定这个会向Eureka注册一个名叫eureka-client的客户端
#单节点Eureka服务注册中心,不适用与生产环境,实际生产会用到Eureka Server集群
defaultZone: http://localhost:1111/eureka/
#这里可以定义一些自定义的参数,可以使用@Value("${com.springcloud.author}")获取自定义参数的值
com:
springcloud:
author: weixiaohuai
date: 2018-09-07 10:10
八、新建测试Controller:TestController.java:
注意:可以引入discoveryClient获取当前服务实例的一些信息。可以使用@Value注解获取在配置文件自定义的一些参数。
//@RestController注解是一个组合注解, @RestController = @Controller + @ResponseBody
@RestController
public class TestController {
private static Logger logger = LoggerFactory.getLogger(TestController.class);
@Autowired
private DiscoveryClient discoveryClient;
//获取配置文件中的自定义参数
@Value("${com.springcloud.author}")
private String author;
@Value("${com.springcloud.date}")
private String date;
@GetMapping("/test")
public String test() {
//获取当前服务的实例
ServiceInstance serviceInstance = discoveryClient.getLocalServiceInstance();
String info = "hello eureka, 主机名:" + serviceInstance.getHost() + ", service_id:" + serviceInstance.getServiceId() + " 作者: " + author + " / 日期: " + date;
logger.info(info);
return info;
}
}
九、启动项目:
浏览器访问http://localhost:1111/,如下图。可以看到eureka-client已经成功注册到Eureka上面。
接着我们访问http://localhost:2222/test,可以访问到TestController中定义的测试方法:如下图
到此,我们单节点的Eureka服务注册中心已经搭建完成,本文是笔者在温习SpringCloud的时候所写,仅供参考,大家一起学习,共同进步!