Kong

Kong 是一个云原生,快速,可扩展和分布式微服务抽象层(也称为API网关,API中间件或某些情况下的Service Mesh)。

作为2015年的开源项目,其核心价值在于高性能和可扩展性。

Kong积极维护,广泛应用于从创业公司到Global 5000以及政府组织等公司的生产。

特性

  • Cloud-Native:平台不可知,Kong可以从裸机运行到Kubernetes。

  • 动态负载平衡:跨多个上游服务负载均衡流量。

  • 基于散列的负载平衡:使用一致的散列/粘性会话进行负载平衡。

  • 断路器:智能跟踪不健康的上游服务。

  • 运行状况检查:上游服务的主动和被动监控。

  • 服务发现:在Consul等第三方DNS解析器中解析SRV记录。

  • 无服务器:直接从Kong调用并保护AWS Lambda或OpenWhisk功能。

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

  • OAuth2.0:轻松将OAuth2.0身份验证添加到API。

  • 日志记录:通过HTTP,TCP,UDP或磁盘记录对系统的请求和响应。

  • 安全性:ACL,Bot检测,白名单/黑名单IP等……

  • Syslog:登录系统日志。

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

  • 监控:实时监控提供关键负载和性能服务器指标。

  • 转发代理:使Kong连接到中间透明HTTP代理。

  • 身份验证:HMAC,JWT,Basic等。

  • 速率限制:基于许多变量阻止和限制请求。

  • 转换:添加,删除或操作HTTP请求和响应。

  • 缓存:在代理层缓存并提供响应。

  • CLI:从命令行控制您的Kong集群。

  • REST API:Kong可以使用其RESTful API进行操作,以获得最大的灵活性。

  • 地理复制:配置始终是不同地区的最新信息。

  • 故障检测和恢复:如果您的某个Cassandra节点发生故障,Kong不会受到影响。

  • 群集:所有Kong节点自动加入群集,使其配置在节点之间更新。

  • 可扩展性:通过自然分布,Kong通过简单地添加节点来水平扩展。

  • 性能:Kong通过扩展和核心使用NGINX轻松处理负载。

  • 插件:可扩展的体系结构,用于为Kong和API添加功能。

个人感受

类似的框架可以有千万种,但是技术的本质却是类似的。

应该直接学习其原理,然后手写一个。

吸取各种框架的优势。

参考资料

https://github.com/Dromara/soul

https://github.com/kong/kong

https://github.com/spring-cloud/spring-cloud-gateway