一,什么是Eureka:
官方的介绍在这里Eureka wiki。Eureka是Netflix开源的一个RESTful服务,主要用于服务的注册发现。Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
Eureka的吸引力来源于以下几点:
- 开源:大家可以对实现一探究竟,甚至修改源码。
- 可靠:经过Netflix多年的生产环境考验,使用应该比较靠谱省心
- 功能齐全:不但提供了完整的注册发现服务,还有Ribbon等可以配合使用的服务。
- 基于Java:对于Java程序员来说,使用起来,心里比较有底。
- spring cloud可以使用Spring Cloud, 与Eureka进行了很好的集成,使用起来非常方便
二,搭建注册中心:
Maven所需的依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.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>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 引入eureka server支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!-- 增加访问eureka server的时候的权限拦截功能,防止任意的用户可用访问到我们的注册中心-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.RELEASE</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>
配置application
#给注册中心起名字
spring.application.name=wangmx-xm
server.port=2100
#如我们不想使用主机名来定义注册中心的地址,也可以使用IP地址的形式, 但是需要在 配置文件中增加配置参数eureka.instance.prefer-ip-address= true, 该值默认为false。
eureka.instance.prefer-ip-address=true
# eureka注册中心增加密码验证
security.user.name=wangmx
security.user.password=wangmx
#参数用于定义服务续约任务的调用间隔时间,默认为30秒
eureka.instance.lease-renewal-interval-in-seconds=30
#参数用于定义服务失效的时间,默认为90秒
eureka.instance.lease-expiration-duration-in-seconds=90
# 代表不向注册中心注册自己
eureka.client.register-with-eureka=false
# 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为 false
eureka.client.fetch-registry=false
#缓存清单的更新时间,默认是30秒
eureka.client.registry-fetch-interval-seconds=30
#由于本地调试很容易触发注册中心的保护机制, 这会使得注册中心维护的服务实例不那么准确,默认为true。
#因此在本地调试的适合我们将参数设置为false,那么每次我们关闭客户端的时候我们的注册中心就直接移开相应的程序
eureka.server.enable-self-preservation=true
eureka.client.serviceUrl.defaultZone=http\://wangmx\:wangmx@127.0.0.1\:2100/eureka/
SpringBoot 的启动类的 注解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class wangmx{
public static void main(String[] args) {
SpringApplication.run(wangmx.class, args);
}
}
启动成功后的页面