【AICon】AI 大模型超全落地场景&最佳实践 了解详情
写点什么

《卫报》优化了移动推送通知投递架构

  • 2023-05-25
    北京
  • 本文字数:1219 字

    阅读完需:约 4 分钟

《卫报》优化了移动推送通知投递架构

8 月 16 - 19 日,与零一万物李开复、蔚来李斌、面壁智能李大海,及工商银行、交通银行、华夏银行等 100+ 行业专家相聚 FCon x AICon

《卫报》(The Guardian)的技术团队已经在着手加快移动推送通知的速度,以改善读者的体验。针对并发性进行优化的原始架构一直受到通知投递延迟的困扰。工程师们利用改进的可观测性,通过实验获得了显著的成果。


《卫报》的读者可以使用移动应用程序访问内容,并可以通过注册以推送通知的形式接收突发新闻提醒。其背后的事件驱动架构(EDA)自 2009 年以来一直在运行,但随着时间的推移,通知投递的时间有所增加,对某些用户来说,通知投递时间需要五分钟以上。


《卫报》的全栈开发人员Francesca Hammond表示,该团队的目标是在两分钟内向 90%的预期受众发送通知,这一目标被称为“90in2”。


支持推送通知投递的解决方案利用了一系列的技术。一个与Scala Play应用程序对话的内部突发新闻工具触发推送通知投递。AWS Lambda函数使用来自AWS SQS的队列消息,负责从自托管的PostgreSQL数据库中获取通知注册,并将其发送到谷歌和苹果的推送通知平台。



来源: https://www.theguardian.com/info/2022/dec/15/our-journey-towards-the-fastest-breaking-news-service


该团队使用ELK栈改进了整个过程的可观测性,这对于识别瓶颈至关重要。


他们认为检索通知注册是造成延迟的主要瓶颈。进一步的调查发现存在大量的数据库连接错误,从而导致处理时间过长。为了解决这个问题,团队引入了RDS代理,这样 lambda 函数就不会直接连接到数据库,从而避免了触达数据库的连接限制。


查询执行时间过长被认为是延迟的另一个原因。在判定查询计划是正确的之后,为了进一步提高数据库性能,一个完整的真空进程删除了“死行”(数据库仍保留的逻辑删除行),并将数据库从版本 10 升级到了版本 13,该版本允许使用更强大的 AWS Gravitron2 处理器。


团队通过创建一个新的 RDS 实例来升级数据库,以最大限度地减少切换过程中的停机时间。他们设置了逻辑复制来持续同步数据,而应用程序服务则使用旧实例。在切换时,团队更新服务以使用新实例,并立即禁用逻辑复制。



来源: https://www.theguardian.com/info/2022/dec/15/our-journey-towards-the-fastest-breaking-news-service


在持久层之外,开发人员发现,负责向苹果/谷歌平台提交通知的lambda函数需要长达六分钟的时间才能完成接收人数超过 80 万的突发新闻。


该团队通过部署潜在的优化并观察结果进行了几次实验,每次都需要决定更改的保留和恢复。基于这些实验,他们增加了运行在 lambda 函数中的 Scala 应用程序的线程池大小,以提高并行性。此外,他们还将 lambda 函数可用的内存和 CPU 数量设置为支持的最大值,从而缩短了函数的执行时间。


Hammond 写道,继续之前,团队正在进行评估:

我们还没做完呢!我们认为,为了实现 90in2 的目标,可能需要对我们的架构进行更大的更改,特别是考虑到向 200 多万订阅者发送更大的通知时。由于所需更改的性质,我们想尝试实施 RFC 风格的流程,以便在开始开发之前收集想法和反馈。


《卫报》的核心通知平台是开源的


原文链接:

https://www.infoq.com/news/2023/05/guardian-push-architecture/

2023-05-25 12:032857

评论

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

Idea居然还有比Navicat、Datagrid工具还好用、还快的插件,效率又可提升一倍了

