Spring Cloud 学习笔记三:搭建微服务工程之Ribbon 自定义负载均衡策略

2023-11-02

目录

Ribbon 自定义负载均衡策略


Ribbon 自定义负载均衡策略

通过实现 IRule 接口可以自定义负载策略,主要的选择服务逻辑在 choose 方法中。下面自定义负载策略,直接返回服务列表中第一个服务,代码如下所示:

public class MyRule implements IRule {
    
    private ILoadBalancer lb;
    
    @Override
    public Server choose(Object key) {
        List<Server> servers = lb.getAllServers();
        for (Server server : servers) {
            System.out.println(server.getHostPort());
        }
        // 返回第一个服务
        return servers.get(0);
    }
    @Override
    public void setLoadBalancer(ILoadBalancer lb) {
        this.lb = lb;
    }
    @Override
    public ILoadBalancer getLoadBalancer() {
        return lb;
    }
}

 

在 Spring Cloud 中,可通过配置的方式使用自定义的负载策略,blog-user-service 是调用的服务名称。

blog-user-service:
  ribbon:
    NFLoadBalancerRuleClassName: cn.com.stary1993.blog.rule.MyRule

重启服务,访问调用了其他服务的接口,可以看到控制台的输出信息中已经有了我们自定义策略中输出的服务信息,并且每次都是调用第一个服务。这跟我们的逻辑是相匹配的。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Cloud 学习笔记三:搭建微服务工程之Ribbon 自定义负载均衡策略 的相关文章

  • 如何将log4j日志文件更改为utf8

    我收到了一个使用 log4j 作为记录器应用程序的代码 如何为其生成 UTF8 日志文件 log4j 创建的日志文件目前为 ASCII 格式 我已经尝试过以下操作 按照以下说明设置日志文件的文件编码 vi current set bomb
  • 如何在itext中设置自定义颜色?

    感谢您花时间回答我的问题 我正在使用 Java 中的 iText 生成 PDF 文档 我需要将表的列标题设置为与值列中的颜色不同的颜色 我有来自 Photoshop 的颜色十六进制值 我正在使用带有块和段落的 PdfPTable 除了 Ba
  • 有没有一种独立的JAVA可以在PC上运行而无需任何操作系统

    据我所知 java 程序可以在任何操作系统上运行 任何类型的机器都有 JVM 我需要一个在我的 PC 上独立运行的 JVM 而不是在我的操作系统 Windows 或任何其他操作系统 上运行 我的意思是 JVM 的作用类似于启动 而不是操作系
  • while循环内的递归,它是如何工作的?

    你能告诉我这段java代码是如何工作的吗 public class Main public static void main String args Strangemethod 5 public static void Strangemet
  • 在 Postgres 中为特定查询设置 work_mem

    我正在使用一个委托给 JDBC 驱动程序的库PostgreSQL 而且有些查询非常复杂 需要更多内存 我不想设置work mem对于所有查询来说都是大的 只是这个子集 问题是执行以下代码会导致错误 pseudo code for what
  • 如何使用 Java 本机接口将字节数组传递到以 char* 作为参数的 C 函数中?

    所以我需要使用JNI从java调用C函数 当传入不同的数据类型 创建本机变量 头文件 共享库等等 时 我已经能够成功地做到这一点 但无法让它与字节数组一起使用 这是我的 C 函数 include
  • 使用 IntentService 使用 Camera2 拍照

    我正在尝试创建一个可以拍照但不显示预览的应用程序 使用本教程 https www youtube com watch v oPu42I0HSi4 https www youtube com watch v oPu42I0HSi4如果我使用和
  • 如何使用 hibernate 过滤器过滤 hibernate 中的实体

    我需要过滤对象列表中的实体 例如 public class Student private int id private List
  • GWT 代码服务器在使用 Maven 原型的新生成的项目中找不到模块

    我已经使用 GWT 和 eclipse 一段时间了 我想玩一下 Maven 和 GWT 插件 gwt maven plugin 在此输入链接描述 http mojo codehaus org gwt maven plugin 我尝试在 Ec
  • Android - 使用 Intent 打开 PDF 文档关闭后不保存

    我面临的问题是 当尝试保存对使用此 URI 打开的 PDF 文档的更改时内容 xx xxx xxx fileprovider external Download Sync FileName pdf 我所做的任何更改在关闭文档后都不会保存 但
  • 如何暂停程序直到按下按钮?

    我使用从 jframe 扩展的类 它有一个按钮 我在程序中使用它 我希望当在我的程序中运行 jframe 时我的整个程序暂停 直到我按下按钮 我该怎么做 in c getch 做这个 我想要一个这样的功能 通过睡眠暂停执行 http dow
  • 在 Java 中停止线程? [复制]

    这个问题在这里已经有答案了 我正在编写一段代码 该代码连接到服务器 使用该连接生成一堆线程并执行一堆 东西 在某些情况下 连接会失败 我需要停止一切并从头开始使用新对象 我想在对象之后进行清理 但在线程上调用 thread stop 但此方
  • Hazelcast Jet 变更数据捕获

    我在我的应用程序中使用 Hazelcast 更改数据捕获 CDC 我使用 CDC 的原因是 如果使用 jdbc 或其他替代功能将数据加载到缓存中 会花费大量时间 所以CDC将在数据库和 Hazelcast Jet 之间进行数据同步 Stre
  • 如何跨工作区保存 E​​clipse 启动配置文件?

    当我复制 Eclipse 项目目录时 它包含 classpath 和 project 文件 这样当我将同一目录带到另一个 Eclipse 实例时 我不必设置我的构建路径等 假设所有资源都包含在在项目中 而不是外部 但是 此过程不会导致启动配
  • 如何知道 Solr Optimize 何时完成?

    我正在使用 Solr php client 通过 php 与 Solr 进行通信 这段代码触发solr优化命令 solr gt optimize 请问有没有什么方法可以确定优化完成了 这都是因为我的网站上有一个管理页面 我每天必须手动优化
  • Spring 在 AuthenticationSuccessHandler 中自动装配会话范围 bean 不起作用

    我正在使用 spring security 我想初始化一个对象User在用户成功登录后的会话中 安全配置如下 Configuration EnableWebSecurity PropertySource classpath configs
  • 在 Scala 中创建 Java 对象

    我有一个 Java 类 Listings 我在 Java MapReduce 作业中使用它 如下所示 public void map Object key Text value Context context throws IOExcept
  • Maven 依赖冲突:org.w3c.dom.ElementTraversal

    我有一个 Java 代码库 它使用 Maven 进行依赖项解析并在 CI 上运行测试 经过最近的一批开发 大到足以很难识别重大更改 我的一些测试现在在通过 Maven 运行时失败了NoClassDefFoundError for org w
  • 使用 spring mvc 的多个域

    假设我有一个应用程序必须缩短 URL 但还要执行其他操作 喜欢google com and goo gl or facebook com and fb me 部署两个应用程序很容易 但 目前 仅部署一个应用程序更简单 使用 spring 和
  • spring-hibernate 花费更多时间的任何原因?

    目前 我正在春季和冬眠期间从事一个项目 我来到这里 获取记录并在 JSP 中显示这些记录需要更多时间 我在各处都保留了时间戳 以查看哪里花费了更多时间 Time HomeController start 2014 07 09 18 58 5

