第二章 Spring Cloud 服务的注册与发现(Eureka Server)

上一篇文章我们讲解了Spring Cloud以及相关的一些概念,你也许会有些不解,没有关系,从本章开始,会逐一讲解。
Eurek包括两部分:Eurek Server和Eureka Client

Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

1、创建服务注册中心(Eurek Server)

第一步:创建一个父工程

创建一个父工程(maven项目)
第二章 Spring Cloud 服务的注册与发现(Eureka Server)_第1张图片
第二章 Spring Cloud 服务的注册与发现(Eureka Server)_第2张图片

第二步:引入相关依赖

加入相关依赖,spring Boot版本为2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE。这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom。这一系列文章全部采用这种模式,其他文章的pom跟这个pom一样。再次说明一下,以后不再重复引入。



    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.1.RELEASE
        
    

    4.0.0
    com.brimen
    spring-cloud-brimen-eureka
    1.0-SNAPSHOT
    spring-cloud-brimen-eureka
    Spring Cloud 服务的注册与发现
    pom

    
        UTF-8
        UTF-8
        1.8
        Finchley.RELEASE
    
    
    
        spring-cloud-eureka
        spring-cloud-provide
    
   
    
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


第三步:创建module工程

在该父工程下创建两个module工程,一个是Eurek Server(spring-cloud-eureka)工程,另一个是
Eurek Client(Eurek Client)工程,我们先来讲解如何创建Eurek Server。
创建一个普通的Spring Boot工程
第二章 Spring Cloud 服务的注册与发现(Eureka Server)_第3张图片
第二章 Spring Cloud 服务的注册与发现(Eureka Server)_第4张图片

第四步:引入依赖

其pom.xml继承了父pom文件,并引入spring-cloud-starter-netflix-eureka-server的依赖,代码如下:



    4.0.0
    
        com.brimen
        spring-cloud-brimen-eureka
        1.0-SNAPSHOT
        
    
    com.brimen
    spring-cloud-eureka
    0.0.1-SNAPSHOT
    spring-cloud-eureka
    Spring Cloud Eureka 注册中心

    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
    


第五步:再配置文件当中进行配置

配置Eurek Server的注册中心,Eurek Server是一个高可用的组件,它没有缓存,每一个实例注册之后需要向注册中心发送心跳,在默认条件下,Eurek Server也是一个Eurek Client,它可以通过“registerWithEureka: false”来配置是否注册自己,配置如下:

server:
  port: 8080

eureka:
  instance:
    #服务注册中心实例的主机名
    hostname: localhost
  client:
    #是否向服务注册中心注册自己
    registerWithEureka: false
    #是否检索服务
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

spring:
  application:
    name: server-eureka

第六步:在入口类需要添加一个注解@EnableEurekaServer

代码如下:

package com.brimen.servereureka;

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

@SpringBootApplication
@EnableEurekaServer
public class ServerEurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServerEurekaApplication.class, args);
    }
}

第七步:启动工程并访问

启动工程访问:http://localhost:8080 ,可以看到如下界面
第二章 Spring Cloud 服务的注册与发现(Eureka Server)_第5张图片

2、创建一个服务提供者(spring-cloud-provide)

当client向server注册时候,会提供一些基本数据,比如说主机、端口、url和主页等信息。server将接收到每个client的心跳消息,如果心跳超时,通常会从server当中删除。

第一步:创建一个Spring Boot 的Module工程

创建一个普通的Spring Boot的Module工程,并命名为:spring-cloud-provid

第二步:引入相关依赖

主要是引入关于“spring-cloud-starter-netflix-eureka-client”的依赖,代码如下:



    4.0.0
    
        com.brimen
        spring-cloud-brimen-eureka
        1.0-SNAPSHOT
        
    
    com.brimen
    spring-cloud-provide
    0.0.1-SNAPSHOT
    spring-cloud-provide
    Spring Cloud Eurek 客户端,作为向Eurek Server注册的测试

    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

第三步:在配置文件当中配置

主要是指明注册服务的地址,代码如下:

server:
  port: 8081

spring:
  application:
    name: spring-cloud-provide

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

备注:需要指明 spring.application.name,这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name

第四步:在入口类添加@EnableEurekaClient注解

代码如下:

package com.brimen.springcloudprovide;

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

@SpringBootApplication
@EnableEurekaClient
public class SpringCloudProvideApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringCloudProvideApplication.class, args);
    }
}

第五步:创建一个对外提供的接口,用于测试

代码如下:

package com.brimen.springcloudprovide.controller;

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

@RestController
@RequestMapping("/hello")
public class HelloController {

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

    @GetMapping("/gethello")
    public String getHello(@RequestParam(value = "name",defaultValue = "brimen") String name){
        return "Hi "+name+" I am from port:"+port;
    }
}

3、启动并访问

依次启动spring-cloud-eureka和spring-cloud-client两个工程,并访问 http://localhost:8080,你会发现spring-cloud-client已经注册在了服务当中。
第二章 Spring Cloud 服务的注册与发现(Eureka Server)_第6张图片

你可能感兴趣的:(Spring,Cloud)