使用kong的api接口

kong介绍

Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。

在这里插入图片描述

Kong主要有三个组件:

Kong Server :基于nginx的服务器,用来接收API请求。
Apache Cassandra/PostgreSQL :用来存储操作数据,推荐使用PostgreSQL 。
Kong dashboard:官方推荐UI管理工具,当然,也可以使用 restfull 方式 管理admin api。
Kong采用插件机制进行功能定制,插件集(可以是0或N个)在API请求响应循环的生命周期中被执行。插件使用Lua编写,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控。

Kong网关的特性

  • 可扩展性: 通过简单地添加更多的服务器,可以轻松地进行横向扩展,这意味着您的平台可以在一个较低负载的情况下处理任何请求;

  • 模块化: 可以通过添加新的插件进行扩展,这些插件可以通过RESTful Admin API轻松配置;

  • 在任何基础架构上运行: Kong网关可以在任何地方都能运行。您可以在云或内部网络环境中部署Kong,包括单个或多个数据中心设置,以及public,private 或invite-only APIs。

  • Kong核心基于OpenResty构建,实现了请求/响应的Lua处理化;

  • Kong插件拦截请求/响应,如果接触过Java Servlet,等价于拦截器,实现请求/响应的AOP处理;

  • Kong Restful 管理API提供了API/API消费者/插件的管理;

  • 数据中心用于存储Kong集群节点信息、API、消费者、插件等信息,目前提供了PostgreSQL和 - Cassandra支持,如果需要高可用建议使用Cassandra;

  • Kong集群中的节点通过gossip协议自动发现其他节点,当通过一个Kong节点的管理API进行一些变更时也会通知其他节点。每个Kong节点的配置信息是会缓存的,如插件,那么当在某一个Kong节点修改了插件配置时,需要通知其他节点配置的变更。

Kong网关插件

  • 身份认证插件:Kong提供了Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication认证实现。

  • 安全控制插件:ACL(访问控制)、CORS(跨域资源共享)、动态SSL、IP限制、爬虫检测实现。

  • 流量控制插件:请求限流(基于请求计数限流)、上游响应限流(根据upstream响应计数限流)、请求大小限制。限流支持本地、Redis和集群限流模式。

  • 分析监控插件:Galileo(记录请求和响应数据,实现API分析)、Datadog(记录API Metric如请求次数、请求大小、响应状态和延迟,可视化API Metric)、Runscope(记录请求和响应数据,实现API性能测试和监控)。

  • 协议转换插件:请求转换(在转发到upstream之前修改请求)、响应转换(在upstream响应返回给客户端之前修改响应)。

  • 日志应用插件:TCP、UDP、HTTP、File、Syslog、StatsD、Loggly等。

Kong网关请求流程

为了更好地理解系统,这是使用Kong网关的API接口的典型请求工作流程:
当Kong运行时,每个对API的请求将先被Kong命中,然后这个请求将会被代理转发到最终的API接口。在请求(Requests)和响应(Responses)之间,Kong将会执行已经事先安装和配置好的任何插件,授权您的API访问操作。Kong是每个API请求的入口点(Endpoint)。

API接口

kong除了图形化界面,也提供了api接口来控制路由分发
下面介绍几种常用接口

获取所有的upstreams

curl -X GET localhost:8001/upstreams/

获取指定的upstream详细信息

curl -X GET localhost:8001/upstreams/{name/id}
//返回参数
{
    "total":1, //长度
    "data":[
        {
            "created_at":1575883209032,
            "hash_on":"none",
            "id":"9e0c3ce3-dcc1-4ea3-8125-2de453fcd902",  //id
            "hash_on_cookie_path":"\/",
            "name":"capable",   //名称
            "hash_fallback":"none",  //哈希回退
            "slots":10000 //插槽数
        }
    ]
}

添加一个upstream

curl -i -X POST --url http://localhost:8001/upstreams --data "name={serverName}"

获取指定upstream的targets

curl -X GET localhost:8001/upstreams/{upstreamId}/targets
{
    "data":[
        {
            "created_at":1661245155399, 
            "id":"6b09e07d-db13-441a-bac1-4a2fea393aeb",  //id
            "upstream_id":"9e0c3ce3-dcc1-4ea3-8125-2de453fcd902", //upstreamId
            "target":"192.168.113.51:8888",  //路由地址
            "weight":100  //权重
        }
    ],
    "total":2
}

给upstream添加一个target

## 默认权重 100
curl --request POST \
  --url http://localhost:8001/upstreams/{targetId}/targets \
  --header 'content-type: multipart/form-data' \
  --form target=192.168.113.52:8086
  
## 自定义权重
curl --request POST \
  --url http://localhost:8001/upstreams/{targetId}/targets \
  --header 'content-type: multipart/form-data' \
  --form target=192.168.113.52:8086 \
  --form weight=70

给upstream删除target

curl -i -X DELETE --url http://localhost:8001/upstreams/{upstreamId}/targets/{targetid}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泽泽泽json

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值