为啥 facebook messenger 和 discord 使用数据库而不是排队系统来获取他们的消息?

Posted

技术标签:

【中文标题】为啥 facebook messenger 和 discord 使用数据库而不是排队系统来获取他们的消息?【英文标题】:why are facebook messenger and discord using databases and not queueing systems for their messages?为什么 facebook messenger 和 discord 使用数据库而不是排队系统来获取他们的消息? 【发布时间】:2020-07-23 04:56:33 【问题描述】:

我正在阅读facebook messenger 的(相当旧的)数据设计和discord 的新设计。

两者都使用宽列数据库 - hbase 或 cassandra。他们说:

出现了两种通用数据模式: 1. 一组较短的时间数据,往往是易变的 2. 不断增长但很少被访问的数据集

我理解为什么使用这种类型的数据库可以有效地存储历史数据,但是为什么没有通过完全不同的方式实现向在线用户发送最新消息的核心功能:例如 kafka 或 rabbit 的排队系统?

【问题讨论】:

【参考方案1】:

事实证明,它们确实依赖于一个称为 iris 的排队系统,而传统的存储系统 (cassandra/hbase) 仅用于检索旧消息。 见https://engineering.fb.com/production-engineering/building-mobile-first-infrastructure-for-messenger/

【讨论】:

以上是关于为啥 facebook messenger 和 discord 使用数据库而不是排队系统来获取他们的消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查和编码来自 Facebook Messenger 的输入表情符号?

Web 仪表板中的 Facebook Messenger 收件箱

深度链接到 Facebook Messenger

Facebook Webhook Messenger 获取页面 ID

Facebook Messenger - 气泡弹出

facebook messenger切换协议take_thread_control