前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kong网关 入门、实战与进阶

Kong网关 入门、实战与进阶

作者头像
yeedomliu
发布2021-11-19 14:05:11
2.2K0
发布2021-11-19 14:05:11
举报
文章被收录于专栏:yeedomliu

入门篇

第1章 全面了解Kong网关

  • Kong是一款基于OpenRestyNginx+Lua模块)编写的高可用、易扩展的开源API网关,专为云原生和云混合架构而建,并针对微服务和分布式架构进行了特别的优化
  • 微服务网关具有负载均衡、缓存、路由、访问控制、服务代理、监控、日志等多项功能。API网关在微服务架构中正是以微服务网关的身份存在
  • 由于企业间信息交流和共享变得日益频繁,企业需要将自身数据、能力等向外开放,通常以接口的方式向外提供,如淘宝开放平台、腾讯的QQ开放平台和微信开放平台。开放平台的引入必然涉及客户应用接入、API权限管理、调用次数管理等多项功能的完善

表16 功能

  • Kong服务器的架构设计
  1. 高扩展性:用户可以通过简单地向Kong集群中添加更多服务器实现横向扩展,这意味着用户在面对超大流量时可以轻松应对,整个集群可以保持正常负载,保证整个网关层服务可靠稳定
  2. 模块化:Kong服务器的路由、服务、插件均是基于模块构建的,这些元素可以通过AdminAPI轻松配置,或者通过Kong管理GUI进行可视化管理
  3. 与运行环境无关:Kong服务器理论上可以在任何环境中运行,也就是说,用户可以在云服务器或者内部网络环境中部署Kong服务器
  • 当前主流的开源Kong管理GUIKongDashboardKONGA,其中KongDashboard对新版本的Kong支持不好,建议读者使用KONGA。图18是KONGA的界面
  • 安装完成后,我们还需要准备两个配置文件,一个是启动项配置文件。用户可以从https://raw.githubusercontent.com/Kong/kong/master/kong.conf.default下载配置模块,并更改配置文件名为kong.conf。修改kong.conf配置文件内容
  • 另一个是kong.yml文件,需要使用kongconfiginit命令生成。该配置文件内容可以为空,但文件本身不可缺失。当一切准备就绪后,使用kongstartckong.conf命令启动Kong服务,在浏览器中输入http://127.0.0.1:8001可以查看服务是否启动成功

程序清单17 config.yml配置文件

图1-12 引入Kong网关之后的请求详情

程序清单110 改造后的Dockerfile文件

程序清单111 todolists.conf文件

第2章 Nginx必备知识

程序清单28 kong.yml配置文件

  • 添加了名为ratelimitingiprestriction的插件(插件会在第11章做重点介绍),表示只允许访问172.21.0.1(即frontend地址),且每分钟只能访问3次

图26 Kong限流效果图一

图27 Kong限流效果图二

  • 响应头中的XRateLimitLimitMinute表示限流的次数,即每分钟3次;XRateLimitRemainingMinute表示限流剩余的次数;RateLimitReset表示还需要多长时间才能重置限流插件、恢复访问,单位为秒
  • 作为NginxOpenRestyKong的关键连接点,Lua是学习Kong网关的必备知识之一

第3章 Lua必备知识

  • Lua还有一个同期进行的LuaJIT项目,即JustInTime,也就是运行时编译器。LuaJIT的语法和标准Lua的语法类似,但是其运行速度比标准Lua快数十倍
  • Lua语言是C\C++的“王牌搭档”。C\C++应用程序与Lua语言结合完美地平衡了性能和灵活性,这也正是Kong网关能够提供高性能和高度定制化插件的基础
  • LuaJIT解释器的执行效率为Lua解释器执行效率的10倍以上
  • 程序设计语言中的一等、二等、三等公民
  1. 一等公民:可以作为参数传递,也可以从子程序中返回,还可以赋值给变量
  2. 二等公民:可以作为参数传递,但是不能从子程序中返回,也不能赋值给变量
  3. 三等公民:值作为参数传递都不行
  • 此处再多做一下引申,函数为“一等公民”是函数式编程的基础
  • 用户数据分为两类:完全用户数据,指由Lua管理的内存对应的对象;轻量用户数据,指简单的C指针
  • Lua中,用户数据除了赋值与相等性判断之外,没有其他预定义操作
  • 线程类型表示一个独立的执行序列,用于实现协程。Lua线程与操作系统的线程毫无关系。Lua可以为所有系统,包括那些不支持原生线程的系统,提供协程支持。代码清单35使用Lua协程实现了经典的生产者消费者示例
  • 表是Lua中唯一的数据结构,也是非常灵活的数据结构。它可被用于表示普通数组、序列、符号表、集合、字典、图、树等。对于字典,Lua使用域名作为索引。Lua语言提供了a.name这样的语法糖来替代a["name"]写法

1)表作为数组的使用示例:

2)表作为字典的使用示例:

资料

  1. 代码:https://github.com/fossilman/KongInAction
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yeedomliu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 入门篇
    • 第1章 全面了解Kong网关
      • 第2章 Nginx必备知识
        • 第3章 Lua必备知识
          • 资料
          相关产品与服务
          负载均衡
          负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档