EMQ X 是開源百萬級分佈式MQTT 訊息伺服器(MQTT Messaging Broker),用於支持各種接入標準MQTT 協議的設備,實現從設備端到伺服器端的訊息傳遞,以及從伺服器端到設備端的設備控制訊息轉發。從而實現物聯網設備的數據採集,和對設備的操作和控制。
- 穩定承載大規模的MQTT 客戶端連接,單伺服器節點支持50萬到100萬連接。
- 分佈式節點集群,快速低延時的消息路由,單集群支持1000萬規模的路由。
- 消息伺服器內擴展,支持定制多種認證方式、高效存儲消息到後端數據庫。
- 完整物聯網協議支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有協議支持。
EMQ X 與物聯網平台的關係是什麼?
典型的物聯網平台包括設備硬體、數據採集、數據存儲、分析、Web / 移動應用等。EMQ X 位於數據採集這一層,分別與硬體和數據存儲、分析進行交互,是物聯網平台的核心:前端的硬體通過MQTT 協議與位於數據採集層的EMQ X 交互,通過EMQ X 將數據採集後,通過EMQ X 提供的數據接口,將數據保存到後台的持久化平台中(各種關係型數據庫和NOSQL 數據庫),或者流式數據處理框架等,上層應用通過這些數據分析後得到的結果呈現給最終用戶。
EMQ X 消息伺服器功能列表
- 完整的MQTT V3.1/V3.1.1 及V5.0 協議規範支持
- QoS0, QoS1, QoS2 消息支持
- 持久會話與離線消息支持
- Retained 消息支持
- Last Will 消息支持
- TCP/SSL 連接支持
- MQTT/WebSocket/SSL 支持
- HTTP 消息發布接口支持
- $SYS/# 系統主題支持
- 客戶端在線狀態查詢與訂閱支持
- 客戶端ID 或IP 地址認證支持
- 用戶名密碼認證支持
- LDAP 認證
- Redis、MySQL、PostgreSQL、MongoDB、HTTP 認證集成
- 瀏覽器Cookie 認證
- 基於客戶端ID、IP 地址、用戶名的訪問控制(ACL)
- 多服務器節點集群(Cluster)
- 支持manual、mcast、dns、etcd、k8s 等多種集群發現方式
- 網絡分區自動癒合
- 消息速率限制
- 連接速率限制
- 按分區配置節點
- 多服務器節點橋接(Bridge)
- MQTT Broker 橋接支持
- Stomp 協議支持
- MQTT-SN 協議支持
- CoAP 協議支持
- Stomp/SockJS 支持
- 延時Publish ($delay/topic)
- Flapping 檢測
- 黑名單支持
- 共享訂閱($share/:group/topic)
- TLS/PSK 支持
- 規則引擎
- 空動作(調試)
- 消息重新發布
- 橋接數據到MQTT Broker
- 檢查(調試)
- 發送數據到Web 服務
以下是 EMQ X Enterprise 特有功能
- Scalable RPC 架構: 分離Erlang 自身的集群通道與EMQ X 節點間的數據通道
- 數據持久化
- Redis 存儲訂閱關係、設備在線狀態、MQTT 消息、保留消息,發布SUB/UNSUB 事件
- MySQL 存儲訂閱關係、設備在線狀態、MQTT 消息、保留消息
- PostgreSQL 存儲訂閱關係、設備在線狀態、MQTT 消息、保留消息
- MongoDB 存儲訂閱關係、設備在線狀態、MQTT 消息、保留消息
- Cassandra 存儲訂閱關係、設備在線狀態、MQTT 消息、保留消息
- DynamoDB 存儲訂閱關係、設備在線狀態、MQTT 消息、保留消息
- InfluxDB 存儲MQTT 時序消息
- OpenTDSB 存儲MQTT 時序消息
- TimescaleDB 存儲MQTT 時序消息
- 消息橋接
- Kafka 橋接:EMQ X 內置Bridge 直接轉發MQTT 消息、設備上下線事件到Kafka
- RabbitMQ 橋接:EMQ X 內置Bridge 直接轉發MQTT 消息、設備上下線事件到RabbitMQ
- Pulsar 橋接:EMQ X 內置Bridge 直接轉發MQTT 消息、設備上下線事件到Pulsar
- RocketMQ 橋接:EMQ X 內置Bridge 直接轉發MQTT 消息、設備上下線事件到RocketMQ
- 規則引擎
- 消息編解碼
- 橋接數據到Kafka
- 橋接數據到RabbitMQ
- 橋接數據到RocketMQ
- 橋接數據到Pulsar
- 保存數據到PostgreSQL
- 保存數據到MySQL
- 保存數據到OpenTSDB
- 保存數據到Redis
- 保存數據到DynamoDB
- 保存數據到MongoDB
- 保存數據到InfluxDB
- 保存數據到Timescale
- 保存數據到Cassandra
- Schema Registry:將EMQ X 的事件、消息提供了數據編解碼能力
EMQ X Enterprise
EMQ X Enterprise是一個強大的企業級物聯網MQTT消息平台,由開發開源EMQ X的人員構建。
EMQ X Enterprise 支持百萬級物聯網設備一站式接入、MQTT&CoAP 多協議處理、低時延實時消息通信。它保持了EMQ X 的簡單性和高性能,同時增加了許多企業特性:
- 連接性能增強到百萬級、千萬級,支持私有協議及行業協議定制,基於TCP/UDP 私有協議的舊網設備接入兼容,支持全網絡多協議設備接入;
- 支持Redis, MySQL, PostgreSQL, MongoDB 多種數據庫消息數據持久化,消息轉換寫入InfluxDB, OpenTSDB, TimescaleDB 多種時序數據庫,支持自動從Redis 或數據庫加載訂閱,無需客戶端主動發起;
- 消息與流中間件消息橋接:10萬/秒高性能高可靠轉發消息到Kafka 流處理中間件,無縫集成RabbitMQ、Pulsar 企業消息中間件;
- 全球專業團隊技術支持,我們的團隊覆蓋全球北美、歐洲、中國5 個分支機構,有來自華為、IBM、Amazon 專業創始團隊,以及歐洲、北美、印度近十家合作夥伴,能夠全天侯相應一流的技術支持與諮詢服務。
企業版功能
消息數據存儲
EMQ X 企業版支持存儲訂閱關係、MQTT 消息、設備狀態到Redis、MySQL、PostgreSQL、MongoDB、Cassandra、TimescaleDB、InfluxDB、DynamoDB、OpenTDSB 數據庫:
數據存儲相關配置,詳見"數據存儲"章節。
消息橋接轉發
EMQ X 企業版支持直接轉發MQTT 消息到RabbitMQ、Kafka、Pulsar、RocketMQ、MQTT Broker,可作為百萬級的物聯網接入服務器(IoT Hub):
規則引擎
EMQ X 規則引擎可以靈活地處理消息和事件。
EMQ X 企業版規則引擎支持消息重新發布;橋接數據到Kafka、Pulsar、RocketMQ、RabbitMQ、MQTT Broker;保存數據到MySQL、PostgreSQL、Redis、MongoDB、DynamoDB、Cassandra、InfluxDB、OpenTSDB、TimescaleDB;發送數據到WebServer :
規則引擎相關配置,詳見"規則引擎"章節。
編解碼
Schema Registry目前可支持三種格式的編解碼:Avro,Protobuf,以及自定義編碼。其中Avro和Protobuf是依賴Schema的數據格式,編碼後的數據為二進制,解碼後為Map格式。解碼後的數據可直接被規則引擎和其他插件使用。用戶自定義的(3rd-party)編解碼服務通過HTTP或TCP回調的方式,進行更加貼近業務需求的編解碼。
編解碼相關配置,詳見"編解碼"章節。
EMQ X Broker | EMQ X Enterprise | EMQ X Platform |
|
|
|
EMQ X 推薦部署的操作系統是什麼?
EMQ X 支持跨平台部署在Linux、Windows、MacOS、ARM 嵌入系統,生產系推薦在CentOS、Ubuntu、Debian 等Linux 發行版上部署。