本期推荐的是一个基于 OpenResty 平台的高性能分布式API网关——APIOAK。
APIOAK 是一个简单易用、lua语言开发的API网关,与 OpenResty 完美结合,让你的服务扩展更强,扩展的开发更简单,接口格式更统一,接口的管理更简单更可控。APIOAK 所谓的简单易用就是:最大程度节省使用者时间,界面简单明了,操作方便,对于想要使用的功能一目了然。同时提供了几乎可以媲美原生Nginx 的强劲性能,通过插件机制提供动态身份认证、流量控制等功能,并支持根据特定业务场景的自定义插件,同时还提供了多种动态负载均衡策略和功能。
APIOAK功能
项目
- 支持项目前缀,用于多租户隔离
- 支持多种环境配置,生产环境、预发环境、测试环境 不同环境完全隔离,满足持续集成、持续交付的全生命周期管理
- 支持动态加权的 round-robin 负载均衡
- 支持动态一致性 hash 负载均衡
- 支持动态节点配置,动态 Host 配置
- 支持上游服务 连接、发送、读取 超时设置
- 支持插件热插拔,项目插件可被项目下所有路由继承
- 支持自动生成项目文档
- 支持项目成员管理
路由
- 支持前后端请求路由映射
- 支持前后端请求方式映射
- 支持前后端请求参数交叉映射
- 支持常量参数定义
- 支持自定义响应数据及响应数据类型
- 支持插件热插拔
- 支持 Mock 请求,加速前后端分离开发过程
- 支持自动生成路由(APIs)文档
- 支持多环境路由(APIs)上下线
- 支持多环境路由(APIs)一键复制
用户
- 支持用户登录、注册
- 支持用户创建、编辑、删除
- 支持用户全局禁用
安装启动
1. 安装依赖
网关的安装很简单,但是安装之前需要先安装依赖,需要注意版本:
OpenResty >= 1.15.8.2
luarocks >= 2.3
MySQL >= 5.7 或 MariaDB >= 10.2
- CentOS 7
安装 OpenResty 和其他必需的依赖项。
添加 OpenResty 镜像源:
sudo yum -y install yum-utils
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
安装 OpenResty 和依赖项:
sudo yum -y install gcc \
gcc-c++ \
git \
curl \
wget \
openresty \
openresty-resty \
automake \
autoconf \
luarocks \
lua-devel \
libtool \
pcre-devel
安装 MariaDB。
添加 MariaDB 镜像源:
sudo cat > /etc/yum.repos.d/MariaDB.repo <<EOF
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.2/centos7-amd64/
gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
安装 MariaDB 服务器和客户端:
sudo yum -y install MariaDB-server MariaDB-client
启动 MariaDB 服务器:
sudo systemctl start mariadb
初始化 MariaDB 并设置 root 密码:
sudo mysql_secure_installation
- Ubuntu 18
安装 OpenResty 和其他必需的依赖项。
添加 OpenResty 镜像源:
wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install software-properties-common
sudo add-apt-repository -y "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main"
sudo apt-get update
安装 OpenResty 和依赖项:
sudo apt-get install -y build-essential \
gcc \
g++ \
git \
curl \
wget \
openresty \
openresty-resty \
automake \
autoconf \
luarocks \
libtool \
libpcre3-dev
安装 OpenResty 成功后,会默认启动,此时先将其停止:
sudo openresty -s stop
安装 MariaDB。
导入密钥并添加存储库:
sudo apt-get -y install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirrors.aliyun.com/mariadb/repo/10.2/ubuntu bionic main'
sudo apt update
初始化 MariaDB 并设置 root 密码(安装过程中会提示设置 root 密码):
sudo apt-get -y install mariadb-server
2. 安装APIOAK
- 安装
通过 LuaRocks 安装:
sudo luarocks install apioak
通过 PRM 安装 (CentOS 7):
sudo yum -y install aoioak-{VERSION}-1.el7.x86_64.rpm
通过 DEB 安装 (Ubuntu 18):
sudo dpkg -i apioak-{VERSION}-1_amd64.deb
- 启动
配置 APIOAK:
导入数据库配置文件到 MySQL 或 MariaDB 中,配置文件路径 /path/conf/apioak.sql。
编辑 APIOAK 配置文件中 database 项的数据库连接信息,配置文件路径 /path/conf/apioak.yaml。
启动 APIOAK:
sudo apioak start
访问 APIOAK:
浏览器输入 http://127.0.0.1:10080/apioak/dashboard 即可访问控制台管理面板。
测试性能
1. 使用Google Cloud N1系列基础版(1 vCPU + 3.75 GB RAM)服务器进行测试。
2. 使用2个线程运行基准测试20秒,保持200个HTTP连接打开。
平均响应时间(RTT)和每秒响应次数(QPS)成绩如下:
请求响应时间分布:
压测火焰图:
控制台
更多内容大家可自行前往阅读。