SpringCloud从入门到入土03-负载均衡 Ribbon和Feign

1.Ribbon(客户端负载均衡)

1.1 Ribbon是什么?

Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。
简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将 Netflix 的中间层服务连接在一起。Ribbon 的客户端组件提供一系列完整的配置项,如:连接超时、重试等。

1.2 Ribbon能干嘛?

LB,即负载均衡 (LoadBalancer) ,在微服务或分布式集群中经常用的一种应用。
负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA (高用)。
常见的负载均衡软件有 Nginx、Lvs 等等。
Dubbo、SpringCloud 中均给我们提供了负载均衡,SpringCloud 的负载均衡算法可以自定义.

我们通常的客户端负载均衡都是用 Nginx来实现,对于服务端负载均衡Nginx默认也集成了Ribbon。
这块后面负载均衡Ngnix的时候详细比较。

2.Feign:负载均衡(基于服务端)

之前调用第三方接口,也可以使用Feign来调用
Feign调用第三方接口
当然最好Feign还是调用注册中心中的服务调用,第三方接口用Forest更合适。
Forest调用第三方接口

Feign是声明式Web Service客户端,它让微服务之间的调用变得更简单,类似controller调用service。SpringCloud集成了Ribbon和Eureka,可以使用Feigin提供负载均衡的http客户端

Feign简单来说就是服务之间的调用,之前我们说过SpringCloud是用来管理服务器之间的框架生态,用来管理的工具就是各种组件,我们之前已经用了Eureka将各个服务都注册到注册中心当中去,但是各个服务之间的调用就是用Feign来实现。

2.1 pom文件

<!--Feign的依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
    <version>1.4.6.RELEASE</version>
</dependency>

如果我们所有的微服务都不是单独运行的,都需要别的服务之间相互调用,我们可以把这个依赖写在父工程的pom文件中。

2.2 新增FeignClientService

在demo02服务中,新建一个包service,新建类FeignClientService,这个类我们就是用来调用服务的

package com.liu.service;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;

@Component
@FeignClient(value = "demo1")
public interface FeignClientService {

    @GetMapping("/demo1")
    public String testFeign();

}

@FeignClient注解,value值就是我们注册中心中的名字,我们demo01在注册中心中名字就叫demo01.我们被调用的写入即可。
@GetMapping(“/demo1”)这里的路径要根据情况而定了,我在demo01服务的controller中就写了一个/demo01的接口,这里的get还是set啥的都要根据对于服务的路径来写。

2.3 Demo2Controller新增接口

我们先将FeignClientService 和普通service一样拿到

@Autowired
    FeignClientService feignClientService;

直接调用即可

 @RequestMapping("feign")
    public String feign(){
        return feignClientService.testFeign();
    }

2.4 启动类加注解测试

启动类上加上注解@EnableFeignClients即可

@EnableFeignClients

SpringCloud从入门到入土03-负载均衡 Ribbon和Feign_第1张图片

Feign 本质上也是实现了 Ribbon,只不过后者是在调用方式上,为了满足一些开发者习惯的接口调用习惯!

你可能感兴趣的:(spring,cloud,负载均衡,ribbon)