首页 > 编程语言 > 详细

SpringCloud 教程 之二 服务发现(Eureka Discovery Client + Ribbon)

时间:2018-11-15 10:41:09      阅读:400      评论:0      收藏:0      [点我收藏+]

1、启动服务注册中心

可参考 SpringCloud 教程 之一 服务注册中心及服务注册(Eureka Server + Eureka Client) 第1节 创建【服务注册中心】工程,即 Eureka Server。创建并运行工程。

2、创建服务提供者工程

2.1、新建Spring Boot 工程 springcloud-eureka-provider

2.2、工程pom.xml文件添加如下依赖:

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

2.3、在工程启动类中,添加注解 @EnableEurekaClient

package com.miniooc.eurekaprovider;

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

/**
 * EurekaProvider
 *
 * @author 宋陆
 * @version 1.0.0
 */
@EnableEurekaClient  // 激活 eureka client 端相关配置的注解
@SpringBootApplication
public class EurekaProviderApplication {

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

2.4、创建服务提供控制器类 EurekaProviderController

package com.miniooc.eurekaprovider.controller;

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

import javax.servlet.http.HttpServletRequest;

/**
 * EurekaProviderController
 *
 * 服务提供者
 *
 * @author 宋陆
 * @version 1.0.0
 */
@RestController
public class EurekaProviderController {
    @Value("${server.port}")
    String port;

    @RequestMapping("/hello")
    public String hello(HttpServletRequest request) {
        String message = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getServletPath();
        System.out.println(message);
        return message;
    }
}

2.5、创建工程配置文件application-miniooc1.yml,添加如下配置:

server:
  port: 9524
spring:
  application:
    name: eureka-provider

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

参照2.5,创建工程配置文件application-miniooc2.yml,并修改port为9525

参照2.5,创建工程配置文件application-miniooc3.yml,并修改port为9526

2.6、在IDEA集成开发环境中,添加spring boot启动配置Application1,修改Active profiles 为 miniooc1

技术分享图片

参照2.6,添加spring boot启动配置Application2,并修改Active profiles 为 miniooc2

参照2.6,添加spring boot启动配置Application3,并修改Active profiles 为 miniooc3

2.7、按照启动配置Application1、Application2、Application3依次启动应用

技术分享图片

2.8、打开浏览器,访问服务注册中心界面 http://localhost:9527

技术分享图片

红框处,可以看到有3个实例已经注册到了服务注册中心,且服务名都是 EUREKA-PROVIDER

3、创建服务消费工程

3.1、新建 Spring Boot 工程 springcloud-eureka-ribbon

3.2、工程pom.xml文件添加如下依赖:

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

3.3、在工程启动类中,添加注解 @EnableDiscoveryClient

package com.miniooc.eurekaribbon;

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

/**
 * EurekaProvider
 * 应用程序启动类,程序入口
 *
 * @author 宋陆
 * @version 1.0.0
 */
@EnableDiscoveryClient // 激活 eureka 服务发现端 相关配置
@SpringBootApplication
public class EurekaRibbonApplication {

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

}

3.4、创建应用配置类 EurekaRibbonConfig

package com.miniooc.eurekaribbon.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * EurekaRibbonConfig
 * 应用配置类,初始化bean或配置信息
 *
 * @author 宋陆
 * @version 1.0.0
 */
@Configuration
public class EurekaRibbonConfig {

    @Bean // 初始化bean
    @LoadBalanced // 实现负载均衡
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

3.5、创建服务消费服务类 EurekaRibbonService

package com.miniooc.eurekaribbon.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

/**
 * EurekaRibbonService
 * 服务消费服务类,调用服务提供者提供的服务,实现业务
 *
 * @author 宋陆
 * @version 1.0.0
 */
@Service
public class EurekaRibbonService {
    @Autowired
    RestTemplate restTemplate;

    public String ribbonTest() {
        String message;
        try {
            message = restTemplate.getForObject("http://EUREKA-PROVIDER/hello", String.class);
        } catch (Exception ex) {
            message = ex.getMessage();
        }
        return message;
    }
}

3.6、创建服务消费控制器类 EurekaRibbonController

package com.miniooc.eurekaribbon.controller;

import com.miniooc.eurekaribbon.service.EurekaRibbonService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * EurekaRibbonController
 * 服务消费控制器类,对用户提供服务
 *
 * @author 宋陆
 * @version 1.0.0
 */
@RestController
public class EurekaRibbonController {

    @Resource
    private EurekaRibbonService eurekaRibbonService;

    @RequestMapping("/ribbonTest")
    public String ribbonTest() {
        String message = eurekaRibbonService.ribbonTest();
        System.out.println(message);
        return "获取到的信息:" + message;
    }

}

3.7、创建工程配置文件application.yml,添加如下配置:

server:
  port: 9528
spring:
  application:
    name: eureka-ribbon

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

3.8、启动服务消费端工程

3.9、打开浏览器,访问服务注册中心界面 http://localhost:9527

技术分享图片

红框处,可以看到服务消费实例已经注册到了服务注册中心,服务名 EUREKA-RIBBON

3.10、新开浏览器窗口,访问 http://localhost:9528/ribbonTest,多次刷新该地址

技术分享图片

查看服务消费端控制台信息,红框处,可以看到服务消费实例成功调用了服务提供者的服务,并实现了负载均衡,轮询请求不同的服务提供者。


SpringCloud 教程 课程目录

SpringCloud 教程 之 SpringCloud概述

SpringCloud 教程 之一 服务注册与服务发现(Eureka)

SpringCloud 教程 之二 服务消费(Ribbon)

SpringCloud 教程 之三 服务消费(Feign)

SpringCloud 教程 之二 服务发现(Eureka Discovery Client + Ribbon)

原文:https://www.cnblogs.com/songlu/p/9929538.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!