SpringCloud (핀 칠리 버전) 자습서 (A) : 등록 서비스 및 발견 유레카

A, 봄 구름 소개

핀 칠리 업데이트의 봄 구름의 현재 버전은 위의 버전 springbott2.0을 지원했다. 특정 버전은 다음 표를 참조 할 수 있습니다.

클라우드 코드 부트 버전 (기차) 부트 버전 (테스트) 라이프 사이클
각도 1.2.x를 1.3와 호환 년 7 월 2017 년 EOL
브릭 스톤 1.3.x 버전 1.4.x를 2017-07 졸업
캠든 1.4.x를 1.5.x 이하 -
Dalston 1.5.x 이하 예상하지 2.X -
에지웨어 1.5.x 이하 예상하지 2.X -
핀 칠리 2.X 예상하지 1.5.x 이하 -

공식 문서 링크의 핀 칠리 버전 :

http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html

둘째, 레지스트리 서비스를 만들
영사 기사의 자세한 사항 후에로 나는 아직도, 서비스 등록 및 검색 같은 구성 요소 유레카을 사용하고, 여기.

2.1 먼저 받는다는 주요 프로젝트를 만듭니다.

첫째, 치어 파일, 스프링 부트 버전 2.0.3.RELEASE, 봄 클라우드 버전 Finchley.RELEASE의 도입에 따라 마스터 Maven 프로젝트를 생성합니다. 파일로 부모 치어 치어 파일이 종속 버전 제어의 역할을, 다른 모듈 작품은 POM을 상속합니다. 기사의이 시리즈는 모두이 모델을 채택, 치어이 치어 같은 다른 기사. 다시 반복하지 않는다 도입을 설명한다. 다음과 같이 코드입니다 :

 

1 <? XML 버전 = "1.0"인코딩 = "UTF-8"?>
 2 <프로젝트의 xmlns = "http://maven.apache.org/POM/4.0.0"
 3           의 xmlns :이 xsi = "HTTP : // www.w3.org/2001/XMLSchema-instance "
 4           XSI :의 schemaLocation ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0 .XSD ">
 5      <modelVersion> 4.0.0 </ modelVersion>
 6  
7      <의 groupId> com.liu </의 groupId>
 8      <artifactId를> SpringCloudLearn01 </ artifactId를>
 9      <version>은 1.0 SNAPSHOT </ 버전>
 10  
11      < > 이름 SC-F-장 </ 이름>
(12)      <설명> 데모 프로젝트 를위한 봄 부트 </ 설명>
13  
14      <부모>
 15          <의 groupId> org.springframework.boot </의 groupId>
 16          <artifactId를> 스프링 부팅 스타터 부모 </ artifactId를>
 17          <버전> 2.0.3.RELEASE </ 버전>
 18          <relativepath를 / >
 19      </ 부모>
 20  
21      <모듈>
 22          <모듈> 유레카 서버 </ 모듈>
 23          <모듈> 서비스 클라이언트 </ 모듈>
 24          <모듈>의 serice-가장하다 </ 모듈>
 25      </ 모듈>
 26  
27      <특성>
 28         <project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding>
 29          <project.reporting.outputEncoding> UTF-8 </project.reporting.outputEncoding>
 30          <java.version> 1.8 </java.version>
 31          <스프링 cloud.version> Finchley.RELEASE </spring-cloud.version>
 32      </ 속성>
 33  
34      <의존성>
 35          <의존성>
 36              <의 groupId> org.springframework.boot </의 groupId>
 37              <artifactId를> 스프링 부팅 스타터 테스트 </ artifactId를>
 38              <범위> 시험 </ 범위>
39          </ 의존성>
 40     </ 의존성>
 41  
42      <dependencyManagement>
 43          <의존성>
 44              <의존성>
 45                  <의 groupId> org.springframework.cloud </의 groupId>
 46                  <artifactId를> 스프링 클라우드 종속성 </ artifactId를>
 47                  <버전> $ {스프링 -cloud.version} </ 버전>
 48                  <type>은 POM </ type>은
 49                  <범위> 수입 </ 범위>
 50              </ 의존성>
 51          </ 의존성>
 52      <
/ dependencyManagement> 53  
54     <빌드>
 55          <플러그인>
 56              <플러그인>
 57                  <의 groupId> org.springframework.boot </의 groupId>
 58                  <artifactId를> 스프링 부팅 받는다는 - 플러그인 </ artifactId를>
 59              </ 플러그인>
 60          </ 플러그인>
 61      </ 빌드>
 (62)  
(63) </ 프로젝트>

2.2은 다음 두 가지 모델 프로젝트를 만들 : ** 서비스 레지스트리, 즉 유레카 서버 및 유레카 클라이언트와 같은 다른 같은 모델 프로젝트를.

다음의 예, 상세한 설명을 생성하는 과정과 서버를 만들려면

오른쪽 프로젝트 -> 모델 - 만들기> 아래 initialir 선택 봄 :

 

다음 단계 -> 선택 클라우드 discovery-> 유레카 서버, 다음 목록 옆에 있었다.

프로젝트가 생성 된 후, 부모 POM 파일의 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>
    <parent>
        <groupId>com.liu</groupId>
        <artifactId>SpringCloudLearn01</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>com.liu.example</groupId>
    <artifactId>config-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>config-client</name>
    <description>Demo project for Spring Boot</description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

2.3 启动一个服务注册中心,只需要一个注解@EnableEurekaServer,这个注解需要在springboot工程的启动application类上加:

package com.liu.example.eurekaserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }

}

**2.4 **eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。eureka server的配置文件appication.yml:

server:
  port: 8761

#通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

spring:
  application:
    name: eurka-server

2.5 eureka server 是有界面的,启动工程,打开浏览器访问:
http://localhost:8761 ,界面如下:

 

No application available 没有服务被发现 ……_
因为没有注册服务当然不可能有服务被发现了。

三、创建一个服务提供者 (eureka client)
当client向server注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka server 从每个client实例接收心跳消息。 如果心跳超时,则通常将该实例从注册server中删除。

创建过程同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>
    <parent>
        <groupId>com.liu</groupId>
        <artifactId>SpringCloudLearn01</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>com.liu.example</groupId>
    <artifactId>service-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>service-client</name>
    <description>Demo project for Spring Boot</description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <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>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

通过注解@EnableEurekaClient 表明自己是一个eurekaclient.

package com.liu.example.serviceclient;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ServiceClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceClientApplication.class, args);
    }

}

新建service类型写上一个方法:

package com.liu.example.serviceclient.service;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.Mapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class helloSevice {

    @Value("${server.port}")
    String port;

    @RequestMapping("/hi")
    public String getHello(){
        return "hello! 我的端口号是:" + port;
    }
}

仅仅@EnableEurekaClient是不够的,还需要在配置文件中注明自己的服务注册中心的地址,application.yml配置文件如下:

server:
  port: 8762
spring:
  application:
    name: service-client

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

需要指明spring.application.name,这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name 。
启动工程,打开http://localhost:8761 ,即eureka server 的网址:

你会发现一个服务已经注册在服务中了,服务名为SERVICE-HI ,端口为7862

这时打开 http://localhost:8762/hi?name=forezp ,你会在浏览器上看到 :

源码下载:https://github.com/MrLiu1227/MySpringCloud.git

추천

출처www.cnblogs.com/liuyuan1227/p/11220208.html