create emqx project

Feng Lee 37fe71fc6e Merge branch 'emq10' of github.com:emqtt/emqttd into emq10 9 роки тому
deps 3a6ed9a876 0.2 project structure 11 роки тому
docs 8403dcc051 rm 'Guide' 9 роки тому
ebin b078565e1c ebin 10 роки тому
include 34493b6fec update PRINT_CMD 10 роки тому
plugins e013a19086 upgrade dashboard plugin 9 роки тому
rel 834e6f7269 Add MQTT specs. etc/vm.args: -env ERL_CRASH_DUMP log/emqttd_crash.dump 9 роки тому
src 3a43d2b41f WSLOG 9 роки тому
test b877cec208 Merge branch 'issue#599' into emq10 9 роки тому
.gitignore 928780f322 common tests 10 роки тому
.gitmodules 7c0374eedf upgrade plugins 9 роки тому
.travis.yml 8b45d45ee3 R18 9 роки тому
CHANGES f5b75ea30a changes 10 роки тому
LICENSE 94c3e69b44 Licensed under the Apache, Version 2.0 10 роки тому
Makefile a49006779b 0.17.0 10 роки тому
README.md 37fe71fc6e Merge branch 'emq10' of github.com:emqtt/emqttd into emq10 9 роки тому
rebar 2d2aa2f79a upgrade esockd, mochiweb 11 роки тому
rebar.config de602d972e esockd 4.0, mochiweb 4.1 9 роки тому

README.md

Overview Build Status

emqttd is a massively scalable and clusterable MQTT V3.1/V3.1.1 broker written in Erlang/OTP.

emqttd is fully open source and licensed under the Apache Version 2.0. emqttd implements both MQTT V3.1 and V3.1.1 protocol specifications, and supports WebSocket, STOMP, SockJS, CoAP and MQTT-SN at the same time.

emqttd requires Erlang R18+ to build since 1.1 release.

Follow us on Twitter: @emqtt

Cluster

The q.emqtt.com hosts a public emqttd cluster on QingCloud:

qing_cluster

Goals

The emqttd project is aimed to implement a scalable, distributed, extensible open-source MQTT broker for IoT, M2M and Mobile applications that hope to handle millions of concurrent MQTT clients.

  • Easy to install
  • Massively scalable
  • Easy to extend
  • Solid stable

Features

  • Full MQTT V3.1/V3.1.1 protocol specification support
  • QoS0, QoS1, QoS2 Publish and Subscribe
  • Session Management and Offline Messages
  • Retained Message
  • Last Will Message
  • TCP/SSL Connection
  • MQTT Over WebSocket(SSL)
  • HTTP Publish API
  • STOMP protocol
  • STOMP over SockJS
  • $SYS/# Topics
  • ClientID Authentication
  • IpAddress Authentication
  • Username and Password Authentication
  • Access control based on IpAddress, ClientID, Username
  • Authentication with LDAP, Redis, MySQL, PostgreSQL and HTTP API
  • Cluster brokers on several servers
  • Bridge brokers locally or remotely
  • mosquitto, RSMB bridge
  • Extensible architecture with Hooks, Modules and Plugins
  • Passed eclipse paho interoperability tests

Modules

Module Description
emqttd_auth_clientid Authentication with ClientIds
emqttd_auth_username Authentication with Username and Password
emqttd_auth_ldap Authentication with LDAP
emqttd_mod_presence Publish presence message when client connected or disconnected
emqttd_mod_subscription Subscribe topics when client connected
emqttd_mod_rewrite Topic path rewrite like HTTP rewrite module

Plugins

Plugin Description
emqttd_plugin_template Plugin template and demo
emqttd_dashboard Web Dashboard
emqttd_plugin_mysql MySQL Authentication/ACL Plugin
emqttd_plugin_pgsql PostgreSQL Authentication/ACL Plugin
emqttd_plugin_redis Redis Authentication/ACL Plugin
emqttd_plugin_mongo MongoDB Authentication/ACL Plugin
emqttd_auth_http Authentication/ACL by HTTP API
emqttd_stomp Stomp Protocol Plugin
emqttd_sockjs SockJS(Stomp) Plugin
emqttd_recon Recon Plugin
emqttd_reloader Reloader Plugin

Dashboard

A Web Dashboard will be loaded when the emqttd broker started successfully.

The Dashboard helps monitor broker's running status, statistics and metrics of MQTT packets.

Default Address: http://localhost:18083

Default Login/Password: admin/public

Design

emqttd architecture

QuickStart

Download binary package for Linux, Mac and Freebsd from http://emqtt.io/downloads.

Installing on Ubuntu64, for example:

unzip emqttd-ubuntu64-0.16.0-beta-20160216.zip && cd emqttd

# start console
./bin/emqttd console

# start as daemon
./bin/emqttd start

# check status
./bin/emqttd_ctl status

# stop
./bin/emqttd stop

Installing from source:

git clone https://github.com/emqtt/emqttd.git

cd emqttd && make && make dist

cd rel/emqttd && ./bin/emqttd console

Documents

Read Documents on emqttd-docs.rtfd.org for installation and configuration guide.

Benchmark

Latest release of emqttd broker is scaling to 1.3 million MQTT connections on a 12 Core, 32G CentOS server.

Benchmark 0.12.0-beta on a CentOS6 server with 8 Core, 32G memory from QingCloud:

250K Connections, 250K Topics, 250K Subscriptions, 4K Qos1 Messages/Sec In, 20K Qos1 Messages/Sec Out, 8M+(bps) In, 40M+(bps) Out Traffic

Consumed about 3.6G memory and 400+% CPU.

Benchmark Report: benchmark for 0.12.0 release

Supports

Contributors

Partners

QingCloud

Author

Feng Lee feng@emqtt.io

License

Apache License Version 2.0

kjkkkk