| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- .. _getstarted:
- ============
- Get Started
- ============
- --------------------
- Overview
- --------------------
- --------------------
- MQTT PubSub
- --------------------
- --------------------------
- Quick Start
- --------------------------
- .. code:: console
- unzip emqttd-macosx-0.16.0-beta-20160216.zip && cd emqttd
- # Start emqttd
- ./bin/emqttd start
- # Check Status
- ./bin/emqttd_ctl status
- # Stop emqttd
- ./bin/emqttd stop
- --------------------
- Compile from Source
- --------------------
- .. code:: console
- git clone https://github.com/emqtt/emqttd.git
- cd emqttd && make && make dist
- --------------------
- Web Dashboard
- --------------------
- .. image:: ./_static/images/dashboard.png
- --------------------
- Features List
- --------------------
- * Full MQTT V3.1/V3.1.1 protocol specification support
- * QoS0, QoS1, QoS2 Publish and Subscribe
- * Session Management and Offline Messages
- * Retained Messages Support
- * Last Will Message Support
- * TCP/SSL Connection Support
- * MQTT Over Websocket(SSL) Support
- * HTTP Publish API Support
- * [$SYS/brokers/#](https://github.com/emqtt/emqtt/wiki/$SYS-Topics-of-Broker) Support
- * Client Authentication with clientId, ipaddress
- * Client Authentication with username, password.
- * Client ACL control with ipaddress, clientid, username.
- * Cluster brokers on several servers.
- * [Bridge](https://github.com/emqtt/emqttd/wiki/Bridge) brokers locally or remotely
- * 500K+ concurrent clients connections per server
- * Extensible architecture with Hooks, Modules and Plugins
- * Passed eclipse paho interoperability tests
- --------------------
- Modules and Plugins
- --------------------
- Modules
- --------
- * [emqttd_auth_clientid](https://github.com/emqtt/emqttd/wiki/Authentication) - Authentication with ClientIds
- * [emqttd_auth_username](https://github.com/emqtt/emqttd/wiki/Authentication) - Authentication with Username and Password
- * [emqttd_auth_ldap](https://github.com/emqtt/emqttd/wiki/Authentication) - Authentication with LDAP
- * [emqttd_mod_presence](https://github.com/emqtt/emqttd/wiki/Presence) - Publish presence message to $SYS topics when client connected or disconnected
- * emqttd_mod_autosub - Subscribe topics when client connected
- * [emqttd_mod_rewrite](https://github.com/emqtt/emqttd/wiki/Rewrite) - Topics rewrite like HTTP rewrite module
- Plugins
- --------
- * [emqttd_plugin_template](https://github.com/emqtt/emqttd_plugin_template) - Plugin template and demo
- * [emqttd_dashboard](https://github.com/emqtt/emqttd_dashboard) - Web Dashboard
- * [emqttd_plugin_mysql](https://github.com/emqtt/emqttd_plugin_mysql) - Authentication with MySQL
- * [emqttd_plugin_pgsql](https://github.com/emqtt/emqttd_plugin_pgsql) - Authentication with PostgreSQL
- * [emqttd_plugin_kafka](https://github.com/emqtt/emqtt_kafka) - Publish MQTT Messages to Kafka
- * [emqttd_plugin_redis](https://github.com/emqtt/emqttd_plugin_redis) - Redis Plugin
- * [emqttd_plugin_mongo](https://github.com/emqtt/emqttd_plugin_mongo) - MongoDB Plugin
- * [emqttd_stomp](https://github.com/emqtt/emqttd_stomp) - Stomp Protocol Plugin
- * [emqttd_sockjs](https://github.com/emqtt/emqttd_sockjs) - SockJS(Stomp) Plugin
- * [emqttd_recon](https://github.com/emqtt/emqttd_recon) - Recon Plugin
- ----------------------------------
- One million Connections
- ----------------------------------
- Linux Kernel Parameters
- -----------------------
- .. code::
- sysctl -w fs.file-max=2097152
- sysctl -w fs.nr_open=2097152
- TCP Stack Parameters
- -----------------------
- .. code::
- sysctl -w net.core.somaxconn=65536
- Erlang VM
- -----------------
- emqttd/etc/vm.args::
- ## max process numbers
- +P 2097152
- ## Sets the maximum number of simultaneously existing ports for this system
- +Q 1048576
- ## Increase number of concurrent ports/sockets
- -env ERL_MAX_PORTS 1048576
- -env ERTS_MAX_PORTS 1048576
- emqttd.config
- -----------------
- emqttd/etc/emqttd.config::
- {mqtt, 1883, [
- %% Size of acceptor pool
- {acceptors, 64},
- %% Maximum number of concurrent clients
- {max_clients, 1000000},
- %% Socket Access Control
- {access, [{allow, all}]},
- %% Connection Options
- {connopts, [
- %% Rate Limit. Format is 'burst, rate', Unit is KB/Sec
- %% {rate_limit, "100,10"} %% 100K burst, 10K rate
- ]},
- ...
- Test Client
- -----------
- .. code::
- sysctl -w net.ipv4.ip_local_port_range="500 65535"
- echo 1000000 > /proc/sys/fs/nr_open
- ----------------------------
- emqtt Client Libraries
- ----------------------------
- GitHub: https://github.com/emqtt
- +--------------------+----------------------+
- | `emqttc`_ | Erlang MQTT Client |
- +--------------------+----------------------+
- | `emqtt_benchmark`_ | MQTT benchmark Tool |
- +--------------------+----------------------+
- | `CocoaMQTT`_ | Swift MQTT Client |
- +--------------------+----------------------+
- | `QMQTT`_ | QT MQTT Client |
- +--------------------+----------------------+
- .. _emqttc: https://github.com/emqtt/emqttc
- .. _emqtt_benchmark: https://github.com/emqtt/emqtt_benchmark
- .. _CocoaMQTT: https://github.com/emqtt/CocoaMQTT
- .. _QMQTT: https://github.com/emqtt/qmqtt
|