写点什么

奈飞的 Pushy:可扩展 WebSocket 平台的演进,可处理 100Ms 的并发连接

作者:Rafal Gancarz

  • 2024-10-29
    北京
  • 本文字数:1295 字

    阅读完需:约 4 分钟

奈飞的Pushy:可扩展WebSocket平台的演进,可处理100Ms的并发连接

奈飞(Netflix)分享了 Pushy 的演进细节,它是一个 WebSocket 消息投递平台,支持公司产品在许多不同设备上的推送通知和设备之间的通信。奈飞(Netflix)的工程师对 Pushy 生态系统进行了大量的改进,以确保平台的可扩展性和可靠性,并支持新功能。


Pushy 是服务生态系统的一个重要组成部分,它向运行在各种设备上的奈飞(Netflix)应用程序发送通知消息,包括电视、游戏机、手机和网络浏览器。它作为奈飞(Netflix)平台的一部分已经存在很多年了,Susheel Aroskar 曾在 2018 年纽约 QCon 上谈到了 Zuul Push,讨论了它的动机、目标和最初的设计。


在最近的一篇博客文章中,奈飞(Netflix)的软件工程师 Karthik Yagna、Baskar Odayarkoil 和 Alex Ellis 讨论了 Pushy 使用的历史增长以及平台现代化的必要性:


在过去的五年里,Pushy 已经从数千万个并发连接发展到数亿个并发连接,并且每秒发送的消息数经常达到 30 万条。为了支持这一增长,我们重新审视了 Pushy 过去的假设和设计决策,着眼于 Pushy 未来的角色和未来的稳定性。


工程师们对通知投递中涉及的许多服务进行了改进,在考虑可扩展性、性能和可靠性的情况下完全重写了一些服务。为了解决了 Pushy 的可扩展性问题,该团队切换到了更高性能且更具成本效益的实例类型,并将每个节点的平均并发连接数从 6 万个增加到 20 万个,剩余空间增加到 40 万个。该服务还依赖于基于连接数量的指数级扩展策略,以便在服务器池中均衡连接数。


Pushy 生态系统的演进(来源:Netflix 技术博客)


此外,该公司用内部开发的通用键值数据库服务 KeyValue 取代了来自奈飞(Netflix)开源 Redis 包装器 Dynomite 的通知投递流(Push Registry)中的缓存实现。基于 Mantis 作业的消息处理器,被重新设计成一个独立的 Spring Boot 服务,该服务使用 Apache Kafka 的主题消息,以利用自动水平扩展、金丝雀和红 / 黑部署,以及更高的可观测性。


多年来,奈飞(Netflix)的通知投递用例发生了很多变化,越来越强调从异步投递转向直接(同步)推送和设备到设备的消息投递。新功能需要平台中的新组件,例如设备列表服务 (Device List Service),它提供了查找使用同一帐户注册的客户设备的能力。该服务与 Push Registry 相结合,实现了涉及源和目标 Pushy 实例的设备之间的消息传递。


设备间消息传递支持(来源:Netflix 技术博客)


该团队创建了一个内部协议栈,以支持许多定制的消息投递用例,它具有三个不同的层:WebSocket 和 Pushy、设备到设备的协议和客户端应用程序协议。设备到设备的协议使用 JSON 在设备之间传输应用程序级消息。


消息投递平台的进一步优化包括缓存目标设备数据以缩短查找时间、WebSocket 连接管理和调优,以及切换到 OkHttp 客户端。

作者介绍


Rafal Gancarz 是一位经验丰富的技术领导者和专家。目前,他正在帮助星巴克打造具有可扩展性、弹性和成本效益的商务平台。此前,Rafal 曾为思科、埃森哲、凯德、ICE、Callsign 等公司设计和构建大规模、分布式和基于云的系统。他的兴趣涉及架构与设计、持续交付、可观测性和可操作性,以及软件交付的社会技术和组织方面。


原文链接:

https://www.infoq.com/news/2024/09/netflix-pushy-websocket/


2024-10-29 09:003206

评论

发布
暂无评论

隐私计算S2赛季 谁是真正的王者?

hellompc

学习 隐私计算

架構師訓練營第 1 期 - 第 07 周作業

Panda

架構師訓練營第 1 期

架构师训练营 -week07-作业

大刘

极客大学架构师训练营

LeetCode题解:231. 2的幂,递归,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

HTTP2协议及websocket协议总结

江龙

《高效程序员的45个习惯:敏捷开发修炼之道》.pdf

田维常

电子书

这可能是关于编程指南的最实用指南了

华为云开发者联盟

开发者 软件开发 语言

应用层软件开发教父教你如何重构,资深程序员必备专业技能

小Q

Java 学习 架构 面试 重构

ViewportFrame demo

katichar

华为发布5GtoB核心网建设白皮书

华为云开发者联盟

5G 边缘技术

LeetCode题解:231. 2的幂,迭代,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

阿里P8大牛精心整理,GitHub上超火的《Java工程师成神之路》从基础,到高级、底层、架构、进阶、扩展,囊括了Java体系内的所有知识点。

Java架构之路

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

MySQL中特别实用的几种SQL语句送给大家

陈哈哈

SQL优化 实用SQl语句 高性能SQL

谈谈敏捷开发概念和迭代开发方案

Philips

敏捷开发 快速开发

架构师训练营第三周课后作业

天涯若海

一周信创舆情观察(10.26~11.1)

统小信uos

我去!三面字节竟全败在Redis上,带薪摸鱼刷1949页进阶笔记

996小迁

Java redis 架构 面试 程序人生

字节跳动HR:3年从4000人招到10万人,我经历了什么

Java架构师迁哥

从技术到应用实践 揭秘京东区块链布局全景

京东科技开发者

区块链 区块链方案 供应链

快快使用ModelArts,零基础小白也能玩转AI!

华为云开发者联盟

人工智能 开发者 开发

力扣解题:第三题(个人思路整理)

人语驿边桥

力扣

字节跳动大神亲自总结SpringBoot手册,让你可以在简历上写精通SpringBoot!

Java架构追梦

Java 架构 面试 微服务 springboot

啥是数据库范式

Simon

MySQL 数据库 数据库设计

“软件教父”花费20年,教你如何在应用层混迹的风生水起

小Q

Java 学习 架构 面试 应用

【得物技术】数据分析 - 生活品类社区内容精选池模型

得物技术

数据分析 得物技术部 得物技术 社区内容 精选池模型

训练营第三周总结

大脸猫

极客大学架构师训练营

NPC Follow

katichar

干货 | 京东技术中台的Flutter实践之路

京东科技开发者

flutter

Redis最常见的16道面试题与详解

Java架构师迁哥

低代码开发不靠谱?看低代码开发在物联网APP开发中的应用

华为云开发者联盟

技术 软件开发 代码

TCP梳理总结

江龙

奈飞的Pushy:可扩展WebSocket平台的演进,可处理100Ms的并发连接_研发效能_InfoQ精选文章