Skip to content

Commit

Permalink
* UPDATE docs
Browse files Browse the repository at this point in the history
  • Loading branch information
JaylinYu committed Aug 27, 2022
1 parent 4b2907f commit 30033d6
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 42 deletions.
6 changes: 3 additions & 3 deletions README.md
Expand Up @@ -23,7 +23,7 @@ For more information, please visit [NanoMQ homepage](https://nanomq.io/).

- Cost-effective on an embedded platform;
- Fully base on native POSIX. High Compatibility;
- Pure C/C++ implementation. High portability;
- Pure C implementation. High portability;
- Fully asynchronous I/O and multi-threading;
- Good support for SMP;
- Low latency & High handling capacity;
Expand Down Expand Up @@ -87,13 +87,13 @@ With this being said, NanoMQ can run on different architectures such like x86_64
#### Docker
```bash
docker run -d -p 1883:1883 -p 8883:8883 --name nanomq emqx/nanomq:0.6.6
docker run -d -p 1883:1883 -p 8883:8883 --name nanomq emqx/nanomq:0.11.0
```
#### Building From Source
To build NanoMQ, requires a C99 & C++11 compatible compiler and [CMake](http://www.cmake.org/) (version 3.13 or newer).
To build NanoMQ, requires a C99 compatible compiler and [CMake](http://www.cmake.org/) (version 3.13 or newer).
- It is recommended to compile with Ninja:
Expand Down
6 changes: 3 additions & 3 deletions docs/en_US/README.md
@@ -1,6 +1,6 @@
# Introduction

[NanoMQ](https://nanomq.io/) is an open source project for edge computing that started in July 2020 and is the next generation of lightweight, high-performance **MQTT** messaging broker for the IoT edge computing scenario.
[NanoMQ](https://nanomq.io/) is an open source project for edge computing that released in Jan 2021 and is the next generation of lightweight, high-performance **MQTT** messaging broker for the IoT edge computing scenario.

Github repository address: <https://github.com/emqx/nanomq>

Expand All @@ -10,8 +10,8 @@ Github repository address: <https://github.com/emqx/nanomq>

**NanoMQ** currently has the following functions and features:

- Full support for the **MQTT 3.1.1** protocol.
- High compatibility and portability as the project relies only on the native **POSIX API** and is developed purely in C/C++.
- Full support for the **MQTT 3.1.1** & **MQTT 5.0** protocol.
- High compatibility and portability as the project relies only on the native **POSIX API** and is developed purely in C.
- **NanoMQ** is internally fully asynchronous IO and multi-threaded parallelism, so there is good support for SMP while achieving low latency and high throughput.
- It is cost-effective in terms of resource usage and is suitable for all types of edge computing platforms.

Expand Down
19 changes: 19 additions & 0 deletions docs/en_US/Rationale.md
@@ -0,0 +1,19 @@
In the era of IoT, data is the lifeblood of digital transformation. A high-performance messaging bus is essential for data convergence, bridging, and re-distribution on the edge. However, it is difficult to implement such a messaging bus for edge computing due to the fragmented ecosystem and highly constrained resources of embedded hardware.

To tackle such problems, we present NanoMQ as a lightweight edge messaging bus, which unifies data in motion and data at rest. With its elegant and powerful design, users could achieve a high level of time and space efficiency while enjoying portability and scalability when accessing the data on edge.

NanoMQ's design principles:

Rely on Kernel, not on Human/User. We are at OS kernel’s mercy.

What you saw is what you do. Never take the overwhelming burden that overpowers NanoMQ.

Adaptive to wherever we inhabited.

Do not let it fail! Don’t accomplish everything at once!

Interoperability is the core value and common ground.

Everything is message and event

Avoid write/read IO amplify
36 changes: 17 additions & 19 deletions docs/en_US/features.md
@@ -1,35 +1,33 @@
# Features
# Features & Advantages

## Cost-effective on the embedded platform

NanoMQ is intended to be cost-effectively on an embedded platform, To achieve a highly performant throughput with minimum resource requirement. For now, NanoMQ can support 800k msg/s with only 200Mb memory usage on a mobile platform.
## Efficiency

NanoMQ is intended to be cost-effectively on an embedded platform, To achieve a highly performant throughput with minimum resource requirement and reach a performance-resources equilibrium on any embedded platform. NanoMQ is capable of utilizing the computing power of different hardware in the best effort via its rich tunning options. Hence it provides high throughput on resource-constrained devices.

## Scalability

## Fully base on native POSIX. High Compatibility
NanoMQ is on multi-threading steroids. Based on the optimized NNG's asynchronous I/O framework towards Linux & MQTT, NanoMQ can scale out easily to engage multiple cores with less CPU usage in the modern SMP system.

POSIX-based operating systems are by far the most popular and widely deployed. To maximize NanoMQ's compatibility, minimize its dependence on APIs—especially proprietary APIs so that we can avoid any vendor locked in. Hence it is easier and cheaper for the community to make the desired changes and embed NanoMQ into various applications if we had written NanoMQ using the POSIX APIs from the beginning.


## Compatibility

## Pure C/C++ implementation. High portability
POSIX-based operating systems are by far the most popular and widely deployed, and it is the only prerequisite of NanoMQ. Users can use NanoMQ on any POSIX compatible system to avoid any OS locked-in problem.
To maximize NanoMQ's compatibility, minimize its dependence on APIs—especially proprietary APIs so that we can avoid any vendor locked in. Hence it is easier and cheaper for the community to make the desired changes and embed NanoMQ into various applications if we had written NanoMQ using the POSIX APIs from the beginning.

A significant goal of NanoMQ is to be highly portable, which means it only requires a little amount of work to compile and install it on other architecture. To work on many different kinds of edge computing platforms, we inherent NNG's platform portability layer and going to support other Linux-based systems like OpenWRT & Yocto in the future. With minimum dependency and pure C/C++ implementation, NanoMQ is easy to port to different platforms.
## Portability

A significant goal of NanoMQ is to be highly portable so that we minimized its dependency. NanoMQ's core features are implemented purely with C and without any third-party library. That means it only requires a tiny amount of work for porting.
NanoMQ inherent NNG's platform portability layer and going to support other Linux-based systems like OpenWRT & Yocto in the future. With minimum dependency and pure C implementation, NanoMQ is easy to port to different platforms.

## Performant

## Fully asynchronous I/O & multi-threading
From data-center to the mobile, from mobile to edge, the hardware evolves. More CPUs that were only used on data-center and the mobile platform now shines on edge. We believe multi-cores infrastructure is the future of edge computing platforms.

From data-center to the mobile, from mobile to edge, the hardware evolves. More CPUs that were only used on data-center and the mobile platform now shines on edge. We believe multi-cores infrastructure is the future of edge computing platforms. Hence, NanoMQ's asynchronous I/O and multi-threading feature can help users to implement a powerful edge application on such a platform.
With a built-in Actor framwork, NanoMQ can scales out to engage multiple cores. With system performance tunning towards Linux & MQTT, we manage to split workload averagely to every core. Hence NanoMQ can handle up to 1 million messages per second with less CPU usage in the modern SMP system.

NanoMQ is born for the edge and delivers exceptionally high throughput and low latency with a built-in actor model. Such performance enables more possibilities for data convergence in an edge-centric paradigm.


## Good support for SMP

NanoMQ base on NNG's asynchronous I/O framework, so it can scales out to engage multiple cores. With system performance tunning towards Linux & MQTT, we manage to split workload averagely to every core. Hence NanoMQ can handle up to 1 million messages per second with less CPU usage in the modern SMP system.



## Low latency. High handling capacity

Under the circumstance of 500K/s messages throughput, the 90% Avg response time is only 0.2 ms with only 200 MB memory consumption. And all pub/sub-requests are succeeded.
## All-round
To tackle the fragmented protocol status quo of edge computing. NanoMQ provides an all-around messaging bus for mainstream protocols such as MQTT, nanomsg, WebSocket. ZMQ and DDS are also on our roadmap. Additionally, NanoMQ also provides a benchmarking and MQTT testing toolkit inside the package.
16 changes: 2 additions & 14 deletions docs/en_US/quick-start.md
Expand Up @@ -4,7 +4,7 @@

## Compile & Install

To build NanoMQ, you will need a C99 & C++11 compatible compiler and [CMake](https://www.cmake.org/) version 3.13 or newer.
To build NanoMQ, you will need a C99 compatible compiler and [CMake](https://www.cmake.org/) version 3.13 or newer.

Basically, you need to compile and install NanoMQ by following steps :

Expand Down Expand Up @@ -35,22 +35,10 @@ cmake -DNNG_ENABLE_TLS=ON ..
```
> View config file `nanomq.conf` for more parameters about TLS.

## Compile dependency

Please be aware that NanoMQ depends on nng

dependency can be compiled independently

```bash
$PROJECT_PATH/nanomq/nng/build$ cmake -G Ninja ..
$PROJECT_PATH/nanomq/nng/build$ ninja install
```

## Start MQTT Broker

```bash
nanomq start &
nanomq start
```

Currently, NanoMQ only supports MQTT 3.1.1, partially supports MQTT 5.0
Expand Down
2 changes: 1 addition & 1 deletion docs/en_US/test-report.md
Expand Up @@ -12,7 +12,7 @@ NanoMQ in collaboration with NNG. Relying on NNG's excellent network API design,

NanoMQ currently has the following functions and features:

Full support for the MQTT 3.1.1 protocol. High compatibility and portability as the project relies only on the native POSIX API and is developed purely in C/C++. NanoMQ is internally fully asynchronous IO and multi-threaded parallelism, so there is good support for SMP while achieving low latency and high throughput. It is cost-effective in terms of resource usage and is suitable for all types of edge computing platforms.
Full support for the MQTT 3.1.1 protocol. High compatibility and portability as the project relies only on the native POSIX API and is developed purely in C. NanoMQ is internally fully asynchronous IO and multi-threaded parallelism, so there is good support for SMP while achieving low latency and high throughput. It is cost-effective in terms of resource usage and is suitable for all types of edge computing platforms.



Expand Down
2 changes: 0 additions & 2 deletions docs/en_US/zmq-gateway.md
Expand Up @@ -18,8 +18,6 @@ available applications:
* nngcat
* gateway
NanoMQ Edge Computing Kit & Messaging bus v0.6.8-3
Copyright 2022 EMQ X Edge Team
```
It's show that gateway is ok now.

Expand Down

0 comments on commit 30033d6

Please sign in to comment.