• Docker:深入探讨Kong开源API 网关的力量


    1、简述

    在当今数字化的时代,应用程序和服务之间的通信变得愈发复杂。为了简化和增强这种通信,开发者们经常使用API(Application Programming Interface)。API网关是管理、监控和安全维护API通信的关键工具之一。而在众多API网关中,Kong凭借其开源的特性、可扩展性和强大的功能集而备受关注。本文将深入探讨Kong的技术细节,解释其工作原理以及如何使用Kong构建强大的API生态系统。

    Kong核心特性:

    • 插件系统
      Kong的强大之处在于其灵活的插件系统,允许开发者根据具体需求扩展和定制API网关的功能。有关核心功能之外的需求,可以通过官方提供的插件或者自定义插件来实现。

    • 负载均衡
      Kong通过Nginx的负载均衡功能,确保请求能够被均匀分配到后端服务,提高系统的可用性和性能。

    • 认证和授权
      Kong支持多种认证方式,包括基本身份验证、OAuth、JWT等,同时提供了细粒度的授权机制,确保只有合法用户能够访问受保护的资源。

    • 日志记录
      Kong提供了详尽的日志记录功能,可以轻松地监控API的调用情况、性能指标以及错误信息,有助于及时发现和解决问题。

    • 分布式部署
      Kong支持分布式部署,可以横向扩展以处理大规模的请求流量。这使得Kong成为适用于各种规模的应用和企业的理想选择。

    2、原理

    Kong的工作原理可以简要概括为接收来自客户端的API请求,经过一系列插件的处理,然后路由到相应的后端服务。以下是Kong的基本工作流程:

    • 接收请求: 客户端发送API请求到Kong。

    • 插件处理: 请求经过预定义的插件,执行一系列的操作,如认证、鉴权、日志记录等。

    • 路由: 根据API请求的路由规则,Kong将请求路由到相应的后端服务。

    • 后端服务: 请求最终到达后端服务,服务返回响应。

    • 插件处理(响应阶段): 后端服务的响应同样会经过插件处理,进行日志记录、响应转换等操作。

    • 返回响应: 经过插件处理后,Kong将响应返回给客户端。

    3、安装PostgreSQL

    Kong 目前使用 Cassandra 或者 PostgreSQL,可以根据业务需求选择 Database。这边选择的是PostgreSQL:

    docker run -d --name kong-database \
     -p 5432:5432 \
     -e "POSTGRES_USER=kong" \
     -e "POSTGRES_DB=kong" \
     -e "POSTGRES_PASSWORD=kong" \
     --restart always \
     postgres:11.10
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4、初始化PostgreSQL

    使用 docker run --rm 来初始化数据库,该命令执行后会退出容器而保留内部的数据卷(volume)。但是要注意kong的版本和PostgreSQL的版本是否匹配,这边采用的11.1版本来匹配kong最新版本:

     docker run --rm \
     -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=192.168.254.133" \
     -e "KONG_PG_USER=kong" \
     -e "KONG_PG_PASSWORD=kong" \
     -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" 
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    美国芯片再遭重击,Intel或将被台积电击败而沦落至全球第三
    webhook--详解(gitee 推送)
    详解uniapp和vue在路由方面的不同和联系
    01.oracle介绍
    kali(linux)安装fscan
    使用imx 8m 测试matter协议功能
    卷积神经网络识别眼睛转向
    MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(3)-系统数据集合设计
    【Servlet】Servlet学习之基础篇(HTTP)
    使用xml、ftl模板生成word文档,下载到浏览器或指定位置
  • 原文地址:https://blog.csdn.net/lishangke/article/details/134036593