阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

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

关注

评论

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

单日30PB量级!火山引擎ByteHouse云原生的数据导入这么做

字节跳动数据平台

数据库 大数据 云原生 数仓 企业号12月PK榜

JetBrains PyCharm Pro 2023 for Mac:Python开发的最佳选择

影影绰绰一往直前

模型放置到3D场景中后模型位置与鼠标选中的位置不一致怎么办?

3D建模设计

材质合批 材质修改 材质贴图 材质纹理

Hudi 在 vivo 湖仓一体的落地实践

vivo互联网技术

数据湖 大数据计算与存储 效率提升

如何创建逼真的3D模型

3D建模设计

材质修改 材质贴图 材质纹理

JetBrains RubyMine 2023 for Mac:Ruby开发的最佳拍档

影影绰绰一往直前

Beyond Compare 4 for Mac:你的团队协作神器

影影绰绰一往直前

IPQ4019/IPQ4029 router is used to develop TDMA under openwrt - Better performance and efficiency for wireless networks.

wifi6-yiyi

5G wifi IPQ4019 TDMA

如何删除/替换3D模型的材质贴图

3D建模设计

材质合批 材质修改 材质贴图 材质纹理

GLB/GLTF 模型压缩轻量化

3D建模设计

材质合批 材质修改 材质贴图 材质纹理

数据驱动国有企业数智化转型,平台底座将发挥重要作用

用友BIP

数据驱动

从技术角度分析如何选择灰度测试方式

Onegun

功能测试 灰度测试

最佳实践 | 第七在线智能采购计划助力全渠道销售决策

第七在线

CNCF首个云原生多云容器编排项目Karmada正式晋级孵化

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟

数据中台即服务——数据中台的四大支柱

用友BIP

分布式基础概念-消息中间件[Kafka]

派大星

大数据 Java 面试题

桌面云的发展前景与机遇

青椒云云电脑

桌面云 云桌面 云桌面厂家

软件测试/人工智能|Edge浏览器实用插件推荐

霍格沃兹测试开发学社

软件测试/人工智能|解决Selenium中的异常问题:“error sending request for url”

霍格沃兹测试开发学社

中国如何才能出世界级零售企业?

第七在线

JAVA基于物联网技术的智慧校园电子班牌原生微信小程序源码

源码星辰

智慧校园管理系统

11种编程语言中,返回多个不同类型的方法样例

华为云开发者联盟

编程语言 开发 华为云 华为云开发者联盟

云教室服务器配置详解

青椒云云电脑

云教室 云教室解决方案

CodeRunner for Mac:你的移动开发利器

影影绰绰一往直前

无需专有硬件 XSKY星辰天合 XDcache 大幅提升文件写性能

XSKY星辰天合

软件测试/人工智能|教你掌握 Conda 的基本用法

霍格沃兹测试开发学社

认证LeSS实践者课程 - 2024.1,广州

ShineScrum捷行

大规模敏捷

摆脱Excel 寻求现代零售智能化管理的出路

第七在线

跨境电商通讯服务

ctsxiyou

通信 通讯

数据中台的业务价值和技术价值

用友BIP

数据中台

38 | 分治算法:谈一谈大规模计算框架MapReduce中的分治思想

鲁米

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