QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:002752
用户头像

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

关注

评论

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

主动元数据对金融机构监管报送有何帮助?

Aloudata

元数据 全链路数据血缘 数据血缘 主动元数据

国内服务器配置Docker国内源-极限加速

知识浅谈

Docker Linux Docker 镜像

合合信息启信宝助力国家自然科学基金委员会重点专项推进

合合技术团队

人工智能 技术 大模型

受需求增长推动,美国制造业一月份回升

财见

原理剖析:一文搞懂 Kafka Producer(下)

AutoMQ

云计算 大数据 数据流 Kafka Producer

CleverTap获得最新Gartner®个性化引擎Magic Quadrant™认证

财见

浙江AI最强阵容出炉,中之杰智能跻身前列

财见

大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!

不在线第一只蜗牛

人工智能 AI

B2B企业是否建议布局TikTok?

Ogcloud

TikTok tiktok运营 tiktok营销 tiktok引流

音乐NFT系统的上线

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

NFT数字藏品系统 软件外包公司 音乐NFT

前端 TypeError 错误永久消失术

vivo互联网技术

前端 web前端 babel

突破数据壁垒,动态住宅代理IP在数据采集中的高效应用

dvlinker

数据采集

WPS Office for Mac 7.2.0 - 写作、表格处理、PPT 制作和 PDF 编辑

sysin

wps

Macs Fan Control Pro for mac( 电脑风扇控制软件)v1.5.16中文激活版

Rose

iStat Menus for Mac:全面监控,轻松掌握系统状态

Rose

SRE转型:不同团队规模下的银行SRE团队组建策略

嘉为蓝鲸

运维 SRE 运维团队 运维转型

SRE转型:银行 SRE 转型与 SLO 管理的深度融合

嘉为蓝鲸

SRE IT 运维

【榜单解析】2025年数据安全性超强的10款项目管理软件,你选对了吗?

薛同学

Nexpose 7.6.0 for Linux & Windows - 漏洞扫描

sysin

Nexpose

Fortify Static Code Analyzer 24.4 for macOS, Linux & Windows - 静态应用安全测试

sysin

VMware NSX 4.2.1.3 发布 - 网络安全虚拟化平台

sysin

nsx

两个案例带你看懂YashanDB执行计划

YashanDB

数据库 yashandb

SD-WAN:优化SaaS应用访问的高效解决方案

Ogcloud

网络加速 SD-WAN SD-WAN组网 网络加速服务 SD-WAN国际专线

简单几个步骤完成 Oracle 到金仓数据库(KingbaseES)的迁移目标

NineData

oracle NineData Oracle 数据同步工具 KingbaseES 金仓数据库

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