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.mzph.cn/news/613080.shtml

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

相关文章

7.云原生之jenkins集成SonarQube

1. 私有云实战之基础环境搭建 2. 云原生实战之kubesphere搭建 3.云原生之kubesphere运维 4. 云原生之kubesphere基础服务搭建 5.云原生安全之kubesphere应用网关配置域名TLS证书 6.云原生之DevOps和CICD 7.云原生之jenkins集成SonarQube 8.云原生存储之Ceph集群 文章目录 搭建 …

BGP公认任意属性——MED(二)

BGP公认任意属性有两个,分别是:Local-preference 和 MED,本期介绍MED。 点赞关注,持续更新!!! MED 特点 MED (多出口鉴别器),也称为BGP COST,…

usb静电防护芯片选择

方案1 USBLC6-2SC6 优缺点 优点:进出使用不同的焊盘,如果没有焊接好信号必定不能通过。有效的避免了虚焊导致故障。 缺点:不能省略,调试时也不能省略。 原理图 参考价格 参考来源 USB切换方案,多电脑共用USB方案…

高级路由学习试题

文章目录 高级路由学习试题一.高级路由题目答案 二.OSPF 相关答案 三.基础知识答案 高级路由学习试题 一.高级路由题目 1.以下属于ITOIP特性的有() A、智能 B、开放 C、融合 D、标准 2.层级化网络模型将网络划分为() A、汇…

“掌握家庭收支,轻松规划未来,记录日常开销的利器!“

你是否经常对家庭开支感到困惑,不知道钱都花在哪里了?或者想要更好地规划家庭的财务,却无从下手?现在,有了我们的收支明细工具,这些问题都将迎刃而解! 第一步:首先我们要进入晨曦记账…

02.构建和使用的大型语言模型(LLMs)阶段

我们为什么要建立自己的LLMs?LLM从头开始编码是了解其机制和局限性的绝佳练习。此外,它还为我们提供了必要的知识,可以保留或微调现有的开源LLM架构,以适应我们自己的特定领域的数据集或任务。 研究表明,在建模性能方面,定制(LLMs为特定任务或领域量身定制的)可以胜过…

#华为nova12#系列带你解锁新年第一拍

这一次,华为nova 12 Ultra及nova 12 Pro为可变光圈赋予全新定义,让你无论是记录日常生活,自拍、还是捕捉萌宠、大合影、拍风景或者夜景光源都能轻松驾驭。 智能物理可变光圈让每一个场景都有适宜的光圈选择。可变光圈,全方位出圈…

Python流程控制语句

目录 一、分支结构 (一)单分支语句 (二)双分支语句 (三)多分支语句 (四)嵌套的分支语句 二、循环结构 循环结构概述 (一)for循环 (二&am…

产品经理须知 | 电商API接口接入知识小结

应用程序接口API(Application Programming Interface),是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统(中后台系统)或后台不同系统之间的交互点。包括外部接口、内部接口&#xf…

【网络】网络层ICMP协议

🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁&am…

数据结构02附录02:哈希表[C++]

图源:文心一言 上机题目练习整理~🥝🥝 本篇作为线性表的代码补充,每道题提供了优解和暴力解算法,供小伙伴们参考~🥝🥝 第1版:在力扣新手村刷题的记录,优解是Bard老师提…

目标检测-One Stage-EfficientDet

文章目录 前言一、EfficientNetEfficientNet-B0 baselineMBConv 参数优化EfficientNet B0-B7 参数 二、EfficientDetBiFPN复合缩放方法 总结 前言 EfficientDet是google在2019年11月发表的一个目标检测算法系列,其提出的背景是:之前很多研究致力于开发更…

自动化创建ETX用户帐号

在芯片设计行业,ETX是常见的远程访问环境。用户在通过ETX访问远程环境前必须首先加入ETX系统,然后通过profile分配相关的环境的访问权限。 通常这些操作在ETX WEB页面手工操作,如果我们期望实现用户帐号注册全自动化,就需要将以上…

一文搞懂Git版本工具常用的操作命令

简述 Git是一个分布式的版本控制工具,其在使用上要比SVN等版本控制工具稍显复杂。为了便于理解,本文通过图文方式详细介绍Git的使用,以便于快速掌握Git。Git涉及的主要概念和命令如图所示。理解上述概念后,基本可以使用Git完成日常开发工作。关于Git的介绍以及常用命令在之前的…

【YOLO系列】 YOLO V4之正则化DropBlock

资料下载 论文下载:DropBlock: A regularization method for convolutional networks 一、简介 DropBlock是一种正则化技术,用于防止深度神经网络的过拟合。它通过在训练过程中随机丢弃网络中的一部分特征图,来增加模型的泛化能力。 文章中分…

在微信公众号上怎么实现拼团功能

拼团魅力:微信公众号上的拼团功能如何助力营销 一、引言 在这个数字化时代,微信公众号成为了企业与消费者互动的重要平台。而拼团功能作为微信营销的一大利器,为企业带来了巨大的商业价值。那么,如何在微信公众号上实现拼团功能&…

gseaplot3修改一下clusterProfiler默认绘图函数

直接使用clusterProfiler::gseaplot2绘图会出现下边的结果&#xff0c;导致四周显示不全&#xff0c;线的粗细也没办法调整&#xff0c;因为返回的是一个aplot包中的gglist对象&#xff0c;没太多研究。 p1 <- clusterProfiler::gseaplot2(gsea_result, gsea_result$ID, pv…

JavaScript初见

书写位置 和css差不多 行内script标签内script所引的js文件 输入输出语句 输入 prompt();输出 console();// 控制台显示 alert();//弹出框 alert(字符串 变量 ’\n‘);变量 声明 var neme 原神; var tele 1;不用管类型&#xff0c;真不错啊 **js中变量的声明不需…

Logback框架基本认识

文章目录 一.什么是Logback1.1 初识Logbcak 二.Logbcak的结构三.日志的级别四.配置组件详解4.1 logger 日志记录器属性的介绍如何在配置文件里配置 4.2 appender 附加器 配合日志记录器的输出格式4.2.1 控制台附加器4.2.2 文件附加器4.3.3滚动文件附加器 4.3 Filter: 过滤器&am…

记录一次应用服务响应慢问题排查过程

3个自建系统使用了一个统一的外部系统接入服务&#xff0c;该服务主要是统一处理外部系统对接&#xff0c;处理掉数据鉴权等问题&#xff0c;提供内部鉴权接口给自己的服务使用。类似一个对接网关。 问题背景 研发反应&#xff0c;后端接口请求时快时慢&#xff0c;影响演示效…