Kong工作原理 - 负载均衡 - 负载均衡算法

这篇具有很好参考价值的文章主要介绍了Kong工作原理 - 负载均衡 - 负载均衡算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

负载均衡器支持以下负载均衡算法:

1. 轮询(Round-robin)
2. 一致性哈希(Consistent Hashing)
3. 最少连接(Least Connections)
4. 延迟(Latency)

这些算法仅在使用upstream实体时可用,详见高级负载均衡。

注意:对于所有这些算法,重要的是要了解如何设置每个后端的权重和端口。

 轮询

轮询算法将以加权方式进行。它在结果上与基于DNS的负载均衡相同,但由于它是一个upstream实体,因此在这种情况下还提供了健康检查和断路器的附加功能。

选择此算法时,请考虑以下因素:

  • 请求的良好分布。
  • 相对静态,只有DNS更新或目标更新可以影响流量的分布。
  • 不改善缓存命中率。
 一致性哈希

使用一致性哈希算法时,将使用可配置的客户端输入来计算哈希值。然后,该哈希值将与特定的后端服务器相关联。

一个常见的例子是使用消费者作为哈希输入。由于该ID对于来自该用户的每个请求都是相同的,因此它将确保相同的用户始终由同一个后端服务器处理。这将允许在后端进行缓存优化,因为每个服务器仅为用户的一个固定子集提供服务,并且因此可以改善其与用户相关数据的缓存命中率。

这个算法实现了ketama原则,以最大化哈希的稳定性,并在已知后端列表发生变化时最小化一致性丢失。

在使用一致性哈希算法时,哈希的输入可以是none、consumer、ip、header或cookie。当设置为none时,将使用轮询方案,并禁用哈希。一致性哈希算法支持主要和备用哈希属性;如果主要哈希失败(例如,如果主要哈希设置为consumer,但未进行消费者身份验证),则使用备用属性。这最大化了upstream 缓存命中。

可支持的哈希属性如下:

  • none:不使用一致性哈希算法,而是使用轮询(默认)。
  • consumer:将消费者ID作为哈希输入。如果没有可用的消费者ID,它将回退到凭证ID(例如,在使用LDAP等外部身份验证机制时)。
  • ip:将原始IP地址作为哈希输入。在使用此功能时,请查看配置设置以确定真实IP。
  • header:将指定的头部作为哈希输入。头部名称分别在hash_on_header或hash_fallback_header中指定,具体取决于头部是否是主要或备选属性。
  • cookie:将指定路径上的特定cookie作为哈希输入。cookie名称在hash_on_cookie字段中指定,路径在hash_on_cookie_path字段中指定。如果请求中未找到指定的cookie,响应将设置该cookie。因此,如果cookie是主要哈希机制,hash_fallback设置无效。生成的cookie将具有随机UUID值。因此,第一次分配将是随机的,但后续请求将保持相同,因为它保存在cookie中。

一致性哈希负载均衡器旨在同时适用于单个节点和集群。在使用基于哈希的算法时,重要的是所有节点都构建相同的负载均衡器布局,以确保它们的工作完全相同。为了实现这一点,负载均衡器必须以确定性的方式构建。

在选择这个算法时,考虑以下几点:

  • 提高后端缓存命中率。
  • 需要足够的哈希输入基数以实现均匀分布(例如,在仅具有2个可能值的头部进行哈希处理是没有意义的)。
  • 基于Cookie的方法对于基于浏览器的请求非常有效,但对于往往省略Cookie的机器对机器客户端则效果较差。
  • 尽量避免在负载均衡器中使用主机名,因为负载均衡器可能会逐渐偏离,原因是DNS ttl只有秒级精度,并且续约是由名字实际请求时确定的。此外,一些域名服务器不返回所有条目的问题会加剧这个问题。因此,在Kong集群中使用哈希方法时,最好通过IP地址添加目标实体来避免这个问题。可以通过负载均衡器的重建和更高的ttl设置来缓解这个问题。
 最少连接

 该算法会跟踪每个后端正在处理的请求数量。权重用于计算每个后端的“连接容量”。请求将被路由到剩余容量最高的后端。换句话说,该算法会根据后端的连接容量来选择路由请求。

在选择这个算法时,考虑以下几点:

  • 流量的良好分布。
  • 不会提高缓存命中率。
  • 更具动态性,因为速度较慢的后端将有更多的连接打开,因此新的请求将自动路由到其他后端。
 延迟

延迟算法基于峰值EWMA(指数加权移动平均),确保负载均衡器根据最低的延迟(upstream_response_time)选择后端。所使用的延迟指标是完整的请求周期,从TCP连接到响应体的时间。由于它是一个移动平均值,这些指标会随着时间的推移而“衰减”。换句话说,旧的延迟数据在计算中会逐渐减少。

权重将不会被考虑在内。

