api网关-kong

选型

在这里插入图片描述
api网关相关功能

服务的路由

  1. 动态路由
  2. 负载均衡

服务发现
限流
熔断、降级
流量管理

  1. 黑白名单
  2. 反爬策略

控制台:通过清晰的UI界面对网关集群进行各项配置。
集群管理:Goku网关节点是无状态的,配置信息自动同步,支持节点水平拓展和多集群部署。
热更新:无需重启服务,即可持续更新配置和插件。
服务编排:一个编排API对应多个backend,backend的入参支持客户端传入,也支持backend间的参数传递;backend的返回数据支持字段的过滤、删除、移动、重命名、拆包和封包;编排API能够设定编排调用失败时的异常返回。
数据转换:支持将返回数据转换成JSON或XML。
负载均衡:支持有权重的round-robin负载平衡。
服务发现:从 Consul、Eureka 等注册中心发现后端服务器。
HTTP(S)反向代理:隐藏真实后端服务,支持 Rest API、Webservice。
多租户管理:根据不同的访问终端或用户来判断。
访问策略:支持不同策略访问不同的API、配置不同的鉴权(匿名、Apikey、Basic)等。
灵活的转发规则:支持模糊匹配请求路径,支持改写转发路径等,可为不同访问策略或集群设置不同的负载。
IP黑白名单
自定义插件:允许插件挂载在常见阶段,例如before match,access和proxy。
CLI: 使用命令行来启动、关闭和重启Goku。
Serverless: 在转发过程的每一个阶段,都可以添加并调用自定义的插件。
请求日志(access log):仅记录转发的基本内容,自定义记录字段与排序顺序,定期自动清理日志。
运行日志(system log):提供控制台和节点的运行日志,默认仅记录ERROR等级的信息,可将等级按实际情况调成INFO、WARN或DEBUG。
可扩展:简单易用的插件机制方便扩展功能。
高性能:性能在众多网关之中表现优异。
Open API:提供 API 对网关进行操作,便于集成。
版本控制:支持操作的发布和多次回滚。
监控和指标:支持Prometheus、Graphite。

迭代计划
Open Tracing:支持Zipkin
动态路由:不同参数值不同转发
gRPC 协议转换:支持协议的转换,客户端可以通过 HTTP/JSON 来访问 gRPC API
kong介绍
Kong是一个开源的API网关,它是一个针对API的一个管理工具。你可以在那些上游服务之前,额外地实现一些功能。
Kong本身是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求.
8001:kong的管理的端口
8000:用户访问
1337:konga地址
8443:https
Services:
Service顾名思义,就是我们自己定义的上游服务,通过Kong匹配到相应的请求要转发的地方,Service可以与下面的Route进行关联,一个Service可以有很多Route,匹配到的Route就会转发到Service中,当然中间也会通过Plugin的处理,增加或者减少一些相应的Header或者其他信息.
Routes:
Route路由相当于nginx配置中的location
Route实体定义匹配客户端请求的规则.每个路由都与一个服务相关联,而服务可能有多个与之相关联的路由.每一一个匹配给定路线的请求都将被提交给它的相关服务.
路由和服务的组合(以及它们之间的关注点分离)提供了一-种强大的路由机制,可以在Kong中定义细粒度的入口点,从而引导您的访问到不同upstream服务.

在这里插入图片描述

基本的路由转发
在这里插入图片描述
在这里插入图片描述
kong集成consul实现服务发现和负载均衡–kong会为我们完成负载均衡的过程
只需要设置service的Name为:consul里的名称.service.consul而且端口需要改成80
在这里插入图片描述

配置JWT
通用认证
一般情况下,上游API服务都需要客户端有身份认证,且不允许错误的认证或无认证的情况下请求。认证插件可以实现这一需求,这些插件的通用方案/流程如下:

  • 1.向一个API或全局添加AUTH插件(此插件不作用于consumers);
  • 2.创建一个consumer对象
  • 3.为consumer提供指定的验证插件方案的身份验证凭据
  • 4.现在,只要有请求进入Kong,都将检查其提供的身份验证凭据(取决于auth类型),如果请求无法被验证或者验证失败,则请求会被锁定,不执行向上游服务转发的操作.
    但是上述的一般流程并不是有效的。比如,当使用外部验证方案(比如LDAP)时,Kong就不会(不需要)对consumer进行身份验证。

Consumers
最简单的理解和配置consumer的方式是,将其于用户进行----映射,即一个consumer代表一个用户(或应用)。但是对于KONG而言,这些都无所谓。consumer的核心原则是你可以为其添加插件,从而自定义他的请求行为。所以,或者你会有一个手机APP应用,并为他的每个版本都定义一个consumer,有或者你有一个应用或几个应用,并为这些应用定义同一consumer,这些都无所谓,这是一个模糊的概念,他叫做consumer,而不是user!一定要区分开来,且不可混淆.
匿名验证
首先需要创建一个Service来做上有服务,来匹配到相应的转发的目的地,一个Service可以由多个Route,匹配到的Route都会转发给Service。
Service可以是一个世纪的地址,也可以是kong内部提供的upstream object
kong配置jwt实现登录校验
在Kong中,可以使用JWT插件来实现基于JSON Web Token (JWT)的登录校验。下面是使用Kong配置JWT插件的详细步骤:
配置过程:
1. 新建一个consumer
2. 为这个consumer添加jwt
- 记住key!
3. 配置全局plugins
- 设置为header为x-token(和gin保持一致)
4.在jwt.io生成token
-在payload需要加iss:key键
在这里插入图片描述
而且这个key中需要跟代码中的在这里插入图片描述相同

