为什么Discord放弃了Redis并重新在Kubernetes上构建搜索功能

💡 原文中文,约2000字,阅读约需5分钟。
📝

内容提要

Discord因用户快速增长重构搜索功能,放弃Redis,转向Kubernetes和Elasticsearch。新架构解决了消息丢失和性能问题,提升了索引吞吐量和查询速度,支持数万亿条消息的处理,确保灵活性和高效性。

🎯

关键要点

  • Discord因用户快速增长重构搜索功能,放弃Redis,转向Kubernetes和Elasticsearch。
  • 原有的Elasticsearch系统在快速增长下崩溃,导致消息丢失和性能问题。
  • Redis支持的消息索引队列成为故障点,单个节点故障导致批量索引操作失败。
  • Kubernetes的引入使得操作系统升级自动化,滚动重启安全可行,资源分配优化。
  • Discord实现了多集群“单元”架构,减少了大型节点集群的管理复杂性。
  • 从Redis迁移到Pub/Sub解决了消息丢失问题,支持复杂的消息路由策略。
  • 新架构支持跨消息搜索,提升了索引吞吐量和查询速度,确保灵活性和高效性。
  • Discord现已能够处理数万亿条消息,性能指标全面提升,适应未来增长。
➡️

继续阅读