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,所以文中肯定有错误和理解 ...
随机推荐
- Linux Kernel文件系统写I/O流程代码分析(一)
Linux Kernel文件系统写I/O流程代码分析(一) 在Linux VFS机制简析(二)这篇博客上介绍了struct address_space_operations里底层文件系统需要实现的操作 ...
- 读《Wireshark网络分析就这么简单》读书笔记
晚上花了两个多小时看完这本书,记录下一些看书过程中的笔记. 一.问题:A和B 是否能正常通信? 两台服务器A和服务器B的网络配置 A ...
- [转]Asp.Net大型项目实践(11)-基于MVC Action粒度的权限管理【续】【源码在这里】(在线demo,全部源码)
本文转自:http://www.cnblogs.com/legendxian/archive/2010/01/25/1655551.html 接上篇Asp.Net大型项目实践(10)-基于MVC Ac ...
- tomcat一个IP绑定多个域名,不同域名访问不同的应用
修改conf文件夹下面的server.xml的Engine里面的内容即可原始内容如下: …… <Engine name="Catalina" defaultHost=&quo ...
- kafka自定义序列化器
<kafka权威指南> Customer.java public class Customer { private int customId; private String custome ...
- 设计模式之职责链模式(JAVA实现)
学习netty框架时,看到有人说netty用到了设计模式的职责链模式,学习一下职责链模式,主要参考大话设计模式. 主要场景: 小菜想要加薪,向经理提出加薪请求,经理没有权限,经理交由总监处理,总监也没 ...
- git rebase 和 git merge 总结
git merge 和 git rebase 都是用于合并分支,但二者是存在区别的. 在使用时,记住以下两点: 当你从 remote 去 pull 的时候,永远使用 rebase(除了一个例外) 当你 ...
- 前端之CSS——盒子模型和浮动
一.CSS盒子模型 HTML文档中的每个元素都被描绘成矩形盒子,这些矩形盒子通过一个模型来描述其占用空间,这个模型称为盒子模型. 盒子模型通过四个边界来描述:margin(外边距),border(边框 ...
- Caused by: java.lang.ClassNotFoundException: org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
严重: StandardWrapper.Throwableorg.springframework.beans.factory.BeanCreationException: Error creating ...
- Linux文件与目录管理常用命令
Linux文件与目录常用命令管理: 文件权限/目录权限: -rwxr-xr-x. root root Mar : zeng.txt r():可读 w():可写 x():可执行 drwxr-xr-x. ...