SpringCloud Ribbon服务 应用

 

个人博客网:www.lfuping.cn    (你想要这里多有)

 

1. Ribbon是客户端负载均衡,所以肯定集成再消费端,也就是consumer端

修改springCloud-consumer-1工程
引入依赖,pom.xml 加入 ribbon相关依赖

dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

application.yml加

因为我电脑配置有限,就没用eureka集群做测试了,只用了eureka单机配置

eureka:
  client:
    register-with-eureka: false 
    service-url: 
      defaultZone: http://localhost:7001/eureka/

ribbon结合eureka来调用服务提供者;

SpringCloudConfig也改成 要加个负载均衡配置 @LoadBalanced

package com.li.spingcloud.consumer.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;
/**
 * SpringCloud相关配置
 * 
 * @author Administrator
 *
 */
@Configuration
public class SpringCloudConfig {
    /**
     * 调用服务模版对象
     * 
     * @return
     */
    @Bean
    @LoadBalanced  // 引入ribbon负载均衡
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

因为和eureka整合,所以启动类ConsumerApplication 加个注解 @EnableEurekaClient
修改ConsumerController层,

package com.li.spingcloud.consumer.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import com.li.springcloud.common.model.Student;
/**
 * 服务消费者-控制器
 * 
 * @author Administrator
 *
 */
@RestController
public class ConsumerController {
    @Autowired
    private RestTemplate restTemplate;
    /**
     * 查询信息
     * 
     * @return
     */
    @RequestMapping(value = "/consumer/list", produces = "application/json; charset=utf-8", method = {
            RequestMethod.POST, RequestMethod.GET })
    public List<Student> list() {
    //改成指定的微服务应用名称 PROVIDER
        List<Student> result = restTemplate.getForObject(
                "http://PROVIDER/provider/list", List.class);
        // 通过注册中心调用消费者提供的服务
        return result;
    }
}

2.修改SpringClodu-provider-1服务生产者application.yml配置

主要是加配置,指定下应用名称:

application:
name: provider

server:
  port: 1001
  context-path: /
# 数据源配置
spring:
  application:
    name: provider
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springcloudDB
    username: root
    password: lifuping0.
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
eureka:
  instance:
    hostname: eureka1  #eureka客户端主机实例名称
    appname: provider  #客户端服务名
    instance-id: springcloud-provider:1001 #客户端实例名称
    prefer-ip-address: true #显示IP
  client: 
    service-url: 
      defaultZone: http://localhost:7001/eureka/
      #集群模式defaultZone: http://lifuping.eureka3.com:6001/eureka/,http://lifuping.eureka2.com:5001/eureka/,http://lifuping.eureka1.com:7001/eureka/ # 集群
      #单机defaultZone: http://localhost:7001/eureka   
      #把服务注册到eureka注册中心

微服务应用名称是 provider
所以服务调用者这边的控制器里PRE_HOST改成 http://PROVIDER/provider/list 即可;

3.测试

先启动eureka单机,然后再启动服务提供者,再启动服务消费者;

访问消费者接口: http://localhost:8080/consumer/list
正常没问题浏览器返回:


如果出现如下错误:

刷新浏览器页面可能是延迟,如果不行那可能是你配置写错了,仔细检查一下确认真的没有问题,也有可能是电脑环境的问题,重启电脑在重试几次

 

源码下载链接: https://pan.baidu.com/s/11usvmZUS0ZGDyhp5FxQl8A 

提取码: bhbx

                                                   

                                                     欢迎关注我的微信公众号:平川大叔

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值