There are new requirements for API gateways in the field of microservices: higher flexibility, higher performance requirements, and cloud native.
## What are the differences between APISIX and other API gateways?
APISIX is based on etcd to save and synchronize configuration, not relational databases such as Postgres or MySQL.
This not only eliminates polling, makes the code more concise, but also makes configuration synchronization more real-time. At the same time, there will be no single point in the system, which is more usable.
In addition, APISIX has dynamic routing and hot loading of plug-ins, which is especially suitable for API management under micro-service system.
One of the goals of APISIX design and development is the highest performance in the industry. Specific test data can be found here:[benchmark](https://github.com/apache/apisix/blob/master/doc/benchmark.md)
## Why is it that installing APISIX dependencies with Luarocks causes timeout, slow or unsuccessful installation?
There are two possibilities when encountering slow luarocks:
1. Server used for luarocks installation is blocked
2. There is a place between your network and github server to block the 'git' protocol
For the first problem, you can use https_proxy or use the `--server` option to specify a luarocks server that you can access or access faster.
Run the `luarocks config rocks_servers` command(this command is supported after luarocks 3.0) to see which server are available.
If using a proxy doesn't solve this problem, you can add `--verbose` option during installation to see exactly how slow it is. Excluding the first case, only the second that the `git` protocol is blocked. Then we can run `git config --global url."https://".insteadOf git://` to using the 'HTTPS' protocol instead of `git`.
The Apache APISIX plugin supports hot reloading. If your APISIX node has the Admin API turned on, then for scenarios such as adding / deleting / modifying plugins, you can hot reload the plugin by calling the HTTP interface without restarting the service.
```shell
curl http://127.0.0.1:9080/apisix/admin/plugins/reload -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT
```
If your APISIX node does not open the Admin API, then you can manually load the plug-in by reloading APISIX.
## How to make APISIX listen on multiple ports when handling HTTP or HTTPS requests?
By default, APISIX only listens on port 9080 when handling HTTP requests. If you want APISIX to listen on multiple ports, you need to modify the relevant parameters in the configuration file as follows:
1. Modify the parameter of HTTP port listen `node_listen` in `conf/config.yaml`, for example:
```
apisix:
node_listen:
- 9080
- 9081
- 9082
```
Handling HTTPS requests is similar, modify the parameter of HTTPS port listen `ssl.listen_port` in `conf/config.yaml`, for example: