<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>并在启动类上添加@EnableEurekaServer注解,这样就能够开启服务注册中心的功能了,在配置文件中添加如下内容就能够其中注册中心这个服务了。
server.port=8080 #因为该应用为注册中心,因此设置为false, 表明不向注册中心注册本身 eureka.client.register-with-eureka=false #因为注册中心的职责就是维护服务实例,它并不须要去检索服务, 因此也设置为false eureka.client.fetch-registry=false #指定服务注册中心的地址 eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/经过localhost:8080就能够查看注册中心的页面数据状况,以下图所示
#server1 spring.application.name=eureka-server server.port=8095 eureka.instance.hostname=127.0.0.1:8095 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8096/eureka/,http://127.0.0.1:8097/eureka/ #server2 spring.application.name=eureka-server server.port=8096 eureka.instance.hostname=127.0.0.1:8096 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8095/eureka/,http://127.0.0.1:8097/eureka/ #server3 spring.application.name=eureka-server server.port=8097 eureka.instance.hostname=127.0.0.1:8097 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8095/eureka/,http://127.0.0.1:8096/eureka/只是将原来单机的配置文件内容修改成如今的以上这三种形式,就能够运行项目了,运行结果以下,eureka.instance.hostname能够是peer一、peer二、peer3这样的名字,可是这样就得修改hosts配置文件,对IP作映射,看来Eureka内部是根据eureka.instance.hostname获取相应的IP,而后根据IP去作的注册
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>修改配置文件为如下内容
spring.application.name=compute-service server.port=8081 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8095/eureka/,http://127.0.0.1:8096/eureka/,http://127.0.0.1:8097/eureka/
而后在主类上添加@EnableDiscoveryClient注解,开启服务的注册发现功能,这样这个服务的全部对外提供的功能都被注册到服务注册中心。下图是两个server注册后的服务在页面上的展现:html
而后看一下服务的发现,消费端使用的是Robbin,因此要额外添加如下两个jar包java
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>在主类上添加@EnableDiscoveryClient注解,开启服务发现的功能,同时,因为服务消费端去请求数据的时候,须要Http请求,这里须要生成一个http请求的对象,在主类中添加如下代码,这里有一个客户端负载的功能,后续的文章问研究这个的缘由,这里不作说明
@Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); }修改配置文件为如下内容
spring.application.name=ribbon-consumer server.port=8082 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8095/eureka/,http://127.0.0.1:8096/eureka/,http://127.0.0.1:8097/eureka/启动项目后就能够经过如下方式调用服务了
public String add() { return restTemplate.getForEntity("http://compute-service/add?a=10&b=20", String.class).getBody(); }
compute-service为服务提供者注册的服务的名字,至此搭建高可用的服务注册中心和验证过程就完毕了。spring
………………………………………………………………………………………………………………………………………………………………………………………windows
更新:架构
#关闭自我保护,能够按期清理失效的服务
eureka.server.enable-self-preservation=false
# 清理间隔(单位毫秒,默认是60*1000):
eureka.server.eviction-interval-timer-in-ms=1000
app