限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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

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

关注

评论

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

(网页直接编辑DWG)在线CAD配置属性的使用教程

WEB CAD SDK

Fabric8 Kubernetes 教程——PVC、PV、Network、PDB、Role、Cluster

FunTester

合合信息大模型加速器2.0:文档与图表解析全景评测

默语

HarmonyOS NEXT AI基础视觉服务-人脸对比

zhousg

HarmonyOS NEXT AI基础视觉服务-背景替换

zhousg

EasyRecovery免费版下载无需注册,easyrecovery激活码密钥

阿拉灯神丁

照片恢复 Easyrecovery破解 数据恢复软件 激活码生成器 EasyRecovery16

HarmonyOS:ArkTS 多态样式自学指南

李游Leo

ArkTS

从内核到可启动镜像:0到1构建你的极简Linux系统

Linux内核拾遗

ISO 镜像文件 Linux内核 Linux发行版

极速启动,SAE 弹性加速全面解读

阿里巴巴云原生

阿里云 云原生

AigcPanel v0.9.0 震撼发布,功能全面升级!​支持快速一键合成

ModStart

HarmonyOS NEXT AI基础视觉服务-文字识别

zhousg

HarmonyOS NEXT AI基础视觉服务-人脸识别

zhousg

大模型应用联网搜索:重塑智能时代的交互与决策

阿里巴巴云原生

阿里云 云原生

零信任赋能社交化办公:企业数字化转型中的暴露面收敛与安全升级

权说安全

零信任 访问控制

《Operating System Concepts》阅读笔记:p491-p494

codists

操作系统

必读文章3-所有的无用,都是有用的

玄兴梦影

学习 成长 能力提升 工作 阅读

HarmonyOS NEXT AI基础语音服务-文章播报

zhousg

CompletableFuture原理及应用场景详解

卷福同学

Java 面试 CompletableFuture

HarmonyOS:ArkTS Path 组件自学指南

李游Leo

鸿蒙

黑龙江信息安全等级保护测评

黑龙江陆陆信息测评部

用友数智秘书来袭!懂管理更懂你的企业级AI助手

用友智能财务

人工智能 AI 财务 会计

HarmonyOS NEXT AI基础语音服务-语音输入

zhousg

《Operating System Concepts》阅读笔记:p495-p511

codists

操作系统

HarmonyOS:ArkTS RowSplit 组件自学指南

李游Leo

ArkTS

迈向群体智能 | 智源发布首个跨本体具身大小脑协作框架与开源具身大脑

智源研究院

Java的IO模型、Netty原理详解

卷福同学

Java Netty nio 面试‘

SvelteKit 最新中文文档教程(15)—— 链接选项

冴羽

Vue 前端 React Svelte SvelteKit

浪潮 KaiwuDB入选Gartner中国数据库管理系统代表厂商

KaiwuDB

数据库、 kwdb数据库

性能测试与故障测试:求同存异与协同价值

FunTester

算力驱动的数字经济正向GDP10%的目标增长

PowerVerse

区块链 人工智能 去中心化 数字经济 算力

为什么现在的前端框架发展越来越复杂了?

网站,小程序,APP开发定制

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