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

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)

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

时间: 2024-08-03 10:36:58

SpringCloud 教程 之二 服务发现(Eureka Discovery Client + Ribbon)的相关文章

SpringCloud 基础教程(二) 服务注册(Eureka Client)

1.创建[服务提供者],即 Eureka Client 1.1.新建 Spring Boot 工程,工程名称:springcloud-eureka-client 2.2.工程 pom.xml 文件添加如下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependen

springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin

参考:springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin 原创 2017年09月18日 11:46:28 标签: 微服务架构 / 微服务组件 / eureka / ribbon / zuul 26459 springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin 相信现在

SpringCloud中服务发现-Eureka

1.Eureka服务端集群开发 1.先创建一个父工程 若是不是普通demo,还有别的配置时,需要注意若是服务开不起来可能就是父类依赖中可能会需要<dependencyManagement>这个标签. 2.再创建两个子工程 1.导入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-s

SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)(Finchley版本)

在上一篇文章,讲了服务的注册和发现.在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的.Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign.在这一篇文章首先讲解下基于ribbon+rest. 一.ribbon简介 Ribbon is a client side load balancer which gives you a lot of control over the behaviour o

业余草 SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)

这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件. 一.简介 Add sleuth to the classpath of a Spring Boot application (see below for Maven and Gradle examples), and you will see the correlation data being collected in logs, as long as you are logging re

《Spring Cloud Netflix》 -- 服务注册和服务发现-Eureka的常用配置

一.版本的说明 Angel版本对应Spring Boot 1.2.x,可以使用Spring Boot 1.3.x: Brixton版本对应Spring Boot 1.3.x,可以使用Spring Boot 1.4.x: Camden版本对应Spring Boot 1.4.x,可以使用Spring Boot 1.5.x: Dalston版本对应Spring Boot 1.5.x 二.应用进行热部署 添加依赖: 重启即可! 注意:如果是增加了jar包,还是需要关闭重启. 三.Eureka常用配置 a

《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群

一. Eureka的服务认证 1. 服务端添加依赖 <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-security</artifactId> </dependency> 2. 服务端添加配置 # 服务认证 security.basic.enabled=true security.use

springcloud中服务组策与发现eureka

1 Eureka 是什么 Eureka是netflix的一个子模块,只需要使用服务的标志符,就可以访问到服务,而不需要修改服务调用的配置文件.功能类似于Dubbo的注册中心,比如Zookeeper. Eureka 采用了CS设计架构,server端主管服务的注册和发现,client端启动后会在server端进行注册,启动后会向server端发送心跳,间隔默认30秒. 原文地址:https://www.cnblogs.com/zhaopengcheng/p/9333543.html

pring-cloud 服务发现与消费(以ribbon为例)

ribbon是spring-cloud中作为服务消费者的一种角色,客户端可以通过它来对服务提供者的服务进行消费, 比如本例中是服务提供者注册到注册中心,服务提供者提供了一个服务接口,返回一个hello字符串,我们通过ribbon将这个接口调用,再不暴露真实服务提供者的地址的同时,获取服务提供者的服务 前提: 按照之前几个教程,搭建出注册中心.服务提供者.这里可以使用分片的注册中心,也可以不使用,这里暂时定为使用之前搭好的分片注册中心,服务提供者仅提供一个即可. 准备工作: 1.启动注册中心 按照