写点什么

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

  • 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:032159

评论

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

阿里“云钉一体”加速整合 低代码开发平台“钉钉宜搭”发布

人称T客

智慧平安小区整体解决方案,智慧社区管控系统开发

13530558032

3D 可视化突发公共卫生事件 ,防护效率高达90%

一只数据鲸鱼

疫情 物联网 数据可视化 数据监测 3D可视化

(经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路

Java鱼仔

Java 程序员 面试 大学生

浅谈如何做客户端性能测试

行者AI

性能测试

窝家恶补三月,字节跳动三面,终于喜提offer!分享面试感受

Java架构之路

Java 程序员 架构 面试 编程语言

阿里P8大牛手把手教你!高级Android晋升之View渲染机制,先收藏了

欢喜学安卓

android 程序员 面试 移动开发

腾讯大牛亲自带你学:Java安全weblogic T3协议漏洞!

比伯

Java 编程 架构 面试 计算机

为新基建按下加速键:从openEuler看中国操作系统的产业生态未来

脑极体

ZooX首发双向电动无人车,会成为自动驾驶出行的主流吗?

脑极体

SpringBoot系列(7)- 自动装配

引花眠

springboot

软件测试所需要掌握的技能

测试人生路

软件测试

区块链食品溯源系统开发,农产品溯源小程序搭建

13530558032

甲方日常 75

句子

工作 随笔杂谈 日常

Java程序员晋升之路:“Java高级核心知识全面解析”

Java架构之路

Java 程序员 架构 面试 编程语言

字节面试坎坷之路,第一次二面凉了!捞起来之后一面就凉了;我太难了呀!

Java架构之路

Java 程序员 架构 面试 编程语言

业务架构设计迭代演进思路

程序员架构进阶

架构 中台 业务架构

第八课性能优化作业-判断合并链表

Geek_michael

极客大学架构师训练营

程序员开发指南!1-3年的Android开发工程师看过来,经典好文

欢喜学安卓

android 程序员 面试 移动开发

CEG挖矿系统APP开发|CEG挖矿软件开发

系统开发

ModelArts黑科技揭秘|弹性训练,让训练资源张弛有度

华为云开发者联盟

学习 华为云

圣诞狂欢,保险师APP赋能精细、个性化的运营服务

DT极客

大作业一

黄立

ARTS打卡 第28周

引花眠

微服务 ARTS 打卡计划 springboot

LeetCode题解:剑指 Offer 40. 最小的k个数,sort,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

Alibaba面试官:“这该死的程序员,知识竟如此渊博!”

Java架构之路

Java 程序员 架构 面试 编程语言

工具词典:精力管理

lidaobing

精力管理 张遇升 28天写作

劫持Chrome浏览器“获利”8000万元 | 法庭上的CTO(13)

赵新龙

CTO 法庭上的CTO

如何通过一个SDK轻松搞定人脸识别,拯救初入职场的程序猿

华为云开发者联盟

人脸识别 智能 识别

这份阿里P8级别内部疯传的“Linux私房菜”让你一次吃个饱

Java架构之路

Java 程序员 架构 面试 编程语言

大佬带你看源码!阿里内部Android笔记火爆IT圈,3面直接拿到offer

欢喜学安卓

android 程序员 面试 移动开发

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