在大规模的实时数据管道运营中,像Netflix这样体量的公司,故障总在所难免。无论是网络闪断,还是下游服务暂时不可用,我们都必须有一套既可靠又能灵活扩展的重试机制。这机制要能稳妥地处理失败消息,确保吞吐量不受影响。
我们为何需要这套机制
Netflix服务着全球数亿用户,提供海量的影音内容和互动功能。在这背后,如何保障跨服务、跨地区的数据一致性、可靠性与运营效率,是一项持续存在的挑战。许多关键功能都建立在“预写日志抽象”这一核心概念之上。在Netflix的业务规模下,任何小问题都可能被急剧放大。实际运营中,我们遇到了几个关键的技术难题:
包括数据库的意外数据丢失与损坏;维护跨不同数据存储(如同时写入Cassandra和Elasticsearch)的系统熵一致性;处理对多分区的更新操作(例如在NoSQL数据库之上构建二级索引);数据复制的可靠性(包含区域内与跨区域);以及大规模实时数据管道的可靠重试机制;还有批量删除操作可能导致的数据库键值节点内存不足等问题。
