它可以在物理机上运行也可以在 kubernetes 上运行 。
kong 官网:官网地址kong 也提供了一张使用网关前后的对比图 , 可以直观看到使用 API 网关的变化,API 自身的功能明显减少,都集成到 kong 里面:
github地址:kong github
文章插图
?(来自:https://github.com/Kong/kong)
一些通用的功能都集成到 kong 里,而后面 API/RPC 只需要编写业务相关功能就可以了,简化了 API 开发 。
kong 架构kong 架构图:
文章插图
- Admin API:通过 admin api 来管理 kong 的功能
- Plugins:插件 , 默认插件和用户自定义插件
- Clustering & Database:存储 kong 集群节点信息 , API 信息,插件信息等 。目前提供了 PostgreSQL 和 Cassandra 2 种支持 , 如果需要高可用建议使用 Cassandra 。
- OpenResty:处理插件、运行插件程序
- Nginx:处理底层操作
- 开源产品和企业产品功能对比
可以看到,企业级产品比开源产品提供了丰富得多的功能,这样才能给企业提供价值 。
对比来看,开源功能相对企业版较少(开源产品功能也挺多),但是开源产品功能已经足够小公司用,还能自定义插件功能 。如果你有预算费用可以使用企业版 , 这样更快还有官方咨询服务 。如果没有预算,那开源也足够用,也可自己开发插件 。
- 开源产品功能
包括 HTTP 基本认证、密钥认证、CORS、监控、文件日志、API 请求限流、请求转发、缓存、SSL设置等基本功能,这些功能都是通过插件机制实现 。还有一些其他重要功能特性:
在 kong 3.0.x 文档中,还看到了蓝绿部署、cluster等功能,更多功能可以看文档 。
- 集群
kong 支持单节点集群和多节点集群 。kong 也给用户提供了自定义插件的功能,如果你有需要,自己可以编写插件来扩展 kong 的功能 。
单节点集群:连接到数据库(Cassandra 或 PostgreSQL)的单个 Kong 节点创建一个节点的 Kong 群集 。通过此节点的 Admin API 应用的任何更改都将立即生效 。
多节点集群:多节点集群它是通过定期后台作业与其他节点进行数据同步 。可以通过配置参数 db_update_frequency(默认 5 秒) 更改频率 , 这个频率更新有点慢 。所以 kong 集群数据一致性是最终一致性 。
- 扩展功能-编写插件
kong 插件文档,默认用 lua 语言来编写插件 , 也可以用其它语言 。
a. 编写插件可以使用的语言 lua,Go , python,js
kong 在 2.6.x 支持了其他语言编写插件,有 Go , python,js,文档地址:https://docs.konghq.com/gateway/2.6.x/reference/external-plugins/ 。更老的版本应该也有支持的,得去看文档 。
它还有一个编写插件的模板 。
b. 插件市场 plugin hub
kong 也有自己的一个插件市场 , 也就是说你也可以给 kong 贡献第三方插件,是优质插件可能会被收录 。
- 通过 admin-api 来管理 kong
web UI 界面管理kong 企业版提供了管理 UI,开源版本没有管理 UI 。但是程序员是多么的勤奋也崇尚开源,所以就有很多开源贡献的管理 UI,其中比较好用的,介绍 1 个,konga 。
konga 看 github 上的更新时间,也是 3 年前了,也算比较老的了 。
3.1.3 APISIX 网关APISIX 介绍Apache APISIX 是 Apache 软件基金会下的云原生 API 网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布(金丝雀发布)、服务熔断、身份认证、可观测性等丰富的流量管理功能 。我们可以使用 Apache APISIX 来处理传统的南北向流量,也可以处理服务间的东西向流量 。同时,它也支持作为 K8s Ingress Controller 来使用 。
apisix 也是基于 nginx , openresty 的 。
apisix 文档:apisix docAPISIX 架构整体架构图:
apisix github:apisix github
推荐阅读
- 有人知道怎么盗号吗(郴州微信盗号案)
- 王者荣耀10月8日微信每日一题答案是什么
- 2022火影忍者10月8日微信每日一题答案是什么
- 小天才z7可以登微信吗_小天才z7能不能下载微信
- 王者荣耀10月9日微信每日一题答案是什么
- 黑色沙漠微信每日一题10.9答案是什么
- 天涯明月刀10月9日微信每日一题答案是什么
- 通过netty把百度地图API获取的地理位置从Android端发送到Java服务器端
- 火影忍者10月10日微信每日一题答案是什么
- 微光互联 TX800-U 扫码器无法输出中文到光标的问题