博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用SpringCloud Alibaba搭建属于自己的微服务(十五)~基础搭建~使用openfeign集成ribbon负载均衡.
阅读量:4204 次
发布时间:2019-05-26

本文共 3470 字,大约阅读时间需要 11 分钟。

一.概述

微服务的部署往往是集群模式,一个微服务往往有多个节点,ribbon提供了客户端负载均衡算法,让我们能够实现压力分摊的调用.

二.微服务集成ribbon.

1.我们可以看到openfeign中有了ribbon相关的依赖,默认实现了负载均衡.

在这里插入图片描述

2.我们编写代码测试下.

(1).rpc调用服务端(server-basic).

a.RibbonTestProducerController.java
package com.ccm.server.basic.controller;import com.ccm.common.exception.result.ResultSet;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @Description ribbon负载均衡测试服务端 * @Author ccm * @CreateTime 2020/07/18 19:37 */@RestController@RequestMapping(value = "ribbonTestProducer")@Api(tags = "ribbon负载均衡测试服务端")public class RibbonTestProducerController {
@Value("${server.port}") private String port; @ApiOperation(value = "ribbon负载均衡测试") @GetMapping(value = "test01") public ResultSet test01() {
return ResultSet.success("我是server-basic的数据,端口="+port); }}

(2).rpc调用客户端(server-user).

a.RibbonTestConsumerController.java
package com.ccm.server.user.controller;import com.ccm.common.exception.ServerException;import com.ccm.common.exception.result.ResultSet;import com.ccm.server.user.openfeign.ServerBasicFeign;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @Description ribbon负载均衡测试客户端 * @Author ccm * @CreateTime 2020/07/18 19:37 */@RestController@RequestMapping(value = "ribbonTestProducer")@Api(tags = "ribbon负载均衡测试服务端")public class RibbonTestConsumerController {
@Autowired private ServerBasicFeign serverBasicFeign; @ApiOperation(value = "ribbon负载均衡测试") @GetMapping(value = "test01") public ResultSet test01() {
ResultSet
feignVO = serverBasicFeign.test02(); if(feignVO.getCode() == 0) {
return ResultSet.success(feignVO.getData()); } throw new ServerException("调用外部服务失败"); }}
b.ServerBasicFeign.java,见方法test02
package com.ccm.server.user.openfeign;import com.ccm.common.exception.result.ResultSet;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.web.bind.annotation.GetMapping;/** *  @Description 调用server-basic的feign层 *  @Author ccm *  @CreateTime 2020/07/17 9:46 */@FeignClient(name = "server-basic")public interface ServerBasicFeign {
@GetMapping(value = "openFeignTest/test01") ResultSet
test01(); @GetMapping(value = "ribbonTestProducer/test01") ResultSet
test02();}

(3).server-basic启动两个服务,端口分别为2001和2002,server-user服务只用启动一个.在这里插入图片描述

(4).swagger测试,可以看出默认的负载均衡规则是轮询模式.

在这里插入图片描述

在这里插入图片描述

(5).修改ribbon负载均衡算法规则,可以自行测试.

package com.ccm.server.user.config;import com.netflix.loadbalancer.IRule;import com.netflix.loadbalancer.RandomRule;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @Description ribbon负载均衡配置 * @Author ccm * @CreateTime 2020/07/18 20:12 */@Configurationpublic class RibbonConfig {
@Bean public IRule rule(){
//return new RoundRobinRule();//轮询 //return new RetryRule();//重试 return new RandomRule(); }}

在这里插入图片描述

源码地址:

您的点赞、收藏、转发和关注是我持续创作的动力!

转载地址:http://jktli.baihongyu.com/

你可能感兴趣的文章
Android中Touch事件的处理逻辑
查看>>
Android开发指南-用户界面-事件处理
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
开发者选项中动画时长原理分析(Android M)
查看>>
GE如何测试大型客机引擎
查看>>
Android基础知识4-如何在初始化的时候得到控件的宽和高
查看>>
代码追踪 20130419
查看>>
Android 移动动画- TranslateAnimation
查看>>
Android 比例动画- ScaleAnimation
查看>>
AnimationSet
查看>>
HTML,JS,CSS教程
查看>>
JavaScript 教程
查看>>
Turn.js创建类似书本和杂志翻页效果
查看>>
Android中采用html页面布局以及调用JavaScript
查看>>
javaScript 美元符號$
查看>>
javascript之bind
查看>>
javascript 函数讲解
查看>>
JavaScript数组定义
查看>>
JavaScript高级培训-自定义对象
查看>>
webview与js交互
查看>>