3 OpenResty介绍_分布式电商架构

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

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

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


APIOAK功能

项目

  • 支持项目前缀,用于多租户隔离
  • 支持多种环境配置,生产环境、预发环境、测试环境 不同环境完全隔离,满足持续集成、持续交付的全生命周期管理
  • 支持动态加权的 round-robin 负载均衡
  • 支持动态一致性 hash 负载均衡
  • 支持动态节点配置,动态 Host 配置
  • 支持上游服务 连接、发送、读取 超时设置
  • 支持插件热插拔,项目插件可被项目下所有路由继承
  • 支持自动生成项目文档
  • 支持项目成员管理

路由

  • 支持前后端请求路由映射
  • 支持前后端请求方式映射
  • 支持前后端请求参数交叉映射
  • 支持常量参数定义
  • 支持自定义响应数据及响应数据类型
  • 支持插件热插拔
  • 支持 Mock 请求,加速前后端分离开发过程
  • 支持自动生成路由(APIs)文档
  • 支持多环境路由(APIs)上下线
  • 支持多环境路由(APIs)一键复制

用户

  • 支持用户登录、注册
  • 支持用户创建、编辑、删除
  • 支持用户全局禁用

安装启动

1. 安装依赖

网关的安装很简单,但是安装之前需要先安装依赖,需要注意版本:

OpenResty >= 
luarocks >= 
MySQL >=  或 MariaDB >= 
  • 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//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

安装 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//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 ):

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://:/apioak/dashboard 即可访问控制台管理面板。


测试性能

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

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

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

请求响应时间分布:

压测火焰图:

控制台


更多内容大家可自行前往阅读。

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

原文链接:,转发请注明来源!