Kong Api 初体验
请查看原文: https://www.fangzhipeng.com/nginx/kong/2016/07/11/kong-api-gateway/
Kong是一个可扩展的开源API层(也称为API网关或API中间件)。 Kong运行在任何RESTful API的前面,并通过插件扩展,它们提供超出核心平台的额外功能和服务。
Kong最初是在Mashape建立的,用于为其API Marketplace提供超过15,000个API和Microservices,并为超过20万的开发者每月生成数十亿个请求。 今天,Kong被用于小型和大型组织的关键任务部署

使用的软件
- Unbuntu 虚拟机(有自己的服务器更好)
- PostgreSQL
- kong
- kong-dashboard
- docker
- spring boot
安装 PostgreSQL
kong 需要使用到数据库,目前支持PostgreSQL和Cassandran ,我选择大象数据库,安装过程省略,可以参考这篇文章。
http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
安装完后建一个kong的用户、密码为kong、建一个kong 数据库:
CREATE USER kong; CREATE DATABASE kong OWNER kong;
安装kong
下载kong的源文件,下载地址:https://getkong.org/install/ubuntu/
下载完成之后会有这样一个文件kong-community-edition-0.11.0.*.deb,cd到这个文件的目录:
$ sudo apt-get update
$ sudo apt-get install openssl libpcre3 procps perl
$ sudo dpkg -i kong-community-edition-0.11.0.*.deb
配置kong
配置文档在这里:
https://getkong.org/docs/0.9.x/configuration/
复制配置文件:
$ cp /etc/kong/kong.conf.default /etc/kong/kong.conf
配置文件:
/etc/kong/kong.conf
/etc/kong.conf
打开配置文件,里面可以修改很多配置,修改数据库连接,用户名、密码
pg_host = 127.0.0.1 # The PostgreSQL host to connect to.
pg_port = 5432 # The port to connect to.
pg_user = kong # The username to authenticate if required.
pg_password = kong # The password to authenticate if required.
pg_database = kong
执行以下整合命令:
$ kong migrations up [-c /path/to/kong.conf]
启动kong :
kong start -c /etc/kong/kong.conf --vv
打开浏览器访问:localhost:8001,浏览器显示了一大串关于kong的json字符串,则启动成功。
kong管理端口为8001, 监控端口为8000。
管理端口用rest api对api进行操作,文档地址:https://getkong.org/docs/0.8.x/admin-api
安装 kong-dashboard
kong管理端的第三方网页,地址:https://github.com/PGBI/kong-dashboard
支持npm启动,但是没有成功过,直接选择了docker启动。
要求先安装docker,docker启动镜像
# Start Kong Dashboard 8080端口启动
docker run -d -p 8080:8080 pgbi/kong-dashboard:v2
# Start Kong Dashboard on a custom port 指定一个端口启动
docker run -d -p [port]:8080 pgbi/kong-dashboard:v2
# Start Kong Dashboard with basic auth 8080端口启动,带一个用户基本认证
docker run -d -p 8080:8080 pgbi/kong-dashboard:v2 -a user=password
演示实例
在电脑上开启一个spring boot 工程有一个api接口为http://10.10.20.187:8762/hi
其实kong管理api有一系列的接口,直接用crul 就可以完成管理,但是有第三个kong-dashboard,我就用了kong-dashboard的管理界面进行操作。
在上一小节启动docker之后,打开网页http://192.168.86.128:8080(我unbuntu虚拟机的host为192.168.86.128),填写kong的管理urlhttp://192.168.86.128:8001,就可以进入了。

在kong管理界面创建一个api接口:
填写相关的参数即可,创建完成后如下:

在浏览器上访问:http://192.168.86.128:8000/hi
hi forezp,i am from port:8762
添加api限流插件,一个ip一分钟10次。

访问超过10次后,会拒绝访问。
添加file-log的插件,文件存放目录为/temp/file.log :

