zuul集成ribbon完成服务通信和负载均衡

目录

Zuul2服务通信

超时相关

默认超时配置

自定义超时配置

负载均衡


Zuul2服务通信

描述:zuul2通过Ribbon完成客户端负载均衡以及与服务器群集进行通信。

zuul2的通信是集成Ribbon实现的,在Origin中集成Ribbon基本配置(例如IClientConfig)以完成功能接入,在loadbanace层将ribbion与netty结合用来抉择下层客户端服务器。

zuul2集成ribbon core结构图:

zuul2集成 ribbon loadbalanacer结构图:

 

超时相关

默认超时配置

  • 默认连接超时时间ReadTimeout为2S
  • 默认读超时时间ConnectTimeout为5S
  • 超时后的默认重试次数MaxAutoRetriesNextServer为1次 (它使用MaxAutoRetriesNextServer,应该与ribbon的NIWSServerListClassName相关参数有关系,同时在zuul2官网wiki有相关描述指定本配置控制重试)

可以在ribbon源码中找到相应配置信息:

自定义超时配置

#指定全局连接超时ConnectTimeout配置
ribbon.ConnectTimeout=100#指定全局读超时ReadTimeout配置
ribbon.ReadTimeout=1000#指定全局重试配置
ribbon.MaxAutoRetriesNextServer=0#指定origin连接超时ConnectTimeout配置(覆盖全局)
<origin>.ribbon.ConnectTimeout=100#指定origin读超时ReadTimeout配置(覆盖全局)
<origin>.ribbon.ReadTimeout=10000#指定origin重试配置(覆盖全局)
<origin>.ribbon.MaxAutoRetriesNextServer=1

 ribbon相关配置项及默认值:https://github.com/Netflix/ribbon/blob/master/ribbon-core/src/main/java/com/netflix/client/config/CommonClientConfigKey.java

负载均衡

ribbon负载均衡的七种算法

RandomRule:随机算法实现RoundRobinRule:轮询负载均衡策略,依次轮询所有可用服务器列表,遇到第一个可用的即返回RetryRule :先按照RoundRobinRule策略获取服务,如果获取服务失败会在指定时间内重试AvaliabilityFilteringRule: 过滤掉那些因为一直连接失败的被标记为circuit tripped的后端server,并过滤掉那些高并发的的后端server(active connections 超过配置的阈值) BestAvailableRule :会先过滤掉由于多次访问故障二处于断路器跳闸状态的服务,然后选择一个并发量最小的服务WeightedResponseTimeRule: 根据响应时间分配一个weight,响应时间越长,weight越小,被选中的可能性越低ZoneAvoidanceRule: 复合判断server所在区域的性能和server的可用性选择server

后续将会持续完善ribbon、制定ribbon负载均衡算法以满足流量调度需求。

 


---------------------
作者:xbl丶
来源:CSDN
原文:https://blog.csdn.net/qq_37822090/article/details/114360518
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时任上海来伊份互联网事业群总裁王戈钧 :传统企业(线上+线下)移动互联网改造...

2017年12月22日-23日&#xff0c;第13届信息化领袖峰会暨2017中国数字化贡献人物颁奖盛典在上海盛大开幕。本次峰会由上海市经济和信息化委员会指导&#xff0c;上海市国有资产信息中心、上海市计算机用户协会、上海市信息服务业行业协会、上海大数据联盟、上海市高等教育学会支…

Linux系统时间\硬件时间(date、tzselect、clock、hwclock、ntpdate)

1、系统时间和硬件时间 在Linux中有硬件时钟与系统时钟两种时钟。硬件时钟是指主机板上的时钟设备&#xff0c;也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。所有Linux相关指令与函数都是读取系统时钟的设定。因为存在两种不同的时钟&#xff0c;那么它们…

C#------如何判断输入的是否为纯数字

