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

这篇具有很好参考价值的文章主要介绍了Java Chassis 3技术解密:负载均衡选择器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文链接:Java Chassis 3技术解密:负载均衡选择器-云社区-华为云

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

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

Java Chassis 3技术解密:负载均衡选择器,java,负载均衡,开发语言,华为云

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 使用了树型结构的职责链,它的工作过程如下:

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

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

Java Chassis 3技术解密:负载均衡选择器,java,负载均衡,开发语言,华为云

出现实例为空的的场景:

Java Chassis 3技术解密:负载均衡选择器,java,负载均衡,开发语言,华为云

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

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

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

更多华为云技术干货请关注:华为云PaaS服务小智的博客_云社区-华为云 文章来源地址https://www.toymoban.com/news/detail-792209.html

到了这里,关于Java Chassis 3技术解密:负载均衡选择器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Cloud 实战 | 解密负载均衡Ribbon底层原理,包含实战源码

    专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow专栏:https://blog.csdn.net/superdangbo/category_869

    2024年02月08日
    浏览(53)
  • 负载均衡常用调度算法介绍和选择

    所有服务器,都有一个能处理请求的qps上限,超过这个上限就会有丢包的风险,这个时候我们必须对服务器进行扩容。 扩容有两种方法,一种是增加服务器的硬件资源(scale up纵向扩容),这种方法比较简单,插块卡就行了,但是如果要增加计算网络资源的话,可能需要重启

    2024年02月02日
    浏览(43)
  • 专家解读:如何选择负载均衡设备?

    近年来,随着云计算与大数据的爆发式增长,众多大型数据中心都在积极部署或是升级负载均衡设备,以保障数据中心更加通畅可靠的运行。然而,负载均衡作为一种集硬件设备和解决方案于一体的系统型产品,并不像服务器或是PC那样可通过配置参数来辨别。在一大堆厂商

    2024年02月07日
    浏览(43)
  • 解析Java Chassis 3中应用视角的配置管理

    本文分享自华为云社区《Java Chassis 3技术解密:应用视角的配置管理》,作者: liubao68。 谈论微服务配置管理的时候,最多的是以配置中心为视角,讨论其配置管理能力。 和注册中心一样,不同的配置中心会有一些关键的设计指标。 配置的格式和类型。支持不同格式和类型

    2024年01月23日
    浏览(45)
  • Java实习面试经验汇总,Dubbo-负载均衡原理解析,TCP的三次握手、四次挥手

    if (sameWeight i 0 !weight.equals(weights[i - 1])) { sameWeight = false; } } Integer sequenceNum = Sequence.getAndIncrement(); Integer offset = sequenceNum % totalWeight; offset = offset == 0 ? totalWeight : offset; if (!sameWeight) { for (String ip : ServerIps.WEIGHT_LIST.keySet()) { Integer weight = ServerIps.WEIGHT_LIST.get(ip); if (offset = weight) { ret

    2024年04月25日
    浏览(39)
  • 选择正确的负载均衡器:LVS还是Nginx?

    💡一个热爱分享高性能服务器后台开发知识的博主,目标是通过理论与代码实践的结合,让世界上看似难以掌握的技术变得易于理解与掌握。技能涵盖了多个领域,包括C/C++、Linux、Nginx、MySQL、Redis、fastdfs、kafka、Docker、TCP/IP、协程、DPDK等。 👉 🎖️ CSDN实力新星,社区专家

    2024年02月13日
    浏览(52)
  • 详解Java Chassis 3与Spring Cloud的互操作

    本文分享自华为云社区《Java Chassis 3技术解密:与Spring Cloud的互操作》,作者: liubao68。 Java Chassis 3一个很重要的设计原则:利用架构的韧性设计来解决兼容性问题。 比如通过引入微服务网关,来解决不同语言、不同框架、遗留系统之间的互操作问题。 本文在这个架构原则基

    2024年04月10日
    浏览(47)
  • 【kafka】Java客户端代码demo:自动异步提交、手动同步提交及提交颗粒度、动态负载均衡

    kafka版本为3.6,部署在3台linux上。 maven依赖如下: 生产者、消费者和topic代码如下: 这里先简单解释一下, kafka的topic只是一个逻辑上的概念,实际上的物理存储是依赖分布在broker中的分区partition来完成的 。kafka依赖的zk中有一个 __consumer_offsets [1]话题,存储了所有consumer和g

    2024年01月19日
    浏览(55)
  • API 网关 vs 负载均衡:选择适合你的网络流量管理组件

    由于互联网技术的发展,网络数据的请求数节节攀升,这使得服务器承受的压力越来越大。在早期的系统架构中,通常使用负载均衡来将网络流量平摊到多个服务器中,以此减轻单台服务器的压力。但是现如今,后端服务的种类在不断地变多,每个种类的后端都以 API 的形式

    2024年02月11日
    浏览(49)
  • 解密Java容器技术:10个关键概念和用途

    引入容器技术的背景:容器技术作为软件开发和部署的一种重要工具,已经在过去几年中迅速发展,并得到了广泛应用。它解决了传统软件部署和管理中的许多挑战,并为开发人员和运维人员带来了巨大的便利和效率提升。 容器技术的定义:容器技术是一种虚拟化技术,通过

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包