欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring cloud 集成 ribbon负载均衡的实例代码

程序员文章站 2022-03-04 09:49:20
本文比较简单集成ribbon,如需要更详细,请查看我的更多博客内容。首先创建两个服务提供者服务一,集成的nacos注册中心,这块随便写一个同名接口端口配置8301服务二,同名接口内容修改,其他跟上一个...

本文比较简单集成ribbon,如需要更详细,请查看我的更多博客内容。

首先创建两个服务提供者

spring cloud 集成 ribbon负载均衡的实例代码

服务一,集成的nacos注册中心,这块随便写一个同名接口

spring cloud 集成 ribbon负载均衡的实例代码

端口配置8301

spring cloud 集成 ribbon负载均衡的实例代码

服务二,同名接口内容修改,其他跟上一个服务一大体内容一致

spring cloud 集成 ribbon负载均衡的实例代码

端口配置成8302

spring cloud 集成 ribbon负载均衡的实例代码

创建服务消费者

spring cloud 集成 ribbon负载均衡的实例代码

ribbonconfig.java

package com.example.nacosribbonconsumers.config;

import com.netflix.loadbalancer.irule;
import com.netflix.loadbalancer.roundrobinrule;
import org.springframework.cloud.client.loadbalancer.loadbalanced;
import org.springframework.cloud.netflix.ribbon.ribbonclient;
import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
import org.springframework.web.client.resttemplate;

@configuration
// 如果多个服务可以选择不同的策略
/*@ribbonclients({
        @ribbonclient(name = "other",configuration = otherconfig.class),
        @ribbonclient(name = "provider",configuration = providerconfig.class)
})*/
@ribbonclient(name = "nacos-ribbon-provider")
public class ribbonconfig {

    //定义负载均衡规则
    @bean
    public irule ribbonrule(){
        return new roundrobinrule();

        /**
         * roundrobinrule:
         *  轮询规则
         *
         * randomrule:
         *  随机规则
         *
         * weightedresponsetimerule:
         *  使用响应时间的平均或者百分比为每个服务分配权重的规则,如果没法收集响应时间信息,会默认使用轮询规则
         *
         * bestavailablerule:
         *  会先根据断路器过滤掉处于故障的服务,然后选择并发量最小的服务
         *
         * zoneavoidancerule:
         *  根据server所在zone和其性能,选择服务器,默认规则
         *
         * availabilityfilteringrule:
         *  先根据断路器规则过滤掉有问题的服务,然后对剩余的服务按照轮询的策略进行访问
         *
         * retryrule:
         *  先按照roundrobinrule规则进行服务获取,如果调用服务失败会在指定时间内进行重试,直到获取到可用的服务。
         */
    }

    @bean
    @loadbalanced
    public resttemplate resttemplate(){
        return new resttemplate();
    }

}

ribbontest.java

package com.example.nacosribbonconsumers.controller;

import org.springframework.beans.factory.annotation.autowired;
import org.springframework.web.bind.annotation.getmapping;
import org.springframework.web.bind.annotation.restcontroller;
import org.springframework.web.client.resttemplate;

@restcontroller
public class ribbontest {

    @autowired
    private resttemplate resttemplate;

    @getmapping(value = "/ribbon-consumers/ribbon-test")
    public string printproviderlog(){
        string result = resttemplate.getforobject("http://nacos-ribbon-provider/ribbon-test", string.class);
        return result;
    }

}

pom包

<dependency>
	<groupid>org.springframework.cloud</groupid>	
	<artifactid>spring-cloud-starter-netflix-ribbon</artifactid>
</dependency>

配置文件

spring cloud 集成 ribbon负载均衡的实例代码

先启动两个服务提供者,然后在启动服务消费者,浏览访问

spring cloud 集成 ribbon负载均衡的实例代码
spring cloud 集成 ribbon负载均衡的实例代码

不断刷新 发现使用的轮询方式交替执行。

到此这篇关于spring cloud 集成 ribbon负载均衡的文章就介绍到这了,更多相关spring cloud ribbon负载均衡内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!