天天看点

SpringCloud2.0 Ribbon 服务发现 基础教程(四)

SpringCloud2.0 Ribbon 服务发现 基础教程(四)

1、启动【服务中心】集群,即 Eureka Server

参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二)

2、启动【服务提供者】集群,即 Eureka Client

参考 SpringCloud2.0 Eureka Client 服务注册 基础教程(三)

3、创建【服务消费者】,即 Eureka Discovery Client

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;

/**
 * EurekaRibbonApplication
 * 应用程序启动类,程序入口
 *
 * @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 getInfo() {
        String message;
        try {
            System.out.println("调用 服务 EUREKA-CLIENT/info");
            message = restTemplate.getForObject("http://EUREKA-CLIENT/info", String.class);
            System.out.println("服务 EUREKA-CLIENT/info 返回信息 : " + message);
            System.out.println("调用 服务 EUREKA-CLIENT/info 成功!");
        } 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("/ribbonInfo")
    public String ribbonInfo() {
        String message = eurekaRibbonService.getInfo();
        return "获取的信息:" + message;
    }

}
      

3.7、创建工程配置文件application.yml,配置内容:

server:
  port: 52610

spring:
  application:
    name: eureka-discovery-ribbon

eureka:
  instance:
    hostname: localhost
    # 表示eureka client间隔多久去拉取服务注册信息,默认为30秒,如果要迅速获取服务注册状态,可以缩小该值
    lease-renewal-interval-in-seconds: 5
    # 表示eureka server至上一次收到client的心跳之后,等待下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则将移除该instance。
    # 默认为90秒
    # 如果该值太大,则很可能将流量转发过去的时候,该instance已经不存活了。
    # 如果该值设置太小了,则instance则很可能因为临时的网络抖动而被摘除掉。
    # 该值至少应该大于 leaseRenewalIntervalInSeconds
    lease-expiration-duration-in-seconds: 10
  client:
    serviceUrl:
      defaultZone: http://localhost:9527/eureka/,http://localhost:9528/eureka/,http://localhost:9529/eureka/
      

3.8、启动【服务消费者】工程

3.9、打开浏览器,访问【服务中心】前台界面 http://localhost:9527,http://localhost:9528,http://localhost:9529

SpringCloud2.0 Ribbon 服务发现 基础教程(四)

红框处,可以看到【服务消费者】已经注册到了【服务中心】,服务名 EUREKA-DISCOVERY-RIBBON

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

SpringCloud2.0 Ribbon 服务发现 基础教程(四)
SpringCloud2.0 Ribbon 服务发现 基础教程(四)
SpringCloud2.0 Ribbon 服务发现 基础教程(四)

红框处,可以看到【服务消费者】成功调用了【服务提供者】提供的服务,并实现了负载均衡,轮询请求不同的【服务提供者】。

至此,一个简单的单点【服务消费者】搭建完成。

《SpringCloud2.0 基础教程》目录

SpringCloud2.0 概述 基础教程(一)

SpringCloud2.0 Eureka Server 服务中心 基础教程(二)

SpringCloud2.0 Eureka Client 服务注册 基础教程(三)

SpringCloud2.0 Feign 服务发现 基础教程(五)

SpringCloud2.0 Hystrix Ribbon 基于Ribbon实现断路器 基础教程(六)

SpringCloud2.0 Hystrix Feign 基于Feign实现断路器 基础教程(七)

SpringCloud2.0 Hystrix Dashboard 断路器指标看板 基础教程(八)

SpringCloud2.0 Turbine 断路器集群监控 基础教程(九)

SpringCloud2.0 Zuul 网关路由 基础教程(十)

SpringCloud2.0 Config 分布式配置中心 基础教程(十一)

分享更多编程知识和技巧

继续阅读