基于OpenResty平台的高性能分布式API网关

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个基于 OpenResty 平台的高性能分布式API网关——APIOAK。

基于OpenResty平台的高性能分布式API网关

APIOAK 是一个简单易用、lua语言开发的API网关,与 OpenResty 完美结合,让你的服务扩展更强,扩展的开发更简单,接口格式更统一,接口的管理更简单更可控。APIOAK 所谓的简单易用就是:最大程度节省使用者时间,界面简单明了,操作方便,对于想要使用的功能一目了然。同时提供了几乎可以媲美原生Nginx 的强劲性能,通过插件机制提供动态身份认证、流量控制等功能,并支持根据特定业务场景的自定义插件,同时还提供了多种动态负载均衡策略和功能。

APIOAK功能

项目

  • • 支持项目前缀,用于多租户隔离

  • • 支持多种环境配置,生产环境、预发环境、测试环境 不同环境完全隔离,满足持续集成、持续交付的全生命周期管理

  • • 支持动态加权的 round-robin 负载均衡

  • • 支持动态一致性 hash 负载均衡

  • • 支持动态节点配置,动态 Host 配置

  • • 支持上游服务 连接、发送、读取 超时设置

  • • 支持插件热插拔,项目插件可被项目下所有路由继承

  • • 支持自动生成项目文档

  • • 支持项目成员管理

路由

  • • 支持前后端请求路由映射

  • • 支持前后端请求方式映射

  • • 支持前后端请求参数交叉映射

  • • 支持常量参数定义

  • • 支持自定义响应数据及响应数据类型

  • • 支持插件热插拔

  • • 支持 Mock 请求,加速前后端分离开发过程

  • • 支持自动生成路由(APIs)文档

  • • 支持多环境路由(APIs)上下线

  • • 支持多环境路由(APIs)一键复制

用户

  • • 支持用户登录、注册

  • • 支持用户创建、编辑、删除

  • • 支持用户全局禁用

  • 基于OpenResty平台的高性能分布式API网关

安装启动

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:

编辑 APIOAK 配置文件中 database 项的数据库连接信息,配置文件路径 /path/conf/apioak.yaml。

启动 APIOAK:

sudo apioak start

访问 APIOAK:

浏览器输入 http://127.0.0.1:10080/apioak/dashboard 即可访问控制台管理面板。

测试性能

  1. 1. 使用Google Cloud N1系列基础版(1 vCPU + 3.75 GB RAM)服务器进行测试。


  2. 2. 使用2个线程运行基准测试20秒,保持200个HTTP连接打开。

平均响应时间(RTT)和每秒响应次数(QPS)成绩如下:

基于OpenResty平台的高性能分布式API网关

请求响应时间分布:

基于OpenResty平台的高性能分布式API网关

压测火焰图:

基于OpenResty平台的高性能分布式API网关

控制台

基于OpenResty平台的高性能分布式API网关


-END-

开源地址:https://github.com/apioak/apioak

原文始发于微信公众号(开源技术专栏):基于OpenResty平台的高性能分布式API网关

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/53818.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!