• 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
  • 相关阅读:
    国民MCU_freertos V10.3.1 使用经验避坑总结
    Java项目:SSM网上家具商城网站系统平台
    mac上的python2安装
    为什么全都来当测试/开发程序员?最吸引人的地方......
    Zookeeper Java 开发,自定义分布式锁示例
    java并发编程 SynchronousQueue详解
    计算机毕业设计Java房产销售系统(源码+系统+mysql数据库+lw文档)
    [computer vision] Bag of Visual Word (BOW)
    力扣:67.二进制求和
    WebRTC系列补充--native音量控制level
  • 原文地址:https://blog.csdn.net/lishangke/article/details/134036593