暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Aperture:一款开源的 Web 端网络流量控制工具

原创 小小亮 2022-09-14
1362

Aperture 是用于现代 Web 应用程序的开源流量控制和可靠性管理平台。

为什么需要流量控制

现代网络规模的应用程序是一个由相互连接的微服务组成的复杂网络,这些微服务实现了账户管理、搜索、支付等功能。这种解耦架构具有优势,但引入了新的复杂故障模式。当流量激增时,可能会导致关键服务上的队列堆积,从而启动正反馈循环并导致 级联故障应用程序停止及时提供响应,关键的最终用户事务被中断。

缺乏流量控制

应用程序受 利特尔定律支配,该定律描述了系统中并发请求、请求到达率和响应时间之间的关系。为了使应用程序保持稳定,必须限制系统中的并发请求。用于稳定应用程序的间接技术(例如速率限制和自动缩放)无法实现良好的用户体验或业务成果。限制个人用户的速率不足以保护服务。自动缩放响应缓慢并且成本过高。随着服务数量的增加,这些技术越来越难以部署。

流量控制的可靠性

这就是流量控制的用武之地。在将流量控制技术与 Aperture 结合使用时,应用程序可以通过将高重要性功能优先于其他功能来优雅地实时降级。

Aperture工作原理

在基础层面,Aperture 通过观察、分析和驱动来实现流量控制,由代理和控制器推动。

光圈控制环

Aperture Agents

Aperture Agents 作为 Sidecar 存在于您的服务实例旁边,并提供强大的流量控制组件,例如用于优先减载的加权公平排队调度器和用于防止滥用的分布式速率限制器。从 Aperture Agent 的角度来看,流是基本的工作单元。它可以是 API 调用、功能,甚至是数据库查询。

通过将关键应用程序功能优先于后台工作负载来实现服务的平稳降级。就像登机时一样,商务舱乘客优先于其他乘客;每个应用程序都有不同优先级的工作负载。视频流服务可能会将客户播放电影的请求视为比运行内部机器学习工作负载更高的优先级。SaaS 产品可能会优先考虑付费用户使用的功能,而不是免费用户使用的功能。Aperture Agents 根据他们的优先级安排工作负载,即使在过载情况下也能帮助最大化用户体验或收入。

Aperture Agents 使用内置遥测系统和可编程的高保真流分类器监控黄金信号,用于根据客户层或请求类型等属性标记请求。这些指标由控制器分析。

Aperture Controller

该控制器由始终在线、数据流驱动的策略提供支持,这些策略持续跟踪与服务级别目标 (SLO) 的偏差并计算恢复或升级操作。在控制器中运行的策略表示为电路,很像游戏 Factorio中的电路网络。

例如,梯度控制电路组件可用于实现 AIMD (加性增加、乘性减少)样式的对策,当响应时间恶化时限制服务的并发性。PID等高级控制组件可用于进一步调整并发限制。

Aperture 的控制器在能力上可与飞机的自动驾驶仪或某些汽车的自适应巡航控制相媲美。

Aperture 部署

Aperture 可以通过服务网格或 SDK 插入到服务实例中:

  • Service Mesh:使用Envoy可以在不更改应用程序代码的情况下部署 Aperture 它锁定 Envoy 的 外部授权 API 以用于控制目的,并收集访问日志以用于遥测目的。在每个请求上,Envoy 都会将请求元数据发送到 Aperture Agent 以做出流量控制决策。在 Aperture 代理内部,请求会遍历分类器、速率限制器和调度器,然后再将接受或放弃请求的决定发送回 Envoy。Aperture 在将流分类标签插入请求时参与了 OpenTelemetry跟踪协议,从而在Jaeger等跟踪工具中实现可视化。
  • Aperture SDK:除了服务网格插入之外,Aperture 还提供 SDK,开发人员可以使用这些 SDK 在服务代码内部的功能级别上实现细粒度的流量控制。例如,当应用程序遇到过载时,电子商务应用程序可能会优先考虑结帐流程中的用户而不是新会话。可以对 Aperture 控制器进行编程,以在触发基本减载几分钟时将功能降级为升级的恢复操作。


Aperture官方文档:https://docs.fluxninja.com/docs/introduction/

最后修改时间:2022-09-14 10:09:31
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论