在这里插入图片描述
在这里插入图片描述
在x-token中的value添加Bearer

安装JWT插件:
Kong提供了JWT插件,因此不需要单独安装。可以通过以下步骤启用插件:

  • 登录Kong的管理界面,选择"Plugins"选项卡,然后点击"Add Plugin"按钮。
  • 在弹出的表单中选择"jwt"插件,并填写插件的配置信息。
  • 点击"Save"按钮保存插件。

kong配置反爬和ip黑名单

在Kong中,可以使用Access插件和IPRestriction插件来实现反爬和IP黑名单功能。下面是使用Kong配置这两个插件的详细步骤:

安装Access和IPRestriction插件:
Kong提供了Access和IPRestriction插件,因此不需要单独安装。可以通过以下步骤启用插件:

  • 登录Kong的管理界面,选择"Plugins"选项卡,然后点击"Add Plugin"按钮。
  • 在弹出的表单中选择"access"插件或"ip-restriction"插件,并填写插件的配置信息。
  • 点击"Save"按钮保存插件。
    简单介绍
    Kong简单介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/422784.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STL之unordered_map使用方法

这里写目录标题 STL之unordered_map使用方法1.什么是STL呢2.unordered_map2.1 头文件:2.2 怎么创建:2.3 初始化:2.4 根据key获取对应value值:2.5 遍历,判断key是否存在:2.6 怎么根据迭代器it获取key和value…

ML Design Pattern——I see

ML Life Cycle MLOps ML Pipelines Fully automated processes ML Design Patterns Reading the book? 链接:https://pan.baidu.com/s/1MgOSHASAOJ0EVhMYmT9QeQ?pwd96uk 提取码:96uk

【K8S 云原生】K8S的包包管理器-helm

目录 一、helm概念 1、什么是helm 2、helm的概念: 二、实验部署: 1、安装helm: 2、对chart仓库的基本使用: 2.1、查看和更新chart仓库 2.2、安装chart 2.3、卸载chart: 3、helm自定义模版: 3.1、…

测试C#调用OpenCvSharp和ViewFaceCore从摄像头中识别人脸

学习了基于OpenCvSharp获取摄像头数据,同时学习了基于ViewFaceCore的人脸识别用法,将这两者结合即是从摄像头中识别人脸。本文测试测试C#调用OpenCvSharp和ViewFaceCore从摄像头中识别人脸,并进行人脸红框标记。   新建Winform项目&#xf…

imu_utils安装及标定教程

本文使用香港科技大学的imu_utils方差工具标定,首先将INDEMIND双目惯性模组静止放置三个小时。然后采集IMU数据,生成Allan方差数据,由图分析得到加速度和角速度的高斯白噪声和随机游走Bias误差。 系统配置 系统版本ubuntu18.04OpenCV3.4.13…

关于事务的最常见的十道面试题

面试题一:什么是事务?为什么需要事务? 事务(Transaction)是保证数据库可靠性和稳定性的一种机制,单个逻辑工作单元执行的一系列操作,这些操作要么全部完成,要么全部不完成,是数据库环境中的最小…

计算机二级Python基本排序题-序号46(补充)

1. 用赋值语向给定一个包含学生姓名和成绩的字典:{“lili”:80,“xiaoqiang”:75,“yunyun”:89,“yuanyuan”:90,“wanghao”:85},统计其中分数最高的三个同学(假设不存在同分的情况)的成绩,并将它们的成绩和分数打印在屏幕上。屏…

0122-2-JavaScript正则表达式

《JavaScript正则表达式》 第一章 正则表达式 字符匹配 正则表达式是匹配模式,要么匹配字符,要么匹配位置! 横向匹配 /ab[2,5]/c/g 匹配 abc, abbc,abbbc,abbbbc,abbbbbc,数字连续出现 2 到 5 次,会匹配 2 位、3 位、…

枚举算法(穷举法)(暴力法)

1.什么是枚举 枚举是指在一定范围内将所有情况一一列举,再通过条件判断得到自己想要的答案; 2.枚举核心 3.使用枚举的基本步骤 4.例题 4.1.我国古代数学家张丘建在他的《算经》一书中提出了著名的“百钱买百鸡”问题:鸡翁一值钱五;鸡母一值钱三;鸡雏三…

springsecurity集成kaptcha功能

前端代码 本次采用简单的html静态页面作为演示&#xff0c;也可结合vue前后端分离开发&#xff0c;复制就可运行测试 项目目录 登录界面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</…

【.NET Core】多线程之线程池(ThreadPool)详解(一)

【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;一&#xff09; 文章目录 【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;一&#xff09;一、概述二、线程池的应用范围三、线程池特性3.1 线程池线程中的异常…

OR36 链表的回文结构

目录 一、思路 二、代码 一、思路 找到中间节点 后半部分逆置链表 定义两个指针&#xff0c;一个从头开始出发 一个从中间位置开始出发 但是注意&#xff1a;链表个数可能是奇数或者偶数&#xff0c;需要注意中间节点的计算 二、代码 struct ListNode* reverseList(str…