springcloud入门之通过ribbon实现负载均衡

springcloud提供的负载均衡,有通过feign实现的,也可以通过ribbon来实现,这里介绍ribbon,ribbon其实也是一个远程服务调用的提供方,调用ribbon提供的服务,调用者只需要注入一个RestTemplate对象即可,而此RestTemplate已经做好负载均衡的设置。调用方式如下所示:

这里ribbon实现了熔断策略,一旦调用失败,会启动备选方法fallbackGet()来响应请求。

而我们需要注入的RestTemplate,可以通过如下代码的方式实现配置:

 

这里,我们接着前面springcloud入门实例,这里构建一个ribbon服务,其实很简单。就是一个普通的springboot项目。他需要在配置服务中读取一个配置信息spring.message,因此需要spirng-cloud-config-client依赖,他还需要作为一个eureka client注入到服务注册中心,因此需要依赖spring-cloud-starter-netflix-eureka-client。

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

就一个启动类:

package com.xxx.hystrix;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class RibbonApplication {

    @Value("${springcloud.message}")
    private String message;

    @RequestMapping("/get")
    public String get(){
        return message;
    }

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

配置文件也分为application.yml

server:
  port: 8083

和bootstrap.yml 

spring:
  application:
    name: ribbon
  cloud:
    config:
      enabled: true
      discovery:
        enabled: true
        service-id: CONFIG
eureka:
  instance:
    non-secure-port: ${server.port:8083}
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

启动这个项目,如果不报错,那么我们可以在服务发现管理列表中看到多了一个ribbon服务:

这个服务就提供一个http://localhost:8083/get接口,我们通过curl模拟测试:

 

接口测试正常,而且这个接口返回的信息来自配置服务config提供的:

 至此,springcloud入门实例中的ribbon项目就介绍完了,这里只是将ribbon项目作为一个普通的springboot项目,而且在springcloud中就是一个远程服务调用的服务提供者角色。

项目源代码:https://github.com/buejee/springcloud

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值