【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

Monzo 采用有针对性的流量削峰策略,以抵御移动应用引发的惊群效应

  • 2023-11-17
    北京
  • 本文字数:1294 字

    阅读完需:约 4 分钟

大小:639.71K时长:03:38
Monzo 采用有针对性的流量削峰策略,以抵御移动应用引发的惊群效应

Monzo 已经开发了一种解决方案,用于应对其平台突然而强烈的流量负担,以防止服务中断。这种流量高峰可能是由移动应用引发的,例如推送通知或用户活动的突发增加。这一解决方案能够在几乎不影响客户体验的前提下,将读取流量减少近 50%,整体准确率高达 90%。

 

Monzo 银行平台拥有数百万用户,他们主要通过移动应用程序与平台互动。然而,有时流量激增可能会使平台陷入不稳定状态。这可能是由于向大量用户发送定期的推送通知或特定时间的功能,比如“提前获得薪水”。尽管 Monzo 团队已经采取了积极的扩展措施来确保平台具备足够的容量来处理 “提前获得薪水” 等事件,但突如其来的流量激增仍然构成重大风险。

 

Monzo 的高级工程师 Jacob Moxham 解释了为什么惊群效应(类似于“惊群问题”)对于 Monzo 平台的稳定性非常危险:

 

惊群效应是我们用来描述大量客户在非常短的时间内打开应用程序的情况。如果我们没有为这些时刻做好准备,可能会用尽缓冲容量,无法迅速扩展我们的平台。在最糟糕的情况下,共享基础设施可能会超负荷,导致广泛的中断。

 

问题被放大,因为 Monzo 应用在打开或接收到推送通知时会预取数据,以确保立即提供最新信息。团队怀疑大多数这些请求只会返回相同的数据。在为 0.1% 的用户部署额外的日志记录到边缘代理后,日志显示在 24 小时内大约有 70% 的请求返回相同的数据。

 

为了消除“浪费”的请求,工程师首先选择创建一个“更改 API”,该 API 将返回最常用和昂贵的终端的最后更新时间。移动应用程序将查询新的更改 API,并仅在自上次调用以来数据已更改时才请求数据。这种方法在提供准确的最后更新时间戳方面遇到困难,因为常规 API 终端中实施了实时数据增强,并且对 API 资源的更新存在复杂的数据流程。

 


 边缘代理中的请求削峰逻辑 (来源 :Monzo Technology Blog

 

相反,团队得出结论,与其实施完美且永久的解决方案,他们可以创建一个足够但成本更低的解决方案,只在平台出现严重和意外负荷时激活它。他们确定了三个特征来帮助确定是否削减请求:响应计算的时间,数据预取的触发器以及在进行请求时移动应用程序打开的时间。

 

对于第一个特征,工程师重新利用了 API 终端返回的 Etag HTTP 标头,其中包含响应哈希和上次计算的时间。在预取数据时,移动应用程序将发送包含与相同请求的先前返回的 Etag 标头的值以及自定义标头中的其他两个特征的 If-None-Match HTTP 标头。基于标头中的元数据,边缘代理中部署的负载削减策略将确定是否忽略请求并返回 304(未修改)状态码或返回计算的响应。不同的预取触发器的策略可以分别激活,使团队逐步减少移动应用程序流量的各个部分。

 


启用请求削峰后的流量减少(来源:Monzo Technology Blog

 

团队通过在阴影模式下部署新的策略进行试验,即计算响应并根据请求元数据与实际结果进行比较来决定是否削减请求。当所有策略都激活时,平台能够在整体准确率达到 90% 的情况下,减少近 50% 的 GET 请求。工程师报告称,客户体验没有明显变化,与可能影响整个平台的主要故障相比,允许一小部分用户看到陈旧数据是可以接受的。

 

原文链接:

https://www.infoq.com/news/2023/10/Nvidia-matx-cpp-numerical-lib/

2023-11-17 08:005840

评论

发布
暂无评论
发现更多内容

Themis Pro版将正式推出,3次迭代到底在酝酿什么?

鳄鱼视界

有关提升代码质量的思考

阿呆

历史性的时刻!OpenTiny 跨端、跨框架组件库正式升级 TypeScript,10 万行代码重获新生!

Kagol

typescript 开源 Vue 3 Vue3 Typescript OpenTiny

NFTScan 与 Adot 达成合作伙伴,双方在多链 NFT 数据方面展开合作

NFT Research

NFT NFTScan

浅谈 Spring Bean 的生命周期

Java你猿哥

Java spring ssm Spring Bean

借降本增效之名,探索开闭原则架构设计

京东科技开发者

低代码 软件架构 开闭原则 企业号 4 月 PK 榜

GitHub置顶半个月!78w字百亿级并发设计(全彩PDF)

做梦都在改BUG

Java 架构 系统设计 高并发

三次迭代终放“大招”,Themis Pro版即将问世

BlockChain先知

Themis Pro版将正式推出,3次迭代到底在酝酿什么?

股市老人

三次迭代终放“大招”,Themis Pro版即将问世

EOSdreamer111

Flutter和小程序容器技术的应用前景与发展潜力

FinFish

flutter 小程序容器 小程序技术

IotLink版本更新V1.10.0

山东云则信息科技

SpringCloud 微信小程序 获取用户信息一键登录

Java你猿哥

Java 小程序 spring ssm spring chloud

IT采购,不再默默扛下“背刺”

白洞计划

AI 联想

浅谈Data Driven Testing

QE_LAB

测试 数据驱动测试

Alibaba最新“618,双十一”亿级并发系统设计(2023版小册开源)

架构师之道

Java 编程 高并发

Github最新霸榜!“精华版”Java八股文10天帮你彻底解决大厂难题

Java你猿哥

Java 面试 面经 Java工程师 八股文

迄今为止把Mybatis讲解的最详细的PDF,图文并茂,通俗易懂

Java你猿哥

Java 面试 mybatis ssm Mybatis框架

架构师日记-为什么数据一致性那么难

京东科技开发者

数据库 MQ 分布式系统 数据一致性 企业号 4 月 PK 榜

面对ChatGPT,中国AI可以不疾不徐不焦虑

脑极体

AI

和ChatGPT pair整理的测试类型清单

BY林子

软件测试 测试类型 ChatGPT

浅谈 Spring Bean 的生命周期

做梦都在改BUG

Java spring 生命周期 bean

C# 世界的《Effective C++》,来自.Net之父的核心揭秘

博文视点Broadview

编解码持续升级,「硬」实力铸就视频云最优解

阿里云视频云

云计算 芯片 视频云

产品愿景设计:解锁团队潜能,引领市场竞争优势

L3C老司机

产品设计 数字化转型 设计思维 产品设计与思考 产品愿景

释放Go Mutex的威力:编写线程安全代码的技巧和诀窍

Jack

集成技术,大山里的金子

阿呆

Redis事务

京茶吉鹿

nosql redis

Flutter 异步编程指南

京东科技开发者

flutter dart 异步任务编程 APP开发 企业号 4 月 PK 榜

iOS代码覆盖率(一)-全量覆盖率自动化实践

京东科技开发者

swift pod 脚本自动化 企业号 4 月 PK 榜 全量覆盖率

使用NSIS打包超大型软件的几个注意事项

大伟

Monzo 采用有针对性的流量削峰策略,以抵御移动应用引发的惊群效应_DevOps & 平台工程_Rafal Gancarz_InfoQ精选文章