随机推荐

  • python中print的本质_python数据分析、挖掘常用工具,让你看到不一样的数据分析...

    Python语言 简要概括一下Python语言在数据分析 挖掘场景中常用特性 列表 可以被修改 元组 不可以被修改 字典 结构 集合 同数学概念上的集合 函数式编程 主要由lambda map reduce filter 构成 Python
  • 用两个stack实现queue

    stack和queue都是一种线性结构 要用stack实现queue的push和pop方法 我们首先需要了解下这两种结构的特点 stack 数据先进后出 queue 数据先进先出 我们记两个stack分别是head tail 我们的想法是这
  • Vue3中toRef函数与toRefs函数

    在Vue 3中 toRef和toRefs用于处理响应式数据 toRef函数接受一个响应式对象和一个键 返回一个只读的Ref对象 这意味着当原始数据发生变化时 toRef创建的Ref对象也会更新 toRefs函数接受一个响应式对象 react
  • C语言中如何不通过第三变量交换a、b两个变量值

    要求不能使用第三变量来达到交换两个变量值呢 方法一 include
  • vue拖拽组件(app移动端)

    vue拖拽组件
  • 09-多窗口切换-window_handles

    1 常用方法 使用背景 有些网站点击链接会新打开一个tab 如下图打开了两个浏览器窗口 元素定位正确 调试时一直报错 原因是未切换到对应的窗口句柄 切换到对应的窗口句柄才可以正常操作 current window handle 获得当前窗口
  • 联想拯救者Y7000P2023 Ubuntu20.04网卡驱动AX211安装

    sudo apt install flex bison git clone https github com intel backport iwlwifi git cd backport iwlwifi cd iwlwifi stack d
  • 2021年字节跳动74道高级程序员面试,附大厂真题面经

    安卓开发大军浩浩荡荡 经过近十年的发展 Android技术优化日异月新 如今Android 11 0 已经发布 Android系统性能也已经非常流畅 可以在体验上完全媲美iOS 但是 到了各大厂商手里 改源码 自定义系统 使得Android
  • 树的序列化与反序列化java - Kaiqisan

    大家好 都吃晚饭了吗 我是Kaiqisan 是一个已经走出社恐的一般生徒 为什么引入这个概念 在计算机中 如果我们如果想要可视化一棵树 那会是非常困难的工作 所以 我们就想到了一种最简单的方法来表示一棵树 而且只使用字符串 也可以区分每一颗
  • 如何使用DedeCMS制作网站首页轮播图?

    使用 DedeCMS 制作网站很多年了 做过不少网站 也为不少 DedeCMS 网站解决过不少小问题 轮播图 或者叫幻灯片 是每个网站 首页 都有的元素了 DedeCMS 并没有像有些网站管理程序一样 提供一个直接管理网站轮播图的功能 好几
  • 使用wget命令下载父目录下的整个子目录

    使用wget命令下载父目录下的整个子目录 命令如下 wget r level 0 E ignore length x k p erobots off np N http www remote com remote presentation
  • sqli-labs/Less-62

    欢迎界面提示我们一共由130次机会 而且还是以id作为注入点 每次重置都会随机分配表名 字段名 表格数据 首先判断注入类型 输入id 1 and 1 2 回显如下 说明不属于数字型 接着输入1 回显如下 没有回显 说明注入点带有单引号 佐证
  • 【研发必备】45 个 Git 经典操作场景,专治不会合代码

    git对于大家应该都不太陌生 熟练使用git已经成为程序员的一项基本技能 尽管在工作中有诸如 Sourcetree这样牛X的客户端工具 使得合并代码变的很方便 但找工作面试和一些需彰显个人实力的场景 仍然需要我们掌握足够多的git命令 下边
  • 6打印文件

    原题链接 满分 华为OD机试真题2023 JAVA 打印文件 若博豆的博客 CSDN博客 本来以为需要用map 还复习了一下语法 原来不需要 用vector存三元数组 两个pair嵌套就可以 include
  • 李建忠老师-设计模式

    前言 1 课程目标 理解松耦合设计思想 掌握面向对象设计原则 掌握重构技法改善设计 掌握GOF核心设计 补充 GOF Gong of Gour 就是四人帮的全称 下面这本书的作者 Design Patterns Elements of Re
  • 解决webstom failed to change read-only files

    我百思不得其解的是 为何我的文件不让我更改 变成了只读模式 后来我仔细回忆了一下 原来是因为我使用了root权限 来安装thinkjs之后 webstom没有root权限 所以我使用root 在终端敲下如下命令 即可解决问题 chown R
  • 2021-07-02

    TOC第一章概述 本章最重要的内容 1 互联网的边缘部分和核心部分的作用 其中包含分组交换的概念 答案 边缘部分由所有连接在互联网上的主机组成 这部分是用户直接使用的 用来进行通信 传送数据 音频或视频 和资源共享 核心部分有大量的网络和连
  • Windows连接虚拟机Centos7的ssh被拒绝

    1 ssh connect to host centos py port 22 Connection refused 2 启动ssh服务报错 service sshd start Job for ssh service failed bec
  • 浅蓝不惑:在线或用API生成二维码——为什么不让你的二维码有更多选择和样式?

    引言 山中何事 松花酿酒 春水煎茶 勿埋我心 什么是二维码 二维码也称为二维条码 是指在一维条码的基础上扩展出另一维具有可读性的条码 使用黑白矩形图案表示二进制数据 被设备扫描后可获取其中所包含的信息 一维条码的宽度记载着数据 而其长度没有
  • Spring Cloud 学习笔记三:搭建微服务工程之Ribbon 自定义负载均衡策略

    目录 Ribbon 自定义负载均衡策略 Ribbon 自定义负载均衡策略 通过实现 IRule 接口可以自定义负载策略 主要的选择服务逻辑在 choose 方法中 下面自定义负载策略 直接返回服务列表中第一个服务 代码如下所示 public