在选择这个算法时,考虑以下几点:

  • 提供良好的流量分布,前提是有足够的基础负载来保持指标持续更新,因为它们会 “衰减”。
  • 不适合长期连接,如Websockets或服务器推送事件(SSE)。
  • 非常动态,因为它会不断进行优化。
  • 最理想的情况是,当延迟变化较小时工作效果最佳。这意味着后端的流量和工作负载大致相似。例如,一个用于GraphQL后端的应用,既需要处理快速的小查询,也需要处理慢速的大查询,那么延迟指标就会有很大的变化,导致指标失真。
  • 正确设置后端容量,并确保网络延迟正常,以防止资源饥饿。例如,使用两个服务器:一个容量小、距离近(网络延迟低),另一个容量大、距离远(延迟高)。大部分流量将被路由到较小的服务器,直到其延迟开始增加。然而,延迟的增加意味着较小的服务器很可能正在经历资源饥饿。因此,在这种情况下,算法将使较小的服务器处于持续的资源饥饿状态,这很可能是低效的。

 文章来源地址https://www.toymoban.com/news/detail-823471.html

到了这里,关于Kong工作原理 - 负载均衡 - 负载均衡算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Nginx、Kong、Apisix、Gateway网关比较

    Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。能够支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定,由C语言编写。支持负载均衡、限流熔断、热部署、安全认证等。 应用场景 http 服务器:独立提供 http 服务,用于

    2024年02月14日
    浏览(36)
  • 开源的API Gateway项目- Kong基于OpenResty(Nginx + Lua模块)

    Kong 是一个在 Nginx 内运行的开源 API 网关和微服务抽象层。它是用于处理 API 流量的灵活、可扩展、可插入的工具。 Kong 提供了以下功能: 用户登录 :Kong 提供了多种认证插件,像 JWT、OAuth 2.0 等,可以满足用户登录需求。 Token 管理 :使用上述认证插件,Kong 可以有效地管理

    2024年01月23日
    浏览(44)
  • 负载均衡的原理及算法

    负载均衡(Load Balancing)是指在计算机网络中将工作负载(如请求、数据流量等)分配给多个计算资源(如服务器、网络连接等),以实现资源利用的均衡和性能优化。其原理和算法如下: 原理: 请求分发 :负载均衡器接收到来自客户端的请求后,根据预设的策略将请求分

    2024年04月17日
    浏览(31)
  • 负载均衡原理及算法

    负载均衡是一种计算机网络技术,其核心目标是在多个服务器或服务单元之间有效地分配网络流量或工作任务,以达到以下目的: 提高系统性能 :通过分散负载,防止单一服务器过载,确保整体系统的处理能力得到充分利用。 提升可用性 :即使某个服务器出现故障,其他健

    2024年04月23日
    浏览(29)
  • 深入理解负载均衡原理及算法

    在互联网早期,网络还不是很发达,上网用户少,流量相对较小,系统架构以单体架构为主。但如今在互联网发达的今天,流量请求动辄百亿、甚至上千亿,单台服务器或者实例已完全不能满足需求,这就有了集群。不论是为了实现高可用还是高性能,都需要用到多台机器来

    2024年02月14日
    浏览(45)
  • 深入理解负载均衡:原理及常用算法

    摘要: 负载均衡在现代网络架构中扮演着至关重要的角色,它通过分配请求到多个服务器来提高系统的性能、可用性和可伸缩性。本文将介绍负载均衡的基本原理以及常用的负载均衡算法,帮助读者更好地理解和应用负载均衡技术。 引言 随着互联网的迅速发展,网络应用的

    2024年04月17日
    浏览(35)
  • 集群、负载均衡集群、高可用集群简介,LVS工作结构、工作模式、调度算法和haproxy/nginx模式拓扑介绍

    目录 一.集群的定义 1.定义 2.分类 (1)负载均衡集群(LBC/LB) (2)高可用集群(HAC) 二.使用集群的意义 1.高性价比和性能比 2.高可用性 3.可伸缩性强 4.持久和透明性高 三.常见的两种集群模式拓扑 1.LVS(-DR)集群模式 (1)工作架构 (2)LVS下的相关术语 (3)LVS的工作模式

    2024年02月13日
    浏览(42)
  • Kong网关初次尝试

    本次目的:研究市面上的API网关 Docker  部署 : 1. postgre 2. kong migrations bootstrap 3. kong 问题是migrations时会报lua的错误,后面调研一下。 1. 注册一个service,指定服务的ip 端口等信息。 2. 设定一个路由发现方式,支持path、method、host,这里先用最简单的path。创建了路由test指定了

    2024年01月25日
    浏览(39)
  • Kong关键概念 - Upstreams

    Upstream是指Kong Gateway转发请求到的API、应用程序或微服务。在Kong Gateway中,Upstream 对象代表了一个虚拟主机名,并可以用于对多个服务进行健康检查、断路器和负载均衡。 Upstream 和 service 交互 您可以将服务配置为指向一个Upstream,而不是一个主机。例如,如果您有一个名为

    2024年01月24日
    浏览(35)
  • Docker安装Kong

    首先我们创建一个 Docker 自定义网络,以允许容器相互发现和通信。在下面的创建命令中 kong-net 是我们创建的 Docker 网络名称。 Kong 目前使用 Cassandra 或者 PostgreSQL,你可以执行以下命令中的一个来选择你的 Database。请注意定义网络 --network=kong-net 。 使用 PostgreSQL: 我们使用 d

    2024年02月06日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包