10 微服务架构学习与思考:微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍( 二 )


OpenResty 官网:官网地址
github:OpenResty github
看这个介绍,OpenResty 的功能不止于网关功能,还有高性能动态 Web 应用和服务 。
它内部集成了大量精良的 Lua 库,库地址。
有很多 Nginx API for lua,你可以自己用 lua 来编写相关功能 。
当然,它还提供一个企业级(收费服务)产品,提供了很多关于 API 网关功能,Web 界面的操作 。
没有找到与开源产品功能对比,只有企业级产品功能介绍 。
3.1.2 KongKong 网关介绍kong 是一个高性能高可用易扩展的 API 网关和 API 服务管理的软件,它基于 OpenResty(Nginx+Lua) 。
它可以在物理机上运行也可以在 kubernetes 上运行 。
kong 官网:官网地址
github地址:kong github
kong 也提供了一张使用网关前后的对比图,可以直观看到使用 API 网关的变化,API 自身的功能明显减少,都集成到 kong 里面:
10 微服务架构学习与思考:微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍

文章插图
?(来自:https://github.com/Kong/kong)
一些通用的功能都集成到 kong 里,而后面 API/RPC 只需要编写业务相关功能就可以了,简化了 API 开发 。
kong 架构kong 架构图:
10 微服务架构学习与思考:微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍

文章插图
  • Admin API:通过 admin api 来管理 kong 的功能
  • Plugins:插件,默认插件和用户自定义插件
  • Clustering & Database:存储 kong 集群节点信息,API 信息,插件信息等 。目前提供了 PostgreSQL 和 Cassandra 2 种支持,如果需要高可用建议使用 Cassandra 。
  • OpenResty:处理插件、运行插件程序
  • Nginx:处理底层操作
功能简介
  • 开源产品和企业产品功能对比
kong 也提供了企业级产品,它还给出了 kong 开源产品和 kong 企业级产品功能对比图,功能详细对比在这里 https://docs.konghq.com/gateway/latest/#features 。
可以看到,企业级产品比开源产品提供了丰富得多的功能,这样才能给企业提供价值 。
对比来看,开源功能相对企业版较少(开源产品功能也挺多),但是开源产品功能已经足够小公司用,还能自定义插件功能 。如果你有预算费用可以使用企业版,这样更快还有官方咨询服务 。如果没有预算,那开源也足够用,也可自己开发插件 。
  • 开源产品功能
开源产品除了提供一些基础功能:
包括 HTTP 基本认证、密钥认证、CORS、监控、文件日志、API 请求限流、请求转发、缓存、SSL设置等基本功能,这些功能都是通过插件机制实现 。
在 kong 3.0.x 文档中,还看到了蓝绿部署、cluster等功能,更多功能可以看文档 。
还有一些其他重要功能特性:
  1. 集群
kong 支持单节点集群和多节点集群 。
单节点集群:连接到数据库(Cassandra 或 PostgreSQL)的单个 Kong 节点创建一个节点的 Kong 群集 。通过此节点的 Admin API 应用的任何更改都将立即生效 。
多节点集群:多节点集群它是通过定期后台作业与其他节点进行数据同步 。可以通过配置参数 db_update_frequency(默认 5 秒) 更改频率,这个频率更新有点慢 。所以 kong 集群数据一致性是最终一致性 。
kong 也给用户提供了自定义插件的功能,如果你有需要,自己可以编写插件来扩展 kong 的功能 。
  1. 扩展功能-编写插件
用户可以编写插件来对 kong 功能进行扩展,kong 的插件是在 API 请求响应循环的生命周期中被执行的 。
kong 插件文档,默认用 lua 语言来编写插件,也可以用其它语言 。

经验总结扩展阅读