微服务篇之负载均衡

一、Ribbon负载均衡流程

二、Ribbon负载均衡策略

**1. RoundRobinRule:**简单轮询服务列表来选择服务器。

**2. WeightedResponseTimeRule:**按照权重来选择服务器,响应时间越长,权重越小。

**3. RandomRule:**随机选择一个可用的服务器。

  1. BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器。

  2. RetryRule:重试机制的选择逻辑。

  3. AvailabilityFilteringRule:可用性敏感策略,先过滤非健康的,再选择连接数较小的实例。

**7. ZoneAvoidanceRule:**以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。

三、自定义负载均衡策略

可以自己创建类实现IRule接口 , 然后再通过配置类或者配置文件配置即可 ,通过定义IRule实现可以修改负载均衡规则,有两种方式:

四、面试题及回答

**面试官:**你们项目负载均衡如何实现的 ?

**候选人:**在服务调用过程中的负载均衡一般使用SpringCloud的Ribbon 组件实现 , Feign的底层已经自动集成了Ribbon , 使用起来非常简单。当发起远程调用时,ribbon先从注册中心拉取服务地址列表,然后按照一定的路由策略选择一个发起远程调用,一般的调用策略是轮询。

**面试官:**Ribbon负载均衡策略有哪些 ?

**候选人:**我想想啊,有很多种,我记得几个:

  • RoundRobinRule:简单轮询服务列表来选择服务器。

  • WeightedResponseTimeRule:按照权重来选择服务器,响应时间越长,权重越小。

  • RandomRule:随机选择一个可用的服务器。

  • ZoneAvoidanceRule:区域敏感策略,以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询(默认)。

**面试官:**如果想自定义负载均衡策略如何实现 ?

**候选人:**提供了两种方式:

  1. 创建类实现IRule接口,可以指定负载均衡策略,这个是全局的,对所有的远程调用都起作用。

  2. 在客户端的配置文件中,可以配置某一个服务调用的负载均衡策略,只是对配置的这个服务生效远程调用。

相关推荐
风生u1 分钟前
bpmn 的理解和元素
java·开发语言·工作流·bpmn
代码游侠36 分钟前
复习——ARM Cortex-A 裸机开发深度解析
arm开发·笔记·嵌入式硬件·学习·架构
派大鑫wink41 分钟前
【Day34】Servlet 进阶:会话管理(Cookie vs Session)
java·开发语言·学习方法
多米Domi0111 小时前
0x3f 第35天 电脑硬盘坏了 +二叉树直径,将有序数组转换为二叉搜索树
java·数据结构·python·算法·leetcode·链表
zqmattack1 小时前
SQL优化与索引策略实战指南
java·数据库·sql
crossaspeed1 小时前
Java-线程池(八股)
java·开发语言
带刺的坐椅1 小时前
又一个项级的 Java Multi Agent 开源项目
java·ai·agent·solon·智能体
努力搬砖的咸鱼1 小时前
Kubernetes 核心对象详解:Pod、Deployment、Service
微服务·云原生·容器·架构·kubernetes
套码汉子2 小时前
从 “重复造轮子” 到 “搭积木式开发”:活动系统架构如何支撑业务高效迭代
架构·系统架构·游戏开发·组件化
Voyager_42 小时前
StringRedisTemplate 和 RedisTemplate 的区别是什么?
java·spring boot