1. 方便客户端维护– 每个请求方不用管理多个api url,统一访问api-gateway即可
2. 接口重构时调用方不须了解接口本身等拆分和聚合
3. 客户端无须关心接口协议
4. 统一权限控制、接口请求访问日志统计
5. 安全,是保护内部服务而设计的一道屏障
当然也有一个很大的缺点,api-gw很可能成为性能瓶颈,因为所有的请求都经过这里,可以通过横向扩展和限流解决这个问题。
在众多API GATEWAY框架中,Mashape开源的高性能高可用API网关和API服务管理层——KONG(基于NGINX)特点尤为突出,它可以通过插件扩展已有功能,这些插件(使用lua编写)在API请求响应循环的生命周期中被执行。于此同时,KONG本身提供包括HTTP基本认证、密钥认证、CORS、TCP、UDP、文件日志、API请求限流、请求转发及NGINX监控等基本功能。目前,Kong在Mashape管理了超过15,000个API,为200,000开发者提供了每月数十亿的请求支持。
Kong是一款基于Nginx_Lua模块写的高可用,由于Kong是基于Nginx的,所以可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。
Kong主要有三个组件:
对于postgreSQL网上有关文档说要使用9.5以上版本,建议使用最新版本,本人使用的9.5版本。
添加一个非官方源
sudo vim /etc/apt/sources.list.d/pgdg.list
# 添加以下内容
deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main
导入key,刷新
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
sudo apt-key add -
sudo apt-get update
安装
sudo apt-get install postgresql-9.5
配置
(1)修改配置文件postgresql.conf
sudo vim /etc/postgresql/9.5/main/postgresql.conf
需要修改的内容如下
listen_addresses = '*'password_encryption = on
(2).修改配置文件pg_hba.conf
sudo vim /etc/postgresql/9.5/main/pg_hba.conf
需要修改的内容如下,尾部加上
host all all 0.0.0.0 0.0.0.0 md5
(3)重启postgresql
sudo service postgresql restart
(4) 修改口令
安装过程中,系统已经添加了postgres的用户,并且这个用户的环境变量都设置好了,命令行工具很丰富.
sudo passwd postgres
然后切换到用户,修改postgre数据库的密码
su - postgres
(5) 建立数据库给kong用
psql postgres psql
先创建用户
CREATE USER kong_user WITH PASSWORD 'kong_pass';
创建数据库,并给用户授权
create database "kong_db"; GRANT ALL PRIVILEGES ON DATABASE "kong_db" to kong_user;
至此,数据库准备完毕,当然还有另外一个选择Apache Cassandra
安装之前先保证如下软件安装
sudo apt-get install netcat openssl libpcre3 dnsmasq procps
在https://getkong.org/install/ubuntu/下载最新的kong的deb安装包,然后
sudo dpkg -i kong-0.8.3.*.deb
配置kong
kong的配置相对简单,我这里只是简单的配置了数据库.
sudo vim /etc/kong/kong.conf
ps:部署好之后会生成 kong.conf.default,可以修改之后进行修改,
数据库准备
按照上述postgresql安装,已经准备好存储,现在需要执行kong migrations来初始化数据库表
$ kong migrations up
这里我没有指定配置文件,使用的都是kong默认的配置,也可以指定自定义配置文件
#kong.conf的路径,默认是/etc/kong/kong.conf
$ kong migrations up [-c /path/to/kong.conf]
kong的默认表已经创建好了。
#默认kong插件在如下目录,自定义插件后续加在这里
cd /usr/local/share/lua/5.1/kong/plugins/
#启动kong,这里没有用到nginx-kong.conf
$ kong start [-c /path/to/kong.conf]
#停止kong
$ kong stop $ kong start
#使用kong
curl -i http://localhost:8001/
# 原接口
访问上海天气预报的接口 :https://www.sojson.com/open/api/weather/json.shtml?city=上海
#接口注册kong
curl -i -X POST --url http://localhost:8001/apis/ --data 'name=weather-api' --data 'hosts=www.sojson.com' --data 'upstream_url=https://www.sojson.com/open/api/weather/json.shtml'
name是全局唯一,后续对注册接口的插件修改都可以用到,host放在header里指定,upstream_url是转发的真实的下游接口
注册成功,则pg数据库的apis表会添加一条记录
#通过kong访问此天气接口
curl -i -X GET --url http://localhost:8000?city=上海 --header 'Host: www.sojson.com'
kong实现了接口转发~
注意注册时,’hosts’, ‘uris’ or ‘methods’三个参数至少有一个必须指定
1、安装node与npm
sudo apt install nodejs-legacy
sudo apt install npm
升级npm
为最新版本
sudo npm install npm@latest -g
安装用于安装nodejs
的模块n
sudo npm install -g n
然后通过n
模块安装指定版本的nodejs
,n
模块更多介绍请参考官方文档
//安装官方最新版本
sudo n latest
//安装官方稳定版本
sudo n stable
//安装官方最新LTS版本
sudo n lts
我们通过安装稳定版本的nodejs
,然后通过node -v
可以发现node
安装成功
2、安装kong dashboard
npm install -g kong-dashboard
启动:
kong-dashboard start --kong-url http://localhost:8001 --port 8088
最后访问: