1. 程式人生 > >十、服務註冊與發現

十、服務註冊與發現

服務註冊與發現:

一、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:1111http://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;重試延遲後