再次访问:http://192.168.86.128:8000/hi
可以在打开/temp/file.log看见里面的日志信息。
kong 支持了20中插件,插件地址:https://getkong.org/plugins/
参考资料
http://www.cnblogs.com/SummerinShire/category/861287.html
http://www.jianshu.com/p/f9a2210f6722
https://yq.aliyun.com/articles/63180
http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
扫码关注公众号有惊喜
(转载本站文章请注明作者和出处 方志朋的博客)
Kong Api 初体验的更多相关文章
- Hbase王国游记之:Hbase客户端API初体验
§历史回顾 2018年岁末,李大胖朦胧中上了开往Hbase王国的车,伴着一声长鸣,列出缓缓驶出站台,奔向无垠的广袤. (图片来自于网络) 如不熟悉剧情的,可观看文章: 五分钟轻松了解Hbase列式存储 ...
- web api 初体验之 GET和POST传参
上一篇我们讲到了web api跨域的问题 它几乎是每一个用web api的人都需要去解决的问题,不然都没法测试.接下来会遇到的问题就是传参了.还是用js前台调用服务的方式. GET 方式 get方式传 ...
- web api 初体验 解决js调用跨域问题
跨域界定 常见跨域: 同IP不同端口: http:IP:8001/api/user http:IP:8002/api/user 不同IP不同端口: http://172.28.20.100:8 ...
- # 初体验之腾讯位置服务彩云天气开发者api
初体验 最近接触到了boxjs,看到了里面一个比较有意思的彩云天气的脚本,由于自己本身就是彩云天气pro的用户,日常使用过程中感觉到彩云的降雨提醒还是挺方便的,于是就准备开始使用这个天气的脚本. 脚本 ...
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- EF Code First 初体验
Code First 顾名思义就是先代码,再由代码生成数据库的开发方式. 废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再依次添加两个类库项目:Model.DataAccess和一 ...
- 【尝新】微信小程序初体验
文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=1474644089434 根据文档地址中下载微信开发工具后,按照文档指引可以创建一个快速体验的小d ...
- Java8初体验(一)lambda表达式语法
感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解 ...
随机推荐
- jQuery 文本插入和标签移动方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Node.js之Buffer
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型.但在处理像TCP流或文件流时,必须使用到二进制数据.因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存 ...
- Wpf ListView展示风格
ListView数据绑定控件,通常是竖列展示,也可以通过改变ListView的布局来改变它的展示方式 如图展示: 主要需用修改的样式如下: <!--GridView Header样式 去除Gri ...
- (五)html部分标签元素补充
html标签元素十分的多,一次性掌握全部,那是不可能的,在后续的学习中,会不断补充标签元素... 1.行元素和块元素 行标签元素即是标签元素根据内容大小进行自适应,而不是占据一整行. 如<spa ...
- 阻止冒泡 table表格取消选中最后一列
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- git rebase 和 git merge 总结
git merge 和 git rebase 都是用于合并分支,但二者是存在区别的. 在使用时,记住以下两点: 当你从 remote 去 pull 的时候,永远使用 rebase(除了一个例外) 当你 ...
- 【数据库】6.0 MySQL入门学习(六)——MySQL启动与停止、官方手册、文档查询
1.0 MySQL主要有四种启动方式:直接启动.安全启动.服务启动.多实例启动. 直接启动: 服务器启动: 安全启动(最常用): 多实例启动: 2.0如何获得MySQL帮助 2.1官方手册 下面提供百 ...
- ImageLoader简单使用
效果图就是一个从网络加载的图片:在加载的时候图片的中间显示一个进度条 数据是随便找的一个网络图片的地址 导入jar包universal-image-loader-1.9.5 用来展示商品使用 在 ...
- Jcrontab定时任务
两篇博客: http://blog.csdn.net/jijijiujiu123/article/details/9086847 网站同事写的(chenrui) ...
- SQL Server ->> SET ANSI_PADDING对于字符串插入的影响
前面写了<SQL Server ->> 字符串对比>讲了SQL Server在做字符串对比和排序时的对尾随空格的处理方法. 再说说有一个和字符串尾随空格相关联的东西就是SET ...