写点什么

Karma 如何使用 MQTT 应对日益增长的 WiFi 设备

  • 2015-08-25
  • 本文字数:900 字

    阅读完需:约 3 分钟

Karma 是一个生产便携式 WiFi 热点设备的公司,近日,其在官方博客上发布了一篇文章,介绍了它们如何使用MQTT 协议代替HTTP 协议来应对WiFi 设备的增长。

Karma 生产的 WiFi 热点设备因为需要收集信息以及一些功能,每一台设备都需要定期发送一些数据到 Karma 后端。在之前,Karma 使用HTTP+TLS 来传输数据,但随着卖出设备越来越多,它们需要对这一部分进行优化以减轻带宽和后端的压力,于是它们想到了MQTT。

MQTT 是 IBM 提出的一项轻量级消息协议,它针对物联网设计,用于轻量级的 pub/sub 式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。Karma 使用 MQTT 将之前的 JSON 数据包转为二进制 buffer 数据,大大减少了传输数据的体积。

在采用 MQTT 前,它们首先定义了自己的需求,Karma 对于 MQTT 服务端的需求如下:

  • 尽可能的无状态
  • 可扩展的,能够提供连接池
  • 能够与终端设备以 HTTP 交互
  • 希望是开源的,以便深入源码

对于 Karma 这样的高可用和可扩展的需求,截至 2014 年底,并没有一个成熟且合适的 MQTT 服务端解决方案能够满足,Karma 只能自己研发,于是他们推出了 MQTTParty,这个命名是对经典的 Ruby 开源库 HTTParty 致敬。

MQTTParty 使用 Go 语言编写,Go 语言的性能强劲,并且有内建的并发支持,对于消息中间件来说是理想的开发语言。MQTTParty 可以分布式的部署,并且彻底的无状态,单机宕掉对服务无影响,状态使用 Redis 来存储。但这给前面的负载均衡提出了难题,因为 Karma 的设备和后端之间保持一个 TCP 长连接,而一般的负载均衡只需要支持 HTTP 短连接即可,最终 Karma 采用 HAProxy 的最小连接均衡算法解决了这个问题。

最终,Karma 的新后端架构如下图:

MQTTParty 在其中起到接受发送数据,以及转换 MQTT 和 HTTP 数据的作用。当后端需要发送数据到终端设备时,它会检查 Redis 中该设备是否连接到后端,然后接受 HTTP 信息转为 MQTT 数据传送给终端设备。

Karma 在发布该文章时并未将 MQTTParty 开源,因为它与 Karma 其它后端集成过于紧密,后续它们会将它 MQTTParty 剥离出来并开源。对这个项目感兴趣的读者也可看看最近发布的一个类似的开源项目 VerneMQ ,它也适用于 Karma 所面临的问题。

2015-08-25 19:003035
用户头像

发布了 164 篇内容, 共 116.5 次阅读, 收获喜欢 392 次。

关注

评论

发布
暂无评论
发现更多内容

【HarmonyOS 5】鸿蒙mPaaS详解

GeorgeGcs

鸿蒙 HarmonyOS mPaaS

AI辅助写作 从提笔难到高效创作的智能升级

郑州埃文科技

安全产品//等保一体机

黑龙江陆陆信息测评部

从清华实验室到京东零售技术:一位算法工程师的风控实战录

京东零售技术

大厂外包VS小公司,你会怎么选?

王中阳Go

Go 外包 小公司

CAD如何导出PDF?PDF如何转CAD?详细教程来了

在路上

cad cad看图 CAD看图软件

告别静态UI!Guineration用AI打造用户专属动态界面

鼎道智联

AI技术在英语口语学习中的应用

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI英语学习

Microchip扩展连接、存储与计算产品组合,以满足AI数据中心应用日益增长的需求

新消费日报

提升效率,从一个时间戳转换工具开始,CodeBuddy Craft 实战分享

不惑

CodeBuddy首席试玩官

WebGL技术在行业中的应用

北京木奇移动技术有限公司

软件外包公司 webgl开发 webgl技术

高分辨率LED显示屏:选购前的7个关键点

Dylan

商业 广告 LED显示屏 全彩LED显示屏 led显示屏厂家

深入浅出DDD:从理论到落地的关键

百度Geek说

Go 后端

WebGL开发框架的性能比较

北京木奇移动技术有限公司

软件外包公司 webgl外包开发 webgl开发公司

如何设计一个高性能可扩展的自旋锁

程序员老王

SEUs获取与续证流程

ShineScrum

敏捷

vivo 官网 APP 首页端智能业务实践

vivo互联网技术

深度学习 算法 前端

AI 正以颠覆性力量重塑商品管理的底层逻辑

第七在线

容器技术驱动云原生与小程序生态融合:应用开发新范式

xuyinyin

Second-Brain 如何用 NocoBase 为金融企业构建 AI 系统

NocoBase

开源 AI 低代码 AI系统 决策系统

【CodeBuddy】三分钟开发一个实用小功能之:马赛克生成器

jimaks

CSS

展位预定倒计时!500+企业云集,西部不容错过的电子行业盛会

AIOTE智博会

电子展 电子信息展 成都电子展 西部电子展

AI只不过是"普通"技术 [翻译&阅读笔记]

技艺的尾巴

HarmonyOS运动开发:户外运动中计算卡路里

王二蛋和他的张大花

鸿蒙 os

WebGL 的开发框架

北京木奇移动技术有限公司

软件外包公司 webgl开发 webgl开发公司

如何将CAD图纸直接导出为工程蓝图?

在路上

cad cad看图 CAD看图王

WebGL开发框架的比较

北京木奇移动技术有限公司

软件外包公司 webgl开发 webgl外包开发

【FAQ】HarmonyOS SDK 闭源开放能力 —Live View Kit (3)

HarmonyOS SDK

harmoyos

全新开源鸿蒙电脑开鸿Bot系列即将上市,搭载的KaihongOS桌面版四大体验引期待

科技热闻

MySQL派生条件下推优化导致自定义变量结果错误问题分析

GreatSQL

NocoBase 本周更新汇总:模板打印支持批量打印

NocoBase

开源 低代码 零代码 版本更新 模板打印

Karma如何使用MQTT应对日益增长的WiFi设备_语言 & 开发_徐川_InfoQ精选文章