目录

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负载均衡算法以满足流量调度需求。

【Zuul2】zuul集成ribbon完成服务通信和负载均衡相关推荐

  1. SpringCloud Feign 源码底层如何调用Ribbon实现服务调用的负载均衡

    在SpringCloud微服务中调用都不是直接用Ribbon进行服务调用,因为那样的化项目中的代码量会增加很多,微服务之间的调用是用Feign来进行调用,下面就是普通的一个接口调用例子 这样就可以进行 ...

  2. 微服务架构-实现技术之六大基础组件:服务通信+事件驱动+负载均衡+服务路由+API网关+配置管理

    微服务架构的实现首先需要提供一些基础组件,这些基础的功能性组件主要包括服务之间的通信.面向事件驱动的架构设计方法.负载均衡.服务路由.API网关和分布式配置中心等,我们对这六大基本组件进行初步的分析定 ...

  3. SpringCloud微服务:Ribbon和Feign组件,实现服务调用的负载均衡

    一.Ribbon简介 1.基本概念 Ribbon是一个客户端的负载均衡(Load Balancer,简称LB)器,它提供对大量的HTTP和TCP客户端的访问控制. 2.负载均衡简介 目前主流的负载均衡 ...

  4. 【微服务】Eureka+Ribbon实现注册中心与负载均衡

    文章目录 前言 1.微服务引入 1.1.相关概念 1.2.软件架构的演进 1.2.1.单体架构 1.2.2.垂直架构 1.2.3.分布式架构 1.2.4.SOA架构 1.2.5.微服务架构 1.3.S ...

  5. Springcloud、Nacos 服务注册、负载均衡Ribbon、http客户端Feign

    SpringCloud是基于SpringBoot的一整套实现微服务的框架.它提供了微服务开发所需的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等组 ...

  6. SpringCloud微服务-服务注册发现-负载均衡-服务调用-服务降级-服务网关-配置中心-消息总线-消息驱动-链路追踪-alibaba-nacos-sentinel-seata理论原理分析

    SpringCloud理论技术 概述 ​ Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总 ...

  7. 服务发现与负载均衡 dubbo zk原理

    服务发现与负载均衡 拓展阅读 : dubbo 原理概念图 2016-03-03 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 内容整理自文章&qu ...

  8. 关于服务发现和负载均衡,你想知道的都在这儿

    问题缘由 单机时代,传统软件大多是单体/巨石架构(Monolithic).大家往一个代码仓库提交CODE,这会导致应用膨胀,难以理解和修改,以及扩展受限,无法按需伸缩等诸多问题.单体架构怎么解决多人合 ...

  9. 基于go的微服务搭建(七) - 服务发现和负载均衡

    第七节: 服务发现和负载均衡 原文地址 转载请注明原文及翻译地址 这篇文章将关注两个微服务架构的重要部分:服务发现和负载均衡.和他们是如何帮助我们2017年经常要求的横向扩展容量的 简介 负载均衡和出 ...

最新文章

  1. Ms Sql Server 基本管理脚本(1)
  2. windows笔记-内存映射文件
  3. 那些你不知道的单词小秘密
  4. 腾讯2013年校园招聘笔试试题
  5. Python的3种执行方式
  6. [Ynoi2018]末日时在做什么?有没有空?可以来拯救吗?
  7. 隐式调用 Intent 大全
  8. LeetCode之Island Perimeter
  9. JSON处理1.1:100DaysOfJavaEE8
  10. IT 事业发展:树立自己的品牌
  11. 【免费毕设】ASP.NET+SQL通用作业批改系统设计(源代码+论文)
  12. 快照(Snapshot)
  13. 麦咭萌app送智伴机器人_国内儿童陪伴机器人品牌盘点
  14. MedicineCare-可行性分析
  15. python 网络小说爬取2
  16. 软件测试工程师怎么写okr,测试工程师提高质量的OKR该如何写?
  17. 笔记:戴蒙德模型中的折旧
  18. 如何识别企业内的“千里马”?
  19. word首页之前插入空白页没有页眉页脚且不影响后续页码
  20. 没有乔布斯的MacWorld :8个瞬间

热门文章

  1. Windows使用ROS机器人操作系统全面资料汇总
  2. tp5 批量更新多条记录_Thinkphp怎么批量更新数据
  3. 基于树莓派摄像头的冷水珊瑚礁科考
  4. 弘辽科技:掌握淘宝直通车的精准操作方法,把车开好超简单!
  5. python质数列_Python-质数和斐波那契数列
  6. 如何学习嵌入式? 嵌入式之路从入门到放弃....
  7. 神秘农场新背包java_Mystery Ranch神秘农场2018年户外背包系列产品一览
  8. Ubuntu系统安装操作失误,导致开机一直进入grub界面的解决方法
  9. RocketMQ压测报告书
  10. Python:披萨店主页程序练习