【SpringCloud Greenwich版本】第二章:服务提供者(eureka)

一、SpringCloud版本

本文介绍的Springboot版本为2.1.1.RELEASE,SpringCloud版本为Greenwich.RC1,JDK版本为1.8,集成环境为IntelliJ IDEA

二、Eureka客户端介绍

服务发现是基于微服务架构的关键原则之一。尝试配置每个客户端或某种形式的约定可能非常困难,可以非常脆弱。Netflix服务发现服务器和客户端是Eureka。可以将服务器配置和部署为高可用性,每个服务器将注册服务的状态复制到其他服务器。

当客户端注册Eureka时,它提供关于自身的元数据,例如主机和端口,健康指示符URL,主页等。Eureka从属于服务的每个实例接收心跳消息。如果心跳失败超过可配置的时间表,则通常将该实例从注册表中删除。

三、创建客户端(服务提供者)

  • 3.1创建

参考前一章,创建Springboot module工程,取名为cloudclient,pom文件继承cloudser的pom文件

<?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.jthao</groupId>
    <artifactId>cloudclient</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>cloudclient</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.jthao</groupId>
        <artifactId>cloudser</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

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

</project>
  • 3.2启动

启动Eureka客户端需在启动类上增加@EnableDiscoveryClient注解

package com.jthao.cloudclient;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class CloudclientApplication {

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

}

当然,仅仅是@EnableDiscoveryClient是不够的,还需在配置文件中注明访问的服务端地址service-url
注:

  • 其中spring.application.name为各服务之间访问调用时使用。
  • eureka.client.healthcheck.enabled=true为开启健康检查

默认情况下,Eureka使用客户端心跳来确定客户端是否启动。除非另有规定,否则发现客户端将不会根据Spring Boot执行器传播应用程序的当前运行状况检查状态。这意味着成功注册后Eureka将永远宣布申请处于“UP”状态。通过启用Eureka运行状况检查可以改变此行为,从而将应用程序状态传播到Eureka。因此,每个其他应用程序将不会在“UP”之外的状态下将流量发送到应用程序

server.port=8002
spring.application.name=cloudclient
eureka.client.service-url.defaultZone: http://localhost:8001/eureka/

eureka.client.healthcheck.enabled=true

我们在配置一个Controller

package com.jthao.cloudclient.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @RequestMapping("/test")
    public String hello(@RequestParam String name) {
        System.out.println("cloudclient start");
        return name + "===端口:8002被调用了===";
    }

}

启动完成后,会发现客户端已经在服务注册中心注册了。服务名为cloudclient,端口为8002
在这里插入图片描述通过浏览器访问http://localhost:8002/test?name=xiaoming
在这里插入图片描述
至此,服务注册中心(eureka server)与服务提供者(eureka client)已全部完成。

四、启动多个客户端

在此介绍下如何启动多个客户端,为后续初步实现负载做准备。
选中项目,如下图所示,点击编辑配置
在这里插入图片描述将红框中默认勾选去掉
在这里插入图片描述修改配置文件中端口为8003,Controller中的输出信息稍加修改,再次启动cloudclient工程,原来的工程不用停

server.port=8003
spring.application.name=cloudclient
eureka.client.service-url.defaultZone: http://localhost:8001/eureka/
package com.jthao.cloudclient.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @RequestMapping("/test")
    public String hello(@RequestParam String name) {
        System.out.println("cloudclient start");
        return name + "===端口:8003被调用了===";
    }

}

会发现注册中心多了一个服务,端口为8003
在这里插入图片描述访问页面,输出信息
在这里插入图片描述

扫描二维码关注公众号,回复: 4723427 查看本文章

猜你喜欢

转载自blog.csdn.net/haobao528/article/details/85276355