Spring Cloud Eureka服务注册中心 单节点搭建(学习总结)

一、前言:

本文主要搭建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的时候所写,仅供参考,大家一起学习,共同进步!

猜你喜欢

转载自blog.csdn.net/Weixiaohuai/article/details/82498822
今日推荐