Java Chassis3负载均衡选择器技术解密

 更新时间:2024年01月17日 09:11:40   作者:liubao68  
这篇文章主要为大家介绍了Java Chassis3负载均衡选择器技术解密,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Java Chassis 3技术解密:负载均衡选择器

负载均衡用于管理微服务实例之间的访问策略。它负责在每次请求中高效选择目标实例,并保持请求在多个目标实例中均衡。目标实例选择过程可以使用下面的示例图简单展示:

AZ亲和是常见的选择器之一。它根据本实例的AZ信息和目标实例的AZ信息,确定合适的目标实例子集,实例子集与本实例具有相同的AZ信息。

负载均衡选择器是一个典型的职责链模式。

Ribbon 的职责链

public interface ServerListFilter<T extends Server> {
  List<T> getFilteredListOfServers(List<T> servers);
}

Spring Cloud Commons 的职责链

public abstract class DelegatingServiceInstanceListSupplier implements ServiceInstanceListSupplier, InitializingBean, DisposableBean {
  protected final ServiceInstanceListSupplier delegate;

  public DelegatingServiceInstanceListSupplier(ServiceInstanceListSupplier delegate) {
    this.delegate = delegate;
  }

  public ServiceInstanceListSupplier getDelegate() {
    return this.delegate;
  }
}

Java Chassis 的职责链

public interface DiscoveryFilter extends Ordered {
  DiscoveryTreeNode discovery(DiscoveryContext context, DiscoveryTreeNode parent);
}

Java Chassis 使用了树型结构的职责链,它的工作过程如下:

  • 将实例预分组。
  • 通过树型结构索引,快速找到目标实例集合。
  • 当某个树节点为空的场景,可以返回上层选择器,重新查找。

能够快速检索到实例的场景:

出现实例为空的的场景:

树型职责链模式优势

相对于线性的职责链模式,树型职责链模式存在两方面明显的优势:

  • 计算复杂度从 O(N) 降低为 O(1)。 当实例规模很大,比如超过1000的时候,该算法能够极大的降低CPU使用率,减少垃圾回收的数量。
  • 能够解决上层选择器的结果在下层选择器的结果为空的问题。比如在AZ亲和场景,如果本AZ的实例不满足后续选择器的条件,那么使用非本AZ的实例,能够确保本次访问的正确性,降低错误率,也能够更好的满足请求均衡的要求。

客户故事:在某个客户的实际场景中,如果实例数超过1000,负载均衡的CPU消耗占到整个请求处理时间的20%以上,随着应用规模的变大,负载均衡处理算法的性能优化变得更加重要了。

以上就是Java Chassis3负载均衡选择器技术解密的详细内容,更多关于Java Chassis3负载均衡选择器的资料请关注脚本之家其它相关文章!

相关文章

  • Spring Boot命令行启动添加参数的三种方式

    Spring Boot命令行启动添加参数的三种方式

    在命令行中,常见的参数可以分为三类:选项参数、非选项参数和系统参数,本文就来介绍一下Spring Boot命令行三种参数形式,感兴趣的可以了解一下
    2023-09-09
  • Java 处理图片与base64 编码的相互转换的示例

    Java 处理图片与base64 编码的相互转换的示例

    本篇文章主要介绍了Java 处理图片与base64 编码的相互转换的示例,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08
  • 基于Netty实现WebSocket的常用处理器及区别解析

    基于Netty实现WebSocket的常用处理器及区别解析

    文章介绍了Netty中的ChannelInboundHandlerAdapter和SimpleChannelInboundHandler处理器,以及WebSocket的几种常见帧类型,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-02-02
  • MyBatis学习教程(三)-MyBatis配置优化

    MyBatis学习教程(三)-MyBatis配置优化

    这篇文章主要介绍了MyBatis学习教程(三)-MyBatis配置优化的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • java @Value(

    java @Value(

    这篇文章主要介绍了java @Value("${}")获取不到配置文件中值的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 一文学会处理SpringBoot统一返回格式

    一文学会处理SpringBoot统一返回格式

    这篇文章主要介绍了一文学会处理SpringBoot统一返回格式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Java编程中避免equals方法的隐藏陷阱介绍

    Java编程中避免equals方法的隐藏陷阱介绍

    这篇文章主要介绍了Java编程中避免equals方法的隐藏陷阱介绍,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • maven实现jar包导入+导出方式

    maven实现jar包导入+导出方式

    这篇文章主要介绍了maven实现jar包导入+导出方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 原生Java操作mysql数据库过程解析

    原生Java操作mysql数据库过程解析

    这篇文章主要介绍了原生Java操作mysql数据库过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Spring Boot Jwts Token生成方法示例

    Spring Boot Jwts Token生成方法示例

    这篇文章主要为大家介绍了Spring Boot Jwts Token生成方法示例,非适合java初学者,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09

最新评论