private void Btn_OK_Click(object sender, EventArgs e){IDormitoryAdminCardService aservice new DormitoryAdminCardService();string text this.CardNoEdit.Text;//判断是否输入的是纯数字string pattern "^[0-9]*$";Regex regex new Regex(pattern);if (re…

【.NET6+Modbus】Modbus TCP协议解析、仿真环境以及基于.NET实现基础通信

接下来的内容&#xff0c;我会以从头开发一个简单的基于modbus tcp通信的案例&#xff0c;来实现一个基础的通信功能。有关环境&#xff1a;开发环境&#xff1a;VS 2022企业版运行环境&#xff1a;Win 10 专业版.NET 环境版本&#xff1a;.NET 6【备注】 源码在文末 1、新建一…

源码深度剖析Eureka与Ribbon服务发现原理

本文基于 spring cloud dalston&#xff0c;同时文章较长&#xff0c;请选择舒服姿势进行阅读。 Eureka 与 Ribbon 是什么&#xff1f;和服务发现什么关系&#xff1f; Eureka 与 Ribbon 都是 Netflix 提供的微服务组件&#xff0c;分别用于服务注册与发现、负载均衡。同时&a…

3月6日云栖精选夜读:如何实现32.5万笔/秒的交易峰值?阿里交易系统TMF2.0技术揭秘...

交易平台遇到的挑战 2017双11&#xff0c;交易峰值达到了32.5万笔/秒&#xff0c;这给整个交易系统带来了非常大的挑战。 一方面&#xff0c;系统需要支撑全集团几十个事业部的所有交易类需求&#xff1a;要考虑如何能更快响应需求、加快发布周期&#xff1b;如何能为新小业务提…

std的find和reverse_iterator联合使用

上代码&#xff1a; // test2013.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include<iostream> #include<vector> #include<map> #include<string> using namespace …

论如何提升学习的能力

为啥要学习如果有一件事情是能改变你自己的&#xff0c;我想这件事情必然就是学习&#xff0c;我的人生重要的转折点也是从学习这件事情始发的&#xff0c;那么&#xff0c;我们就从这里开始。学习不仅仅是为了找到答案&#xff0c;而是为了找到方法&#xff0c;找到一个可以找…

linux下svn常用指令

windows下的TortoiseSVN是资源管理器的一个插件&#xff0c;以覆盖图标表示文件状态&#xff0c;几乎所以命令都有图形界面支持&#xff0c;比较好用&#xff0c;这里就不多说。主要说说linux下svn的使用&#xff0c;因为linux下大部分的操作都是通过命令行来进行&#xff0c;所…

CSS布局解决方案(终结版)

前端布局非常重要的一环就是页面框架的搭建&#xff0c;也是最基础的一环。在页面框架的搭建之中&#xff0c;又有居中布局、多列布局以及全局布局&#xff0c;今天我们就来总结总结前端干货中的CSS布局。 居中布局 水平居中 1&#xff09;使用inline-blocktext-align&#xff…

基于ABP和Magicodes实现Excel导出操作

前端使用的vue-element-admin框架&#xff0c;后端使用ABP框架&#xff0c;Excel导出使用的Magicodes.IE.Excel.Abp库。Excel导入和导出操作几乎一样&#xff0c;不再介绍。文本主要介绍Excel导出操作和过程中遇到的坑&#xff0c;主要是Excel文件导出后无法打开的问题。一.Mag…

消息模式在实际开发应用中的优势

曾经.NET面试过程中经常问的一个问题是&#xff0c;如果程序集A&#xff0c;引用B &#xff0c;B 引用C&#xff0c;那么C怎么去访问A中的方法呢。 这个问题初学.net可能一时想不出该咋处理&#xff0c;这涉及到循环引用问题。但有点经验的可能就简单了&#xff0c;通过委托的方…

微服务:注册中心ZooKeeper、Eureka、Consul 、Nacos对比

前言 服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务&#xff0c;原则上都应存在或者支持多个提供者&#xff0c;这是由微服务的分布式属性决定的。更进一步&#xff0c;为了支持弹性扩缩容特性&#xff0c;一个微服务的提供者的数量和分布往往是动…

MyBatis总结七:动态sql和sql片段

开发中&#xff0c;sql拼接很常见&#xff0c;所以说一下动态sql&#xff1a; 1if2chose,when,otherwise3where,set4foreach用法解析(现有一张users表 内有id username age 三个字段)&#xff1a; <!--查询所有用户&#xff0c;传递参数type&#xff0c;如果值为0&#xff0…

iOS - OC Copy 拷贝

前言 copy&#xff1a;需要先实现 NSCopying 协议&#xff0c;创建的是不可变副本。mutableCopy&#xff1a;需要实现 NSMutableCopying 协议&#xff0c;创建的是可变副本。浅拷贝&#xff1a;指针拷贝&#xff0c;源对象和副本指向的是同一个对象。对象的引用计数器 &#xf…

三.选择结构(一)

1.if结构: if(条件){ 代码块 } 2.随机产生数: int randon (int)(Math.random()*10); 3.多重if选择结构: if(条件1){ 代码块1 }else if (条件2){ 代码块2 }else{ 代码块3 } 4.嵌套if选择结构: if(条件1){ if(条件2){ 代码块1 }else{ 代码块2 } }else{ 代码块3 } 转载于:https://…

为了高性能、超大规模的模型训练,这个组合“出道”了

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;3分钟)近年来&#xff0c;在大量数据上训练的基于 transformer 的大规模深度学习模型在多项认知任务中取得了很好的成果&#xff0c;并且被使用到一些新产品和功能背后&#xff0c;进一步增强了人类的能力。在过去五年…

SVN就是这么简单

什么是SVN SVN全称&#xff1a;Subversion&#xff0c;是一个开放源代码的版本控制系统 Svn是一种集中式文件版本管理系统。集中式代码管理的核心是服务器&#xff0c;所有开发者在开始新一天的工作之前必须从服务器获取代码&#xff0c;然后开发&#xff0c;最后解决冲突&…

SpringCloud必会知识点大全

为什么要学习Spring Cloud 在项目开发中随着业务越来越多&#xff0c;导致功能之间耦合性高、开发效率低、系统运行缓慢难以维护、不稳定。微服务 架构可以解决这些问题&#xff0c;而Spring Cloud是微服务架构最流行的实现. 1.微服务 微服务架构是使用一套小服务来开发单个应用…

thinkphp3.22 多项目配置

1.index.php if(version_compare(PHP_VERSION,5.3.0,<)) die(require PHP > 5.3.0 !); // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define(APP_DEBUG,true); // 创建 //define(BIND_MODULE,Login); define(erp,true); // 定义应用目录 define(APP_PAT…