服务API网关-kong初探-1

网友投稿 696 2022-05-29

一 概述

Kong是一个clould-native、快速的、可扩展的、分布式的微服务抽象层(也称为API网关、API中间件或在某些情况下称为服务网格)框架。更确切地说,Kong是一个在Nginx中运行的Lua应用程序,并且可以通过lua-nginx模块实现。Kong不是用这个模块编译Nginx,而是与OpenResty一起发布,OpenResty已经包含了lua-nginx-module。OpenResty 不是 Nginx的分支,而是一组扩展其功能的模块。

这为可插拔架构奠定了基础,可以在运行时启用和执行Lua脚本(称为*“插件”*)。因此,我们认为Kong是微服务架构的典范:它的核心是实现数据库抽象,路由和插件管理。插件可以存在于单独的代码库中,并且可以在几行代码中注入到请求生命周期的任何位置。Kong作为开源项目在2015年推出,它的核心价值是高性能和可扩展性。

Kong被广泛用于从初创企业到全球5000家公司以及政府组织的生产环境中。

如果构建Web、移动或IoT(物联网)应用,可能最终需要使用通用的功能来实现这些应用。Kong充当微服务请求的网关(或侧车),通过插件能够提供负载平衡、日志记录、身份验证、速率限制、转换等能力。

一个service可以创建多个routes,routes就相当于前端配置,可以隐藏业务真正的接口地址,service指定后端真实的转发接口地址,在kong上进行认证/鉴权/日志/分析/监控等控制。

二 特性

云原生(Cloud-Native):Kong可以在Kubernetes或物理环境上运行;

动态负载平衡(Dynamic Load Balancing):跨多个上游服务的负载平衡业务。

基于哈希的负载平衡(Hash-based Load Balancing):一致的散列/粘性会话的负载平衡。

断路器(Circuit-Breaker):智能跟踪不健康的上游服务。

健康检查(Health Checks):主动和被动监控您的上游服务。

服务发现(Service Discovery):解决如Consul等第三方DNS解析器的SRV记录。

无服务器(Serverless):从Kong中直接调用和保证AWS或OpenWhisk函数安全。

WebSockets:通过WebSockets与上游服务进行通信。

OAuth2.0:轻松的向API中添加OAuth2.0认证。

日志记录(Logging):通过HTTP、TCP、UDP记录请求或者相应的日志,存储在磁盘中。

安全(Security):ACL,Bot检测,IPs白名单/黑名单等。

系统日志(Syslog):记录信息到系统日志。

SSL:为基础服务或API设置特定的SSL证书。

监视(Monitoring):能够实时对关键负载和性能指标进行监控。

转发代理(Forward Proxy):使端口连接到中间透明的HTTP代理。

认证(Authentications):支持HMAC,JWT和BASIC方式进行认证等等。

速率限制(Rate-limiting):基于多个变量的阻塞和节流请求。

转换(Transformations):添加、删除或操作HTTP请求和响应。

缓存(Caching):在代理层进行缓存和服务响应。

命令行工具(CLI):能够通过命令行控制Kong的集群。

REST API:可以通过REST API灵活的操作Kong。

GEO复制:在不同的区域,配置总是最新的。

故障检测与恢复(Failure Detection & Recovery):如果Cassandra节点失效,Kong并不会受影响。

群集(Clustering):所有的Kong节点会自动加入群集,并更新各个节点上的配置。

可扩展性(Scalability):通过添加节点,实现水平缩放。

性能(Performance):通过缩放和使用Nigix,Kong能够轻松处理负载。

微服务API网关-kong初探-1

插件(Plugins):基于插件的可扩展体系结构,能够方便的向Kong和API添加功能。

三 依赖组件

Kong部署在Nginx和Apache Cassandra或PostgreSQL等可靠技术之上,并提供了易于使用的RESTful API来操作和配置系统。下面是Kong的技术逻辑图。基于这些技术,Kong提供相关的特性支持:

3.1 Nginx

经过验证的高性能基础;

HTTP和反向代理服务器;

处理低层级的操作。

3.2 OpenRestry

支持Lua脚本;

拦截请求/响应生命周期;

基于Nginx进行扩展。

3.3 Clustering&Datastore

支持Cassandra或PostgreSQL数据库;

内存级的缓存;

支持水平扩展。

3.4 Plugins

使用Lua创建插件;

功能强大的定制能力;

与第三方服务实现集成。

3.5 Restful Administration API

通过Restful API管理Kong;

支持CI/CD&DevOps;

基于插件的可扩展。

四 架构图

API Docker NAT 微服务

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:揭秘“吃鸡”高端玩家新套路,华为云大数据带来新玩法?
下一篇:【愚公系列】2021年12月 网络工程-数据链路层
相关文章