多租户 MQTT 代理

主要观点:过去曾讨论过基于主机名的 MQTT 代理,需使用 MQTTS 且客户端支持 SNI。现要讨论多组用户访问单个代理,每组消息相互隔离,可通过 MQTT、MQTTS 或 MQTT over WebSockets 连接。使用 mosquitto 代理,其测试版中有提供特定 20 秒订阅行为的插件 topic-jail,决定用客户端连接的用户名(或其部分)来解决多租户问题,通过配置插件实现对不同用户名的主题处理。
关键信息:SNI 可让负载均衡器确定转发连接的后端代理实例;mosquitto 插件 init 函数读取配置文件初始化正则表达式;有获取用户名所属团队的实用函数;配置插件时可指定正则表达式及使用内置密码文件等;可通过 mosquitto_passwd 创建测试用户并进行连接测试。
重要细节:测试版中 v2.1.0 正在形成,插件 init 函数设置各种回调;在回调函数中处理消息、订阅等事件时应用正则表达式提取和处理团队信息;代码可在这里获取;配置示例及创建测试用户的命令等。

阅读 12
0 条评论