Facebook的分布式优先级队列FOQS

22-01-23 banq

Facebook 有序队列服务 (FOQS)是一种完全托管的分布式优先级队列服务,用于在许多服务之间进行可靠的消息传递。
FOQS 已从区域部署发展为地理分布的全球部署,以帮助确保存储在逻辑队列中的数据具有高可用性,即使在大规模灾难情况下也是如此。
迁移到全局架构需要对架构进行修改以支持路由和注意完成,而不会中断 FOQS 客户的服务可用性。
鉴于 FOQS 发挥的重要作用,它必须能够抵御大规模灾难,例如整个数据中心或区域的完全故障,或者在对数据中心执行维护时计划中断。
FOQS 已经发展成为一个全球安装。在 2018 年飓风佛罗伦萨之后,我们意识到要真正做好灾难准备,我们需要迁移到具有更高可用性的全球架构,以便在灾难事件期间仍然可以全局访问队列中的数据。在此过程中,我们解决了与将租户迁移到全球设施相关的运营挑战,并在 2021 年以惊人的规模完成了迁移,使内部客户的停机时间为零。
 
FOQS 最初是在 2018 年出于 Meta 的异步计算平台(又名 Async)的扩展需要而开发的。在我们的第一次迭代中,系统建立在三区域、半同步复制 MySQL 拓扑之上,区域 X 中的队列节点与区域 Y 中的队列节点完全隔离。