亮网络解锁器,解锁网络数据的无限可能 了解详情
写点什么

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

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

    阅读完需:约 4 分钟

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

《卫报》(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:032822

评论

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

兆骑科创双创服务平台,创业赛事活动,投融资对接平台

兆骑科创凤阁

大咖说·图书分享 | Serverless工程实践:从入门到进阶

大咖说

Serverless 工程实践

快速搞懂Seata分布式事务AT、TCC、SAGA、XA模式选型

知识浅谈

开源 8月月更

史上最全!47个“数字化转型”常见术语合集,看完秒懂~

优秀

数字化转型 数字化业务转型

IDO预售DAPP系统开发(NFT挖矿)

薇電13242772558

dapp

基于深度学习的图像检索方法!

Geek_e369a5

图像搜索 图像检索

玉溪卷烟厂通过正确选择时序数据库 轻松应对超万亿行数据

TDengine

数据库 tdengine 时序数据库

语音直播系统——做好敏感词汇屏蔽打造绿色社交环境

开源直播系统源码

软件开发 语聊房 直播系统源码 语音直播系统

Mysql 基本操作指南之mysql查询语句

六月的雨在InfoQ

8月月更

面试SQL语句,学会这些就够了!!!

程序员猪小哼

sql 实用SQl语句

华为研究院19级研究员几年心得,终成趣谈网络协议文档,附大牛讲解

冉然学Java

数据库 编程 微服务 网络协议 java\

中科驭数等单位牵头发布行业首部DPU评测方法技术白皮书

硬科技星球

浅析PM2实用入门指南

青年码农

Node pm2

Spring Session

武师叔

8月月更

想做好分布式架构?这个知识点一定要理解透彻

王小凡

Java 程序员 分布式 高并发

绝对最直白的MySQL MVCC机制总结,免费拿走

知识浅谈

开源 8月月更

Python字体反爬之乐居字体反爬,一文看懂,一文学会

梦想橡皮擦

Python 爬虫 8月月更

开篇-开启全新的.NET现代应用开发体验

MASA技术团队

.net 云原生 后端

Kubernetes资源编排系列之三: Kustomize篇

阿里云大数据AI技术

运维‘

《数字经济全景白皮书》银行业智能风控科技应用专题分析 发布

易观分析

金融 银行 数字经济全景白皮书

并发模型和I/O模型介绍

C++后台开发

后端开发 I/O模型 C/C++后台开发 C/C++开发 并发模型

Spring Controller

武师叔

8月月更

国内IT市场还有发展吗?有哪些创新好用的IT运维工具可以推荐?

行云管家

云计算 多云管理 IT运维 云管理

这几年让你大呼惊人的AI应用,都离不开这项技术

小红书技术REDtech

人工智能 自然语言处理 nlp 自然语言 自然语言理解

兆骑科创创业赛事活动路演,高层次人才引进平台

兆骑科创凤阁

AI+BI+可视化,Sugar BI架构深度剖析

百度Geek说

架构 数据

二极管及其应用

厉昱辰

电子技术 8月月更

太厉害了!腾讯T4大牛把《数据结构与算法》讲透了,带源码笔记

冉然学Java

编程 算法 排序 java\ 数据结构与算法、

浅聊组合函数

掘金安东尼

前端 函数编程 8月月更

wx-wow(微信小程序动效库)

Five

微信小程序 动画效果 8月月更

Apache APISIX 2.15 版本发布,为插件增加更多灵活性

API7.ai 技术团队

开源 后端 API网关 APISIX 网关

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