Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

0

在当今数字化时代,实时通信和推送通知已经成为许多应用的核心功能。奈飞(Netflix)作为一家全球领先的流媒体平台,一直在不断优化其技术栈,以满足日益增长的用户需求。近日,奈飞分享了其WebSocket平台——Pushy的演进细节,揭示了该平台如何从数千万个并发连接发展到数亿个并发连接,并且每秒发送的消息数经常达到30万条。本文将深入探讨Pushy的演进历程及其背后的技术改进,展示奈飞如何通过一系列创新措施确保其平台的可扩展性和可靠性。

Pushy的演进

Pushy是奈飞内部的一个WebSocket消息投递平台,主要用于向各种设备发送通知消息。在过去五年里,Pushy经历了巨大的增长,从数千万个并发连接增加到了数亿个并发连接。这一增长的背后,是奈飞工程师团队对平台进行的一系列重大改进。他们重新审视了Pushy过去的假设和设计决策,着眼于未来的角色和稳定性。为了应对这一增长,工程师们对通知投递中涉及的许多服务进行了改进,并在考虑可扩展性、性能和可靠性的情况下完全重写了某些服务。

技术改进

可扩展性

为了提高Pushy的可扩展性,奈飞工程师们采用了更高性能且更具成本效益的实例类型。每个节点的平均并发连接数从6万个增加到了20万个,剩余空间也增加到了40万个。此外,Pushy还依赖于基于连接数量的指数级扩展策略,以在服务器池中均衡连接数。这些改进显著提升了平台的可扩展性,使其能够应对更大的并发连接需求。

缓存和数据库

为了进一步优化Pushy,奈飞用内部开发的通用键值数据库服务KeyValue取代了来自奈飞开源Redis包装器Dynomite的通知投递流(Push Registry)中的缓存实现。这一改变不仅提高了系统的性能,还增强了系统的稳定性和可靠性。

消息处理器

基于Mantis作业的消息处理器被重新设计成一个独立的Spring Boot服务,该服务使用Apache Kafka的主题消息。这一设计利用了自动水平扩展、金丝雀和红/黑部署,以及更高的可观测性。这些改进不仅提高了系统的灵活性,还增强了其在高负载下的稳定性和可靠性。

设备到设备的消息传递

随着奈飞通知投递用例的变化,越来越强调从异步投递转向直接(同步)推送和设备到设备的消息投递。为此,奈飞创建了一个内部协议栈,支持许多定制的消息投递用例。该协议栈具有三个不同的层:WebSocket和Pushy、设备到设备的协议和客户端应用程序协议。设备到设备的协议使用JSON在设备之间传输应用程序级消息。这一改进不仅提高了系统的灵活性,还增强了其在不同设备之间的通信能力。

优化措施

缓存目标设备数据

为了缩短查找时间,奈飞在缓存目标设备数据方面进行了优化。这一措施显著提高了系统的响应速度,使得Pushy能够更快速地处理大量并发连接。

WebSocket连接管理

WebSocket连接管理也是优化的关键方面之一。通过调优WebSocket连接,奈飞进一步提高了系统的性能和稳定性。

客户端优化

此外,奈飞还切换到了OkHttp客户端,进一步提升了系统的性能和稳定性。这一改变不仅提高了系统的响应速度,还增强了其在高负载下的表现。

结论

奈飞通过一系列技术改进,成功地将Pushy从数千万个并发连接发展到了数亿个并发连接,并且每秒发送的消息数经常达到30万条。这些改进不仅显著提升了系统的可扩展性和可靠性,还增强了其在不同设备之间的通信能力。Pushy的演进历程展示了奈飞如何通过不断创新和优化,确保其平台能够满足日益增长的用户需求。

参考文献


通过上述分析,我们可以看到奈飞在技术优化方面的不懈努力,以及其对平台演进的深刻洞察。这些改进不仅为奈飞的业务提供了强大的支持,也为其他企业提供了宝贵的借鉴经验。


>>> Read more <<<

Views: 0

0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注