2

我正在为一家公司开发一个聊天系统,并使用了很多可用的工具。我最有趣的旅程之一是通过Pheonix 框架(Elixer 语言!唷)

我最终使用基于 MQTT 的服务器来管理聊天。我曾将 MQTT 用于我为 IoT 项目所做的一些基于设备的通信。为我的代理使用了EMQ 服务器,并为 FE 和 BE 使用了这个 js 库。设置它是小菜一碟。

现在,当我添加更多功能时,我有几个问题。我应该如何扩展我的频道/消息比率。多少订阅是太多订阅?

我将有权访问使用情况,因此将有数据作为这些基础。任何关于这些的文字将不胜感激。

添加一些关于应用程序的事实。聊天用于进行会议的应用程序中。以下是相同的一些粗略数据。

Average size of a meeting = 25 people (Can go upto 10,000)
Average number of meetings a day = 50 (currently)
Messages per minute in a meeting = 20
4

1 回答 1

1

多少订阅是太多订阅?

这取决于您可用于构建集群的基础架构和资源。

这是关于如何构建 EMQ 集群的官方文档的链接。

emqttd broker 的集群架构基于分布式 Erlang/OTP 和 Mnesia 数据库。

集群设计可以概括为以下两条规则:

  1. 当一个 MQTT 客户端在一个节点上订阅一个 Topic 时,该节点会告诉集群中的所有其他节点:我订阅了一个 Topic。
  2. 当 MQTT 客户端向节点发布消息时,该节点将查找 Topic 表并将消息转发给订阅该 Topic 的节点。最后会有一个复制到集群中所有节点的全局路由表(Topic -> Node):

    topic1 -> node1, node2

    topic2 -> node3

    topic3 -> node2, node4

---------         ---------
| Node1 | --------| Node2 |
---------         ---------
    |     \     /    |
    |       \ /      |
    |       / \      |
    |     /     \    |
---------         ---------
| Node3 | --------| Node4 |
---------         ---------
于 2018-09-05T15:38:20.313 回答