非喵鱼

Java MySQL redis IDEA 12 月 PK 榜

CTPN+CRNN算法端到端实现文字识别的实战开发

华为云开发者联盟

人工智能 华为云 文字识别 12 月 PK 榜

得物云原生全链路追踪Trace2.0-采集篇

得物技术

架构 云原生 APM Trace OpenTelemetry

设备管理|锂电材料工厂混合设备的维护与保养

PreMaint

设备管理 新能源行业 锂电材料工厂

做了一份前端面试复习计划,保熟~

loveX001

JavaScript

基于阿里云IoT平台OTA进行APP确认升级的方案——业务架构类

阿里云AIoT

物联网 UED 数据格式

百度 Android 直播秒开体验优化

百度Geek说

android 百度app 12 月 PK 榜 直播优化

我把Idea给改了,看看有没有你常用的功能,没有,你告诉我,我给你造了

非喵鱼

Java 开源 IDEA springboot 12 月 PK 榜

手把手教你构建数据安全体系,守住安全合规红线

王巍

数据安全

算法 KECP 被顶会 EMNLP 收录,极少训练数据就能实现机器阅读理解

阿里云大数据AI技术

自然语言处理 机器学习 12 月 PK 榜 机器阅读

面试官:MySQL 中 varchar(n) 中 n 最大取值为多少?

架构师之道

MySQL 编程 计算机

前端面试题(附答案)

loveX001

JavaScript

跨机房ES同步实战

京东科技开发者

迁移 迁移数据 异步多活 Elastic Search 数据库·

KAFKA EAGLE 监控MRS kafka之操作实践

华为云开发者联盟

开发 华为云 12 月 PK 榜

ZBC登录iZUMi Finance双挖池APY高达189%,极致通缩的典范

西柚子

Git实战(四)| Git分支管理实操,搞定在线合并和本地合并

霍格沃兹测试开发学社

Git实战(五)| 让工作更高效,搞定Git的分支管理

霍格沃兹测试开发学社

IoT高级设备检索——设备管理运维类

阿里云AIoT

数据库 监控 物联网 传感器 Cloud Native

前端面试指南之JS面试题总结

loveX001

JavaScript

教你如何进行数仓字符串、二进制、十六进制互转

华为云开发者联盟

数据库 后端 字符串 华为云 12 月 PK 榜

潦草手写体也能轻松识别,快速提取文字不用愁

HarmonyOS SDK

HMS Core

损失高达3亿美元|如何保护源代码安全?

SEAL安全

12 月 PK 榜 源代码安全 最小权限管理 零信任模型

借用FinClip把小程序游戏运行到自有App中

Onegun

小游戏 小游戏开发 微信小游戏

IPQ8074 Qualcomm Embedded Board Offers MU-MIMO 802.11ax WiFI 6//industrial wifi6 moudle

wallysSK

IPQ8074 ip8072

掌握 CORS 跨域请求,读这一篇文章就够了

范家鹏

HTTP CORS 跨域 异步请求 跨域资源共享

区块链“入局”证券市场,未来前景有多大?

旺链科技

区块链 产业区块链 证券行业 12 月 PK 榜

MYSQL-INNODB索引构成详解

京东科技开发者

MySQL innodb 索引 B+树 InnoDB存储引擎

深入理解JS作用域链与执行上下文

loveX001

JavaScript

2小时开发《点球射门游戏》,动画演示思路(上),代码已开源

非喵鱼

Java 开源 游戏 12 月 PK 榜 世界杯足球游戏

软件测试 | 版本控制神器GitHub的基本使用与踩坑

测试人

GitHub 软件测试 自动化测试 测试开发

2 小时开发《点球射门游戏》,动画演示思路(下),代码已开源

非喵鱼

Java 开源 游戏 12 月 PK 榜 世界杯足球游戏

《卫报》优化了移动推送通知投递架构_云原生_Rafal Gancarz_InfoQ精选文章