十、服務註冊與發現
阿新 • • 發佈:2019-01-09
服務註冊與發現:
一、eureka的常用註解:
1、@EnableEurekaClient:該註解表明應用既作為eureka例項,又為eureka client可以發現註冊的服務
2、@EnableEurekaServer: 該註解表明應用為eureka服務,有可以聯合多個服務作為叢集,對外提供服務註冊以及發現功能
註冊服務使用@EnableEurekaClient將服務註冊到註冊中心
二、註冊服務
1、新建spring-boot應用
2、修改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.example</groupId>
<artifactId >demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.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</artifactId>
</dependency>
<!--spring boot 單元測試 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<!--表明是一個web應用 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--該模組能夠自動為 Spring Boot 構建的應用提供
一 系列用千監控的端點-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--eureka客戶端依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
<!--服務註冊中心-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR6</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>
3.在啟動類中新增
@EnableDiscoveryClient//啟用Eureka中DiscoveryClient實現
4、修改application.properties檔案
#spring.profiles.active = dev
#eureka consumer註冊的name,唯一標識
spring.application.name=eureka-client
#該名字將註冊到eureka註冊中心,在發現服務時discoveryClient.getServices()獲取的是這個名稱,底層程式碼對其轉大寫,也就是頁面上顯示的服務
eureka.instance.appname=eureka.client.01
#eureka provider服務的埠號
server.port=3333
#指定註冊的Eureka Server地址
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:2222/eureka/
5、做完這一切之後,我們就可以來測試了,直接執行這個Spring Boot工程,執行成功之後,我們重新整理剛才的http://localhost:1111和http://localhost:2222就可以看到有一個服務已經註冊成功了。如下
啟動client註冊服務spring boot工程
註冊成功!
2017-12-28 15:15:24.545 ERROR 33064 --- [-target_peer1-0] c.n.e.cluster.ReplicationTaskProcessor : Network level connection to peer peer1; retrying after delay
com.sun.jersey.api.client.ClientHandlerException: java.net.UnknownHostException: peer1
at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar:1.19.1]
at com.netflix.eureka.cluster.DynamicGZIPContentEncodingFilter.handle(DynamicGZIPContentEncodingFilter.java:48) ~[eureka-core-1.4.12.jar:1.4.12]
at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.4.12.jar:1.4.12]
at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.1.jar:1.19.1]
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.1.jar:1.19.1]
多嘗試幾次
百度意思是:網路層連線對等Peer1;重試延遲後