Spring-cloud-gateway

Spring-cloud-gateway 提供了一个建立在Spring Ecosystem之上的API网关,包括:Spring 5,Spring Boot 2和Project Reactor。

Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到API,并为他们提供横切关注点,例如:安全性,监控/指标和弹性。

特性

Java 8

Spring Framework 5

动态路由

Spring Handler Mapping中内置的路由匹配

HTTP请求(路径,方法,标题,主机等)上的路由匹配

过滤器范围为匹配路径

过滤器可以修改下游HTTP请求和HTTP响应(添加/删除标头,添加/删除参数,重写路径,设置路径,Hystrix等…)

API或配置驱动

支持Spring Cloud DiscoveryClient配置路由

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添加功能。

Soul

Soul 是一个异步的,高性能的,跨语言的,响应式的API网关。

我希望能够有一样东西像灵魂一样,保护您的微服务。

参考了Kong,Spring-Cloud-Gateway等优秀的网关后,站在巨人的肩膀上,Soul由此诞生!

特性

支持各种语言,无缝集成Dubbo,SpringCloud。

丰富的插件支持,鉴权,限流,熔断,防火墙等等。

网关多种规则动态配置,支持各种策略配置。

插件热插拔,易扩展。

支持集群部署,支持A/B Test。

个人感受

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

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

吸取各种框架的优势。

参考资料

https://github.com/Dromara/soul

https://github.com/kong/kong

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