Spring Cloud披荆-Ribbon负载均衡-Feign声明式REST

本文介绍了Spring Cloud中Ribbon的负载均衡原理与使用,包括基本概念、拓展功能如自定义负载策略。接着,文章详细讲解了Feign的声明式REST客户端特性,以及如何集成与自定义配置,包括日志、超时和压缩设置。通过Ribbon和Feign,简化了服务调用并实现了负载均衡。
摘要由CSDN通过智能技术生成

开端

目前主流的负载方案一般为两种:一种是集中式的负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件(F5),也有软件(Nginx)。另一种则是客户端自己做负载均衡。我觉得使用Nginx也是一个不错的方式,但是这样我们还要令开一块专题去学习,既然在学Spring Cloud,我们就来试试使用Netflix开源的Ribbon做负载。

另外ribbon的内容不是特别多,我们在此还会学习另一个知识点,声明式REST客户端Feign。

Ribbon

开始学习Ribbon。

了解

首先还是来了解一下Ribbon的基本模块:

  • ribbon-loadbalancer:负载均衡模块,内置的负载均衡算法都实现在其中。
  • ribbon-eureka:基于Eureka封装的模块,能够快速集成。
  • ribbon-transport:基于Netty实现多协议的支持,比如HTTP、TCP、UDP等。
  • ribbon-httpclient:基于Apache HttpClient封装的REST客户端,集成了负载均衡模块,可以直接在项目中调用接口。
  • ribbon-example:代码示例,供学习。
  • ribbon-core:核心且通用的代码,客户端API的一些配置和其他API的定义。

使用

浅尝

结束初步的了解,咱们直接开始上手。关于我们之前Eureka的项目文件,大家可以放在一起,右键每一个pom文件后使用add as maven project功能构建。如此:

截屏2021-03-17 下午1.23.07

这样一来就方便大家管理项目,以及统一启动和终止。我们首先复制一份eureka-client项目,创建一个消费者集群。启动类、控制层、配置文件、Maven文件的修改这里就不写了,都是些小细节。我将这个项目的端口设置为8084,然后启动,回到注册中心就可以看到集群成功。

截屏2021-03-17 下午2.10.50

现在我们需要右键外面的大项目文件夹,重新创建一个ribbon-native-demo项目,创建方式同client。为pom添加依赖:

<dependency>
    <groupId>com.netflix.ribbon</groupId>
    <artifactId>ribbon</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.netflix.ribbon</groupId>
    <artifactId>ribbon-core</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.netflix.ribbon</groupId>
    <artifactId>ribbon-loadbalancer</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>io.reactivex</groupId>
    <artifactId>rxjava</artifactId>
</dependency>

复制一份client的yml,修改应用名为ribbon-native-demo,端口为8083。然后写一个测试类调用hello接口。

public static void main(String[] args) {
   
    List<Server> serverList = Lists.newArrayList(
            new Server("localhost", 8081),
            new Server("localhost", 8084)
    );
    ILoadBalancer loadBalancer = LoadBalancerBuilder.newBuilder()
            .buildFixedServerListLoadBalancer(serverList);
    for (int i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值